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

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

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

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

Стр=Р.Добавить();
Стр.Начало=ТекПериод;
Стр.Конец=СледПериод;
Стр.Номер=Номер;
ТекПериод=СледПериод+1; //Переходим на следующий период (добавляем одну секунду)
Номер=Номер+1;
КонецЦикла;
Возврат Р;
КонецФункции
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 8206
 0 
Распечатать
Возможно, вас также заинтересует
1С Предприятие что это? 6
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который...
Альтернативный перенос остатков между 7.7 и 8.1 (обработкой с ИТС ЗагрузкаДанныхИзТаблДокум) 0
Нашел альтернативный, практически моментальный способ переноса остатков между семерой и восьмерой (так и между восмерками). Не требуется никаких дополнительных усилий, программирования, писания обработок и т.д. и т.п....
База 1С при запуске уходит в дамп и вылетает 1
В последнее время частенько обращаются пользователи у которых после замены или ремонта компьютера 1С не запускается, а точнее при открытии уходит в dump и вылетает. Как правило, решение одно: Отключить аппаратное...
Битая ссылка, <Объект не найден>, Уникальный Идентификатор, GUID 21
Когда кто-то удаляет данные из базы без проверки ссылок на эти объекты, то везде где этот объект использовался появляется сообщение вида: Объект не найден (84:bf5600145e3710ab11dda4c605dbe824) . https://helpf.pro/uploads/img/_1-46z7I4U7Ww.png В
Блокировка записей, невозможно изменить или удалить из регистра. Конфликт блокировок MS SQL + 1C 1
При попытке удалить запись из регистра сведений - получаю ошибку: она заблокирована, ошибка блокировок и т.д. Отключил всех пользователей, перезапустил сервер, пробую удалить - опять ошибка блокировки :( Путем тестов...
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.