Имя: Пароль:
1C
 
УТ 10.3
0 antotti
 
19.09.15
13:42
Добрый день. Как получить запросом все заказы покупателя, на основание которых не вводились документы??? (вообще ни какие)
То есть как получить заказы, на основание которых не было, например, Реализаций или определенного типа документов я понимаю, а как сразу для всех проверить не  пойму...
1 antotti
 
19.09.15
13:43
Вот так я получаю заказы, на основание которых не было реализаций :   "ВЫБРАТЬ
                   |    РеализацияТоваровУслуг.Ссылка КАК Реализация,
                   |    ЗаказПокупателя.Ссылка КАК Заказ
                   |ПОМЕСТИТЬ ВТ_Заказы
                   |ИЗ
                   |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
                   |        ПО (РеализацияТоваровУслуг.Сделка = ЗаказПокупателя.Ссылка)
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    ЗаказПокупателя.Ссылка
                   |ИЗ
                   |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                   |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Заказы КАК ВТ_Заказы
                   |        ПО (НЕ ЗаказПокупателя.Ссылка В
                   |                    (ВЫБРАТЬ
                   |                        ВТ_Заказы.Заказ
                   |                    ИЗ
                   |                        ВТ_Заказы КАК ВТ_Заказы))
2 Апош
 
19.09.15
13:55
да вы сговорились? какого члена у меня перед глазами ветки ни о чём?
3 Апош
 
19.09.15
13:55
ещё и безграмотные
4 Byasha
 
19.09.15
14:23
Анализируй обороты по регистру "ЗаказыПокупателей". Если нет ни одного регистратора кроме самого "Заказа покупателя", то нет документов оформленных на основании. Исключение - документы оплаты, и документы возвратов от покупателей. Если по договору учет взаиморасчетов ведется по заказам - то анализируй обороты регистров взаиморасчетов. Возвраты - обороты регистра "Продажи".
5 GreatOne
 
19.09.15
14:45
Только запрос? Используй НайтиПоСсылкам()
6 antotti
 
19.09.15
14:53
(4) - Спасибо, попробую переделать как ты сказал, а то я уже написал через 10 временных таблиц для всех документов основания.
7 NcSteel
 
19.09.15
15:28
(0) Самый удобный способ это запилить критерий отбора, вроде подобный в УТ 10.3 есть
8 Byasha
 
19.09.15
15:28
Я бы сделал так.
1. Выгрузил бы остатки по регистру заказов покупателей. Оттуда получил массив заказов.
2. В цикле по всем регистрам проверяю тип измерения регистра. Если есть хотя бы одно измерение содержащее ссылку на заказ покупателя - запросом по оборотам с фильтром по массиву заказов получил бы таблицу оборотов с ненулевым значением хотя бы одного из измерений, и регистратором отличным от заказа покупателя. Из первичного массива заказов удалил бы те заказы, которые есть в таблице оборотов.
3. На выходе получим массив заказов покупателей по которым нет ни одного подчиненного документа.
9 NcSteel
 
19.09.15
15:29
(8) Причем тут РН Заказы покупателей, если например на основании  Заказа могут сделать Заказ поставщику или например счет на оплату
10 Byasha
 
19.09.15
15:36
(9) Если заказ поставщику есть, то он пройдет по регистру размещений, у которого есть измерение со ссылкой на заказ покупателя. А регистр используется что бы получить только те заказы по которым есть остатки. Т.к. если нет остатков, то или заказ отгружен, или закрыт соответствующими документами. Или шерстить все заказы - так их может быть не одна сотня тысяч. Тогда вариант поиска по ссылкам или критерий отбора будет работать сутками.
Критерий отбора имеет смысл использовать если нужно отловить документы которые или не проведены или не формируют движений, и введенны на основании заказа покупателя. Как раз счет на оплату покупателю оттуда можно взять.
11 Byasha
 
19.09.15
15:38
+ к (10)
После анализа регистров, полученный массив заказов покупателей можно как раз через критерий отбора обработать.
12 NcSteel
 
19.09.15
15:39
(10) Зачем? 0_о

Критерий отбора создан для поиска документов когда стандартных запросов недостаточно , например из-за громоздкости. В данном случае придется для заказа кучу таблиц соединять... Проще взять один критерий отбора, который и используется для СТРУКТУРЫ ПОДЧИНЕНИЯ. Зачем городить велосипеды?

эх, стар я уже видимо, вокруг одни велосипедисты
13 Byasha
 
19.09.15
15:46
(12). Критерий отбора работает с одним документов. Ты предлагаешь в цикле по выборке заказов по каждому из них по критерию отбора искать подчиненные документы. Это будет долго.
Я же предлагаю сначала получить список заказов, а потом циклично его обрабатывать. Причем после каждого запроса по регистрами первичный массив документов будет уменьшаться.
По времени работы - будет в разы быстрее. Проверено. Я такую же задачу, как у автора делала для торгующей которых на базе с данными аж с 2009 года.
Там заказов было более полутора миллионов. Вначале я так же попытался через критерий отбора вытащить документы - после пары часов ожидания (обработалось только 10-15% документов) плюнул и переписал так как описано в (8). За полчаса получил массив заказов и грохнул их. Потом правда почти сутки удаление производилось.
14 Byasha
 
19.09.15
15:50
(12) "В данном случае придется для заказа кучу таблиц соединять" - не придется. Я же написал в цикле по регистрам. Для каждого регистра формируется простой запрос по выборке оборотов. На вход подается массив заказов по которым нужно получить обороты. Текст запроса формируется "на лету" и всего несколько строк. На выходе получаем таблицу с документами по которым есть движения их удаляем из исходного массива поданного на вход запроса. В результате массив постоянно уменьшается. Соответственно каждый последующий запрос выполняется в разы быстрее самого первого.
15 Byasha
 
19.09.15
15:55
(12) "вокруг одни велосипедисты". У меня в детстве был велосипед орленок. Класнный велосипед, но  медленный. Я к нему приделал моторчик, вроде как 25 кубиков всего, но скорость увеличилась в пару раз. Такой велик, в простонародье, назывался "газуля". Наверное до сих пор на даче в гараже стоит, если родители не выкинули. :-)
Можно и велосипед использовать, но будет медлено. А можно его проапгрейдить и увеличить скорость.
Хотя если у автора всего по 100 заказов в месяц - то можно вообще типовым отчетом обойтись. Называется "Анализ заказов покупателей".
16 NcSteel
 
19.09.15
15:56
В общем критерии отбора самая простая задача и стоит делать через нее.
А лучше всего иметь четкие критерии "нет документов" Если нет отгрузок, то их и стоит проверять и именно документы, что бы не проведенный не пропустить.
17 NcSteel
 
19.09.15
15:56
(15) Вот именно.
18 Byasha
 
19.09.15
16:02
(16) Ну как говорится на вкус и цвет....
Я один раз обработку сваял, и уже год отлично использую. Причем через пару месяцев переделал ее под любой документ и справочник. Очень выручает когда нужно "мусор" из базы данных убрать. У оптовиков, особенно у тех кто мелочевкой "с колес" торгует используется "на ура". Вычищает 98% мусора. О одних после ее работы база данных прилично сжалась с 230 гигов до 180.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший