1с статьи | Курс-репетитор программиста 1С

СтрШаблон, ПредставлениеПериода

// %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, 
   ПредставлениеПериода);

// выводим сообщение в окно сообщений
// метод доступен из серверного кода
// сообщение будет выведено при возвращении на клиент
Сообщить(ТекстСообщения);

// Что будет выведено?

Показать решение

Разница дат, Формат для Даты

// %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");
Сообщить(ТекстСообщения);

// Что будет выведено?

Показать решение

СтрокаСЧислом

// дата указывается в '' в формате ГГГГММДД год-месяц-день             
Дата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"), 
   ПредставлениеРазницыВДнях,
   ПредставлениеРазницыВМесяцах
);

Сообщить(ТекстСообщения);

// Что будет выведено?

Показать решение

Формат для Числа

// число 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");

Сообщить(ПредставлениеЧисла);

// Что будет выведено?

Показать решение

Слишком маленькое разрешение экрана.