PDA

Просмотр полной версии : Предыдущая Дата в печатной форме



Mexxe
26.03.2017, 11:26
Добрый день профессионалы!
Помогите пожалуйста разобраться с предыдущей датой, как возможно это реализовать?
Задача стоит такая, в печатной форма Заявления нужно вместо текущей даты, нужна дата 3-х дневной давности, это реализовано таким образом
Функция ДатаЗаявления()
Сегодня = ТекущаяДата ();
ПредыдущаяДата = Сегодня - 72 * 60 * 60;
Если ПредыдущаяДата = ДеньНедели
Возврат (ПредыдущаяДата);
КонецФункции Но теперь стоит новая задача, как реализовать что бы "предыдущая" дата не выпадала на выходной день (только суб и воскр), т.е. если дата выпадает на эти выходные то дата была предыдущей пятницы.
За ранее благодарен!

avm3110
26.03.2017, 13:26
Такие задачи решаются через запрос к регистру сведений "Рабочий календарь". Именно там находится актуальная информация про выходные и праздничные дни.
потому как к твоему алгоритму "прикрутить" обработку "Суббота и воскресенье" - легко, но вот для учета праздничных (и их переносов) - нужно работать уже с произВодственнымКалендаре м

Анатолик
08.04.2017, 14:21
Та нифига, в запросе можно получить день недели, и если это например 6 - суббота или 7-воскресенье, то проставлять 5 - пятница, ну или выводить текстом

Анатолик
08.04.2017, 14:24
//Это так для примера


лТекст = "
|ВЫБРАТЬ
| Док.Ссылка,
| ВЫБОР
| КОГДА ДЕНЬНЕДЕЛИ(Док.Дата) = 6
| ИЛИ ДЕНЬНЕДЕЛИ(Док.Дата) = 7
| ТОГДА ""Это выходной день""
| ИНАЧЕ ""Рабочая дата""
| КОНЕЦ КАК Поле1
|ИЗ
| Документ.Ссылка КАК Док
|";

лЗапрос = Новый Запрос(лТекст);

// Присвоение значений переменным параметров.


// Установка параметров.


лВыборка = лЗапрос.Выполнить().Выбрать ();

Пока лВыборка.Следующий() Цикл

//ЗДЕСЬ ОБРАБАТЫВАЕШЬ РЕЗУЛЬТАТ!!!!!!!!!!!!!!!!!!!!!!!!!

КонецЦикла;



Также в расчете скорее всего пригодится функция по работе с датами "ДОБАВИТЬКДАТЕ" (обрати на это вниание!!!!!!!!!!!!!)