СтрШаблон, ПредставлениеПериода
// %1, %2 и %3 - параметры, заменяемые значениями // соответствующих параметров СтрШаблон (начиная со второго) ТекстШаблона = "Период с %1 по %2: %3"; // дата указывается в '' в формате ГГГГММДД год-месяц-день Дата1 = '20230101'; // можно вместе со временем в формате ЧЧММСС час-минута-секунда Дата2 = '20230131235959'; ПредставлениеПериода = ПредставлениеПериода(Дата1, Дата2); ТекстСообщения = СтрШаблон(ТекстШаблона, Дата1, Дата2, ПредставлениеПериода); // получим вывод в виде: // Период с 01.01.2023 0:00:00 по 31.01.2023 23:59:59: Январь 2023 г. // ПредставлениеПериода работает правильно при указании дат // в формате начало дня - конец дня Дата1 = '20230101'; Дата2 = КонецГода('20230101'); ПредставлениеПериода = ПредставлениеПериода(Дата1, Дата2); ТекстСообщения = СтрШаблон(ТекстШаблона, Дата1, Дата2, ПредставлениеПериода); // получим вывод в виде: // Период с 01.01.2023 0:00:00 по 31.12.2023 23:59:59: 2023 г. // при указании даты - начало следующего месяца // ПредставлениеПериода корректно не отработает Дата1 = '20230101'; Дата2 = '20230101000000'; ПредставлениеПериода = ПредставлениеПериода(Дата1, Дата2); ТекстСообщения = СтрШаблон(ТекстШаблона, Дата1, Дата2, ПредставлениеПериода); // выводим сообщение в окно сообщений // метод доступен из серверного кода // сообщение будет выведено при возвращении на клиент Сообщить(ТекстСообщения); // Что будет выведено?
Показать решение
Период с 01.01.2023 0:00:00 по 01.01.2023 0:00:00: 01.01.2023 0:00:00 - 01.01.2023 0:00:0 дата окончания периода 01.01.2023 0:00:00 не является концом дня поэтому функция ПредставлениеПериода не смогла сформировать корректный вывод если бы мы задали дату окончания в виде '20230101235959', то получили бы вывод: Период с 01.01.2023 0:00:00 по 01.01.2023 23:59:59: 1 января 2023 г.
Разница дат, Формат для Даты
// %1, %2, %3 и %4 - параметры, заменяемые значениями // соответствующих параметров СтрШаблон (начиная со второго) ТекстШаблона = "от %1 до %2 %3 (дн.) или %4 (мес.)"; // дата указывается в '' в формате ГГГГММДД год-месяц-день Дата1 = '20230101'; // можно вместе со временем в формате ЧЧММСС час-минута-секунда Дата2 = '20240131235959'; // 24 часа * 60 минут * 60 секунд; КоличествоСекундВДне = 24*60*60; РазницаДатВДнях = (НачалоДня(Дата2) - НачалоДня(Дата1)) / КоличествоСекундВДне; // получим разницу лет Годы = Год(Дата2) - Год(Дата1); // получим разницу в месяцах Месяцы = Месяц(Дата2) - Месяц(Дата1); РазницаДатВМесяцах = Месяцы + Годы*12; ТекстСообщения = СтрШаблон(ТекстШаблона, // выводим дату в виде строки "01.01.2023" Формат(Дата1, "ДФ=dd.MM.yyyy"), // выводим дату в виде строки "01/01/2023" Формат(Дата2, "ДФ=dd/MM/yy"), РазницаДатВДнях, РазницаДатВМесяцах ); // получим вывод в виде: // от 01.01.2023 до 31/01/24 395 (дн.) или 12 (мес.) // "ДЛФ=D" - формат даты в виде строки "01 января 2023" // удобно контолировать формат через // Конструктор форматной строки, открываемый // через контекстное меню ТекстСообщения = Формат(Дата2 - КоличествоСекундВДне, "ДЛФ=D"); Сообщить(ТекстСообщения); // Что будет выведено?
Показать решение
30.01.2024 уменьшили дату на количество секунд в дне получили предыдущую дата привели её к формату ДЛФ=D
СтрокаСЧислом
// дата указывается в '' в формате ГГГГММДД год-месяц-день Дата1 = '20230101'; // можно вместе со временем в формате ЧЧММСС час-минута-секунда Дата2 = '20240131235959'; // 24 часа * 60 минут * 60 секунд; КоличествоСекундВДне = 24*60*60; РазницаДатВДнях = (НачалоДня(Дата2) - НачалоДня(Дата1)) / КоличествоСекундВДне; // шаблон для вывода дней // символ | переносит строку ИсходнаяСтрока = ";%1 день;;%1 дня; |%1 дней;%1 дня"; ПредставлениеРазницыВДнях = СтрокаСЧислом( // параметр содержит перечисленные через // точку с запятой 6 форм строки // для каждой категории числительного: // Ноль, Один, Два, Немного, Много, Другое ИсходнаяСтрока, РазницаДатВДнях, ВидЧисловогоЗначения.Количественное); // получим разницу лет Годы = Год(Дата2) - Год(Дата1); // получим разницу в месяцах Месяцы = Месяц(Дата2) - Месяц(Дата1); РазницаДатВМесяцах = Месяцы + Годы*12; // шаблон для вывода месяцев ИсходнаяСтрока = ";%1 месяц;;%1 месяцев; |%1 месяцев;%1 месяцев"; ПредставлениеРазницыВМесяцах = СтрокаСЧислом( // Ноль, Один, Два, Немного, Много, Другое ИсходнаяСтрока, РазницаДатВМесяцах, ВидЧисловогоЗначения.Количественное); // %1, %2, %4 и %3 - параметры, заменяемые значениями // соответствующих параметров СтрШаблон (начиная со второго) ТекстШаблона = "от %1 до %2 пройдет %3 или %4"; ТекстСообщения = СтрШаблон(ТекстШаблона, Формат(Дата1, "ДЛФ=D"), Формат(Дата2, "ДЛФ=D"), ПредставлениеРазницыВДнях, ПредставлениеРазницыВМесяцах ); Сообщить(ТекстСообщения); // Что будет выведено?
Показать решение
от 01.01.2023 до 31.01.2024 пройдет 395 дней или 12 месяцев
Формат для Числа
// число 100 млн Число = 100000000; // преобразуем в строку, с использованием // функции Формат, без параметров ПредставлениеЧисла = Формат(Число); // результат: "100 000 000"; // с дробной частью ПредставлениеЧисла = Формат(Число, "ЧДЦ=2"); // результат: "100 000 000,00"; // изменим разделитель дробной части на точку ПредставлениеЧисла = Формат(Число, "ЧДЦ=2; ЧРД=."); // результат: "100 000 000.00"; // изменим разделитель групп на - ПредставлениеЧисла = Формат(Число, "ЧДЦ=2; ЧРД=.; ЧРГ=-"); // результат: "100-000-000.00"; // изменим группировку (по умолчанию ЧГ=3,3) ПредставлениеЧисла = Формат(Число, "ЧГ=2; ЧДЦ=2; ЧРД=.; ЧРГ=-"); // результат: "1000000-00.00"; // ЧГ - порядок группировки разрядов числа // обозначает количество группируемых разрядов справа налево // можно задачть двойную группировку ПредставлениеЧисла = Формат(Число, "ЧГ=4,1; ЧДЦ=2; ЧРД=.; ЧРГ=-"); // результат: "1-0-0-0-0-0000.00"; // 4 менее значимых разряда и далее по одному // уменьшим наше число Число = 101; // выведем с лидирующими нулями и длиной в 10 знаков ПредставлениеЧисла = Формат(Число, "ЧЦ=10; ЧВН=; ЧГ=3"); // результат: "0 000 000 101"; // по умолчанию применяется группировка ЧГ=3,0 // второе число - 0, для всех разрядов целой части числа // будет применено значение указанное для первичной группировки - 3 // избавимся от группировки ПредставлениеЧисла = Формат(Число, "ЧЦ=10; ЧВН=; ЧГ="); // результат: "0000000101"; ПредставлениеЧисла = Формат(Число, "ЧЦ=5; ЧВН=; ЧГ=2,1"); Сообщить(ПредставлениеЧисла); // Что будет выведено?
Показать решение
0 0 1 01 // дополняем число 101 до длины 5 // выводим лидирующие нули // используем группировку 2,1 // первые 2 разряда справа // и далее по 1'ому разряду