Ситуация такая.
есть журнал с документами, в документах есть реквизит "ДатаВыезда"
Как все работает.
Приходит звонок, вводится новый документ и записывается, Дата выезда устанавливается ТекущаяДата + 1
Дальше этот документ какое-то время висит, после того как его выполнили, записывается новая ДатаВыезда.
Задача отобрать из журнала документы с требуемой ДатойВыезда.
Проблема: документ после того как приняли может провисеть с незаполненной ДатойВыезда и день, и месяц, и три и т.д.
Возможно ли каким-то образом при выборке документов, автоматически задавать диапазон дат выборки, так чтобы туда точно попал документ с требуемой "ДатойВыезда"
(1) lodyr, имеется ввиду отбор в журнале документов? Если да - то никак. В отборе может быть только одно значение.
Проще нарисовать простенький отчет. Черный запрос конструктором рисуется за несколько минут.
Возможно ли каким-то образом при выборке документов, автоматически задавать диапазон дат выборки, так чтобы туда точно попал документ с требуемой "ДатойВыезда"
Если речь идет о методе ВыбратьДокументы(НачДата,КонДата), то диапазон:
- можно вообще не задавать, тогда в выборку попадут все документы базы (с учетом фильтров и т.п.);
- задать только первый параметр, соответственно выбираться будут документы от НачДата до последнего документа базы (аналогично в отношении задания только второго параметра).
В вопросе упоминается журнал и "отобрать из журнала". Вот с этим непонятно, что имеется ввиду.
Спасибо за ответы!
Забыл написать, что для отбора используется внешняя обработка. Там создается таблица значений и в нее грузятся отобранные документы.
Я не программер, просто появилась необходимость в добавлении небольшого функционала, думал получится разобраться.
для отбора документов, как раз используется вот эта конструкция
Док = СоздатьОбъект("Документ.заявка");
Док.ВыбратьДокументы(ДатаНач,ДатаКон);
сч = 0;
Пока Док.ПолучитьДокумент()=1 Цикл
думал можно ее как-то модифицировать и вместо метода ВыбратьДокументы(НачДата,КонДата) что-то использовать еще, чтобы в качестве отбора использовать реквизит ДатаВыезда.
В принципе сейчас решение есть, сначала задаем НачДата и КонДата, а потом внутри цикла отбираем нужные документы по ДатаВыезда, но думал можно еще как-то решить. Если не задавать НачДата и КонДата, то поиск идет очень долго по всем документам.
(5) Pari, ага правильно, при этом не использовать дат создания документов или использовать, но так чтобы не было лишних переборов, чтобы происходило быстрое формирование таблицы
Я правда далек от 1с, но чего-то мне кажется так нельзя сделать или вообще подход должен быть другой к решению задачи.
У меня сейчас так, сначала выбираются документы за определенный интервал дат, а потом среди них отбираются документы с требуемой ДатойВыезда. Как-то можно исключить выборку документов за определенный интервал и отбирать сразу по ДатеВыезда?
но чего-то мне кажется так нельзя сделать или вообще подход должен быть другой к решению задачи.
(6) Если ввести ограничение на выбор начальной и конечной дат, а именно получать отчет за календарный месяц (т.е. нач. дата всегда начало произвольного месяца, а кон.дата последняя дата этого месяца), то можно было бы добавить реквизит МесяцГод (типа "0112"), по которому установить отбор для заявок. Тогда можно использовать метод ВыбратьПоЗначению(,,"МесяцГод",НужныйМесяц). В новые документы записывать значение МесяцГод при выполнении заявки, а в уже существующие добить обработкой.
Если совсем произвольный интервал, тогда запросом должно получиться. Как советует Cartman в (3) с условием на ДатаВыезда, или Ёпрст в (7)
(9) Pari, спасибо за ответ.
Буду пробовать, но даже и не знаю с чего начать
Можно воткнуть этот реквизит в графу отбора и отбирать по ней.
Для скорости - писать прямой запрос к базе.
еще бы вот это пояснить)))
где должна быть графа отбора и где почитать про прямой запрос к базе)
Просто как я понимаю, здесь сложность в том, что все равно наверно надо будет проглядывать всю базу с начала и до дня выезда или брать какой-то промежуток, актуальный. Потому что если заказ был принят год назад, то он уже теоретически не актуален.
Создаешь новую графу отбора в дереве метаданных, значением для неё - твоя ДатаВыезда из документа заявка.
Всё собственно.
Далее тупо
Док.ВыбратьПоЗначению(,,"ИмяГрафыОтбора",ДатаВыезда)
Если скорость не устраивает (а она будет в разы быстрее, чем сейчас у тебя даже так) - пишешь прямой запрос к данным.
У меня еще вопрос, а как выбирать по интервалу дат ДатаВыезда?
надо написать цикл, в котором надо несколько раз обращаться к методу ВыбратьПоЗначению(,,"ИмяГрафыОтбора",ДатаВыезда) и постепенно заполнять таблицу?