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

1. Mexxe 26.03.17 09:52 Сейчас в теме
Добрый день профессионалы!
Помогите пожалуйста разобраться с предыдущей датой, как возможно это реализовать?
Задача стоит такая, в печатной форма Заявления нужно вместо текущей даты, нужна дата 3-х дневной давности, это реализовано таким образом
Функция ДатаЗаявления()
Сегодня = ТекущаяДата ();
ПредыдущаяДата = Сегодня - 72 * 60 * 60;
Если ПредыдущаяДата = ДеньНедели 
Возврат (ПредыдущаяДата);
КонецФункции 
Но теперь стоит новая задача, как реализовать что бы "предыдущая" дата не выпадала на выходной день (только суб и воскр), т.е. если дата выпадает на эти выходные то дата была предыдущей пятницы.
За ранее благодарен!
По теме из базы знаний
Найденные решения
11. Mexxe 27.03.17 06:46 Сейчас в теме
Сделал вообщем вот так
Функция ДатаЗаявления()
Сегодня = ТекущаяДата ();
ПредыдущаяДата = Сегодня - 259200;
Пока ДеньНедели(ПредыдущаяДата) = 6 или ДеньНедели(ПредыдущаяДата) = 7 Цикл
    ПредыдущаяДата = ПредыдущаяДата - 86400;
КонецЦикла;
Возврат (ПредыдущаяДата);
КонецФункции
Показать
Всем спасибо!
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Cooler 22 26.03.17 10:32 Сейчас в теме
(1)
Но теперь стоит новая задача, как реализовать что бы "предыдущая" дата не выпадала на выходной день (только суб и воскр), т.е. если дата выпадает на эти выходные то дата была предыдущей пятницы.
Боюсь, что реально задача окажется несколько сложнее, чем вы ее сейчас видите.

А именно: как быть с праздничными днями? Например, будет текущая дата - 15 июня 2017, минус три дня - 12 июня, нерабочий день, хотя и понедельник. Допустима ли такая дата в вашей печатной форме или надо откручивать до 9 июня?

И это будет меняться от года к году - 12 июня 2018 - вторник, и будет ли понедельник 11-го рабочим или его перенесут - это одному правительству известно.

P.S, Про новогодние каникулы я вообще молчу - какая должна стоять дата в ВПФ, если она формируется 9 января?
5. Mexxe 26.03.17 10:39 Сейчас в теме
(4)
оюсь, что реально задача окажется несколько сложнее, чем вы ее сейчас видите.

А именно: как быть с праздничными днями? Например, будет текущая дата - 15 июня 2017, минус три дня - 12 июня, нерабочий день, хотя и понедельник. Допустима ли такая дата в вашей печатной форме или надо откручивать до 9 июня?

Это да подразумивалось, это сложно, хотя бы только суббота воскресенье, не до праздников, там если что будут вручную исправлять.
7. vadim1011985 101 26.03.17 10:43 Сейчас в теме
(4) проверять дату можно по производственному календарю .


(3) Подробнее - отнимаешь свои три дня - получаешь дату (это уже есть) , Далее эту дату передаешь в функцию ДеньНедели (
НомерДняВНеделе = ДеньНедели(ПредыдущаяДата)
) Далее если это не день 6 или день 7 (что соответствует субботе или воскресенью) оставляешь свою дату без изменений. Но если это 6 или 7 день то от своей предыдущей дате отнимаешь еще один (если день 6) или 2 (если день 7) дня
8. Cooler 22 26.03.17 11:01 Сейчас в теме
(7)
проверять дату можно по производственному календарю .
Производственный календарь - это функция платформы 1С? Или конфигурации? Так ведь автор не написал - какая у него конфигурация?

(5)
это сложно, хотя бы только суббота воскресенье, не до праздников, там если что будут вручную исправлять.
На самом деле не так уж и сложно, можно прямо в коде функции создать массив праздничных дней по утвержденному производственному календарю и проверять - не включает ли он в себя проверяемую дату?

Придется, правда, раз в год переписывать эту часть кода - не знаю, насколько для вас это приемлемо.
10. Mexxe 26.03.17 11:08 Сейчас в теме
(8)
проверять дату можно по производственному календарю .
Производственный календарь - это функция платформы 1С? Или конфигурации? Так ведь автор не написал - какая у него конфигурация?

Конфа УПП

(5)

это сложно, хотя бы только суббота воскресенье, не до праздников, там если что будут вручную исправлять.
На самом деле не так уж и сложно, можно прямо в коде функции создать массив праздничных дней по утвержденному производственному календарю и проверять - не включает ли он в себя проверяемую дату?

Придется, правда, раз в год переписывать эту часть кода - не знаю, насколько для вас это приемлемо.

Я думаю что пока на суб.. воскр. остановимся, с моим опытом хотя бы это сделать
9. Mexxe 26.03.17 11:03 Сейчас в теме
(7)
Подробнее - отнимаешь свои три дня - получаешь дату (это уже есть) , Далее эту дату передаешь в функцию ДеньНедели (
НомерДняВНеделе = ДеньНедели(ПредыдущаяДата)
) Далее если это не день 6 или день 7 (что соответствует субботе или воскресенью) оставляешь свою дату без изменений. Но если это 6 или 7 день то от своей предыдущей дате отнимаешь еще один (если день 6) или 2 (если день 7) дня

Все понятно, спасибо! Но как это реализовать нужно еще посидеть голову поломать!
2. vadim1011985 101 26.03.17 10:10 Сейчас в теме
см.функцию глобального контекста ДеньНедели возвращет номер дня в неделе т.е. если номр дня 6 или 7 то это выходной день и надо минусовать еще один или два дня
3. Mexxe 26.03.17 10:30 Сейчас в теме
Спасибо за координацию в нужном направлении! Понял но поверхностно, к сожалению новичок, все с этим связанно нельзя по подробнее ?
6. BigBoss 2 26.03.17 10:42 Сейчас в теме
Хм, тут проблема уже в том, что 1С "не знает" какой день недели не рабочий. Следовательно тут нужен свой функционал.
11. Mexxe 27.03.17 06:46 Сейчас в теме
Сделал вообщем вот так
Функция ДатаЗаявления()
Сегодня = ТекущаяДата ();
ПредыдущаяДата = Сегодня - 259200;
Пока ДеньНедели(ПредыдущаяДата) = 6 или ДеньНедели(ПредыдущаяДата) = 7 Цикл
    ПредыдущаяДата = ПредыдущаяДата - 86400;
КонецЦикла;
Возврат (ПредыдущаяДата);
КонецФункции
Показать
Всем спасибо!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот