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

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

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

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

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

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

Исходя из него, я и ваяю ))

Самое просторе, что пришло голову:

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

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

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

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

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

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

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

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

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

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

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

    КонецЕсли;

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

КонецФункции
20 HalloMain
 
22.05.19
16:31
А как здесь обработать 'дату', я догнать не могу
21 HalloMain
 
22.05.19
16:39
Просто в примере 2 переменных имеющих значение и с ними идет работа, если значение первой переменной такое-то, то значение второй будет такое, а как подобное реализовать со временем?
22 HalloMain
 
22.05.19
16:40
Есть только некое время, которое нужно преобразовать в строку и вернуть из функции, здесь я и затыкаюсь
23 Вафель
 
22.05.19
16:42
(0) тебе бы подучить, что такое переменные, а что такое функции и их парамтеры
безотносительно 1с
24 hhhh
 
22.05.19
16:44
(22) ну так пробуй

Функция МояДата(ВыводимДату)  
    
    Возврат Формат(ВыводимДату, "ДФ=""ММММ гггг 'г.'""");  
КонецФункции
25 HalloMain
 
22.05.19
16:54
hhhh
Спасибо, попробую поработать с Вашим примером.
26 HalloMain
 
23.05.19
09:29
Все спасибо.
Я перемудрил похоже.

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

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

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

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

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

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