Дата запрета по описанию. Возвращает дату запрета, рассчитанную по описанию относительной даты запрета.
// Возвращает дату запрета, рассчитанную по описанию относительной даты запрета.
//
// Параметры:
// ОписаниеДатыЗапрета - Строка - содержит описание относительной даты запрета.
// ДатаЗапрета - Дата - абсолютная дата, полученная из регистра.
// НачалоДня - Дата - текущая дата сеанса на начало дня.
// - Неопределено - вычислить автоматически.
//
Функция ДатаЗапретаПоОписанию(ОписаниеДатыЗапрета, ДатаЗапрета, НачалоДня = '00010101') Экспорт
Если Не ЗначениеЗаполнено(ОписаниеДатыЗапрета) Тогда
Возврат ДатаЗапрета;
КонецЕсли;
Если Не ЗначениеЗаполнено(НачалоДня) Тогда
НачалоДня = НачалоДня(ТекущаяДатаСеанса());
КонецЕсли;
Сутки = 60*60*24;
КоличествоДнейРазрешения = 0;
ВариантДатыЗапрета = СтрПолучитьСтроку(ОписаниеДатыЗапрета, 1);
КоличествоДнейСтрокой = СтрПолучитьСтроку(ОписаниеДатыЗапрета, 2);
Если ЗначениеЗаполнено(КоличествоДнейСтрокой) Тогда
ОписаниеТипа = Новый ОписаниеТипов("Число");
КоличествоДнейРазрешения = ОписаниеТипа.ПривестиЗначение(КоличествоДнейСтрокой);
КонецЕсли;
Если ВариантДатыЗапрета = "КонецПрошлогоГода" Тогда
ТекущаяДатаЗапрета = НачалоГода(НачалоДня) - Сутки;
ПредыдущаяДатаЗапрета = НачалоГода(ТекущаяДатаЗапрета) - Сутки;
ИначеЕсли ВариантДатыЗапрета = "КонецПрошлогоКвартала" Тогда
ТекущаяДатаЗапрета = НачалоКвартала(НачалоДня) - Сутки;
ПредыдущаяДатаЗапрета = НачалоКвартала(ТекущаяДатаЗапрета) - Сутки;
ИначеЕсли ВариантДатыЗапрета = "КонецПрошлогоМесяца" Тогда
ТекущаяДатаЗапрета = НачалоМесяца(НачалоДня) - Сутки;
ПредыдущаяДатаЗапрета = НачалоМесяца(ТекущаяДатаЗапрета) - Сутки;
ИначеЕсли ВариантДатыЗапрета = "КонецПрошлойНедели" Тогда
ТекущаяДатаЗапрета = НачалоНедели(НачалоДня) - Сутки;
ПредыдущаяДатаЗапрета = НачалоНедели(ТекущаяДатаЗапрета) - Сутки;
ИначеЕсли ВариантДатыЗапрета = "ПредыдущийДень" Тогда
ТекущаяДатаЗапрета = НачалоДня(НачалоДня) - Сутки;
ПредыдущаяДатаЗапрета = НачалоДня(ТекущаяДатаЗапрета) - Сутки;
Иначе
Возврат '00030303'; // Неизвестный формат.
КонецЕсли;
Если ЗначениеЗаполнено(ТекущаяДатаЗапрета) Тогда
СрокРазрешения = ТекущаяДатаЗапрета + КоличествоДнейРазрешения * Сутки;
Если Не НачалоДня > СрокРазрешения Тогда
ТекущаяДатаЗапрета = ПредыдущаяДатаЗапрета;
КонецЕсли;
КонецЕсли;
Возврат ТекущаяДатаЗапрета;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ОбновитьРазделыДатЗапретаИзменения (БСП)
Запрет выгрузки в КД по дате запрета редактирования
ПриЗаполненииРазделовДатЗапретаИзменения (БСП)
РассчитанныеДатыЗапретаИзменения (БСП)
ОткрытьДатыЗапретаЗагрузкиДанных (БСП)