Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Функция ПредставлениеПериода

Функция ПредставлениеПериода
Я
   HalloMain
 
22.05.19 - 13:50
Приветствтую!
Начал изучать 1С по книжке Радченко М.Г. "1С программирование для начинающих"
И выполняя задания, столкнулся с проблемой.
Никак не могу выполнить задание.
Нужно создать функцию, которая бы возвращала значение даты в формате текста.
Укажите пожалуйста на ошибки:

Процедура ПриНачалеРаботыСистемы()
    УстановитьКраткийЗаголовокПриложения("Тест");
    
    ТекДата = ТекущаяДата();            
    Сообщить(МояДата(ДатаНачала(ТекДата), ДатаОкончания(ТекДата), "ФП = Истина"));       
                
КонецПроцедуры                  

Функция МояДата(ВыводимДату)  
    Если ДатаНачала = ТекДата Тогда  
        ДатаНачала = НачалоДня(Формат(ТекДата, "ДЛФ=ДД"));
    КонецЕсли;
    Если ДатаОкончания = ТекДата Тогда
        ДатаОкончания = КонецДня(Формат(ТекДата, "ДЛФ=ДД"));
    КонецЕсли;
    
    Возврат ПолученнаяДата;    
КонецФункции

Уже и так, и сяк попробовал, но что-то не догоняю, видимо...
 
 
   ДенисЧ
 
1 - 22.05.19 - 13:53
Формат(НачДата, "ДФ=ДД.ММ.ГГГГ")
   Zmich
 
2 - 22.05.19 - 13:55
(0). Формат() возвращает строку. Нельзя брать НачалоДня или КонецДня от строки.
   Жан Пердежон
 
3 - 22.05.19 - 14:25
(0) (1) да там начиная с переменных в функции уже всё плохо
   HalloMain
 
4 - 22.05.19 - 14:33
ДенисЧ, подскажите пожалуйста, откуда в выражении взялось - НачДата?
У меня такого нет.

Жан Пердежон, я понимаю, что мог что-то не так сделать, поэтому и обратился, чтобы мне указали на ошибки...
   ДенисЧ
 
5 - 22.05.19 - 14:43
(4) Подставь свою переменную. Или тебе форели нажарить и с руки покормить?
   HalloMain
 
6 - 22.05.19 - 14:48
<B>ДенисЧ</B>
Было бы неплохо ))
   hhhh
 
7 - 22.05.19 - 14:55
(6) выкинь Формат. Понимаю, это красиво, нравится, но с другой стороны дебилизм. Пиши

ДатаНачала = НачалоДня(ТекДата);
   HalloMain
 
8 - 22.05.19 - 15:58
Задание.
  Создайте функцию, которая получает значение типа Дата. А возвращает эта
функция текстовое представление месяца и года этой даты.
Для формирования текстового представления используйте функцию ПредставлениеПериода(). Её описание вы найдёте в синтакс-помощнике в ветке Глобальный
контекст — Функции форматирования.
Исходя из него, я и ваяю ))

Самое просторе, что пришло голову:
ТекДата = ТекущаяДата();       
ТекДата = Формат(ТекДата, "ДФ=""ММММ гггг 'г.'""");
   HalloMain
 
9 - 22.05.19 - 16:00
Но я не понимаю пока как мне передать результат, если запихнуть это в функцию
   _Дайвер_
 
10 - 22.05.19 - 16:04
ТекДата = ТекущаяДата();
НачДата = НачалоМесяца(ТекДата);
КонДата = КонецМесяца(ТекДата);
Описание = "" + ПредставлениеПериода(НачДата, КонДата, "ФП = Истина");
   HalloMain
 
11 - 22.05.19 - 16:15
Тоже самое, что я привел выше:

ТекДата = ТекущаяДата();       
ТекДата = Формат(ТекДата, "ДФ=""ММММ гггг 'г.'""");
   HalloMain
 
12 - 22.05.19 - 16:16
Только там не фигурирует "ПредставлениеПериода()"
   _Дайвер_
 
13 - 22.05.19 - 16:21
Так сделай через ПредставлениеПериода()
"Нужно создать функцию, которая бы возвращала значение даты в формате текста."
Это будет тип строка
   _Дайвер_
 
14 - 22.05.19 - 16:22
Если от текущей даты отработать (10) результатов будет "22 мая 2019 г." с типом строка, как тебе и надо
   hhhh
 
15 - 22.05.19 - 16:23
(12) вы просто подумайте над своей программой. Вот вы пишете

 Возврат ПолученнаяДата;     

а что такое ПолученнаяДата ? Нет такой у вас. Из воздуха она что ли возникнет?
   HalloMain
 
16 - 22.05.19 - 16:24
Мне надо понять механизм, а с этим пока трудности...
Как я уже писал, мне пока не въехать, как сделать "Возврат".

В учебнике, на примере рассматривается вариант с переменными и "Если", и как прикрутить это сюда, я не догоняю
   _Дайвер_
 
17 - 22.05.19 - 16:25
(16) читай (15)
   hhhh
 
18 - 22.05.19 - 16:27
(16) вы и делайте как в учебнике. Не надо самодеятельности.
   HalloMain
 
19 - 22.05.19 - 16:30
Дан вот такой пример:

Процедура ПриНачалеРаботыСистемы()

    НомерДняНедели  = 1;

    Занятий = СколькоЗанятий(НомерДняНедели);

КонецПроцедуры

Функция СколькоЗанятий(ДеньНедели)
    
    Если ДеньНедели = 1 Тогда
        КоличествоЗанятий = 5;

    Иначе
        КоличествоЗанятий = 6;

    КонецЕсли;

    Возврат КоличествоЗанятий;

КонецФункции
   HalloMain
 
20 - 22.05.19 - 16:31
А как здесь обработать 'дату', я догнать не могу
   HalloMain
 
21 - 22.05.19 - 16:39
Просто в примере 2 переменных имеющих значение и с ними идет работа, если значение первой переменной такое-то, то значение второй будет такое, а как подобное реализовать со временем?
   HalloMain
 
22 - 22.05.19 - 16:40
Есть только некое время, которое нужно преобразовать в строку и вернуть из функции, здесь я и затыкаюсь
   Вафель
 
23 - 22.05.19 - 16:42
(0) тебе бы подучить, что такое переменные, а что такое функции и их парамтеры
безотносительно 1с
   hhhh
 
24 - 22.05.19 - 16:44
(22) ну так пробуй
Функция МояДата(ВыводимДату)  
    
    Возврат Формат(ВыводимДату, "ДФ=""ММММ гггг 'г.'""");  
КонецФункции
   HalloMain
 
25 - 22.05.19 - 16:54
hhhh
Спасибо, попробую поработать с Вашим примером.
   HalloMain
 
26 - 23.05.19 - 09:29
Все спасибо.
Я перемудрил похоже.

В задании нужно создать функцию, которая бы вернула дату в требуемом формате, а поскольку "ПредставлениеПериода()" это встроенная функция, то нет смысла что-то городить, как мне кажется.
Поэтому, считаю, что прав оказался "Драйвер" и решение данной задачи будет таким:

        ТекДата = ТекущаяДата();
    
    НачДата = НачалоМесяца(ТекДата);
    КонДата = КонецМесяца(ТекДата);

    ПолученнаяДата = "" + ПредставлениеПериода(НачДата, КонДата, "ФП = Истина");

Всем спасибо!
   HalloMain
 
27 - 24.05.19 - 13:01
Посидев и подумав, решил сделать иначе:

Процедура ПриНачалеРаботыСистемы()
    ТекДата = ТекущаяДата();
    МояДата = НачалоКвартала(ТекДата);
        
    Значение = ТекстДата(МояДата);
КонецПроцедуры                   

Функция ТекстДата(МояДата)
    НачДата = НачалоМесяца(МояДата);
    КонДата = КонецМесяца(МояДата);
    ПолученнаяДата = "" + ПредставлениеПериода(НачДата, КонДата, "ФП = Истина");
    Возврат ПолученнаяДата;  
КонецФункции


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.