Проверить на наличие заказов поставщику в запросе динамического списка заказов клиентов
Здравствуйте! УТ 11.5.
Нужна помощь. Есть список заказов клиентов, формируется произвольным запросом. Есть необходимость при наличии связанного документа Заказа поставщику выводить определенное состояние. Проблема в том что при подключении связи заказов поставщику список открывается по 10 минут. Какую хитрость можно применить чтобы обойтись малой кровью? Делаю в расширении.
Сам запрос:
Нужна помощь. Есть список заказов клиентов, формируется произвольным запросом. Есть необходимость при наличии связанного документа Заказа поставщику выводить определенное состояние. Проблема в том что при подключении связи заказов поставщику список открывается по 10 минут. Какую хитрость можно применить чтобы обойтись малой кровью? Делаю в расширении.
Сам запрос:
Динамический список заказы клиентов |
---|
ВЫБРАТЬ РАЗЛИЧНЫЕ
ЗаказКлиента.Ссылка КАК Заказ ПОМЕСТИТЬ ВТ_ЗП ИЗ Документ.ЗаказКлиента КАК ЗаказКлиента ПОЛНОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК ЗаказПоставщику ПО (ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ЗаказПоставщику.ДокументОснование) = ТИП(Документ.ЗаказКлиента) ТОГДА ЗаказПоставщику.ДокументОснование = ЗаказКлиента.Ссылка КОНЕЦ) ; //////////////////////////////////////////////////////////// ВЫБРАТЬ ДокументЗаказКлиента.Ссылка КАК Ссылка, ДокументЗаказКлиента.ПометкаУдаления КАК ПометкаУдаления, ДокументЗаказКлиента.Номер КАК Номер, ДокументЗаказКлиента.Дата КАК Дата, ДокументЗаказКлиента.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента, ДокументЗаказКлиента.ДатаПоДаннымКлиента КАК ДатаПоДаннымКлиента, ДокументЗаказКлиента.Проведен КАК Проведен, ДокументЗаказКлиента.Приоритет КАК Приоритет, ДокументЗаказКлиента.Партнер КАК Партнер, ДокументЗаказКлиента.Контрагент КАК Контрагент, ДокументЗаказКлиента.Организация КАК Организация, ДокументЗаказКлиента.Соглашение КАК Соглашение, ДокументЗаказКлиента.Договор КАК Договор, ДокументЗаказКлиента.Сделка КАК Сделка, ДокументЗаказКлиента.Валюта КАК Валюта, ДокументЗаказКлиента.СуммаДокумента КАК СуммаДокумента, ДокументЗаказКлиента.СуммаВозвратнойТары КАК СуммаВозвратнойТары, ДокументЗаказКлиента.ГрафикОплаты КАК ГрафикОплаты, ДокументЗаказКлиента.Склад КАК Склад, ДокументЗаказКлиента.Статус КАК Статус, ДокументЗаказКлиента.Менеджер КАК Менеджер, ДокументЗаказКлиента.ДополнительнаяИнформация КАК ДополнительнаяИнформация, ДокументЗаказКлиента.СуммаАвансаДоОбеспечения КАК СуммаАвансаДоОбеспечения, ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки КАК СуммаПредоплатыДоОтгрузки, ДокументЗаказКлиента.ДатаОтгрузки КАК ДатаОтгрузки, ДокументЗаказКлиента.ХозяйственнаяОперация КАК ХозяйственнаяОперация, ДокументЗаказКлиента.ПорядокРасчетов КАК ПорядокРасчетов, ДокументЗаказКлиента.Комментарий КАК Комментарий, ВЫБОР КОГДА НЕ ДокументЗаказКлиента.Проведен ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ПустаяСсылка) КОГДА ДокументЗаказКлиента.Ссылка В (ВЫБРАТЬ ВТ_ЗП.Заказ ИЗ ВТ_ЗП) ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Заказан) ИНАЧЕ ЕСТЬNULL(СостоянияЗаказовКлиентов.Состояние, ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт)) КОНЕЦ КАК Состояние, ВЫБОР КОГДА НЕ ДокументЗаказКлиента.Проведен ТОГДА ЛОЖЬ КОГДА СостоянияЗаказовКлиентов.ДатаСобытия <> ДАТАВРЕМЯ(1, 1, 1) И &ДатаАктуальности > СостоянияЗаказовКлиентов.ДатаСобытия ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК Просрочен, ВЫБОР КОГДА ДокументЗаказКлиента.Приоритет В (ВЫБРАТЬ ПЕРВЫЕ 1 Приоритеты.Ссылка КАК Приоритет ИЗ Справочник.Приоритеты КАК Приоритеты УПОРЯДОЧИТЬ ПО Приоритеты.РеквизитДопУпорядочивания) ТОГДА 0 КОГДА ДокументЗаказКлиента.Приоритет В (ВЫБРАТЬ ПЕРВЫЕ 1 Приоритеты.Ссылка КАК Приоритет ИЗ Справочник.Приоритеты КАК Приоритеты УПОРЯДОЧИТЬ ПО Приоритеты.РеквизитДопУпорядочивания УБЫВ) ТОГДА 2 ИНАЧЕ 1 КОНЕЦ КАК КартинкаПриоритета, ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОплаты, 0) КАК СуммаОплаты, ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОплаты, 0) КАК ПроцентОплаты, ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОтгрузки, 0) КАК СуммаОтгрузки, ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОтгрузки, 0) КАК ПроцентОтгрузки, ВЫБОР КОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) < 0 ТОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) ИНАЧЕ 0 КОНЕЦ КАК НашДолг, ВЫБОР КОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) > 0 ТОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) ИНАЧЕ 0 КОНЕЦ КАК ДолгКлиента, ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентДолга, 0) КАК ПроцентДолга, ЕСТЬNULL(СостоянияЗаказовКлиентов.ДатаСобытия, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаСобытия, ЕСТЬNULL(СостоянияЗаказовКлиентов.ЕстьРасхожденияОрдерНакладная, ЛОЖЬ) КАК ЕстьРасхожденияОрдерНакладная, СостоянияЭД.СостояниеЭДО КАК СостояниеЭДО, СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния, ДокументЗаказКлиента.Автор КАК Автор, &ДополнительныеПоляСостояниеEDI КАК ДополнительныеПоляСостояниеEDI ИЗ Документ.ЗаказКлиента КАК ДокументЗаказКлиента ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов ПО (СостоянияЗаказовКлиентов.Заказ = ДокументЗаказКлиента.Ссылка) {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД ПО (СостоянияЭД.СсылкаНаОбъект = ДокументЗаказКлиента.Ссылка)} ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЗП КАК ВТ_ЗП ПО (ВТ_ЗП.Заказ = ДокументЗаказКлиента.Ссылка) |
По теме из базы знаний
- SMC, SIC, MRP, MRPII, DRP, ERP, APS - Часть 2
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- Интеграция с маркетплейсами МегаМаркет, Wildberries, OZON, ЯндексМаркет, VK, Avito, Леруа Мерлен, Aliexpress, КУПЕР, Dostavista
- Гарри Поттер и подкапотное пространство веб-клиента
- Автоматизированная система управления складом AS WMS: автоматизация склада с адресным хранением с помощью ТСД
Найденные решения
Нужно отдельное внимание оказывать на связи. Вот твой запрос...
ВЫБРАТЬ
ДокументЗаказКлиента.Ссылка КАК Ссылка,
ДокументЗаказКлиента.ПометкаУдаления КАК ПометкаУдаления,
ДокументЗаказКлиента.Номер КАК Номер,
ДокументЗаказКлиента.Дата КАК Дата,
ДокументЗаказКлиента.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента,
ДокументЗаказКлиента.ДатаПоДаннымКлиента КАК ДатаПоДаннымКлиента,
ДокументЗаказКлиента.Проведен КАК Проведен,
ДокументЗаказКлиента.Приоритет КАК Приоритет,
ДокументЗаказКлиента.Партнер КАК Партнер,
ДокументЗаказКлиента.Контрагент КАК Контрагент,
ДокументЗаказКлиента.Организация КАК Организация,
ДокументЗаказКлиента.Соглашение КАК Соглашение,
ДокументЗаказКлиента.Договор КАК Договор,
ДокументЗаказКлиента.Сделка КАК Сделка,
ДокументЗаказКлиента.Валюта КАК Валюта,
ДокументЗаказКлиента.СуммаДокумента КАК СуммаДокумента,
ДокументЗаказКлиента.СуммаВозвратнойТары КАК СуммаВозвратнойТары,
ДокументЗаказКлиента.ГрафикОплаты КАК ГрафикОплаты,
ДокументЗаказКлиента.Склад КАК Склад,
ДокументЗаказКлиента.Статус КАК Статус,
ДокументЗаказКлиента.Менеджер КАК Менеджер,
ДокументЗаказКлиента.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
ДокументЗаказКлиента.СуммаАвансаДоОбеспечения КАК СуммаАвансаДоОбеспечения,
ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки КАК СуммаПредоплатыДоОтгрузки,
ДокументЗаказКлиента.ДатаОтгрузки КАК ДатаОтгрузки,
ДокументЗаказКлиента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
ДокументЗаказКлиента.ПорядокРасчетов КАК ПорядокРасчетов,
ДокументЗаказКлиента.Комментарий КАК Комментарий,
ВЫБОР
КОГДА НЕ ДокументЗаказКлиента.Проведен
ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ПустаяСсылка)
КОГДА Таб_ЗКЗП.ЕстьЗаказПоставщику
ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Заказан)
ИНАЧЕ ЕСТЬNULL(СостоянияЗаказовКлиентов.Состояние, ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт))
КОНЕЦ КАК Состояние,
ВЫБОР
КОГДА НЕ ДокументЗаказКлиента.Проведен
ТОГДА ЛОЖЬ
КОГДА СостоянияЗаказовКлиентов.ДатаСобытия <> ДАТАВРЕМЯ(1, 1, 1)
И &ДатаАктуальности > СостоянияЗаказовКлиентов.ДатаСобытия
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК Просрочен,
ВЫБОР
КОГДА ДокументЗаказКлиента.Приоритет В
(ВЫБРАТЬ ПЕРВЫЕ 1
Приоритеты.Ссылка КАК Приоритет
ИЗ
Справочник.Приоритеты КАК Приоритеты
УПОРЯДОЧИТЬ ПО
Приоритеты.РеквизитДопУпорядочивания)
ТОГДА 0
КОГДА ДокументЗаказКлиента.Приоритет В
(ВЫБРАТЬ ПЕРВЫЕ 1
Приоритеты.Ссылка КАК Приоритет
ИЗ
Справочник.Приоритеты КАК Приоритеты
УПОРЯДОЧИТЬ ПО
Приоритеты.РеквизитДопУпорядочивания УБЫВ)
ТОГДА 2
ИНАЧЕ 1
КОНЕЦ КАК КартинкаПриоритета,
ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОплаты, 0) КАК СуммаОплаты,
ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОплаты, 0) КАК ПроцентОплаты,
ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОтгрузки, 0) КАК СуммаОтгрузки,
ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОтгрузки, 0) КАК ПроцентОтгрузки,
ВЫБОР
КОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) < 0
ТОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0)
ИНАЧЕ 0
КОНЕЦ КАК НашДолг,
ВЫБОР
КОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) > 0
ТОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0)
ИНАЧЕ 0
КОНЕЦ КАК ДолгКлиента,
ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентДолга, 0) КАК ПроцентДолга,
ЕСТЬNULL(СостоянияЗаказовКлиентов.ДатаСобытия, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаСобытия,
ЕСТЬNULL(СостоянияЗаказовКлиентов.ЕстьРасхожденияОрдерНакладная, ЛОЖЬ) КАК ЕстьРасхожденияОрдерНакладная,
СостоянияЭД.СостояниеЭДО КАК СостояниеЭДО,
СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния,
ДокументЗаказКлиента.Автор КАК Автор,
&ДополнительныеПоляСостояниеEDI КАК ДополнительныеПоляСостояниеEDI
ИЗ
Документ.ЗаказКлиента КАК ДокументЗаказКлиента
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
ПО (СостоянияЗаказовКлиентов.Заказ = ДокументЗаказКлиента.Ссылка)
{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД
ПО (СостоянияЭД.СсылкаНаОбъект = ДокументЗаказКлиента.Ссылка)}
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
ЗаказыКлиентов.Ссылка КАК Ссылка,
НЕ ЗаказыПоставщикам.Ссылка ЕСТЬ NULL КАК ЕстьЗаказПоставщику
ИЗ
Документ.ЗаказКлиента КАК ЗаказыКлиентов
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК ЗаказыПоставщикам
ПО ЗаказыКлиентов.Ссылка = ЗаказыПоставщикам.ДокументОснование) КАК Таб_ЗКЗП
ПО ДокументЗаказКлиента.Ссылка = Таб_ЗКЗП.Ссылка
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)Святая корова.....
Если на каждый заказ клиента может быть не больше одного заказа поставщику:
Если будет несколько заказов поставщику, то необходимо определять один из них и выводить в конечном результате
Если на каждый заказ клиента может быть не больше одного заказа поставщику:
Выбрать
Т1.Ссылка,
НЕ Т2.Ссылка ЕСТЬ NULL КАК ЕстьЗаказПоставщику
ИЗ
Документ.ЗаказКлиента КАК Т1
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК Т2
ПО Т1.Ссылка = Т2.ДокументОснование
Если будет несколько заказов поставщику, то необходимо определять один из них и выводить в конечном результате
(4) Сделал вот так, но теперь на ссылку ругается, нужно вложенный запрос делать по ссылке на заказ клиента, но думаю работать будет не быстрее...
Запрос |
---|
ВЫБРАТЬ
ДокументЗаказКлиента.Ссылка КАК Ссылка, ДокументЗаказКлиента.ПометкаУдаления КАК ПометкаУдаления, ДокументЗаказКлиента.Номер КАК Номер, ДокументЗаказКлиента.Дата КАК Дата, ДокументЗаказКлиента.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента, ДокументЗаказКлиента.ДатаПоДаннымКлиента КАК ДатаПоДаннымКлиента, ДокументЗаказКлиента.Проведен КАК Проведен, ДокументЗаказКлиента.Приоритет КАК Приоритет, ДокументЗаказКлиента.Партнер КАК Партнер, ДокументЗаказКлиента.Контрагент КАК Контрагент, ДокументЗаказКлиента.Организация КАК Организация, ДокументЗаказКлиента.Соглашение КАК Соглашение, ДокументЗаказКлиента.Договор КАК Договор, ДокументЗаказКлиента.Сделка КАК Сделка, ДокументЗаказКлиента.Валюта КАК Валюта, ДокументЗаказКлиента.СуммаДокумента КАК СуммаДокумента, ДокументЗаказКлиента.СуммаВозвратнойТары КАК СуммаВозвратнойТары, ДокументЗаказКлиента.ГрафикОплаты КАК ГрафикОплаты, ДокументЗаказКлиента.Склад КАК Склад, ДокументЗаказКлиента.Статус КАК Статус, ДокументЗаказКлиента.Менеджер КАК Менеджер, ДокументЗаказКлиента.ДополнительнаяИнформация КАК ДополнительнаяИнформация, ДокументЗаказКлиента.СуммаАвансаДоОбеспечения КАК СуммаАвансаДоОбеспечения, ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки КАК СуммаПредоплатыДоОтгрузки, ДокументЗаказКлиента.ДатаОтгрузки КАК ДатаОтгрузки, ДокументЗаказКлиента.ХозяйственнаяОперация КАК ХозяйственнаяОперация, ДокументЗаказКлиента.ПорядокРасчетов КАК ПорядокРасчетов, ДокументЗаказКлиента.Комментарий КАК Комментарий, ВЫБОР КОГДА НЕ ДокументЗаказКлиента.Проведен ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ПустаяСсылка) КОГДА НЕ ДокументЗаказКлиента.Ссылка ЕСТЬ NULL //Определяю наличие ссылки ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Заказан) ИНАЧЕ ЕСТЬNULL(СостоянияЗаказовКлиентов.Состояние, ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт)) КОНЕЦ КАК Состояние, ВЫБОР КОГДА НЕ ДокументЗаказКлиента.Проведен ТОГДА ЛОЖЬ КОГДА СостоянияЗаказовКлиентов.ДатаСобытия <> ДАТАВРЕМЯ(1, 1, 1) И &ДатаАктуальности > СостоянияЗаказовКлиентов.ДатаСобытия ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК Просрочен, ВЫБОР КОГДА ДокументЗаказКлиента.Приоритет В (ВЫБРАТЬ ПЕРВЫЕ 1 Приоритеты.Ссылка КАК Приоритет ИЗ Справочник.Приоритеты КАК Приоритеты УПОРЯДОЧИТЬ ПО Приоритеты.РеквизитДопУпорядочивания) ТОГДА 0 КОГДА ДокументЗаказКлиента.Приоритет В (ВЫБРАТЬ ПЕРВЫЕ 1 Приоритеты.Ссылка КАК Приоритет ИЗ Справочник.Приоритеты КАК Приоритеты УПОРЯДОЧИТЬ ПО Приоритеты.РеквизитДопУпорядочивания УБЫВ) ТОГДА 2 ИНАЧЕ 1 КОНЕЦ КАК КартинкаПриоритета, ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОплаты, 0) КАК СуммаОплаты, ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОплаты, 0) КАК ПроцентОплаты, ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОтгрузки, 0) КАК СуммаОтгрузки, ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОтгрузки, 0) КАК ПроцентОтгрузки, ВЫБОР КОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) < 0 ТОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) ИНАЧЕ 0 КОНЕЦ КАК НашДолг, ВЫБОР КОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) > 0 ТОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) ИНАЧЕ 0 КОНЕЦ КАК ДолгКлиента, ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентДолга, 0) КАК ПроцентДолга, ЕСТЬNULL(СостоянияЗаказовКлиентов.ДатаСобытия, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаСобытия, ЕСТЬNULL(СостоянияЗаказовКлиентов.ЕстьРасхожденияОрдерНакладная, ЛОЖЬ) КАК ЕстьРасхожденияОрдерНакладная, СостоянияЭД.СостояниеЭДО КАК СостояниеЭДО, СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния, ДокументЗаказКлиента.Автор КАК Автор, &ДополнительныеПоляСостояниеEDI КАК ДополнительныеПоляСостояниеEDI ИЗ Документ.ЗаказКлиента КАК ДокументЗаказКлиента ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов ПО (СостоянияЗаказовКлиентов.Заказ = ДокументЗаказКлиента.Ссылка) {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД ПО (СостоянияЭД.СсылкаНаОбъект = ДокументЗаказКлиента.Ссылка)} ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК ЗаказПоставщику ПО (ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ЗаказПоставщику.ДокументОснование) = ТИП(Документ.ЗаказКлиента) //Думаю ругается на ссылку из этой связи ТОГДА ЗаказПоставщику.ДокументОснование = ДокументЗаказКлиента.Ссылка КОНЕЦ) |
(7)нет, ругается из-за того, что существуют несколько заказов поставщику на один заказ клиента
Лечится построением 2-х вложенных запросов, но производительность заметно снизится.
Запрос накидал "на коленке", отладка строго обязательна
Лечится построением 2-х вложенных запросов, но производительность заметно снизится.
Выбрать
Т1.Ссылка,
НЕ Т2.Ссылка ЕСТЬ NULL КАК ЕстьЗаказПоставщику
ИЗ
Документ.ЗаказКлиента КАК Т1
ЛЕВОЕ СОЕДИНЕНИЕ (
ВЫБРАТЬ
Т2.Ссылка,
Т2.ДокументОснование
ИЗ
(ВЫБРАТЬ
МАКСИМУМ(Номер) КАК Номер,
ДокументОснование,
ИЗ
Документ.ЗаказПоставщику
СГРУППИРОВАТЬ ПО
ДокументОснование) КАК Т1
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК Т2
ПО Т1.Номер = Т2.Номер
И Т1.ДокументОснование = Т2.ДокументОснование) КАК Т2
ПО Т1.Ссылка = Т2.ДокументОснование
ПоказатьЗапрос накидал "на коленке", отладка строго обязательна
(8) Может применить "Различные" Мне же по сути нужно найти список различных ссылок чтобы проставить нужное состояние
Сделал вот так но работает очень долго...
Сделал вот так но работает очень долго...
Запрос с внутренней таблицей |
---|
ВЫБРАТЬ
ДокументЗаказКлиента.Ссылка КАК Ссылка, ДокументЗаказКлиента.ПометкаУдаления КАК ПометкаУдаления, ДокументЗаказКлиента.Номер КАК Номер, ДокументЗаказКлиента.Дата КАК Дата, ДокументЗаказКлиента.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента, ДокументЗаказКлиента.ДатаПоДаннымКлиента КАК ДатаПоДаннымКлиента, ДокументЗаказКлиента.Проведен КАК Проведен, ДокументЗаказКлиента.Приоритет КАК Приоритет, ДокументЗаказКлиента.Партнер КАК Партнер, ДокументЗаказКлиента.Контрагент КАК Контрагент, ДокументЗаказКлиента.Организация КАК Организация, ДокументЗаказКлиента.Соглашение КАК Соглашение, ДокументЗаказКлиента.Договор КАК Договор, ДокументЗаказКлиента.Сделка КАК Сделка, ДокументЗаказКлиента.Валюта КАК Валюта, ДокументЗаказКлиента.СуммаДокумента КАК СуммаДокумента, ДокументЗаказКлиента.СуммаВозвратнойТары КАК СуммаВозвратнойТары, ДокументЗаказКлиента.ГрафикОплаты КАК ГрафикОплаты, ДокументЗаказКлиента.Склад КАК Склад, ДокументЗаказКлиента.Статус КАК Статус, ДокументЗаказКлиента.Менеджер КАК Менеджер, ДокументЗаказКлиента.ДополнительнаяИнформация КАК ДополнительнаяИнформация, ДокументЗаказКлиента.СуммаАвансаДоОбеспечения КАК СуммаАвансаДоОбеспечения, ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки КАК СуммаПредоплатыДоОтгрузки, ДокументЗаказКлиента.ДатаОтгрузки КАК ДатаОтгрузки, ДокументЗаказКлиента.ХозяйственнаяОперация КАК ХозяйственнаяОперация, ДокументЗаказКлиента.ПорядокРасчетов КАК ПорядокРасчетов, ДокументЗаказКлиента.Комментарий КАК Комментарий, ВЫБОР КОГДА НЕ ДокументЗаказКлиента.Проведен ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ПустаяСсылка) КОГДА ЗаказыВлож.ЕстьЗаказПоставщику //Вот тут проверяю есть ЗП или нет ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Заказан) ИНАЧЕ ЕСТЬNULL(СостоянияЗаказовКлиентов.Состояние, ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт)) КОНЕЦ КАК Состояние, ВЫБОР КОГДА НЕ ДокументЗаказКлиента.Проведен ТОГДА ЛОЖЬ КОГДА СостоянияЗаказовКлиентов.ДатаСобытия <> ДАТАВРЕМЯ(1, 1, 1) И &ДатаАктуальности > СостоянияЗаказовКлиентов.ДатаСобытия ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК Просрочен, ВЫБОР КОГДА ДокументЗаказКлиента.Приоритет В (ВЫБРАТЬ ПЕРВЫЕ 1 Приоритеты.Ссылка КАК Приоритет ИЗ Справочник.Приоритеты КАК Приоритеты УПОРЯДОЧИТЬ ПО Приоритеты.РеквизитДопУпорядочивания) ТОГДА 0 КОГДА ДокументЗаказКлиента.Приоритет В (ВЫБРАТЬ ПЕРВЫЕ 1 Приоритеты.Ссылка КАК Приоритет ИЗ Справочник.Приоритеты КАК Приоритеты УПОРЯДОЧИТЬ ПО Приоритеты.РеквизитДопУпорядочивания УБЫВ) ТОГДА 2 ИНАЧЕ 1 КОНЕЦ КАК КартинкаПриоритета, ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОплаты, 0) КАК СуммаОплаты, ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОплаты, 0) КАК ПроцентОплаты, ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОтгрузки, 0) КАК СуммаОтгрузки, ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОтгрузки, 0) КАК ПроцентОтгрузки, ВЫБОР КОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) < 0 ТОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) ИНАЧЕ 0 КОНЕЦ КАК НашДолг, ВЫБОР КОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) > 0 ТОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) ИНАЧЕ 0 КОНЕЦ КАК ДолгКлиента, ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентДолга, 0) КАК ПроцентДолга, ЕСТЬNULL(СостоянияЗаказовКлиентов.ДатаСобытия, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаСобытия, ЕСТЬNULL(СостоянияЗаказовКлиентов.ЕстьРасхожденияОрдерНакладная, ЛОЖЬ) КАК ЕстьРасхожденияОрдерНакладная, СостоянияЭД.СостояниеЭДО КАК СостояниеЭДО, СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния, ДокументЗаказКлиента.Автор КАК Автор, &ДополнительныеПоляСостояниеEDI КАК ДополнительныеПоляСостояниеEDI ИЗ Документ.ЗаказКлиента КАК ДокументЗаказКлиента ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов ПО (СостоянияЗаказовКлиентов.Заказ = ДокументЗаказКлиента.Ссылка) {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД ПО (СостоянияЭД.СсылкаНаОбъект = ДокументЗаказКлиента.Ссылка)} ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ Т1.Ссылка КАК Ссылка, НЕ Т2.Ссылка ЕСТЬ NULL КАК ЕстьЗаказПоставщику ИЗ Документ.ЗаказКлиента КАК Т1 ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК Т2 ПО (ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(Т2.ДокументОснование) = ТИП(Документ.ЗаказКлиента) ТОГДА Т2.ДокументОснование = Т1.Ссылка КОНЕЦ)) КАК ЗаказыВлож //Соединяю по ссылке на заказ клиента ПО (ЗаказыВлож.Ссылка = ДокументЗаказКлиента.Ссылка) |
(10) Вот посмотрите выше, во внутренней таблице я выбираю по вашей наводке Есть заказ поставщику или нет, далее соединяю эту вложенную таблицу по ссылке на сам заказ основной таблицы, если Истина то состояние "Заказан" Если ложь то иное, но этот запрос не оптимизирован, он работает очень медленно и сжирает кучу памяти, голову сломал уже...
Нужно отдельное внимание оказывать на связи. Вот твой запрос...
ВЫБРАТЬ
ДокументЗаказКлиента.Ссылка КАК Ссылка,
ДокументЗаказКлиента.ПометкаУдаления КАК ПометкаУдаления,
ДокументЗаказКлиента.Номер КАК Номер,
ДокументЗаказКлиента.Дата КАК Дата,
ДокументЗаказКлиента.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента,
ДокументЗаказКлиента.ДатаПоДаннымКлиента КАК ДатаПоДаннымКлиента,
ДокументЗаказКлиента.Проведен КАК Проведен,
ДокументЗаказКлиента.Приоритет КАК Приоритет,
ДокументЗаказКлиента.Партнер КАК Партнер,
ДокументЗаказКлиента.Контрагент КАК Контрагент,
ДокументЗаказКлиента.Организация КАК Организация,
ДокументЗаказКлиента.Соглашение КАК Соглашение,
ДокументЗаказКлиента.Договор КАК Договор,
ДокументЗаказКлиента.Сделка КАК Сделка,
ДокументЗаказКлиента.Валюта КАК Валюта,
ДокументЗаказКлиента.СуммаДокумента КАК СуммаДокумента,
ДокументЗаказКлиента.СуммаВозвратнойТары КАК СуммаВозвратнойТары,
ДокументЗаказКлиента.ГрафикОплаты КАК ГрафикОплаты,
ДокументЗаказКлиента.Склад КАК Склад,
ДокументЗаказКлиента.Статус КАК Статус,
ДокументЗаказКлиента.Менеджер КАК Менеджер,
ДокументЗаказКлиента.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
ДокументЗаказКлиента.СуммаАвансаДоОбеспечения КАК СуммаАвансаДоОбеспечения,
ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки КАК СуммаПредоплатыДоОтгрузки,
ДокументЗаказКлиента.ДатаОтгрузки КАК ДатаОтгрузки,
ДокументЗаказКлиента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
ДокументЗаказКлиента.ПорядокРасчетов КАК ПорядокРасчетов,
ДокументЗаказКлиента.Комментарий КАК Комментарий,
ВЫБОР
КОГДА НЕ ДокументЗаказКлиента.Проведен
ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ПустаяСсылка)
КОГДА Таб_ЗКЗП.ЕстьЗаказПоставщику
ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Заказан)
ИНАЧЕ ЕСТЬNULL(СостоянияЗаказовКлиентов.Состояние, ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт))
КОНЕЦ КАК Состояние,
ВЫБОР
КОГДА НЕ ДокументЗаказКлиента.Проведен
ТОГДА ЛОЖЬ
КОГДА СостоянияЗаказовКлиентов.ДатаСобытия <> ДАТАВРЕМЯ(1, 1, 1)
И &ДатаАктуальности > СостоянияЗаказовКлиентов.ДатаСобытия
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК Просрочен,
ВЫБОР
КОГДА ДокументЗаказКлиента.Приоритет В
(ВЫБРАТЬ ПЕРВЫЕ 1
Приоритеты.Ссылка КАК Приоритет
ИЗ
Справочник.Приоритеты КАК Приоритеты
УПОРЯДОЧИТЬ ПО
Приоритеты.РеквизитДопУпорядочивания)
ТОГДА 0
КОГДА ДокументЗаказКлиента.Приоритет В
(ВЫБРАТЬ ПЕРВЫЕ 1
Приоритеты.Ссылка КАК Приоритет
ИЗ
Справочник.Приоритеты КАК Приоритеты
УПОРЯДОЧИТЬ ПО
Приоритеты.РеквизитДопУпорядочивания УБЫВ)
ТОГДА 2
ИНАЧЕ 1
КОНЕЦ КАК КартинкаПриоритета,
ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОплаты, 0) КАК СуммаОплаты,
ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОплаты, 0) КАК ПроцентОплаты,
ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОтгрузки, 0) КАК СуммаОтгрузки,
ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОтгрузки, 0) КАК ПроцентОтгрузки,
ВЫБОР
КОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) < 0
ТОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0)
ИНАЧЕ 0
КОНЕЦ КАК НашДолг,
ВЫБОР
КОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0) > 0
ТОГДА ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаДолга, 0)
ИНАЧЕ 0
КОНЕЦ КАК ДолгКлиента,
ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентДолга, 0) КАК ПроцентДолга,
ЕСТЬNULL(СостоянияЗаказовКлиентов.ДатаСобытия, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаСобытия,
ЕСТЬNULL(СостоянияЗаказовКлиентов.ЕстьРасхожденияОрдерНакладная, ЛОЖЬ) КАК ЕстьРасхожденияОрдерНакладная,
СостоянияЭД.СостояниеЭДО КАК СостояниеЭДО,
СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния,
ДокументЗаказКлиента.Автор КАК Автор,
&ДополнительныеПоляСостояниеEDI КАК ДополнительныеПоляСостояниеEDI
ИЗ
Документ.ЗаказКлиента КАК ДокументЗаказКлиента
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
ПО (СостоянияЗаказовКлиентов.Заказ = ДокументЗаказКлиента.Ссылка)
{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД
ПО (СостоянияЭД.СсылкаНаОбъект = ДокументЗаказКлиента.Ссылка)}
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
ЗаказыКлиентов.Ссылка КАК Ссылка,
НЕ ЗаказыПоставщикам.Ссылка ЕСТЬ NULL КАК ЕстьЗаказПоставщику
ИЗ
Документ.ЗаказКлиента КАК ЗаказыКлиентов
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК ЗаказыПоставщикам
ПО ЗаказыКлиентов.Ссылка = ЗаказыПоставщикам.ДокументОснование) КАК Таб_ЗКЗП
ПО ДокументЗаказКлиента.Ссылка = Таб_ЗКЗП.Ссылка
Показать
(11)в текущих условиях - по другому никак, т.к. заказ клиента и заказ поставщику - это связь 1-много в общем случае.
есть другой путь: создать периодический подчиненный РС и в него записывать заказы поставщикам, сформированные на основании заказов клиентов, получать срез последних по заказу клиента
есть другой путь: создать периодический подчиненный РС и в него записывать заказы поставщикам, сформированные на основании заказов клиентов, получать срез последних по заказу клиента
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот