Подскажите лучший способ прибавления к дате рабочих дней в запросе #789439


#0 by tciban
Уважаемые коллеги! подскажите как в запросе получить новую дату путем прибавления к ней некоторого количества рабочих дней! Суть проблемы проста как мир - есть документы отгрузки (с датами :)), в документах есть договор, в договоре - поле отсрочки в рабочих днях. Есть Регламентированный Производственный Календарь. Нужно получить в отчете СКД даты истечения отсрочки. Буду благодарен за пример кода или ссылку на оный!
#1 by piter3
РАЗНОСТЬДАТ и ДОБАВИТЬКДАТЕ
#2 by tciban
Мне нужно добавить к дате рабочие дни. Только рабочие, без праздников и выходных.
#3 by piter3
ну и ставь условия на .
#4 by tciban
Люди накрученные запросы пишут, по пять виртуалных таблиц вычисляют , а у вас так просто - поставить условия да и все. Что то я видно не понимаю ни в запросах ни в программировании вовсе. Не предоставите ли любезно образчик запроса?
#5 by WebberNSK
Посмотрите в ERP метод ОбеспечениеСервер.ТекстЗапросаДатГрафика
#6 by SSSSS_AAAAA
В запросах нормальные люди ничего к специфическим датам, Дкоими, в частности, являются и рабочие, не прибавляют. Жаты вообще не вычисляют, а используют таблицы с календарями, на которые и накладывают нужные условия.
#7 by FIXXXL
мож проще при проведении документа эту дату писать в свой регистр? и его цеплять в запрос в договоре срок отсрочки менять ведь нельзя?
#8 by tciban
Ну как всегда мы пишем отчет и исходим из условия, что рабочую конфу менять нельзя :)
#9 by tciban
Ох-хо-хо... Это ж еще надо скачать и установить erp! А я для УПП 1.2 делаю :( Можно вас попросить любезно скинуть мне на почту текст помянутого вами метода?
#10 by FIXXXL
ну сваргань таблицу, обсчитай и сунь ее в набор данных СКД или временную в запрос, в СКД уже финальную таблицу
#11 by svsvsv
В УПП 1.3 (может и в УПП 1.2 тоже) есть такой регистр - РегламентированныйПроивзодственныйКалендарь. ВЫБРАТЬ ПЕРВЫЕ 5 //ЗДЕСЬ НУЖНО ПОСТАВИТЬ КОЛ-ВО ДНЕЙ     РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря ИЗ     РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь Как то так.
#12 by svsvsv
и в первой таблице поставить "=" вместо ">="
#13 by FIXXXL
напиши на каждую строку отчета, разные договора, разные даты документов
#14 by kumena
> Как то так. не так, твой одноразовый запрос нафиг не уперся.
#15 by kumena
технология вообще такая, нужно сделать таблицу с пронумерованными днями. сделав соединение по дате узнаем номер дня, а к номеру дня прибавим количество дней и узнаем нужный день.
#16 by kumena
естественно все в запросе, я делал такое давным давно
#17 by tciban
Коллеги! Больше идей нет?
#18 by Быдло замкадное
нужна платформенная функция ПрибавитьКДатеРабочихДней ? Ее нет
#19 by tciban
Я типа про запросы тут.
#20 by kumena
а чем тебе технология в 15 посте не нравиться?
#21 by kumena
там все разжевано, если запросы писать умеешь, то сделать вообще не проблема.
#22 by DrZombi
через запрос
#23 by kumena
могу написать пример, не бесплатно.
#24 by FIXXXL
в каждой строке отчета Дата и Число из таблицы с рабочими днями надо выдернуть начиная с Дата столько строк с "1", сколько в Число и потом просуммировать "1" наверное можно в запросе, но в пятницу неохота думать :)
#25 by marvak
Если нужно учитывать праздники, то только через производственный календарь.
#26 by FIXXXL
не проссумировать, а получить последнюю старшую из "1"-ых пятница :)
#27 by Лефмихалыч
#28 by Лефмихалыч
ОтсрочкаПоСоглашению.КоличествоДней - выкосить, это лишнее
#29 by svsvsv
#30 by svsvsv
так тоже неправильно
#31 by tciban
Спасибо! Будем пробовать!
#32 by svsvsv
В последней таблице надо не РАЗНОСТЬДАТ использовать, нужно более сложный запрос писать, сейчас пока не твремени
#33 by tciban
Не, твой запрос под добавление ко многим датам документов перепилить не смог...
#34 by tciban
Ладно, давайте ужо в понедельник поднимем тему... Сейчас уже все.
#35 by SoulPower
#36 by ELEA26
праздники надо учитывать или нет? От этого зависит - только производственный календарь или можно без него.
#37 by tciban
Праздники конечно надо учитывать
#38 by tciban
Все классно, заработало! Правда не очень быстро... Исходный запрос, в котором получаю документы возникновения долга, выполняется за 1 183 мс, а с расчетом дат - 170 474 мс :(
#39 by Ildarovich
Посмотрите статью . В ней похожая задача и достаточно экономный по времени метод прибавления рабочих дней, а также ссылки на множество других публикаций по тому же вопросу. Проблема запроса в в том, что неэкономные соединения делаются для всех заданных дат, а нужно, как уже говорилось в и как сделано в статье по ссылке, сначала получить единую таблицу пронумерованных подряд рабочих дней, а затем работать уже с ней - находить по заданной дате номер рабочего дня, прибавлять к этому номеру число дней отсрочки и по прибавленному номеру находить обратно искомую дату. В итоге время работы запроса должно очень сильно сократиться из-за однократности использования тэта-соединения.
#40 by tciban
Это был первый вариант, но при отгрузке в нерабочие дни он не рассчитывает даты. Кстати, документы я получаю по вашему алгоритму из Огромное вам за него спасибо!!!
#41 by tciban
Кстати, померял в консоле запросов оба варианта на выборке документов с начала декабря - получилось что у SoulPower быстрее чем алгоритм Игронова
#42 by tciban
Сергей! Раз уж Вы заглянули сюда - вопросик по Вашему алгоритму - почему резко увеличивается время выполнения когда добавляю в настройках СКД группировку по Контрагент.ОсновнойМенеджерПокупателя с иерархией? Так и должно быть или же есть способ, что бы работало быстрее?
#43 by Fragster
В новых БСП в этом РС есть хорошее измерение РабочихДнейСНачалаГода или как-то так... тогда не надо считать сумму, а можно просто прибавить нужное количество (ну, и немного поизвращаться с переходом через границу года)
#44 by tciban
Увы, но я пишу отчетец для УПП 1.2, какие уж тут БСП!
#45 by tciban
И конечно же нужно не лезть в конфу и не менять структуру данных...
#46 by Fragster
может я пропустил, но где в этой ветке указание на то, какая версия БСП, или хотя бы какая версия типового решения используется?
#47 by Fragster
кроме
#48 by Fragster
а, нашел. ну, тогда только суммировать. но я бы не в два раза больше запас делал, а в 15 дней на каждый год + 2 на каждую неделю.
#49 by tciban
Попробую, спасибо за совет! :)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С