helpf.pro
Регистрация
 +1 
Распечатать

1С 8.x : Функция вычисляет даты начала/конца периодов за интервал в виде таблицы значений

Код 1C v 8.х
  //Начало, Конец - начало и конец периода
//Периодичность - строка "День", "Месяц", "Неделя", "Год", "Квартал"
//Возвращает таблицу значений с колонками:
// Начало - начало интервала
// Конец - конец интервала
// Номер - номер интервала (начиная с единицы)
Функция обПериодыЗаИнтервал(Начало, Конец, Периодичность="День", ВыравниваниеПоПериоду=истина)
Перем Р, Номер, ТекПериод, СледПериод;
Р=Новый ТаблицаЗначений();
Р.Колонки.Добавить("Начало");
Р.Колонки.Добавить("Конец");
Р.Колонки.Добавить("Номер");

ТекПериод=Начало;
Номер=1;
Пока истина Цикл
Если Периодичность="День" Тогда
Если ВыравниваниеПоПериоду Тогда
ТекПериод=НачалоДня(ТекПериод);
СледПериод=КонецДня(ТекПериод);
Иначе
СледПериод=обДобавитьДни(ТекПериод, 1);
КонецЕсли;
ИначеЕсли Периодичность="Месяц" Тогда
Если ВыравниваниеПоПериоду Тогда
ТекПериод=НачалоМесяца(ТекПериод);
СледПериод=КонецМесяца(ТекПериод);
Иначе
СледПериод=обДобавитьМесяцы(ТекПериод, 1);
КонецЕсли;
ИначеЕсли Периодичность="Год" Тогда
Если ВыравниваниеПоПериоду Тогда
ТекПериод=НачалоГода(ТекПериод);
СледПериод=КонецГода(ТекПериод);
Иначе
СледПериод=обДобавитьМесяцы(ТекПериод, 12);
КонецЕсли;
ИначеЕсли Периодичность="Квартал" Тогда
Если ВыравниваниеПоПериоду Тогда
ТекПериод=НачалоКвартала(ТекПериод);
СледПериод=КонецКвартала(ТекПериод);
Иначе
СледПериод=обДобавитьМесяцы(ТекПериод, 3);
КонецЕсли;
ИначеЕсли Периодичность="Неделя" Тогда
Если ВыравниваниеПоПериоду Тогда
ТекПериод=НачалоНедели(ТекПериод);
СледПериод=КонецНедели(ТекПериод);
Иначе
СледПериод=обДобавитьДни(ТекПериод, 7);
КонецЕсли;
Иначе
ВызватьИсключение "Неизвестная периодичность времени:"+Периодичность;
КонецЕсли;
Если ТекПериод>Конец И НЕ Номер=1 Тогда
Прервать;
КонецЕсли;

Стр=Р.Добавить();
Стр.Начало=ТекПериод;
Стр.Конец=СледПериод;
Стр.Номер=Номер;
ТекПериод=СледПериод+1; //Переходим на следующий период (добавляем одну секунду)
Номер=Номер+1;
КонецЦикла;
Возврат Р;
КонецФункции
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 18201
 +1 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое
Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 4
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же
Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 0
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же
Альтернативный перенос остатков между 7.7 и 8.1 (обработкой с ИТС ЗагрузкаДанныхИзТаблДокум) 2
Нашел альтернативный, практически моментальный способ переноса остатков между семерой и восьмерой (так и между восмерками). Не требуется никаких дополнительных усилий, программирования, писания обработок и т.д. и т.п. На ИТС есть обработка под наз
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.