gifts2017

Проверка счетов учета номенклатуры в документах одним запросом для БП 2.0

Опубликовал креек фелер (GoodWinSpr) в раздел Программирование - Практика программирования

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


пользуйтесь...перенос строк не работает при копипасте в HyperText Transfer Protocol

ВЫБРАТЬ  ДокументТабличнаяЧасть.Ссылка КАК Ссылка,  ДокументТабличнаяЧасть.Ссылка.Организация КАК Организация,  ДокументТабличнаяЧасть.Ссылка.Склад КАК Склад,  ВЫБОР   КОГДА ДокументТабличнаяЧасть.Ссылка.Склад.ВидСклада = ЗНАЧЕНИЕ(Перечисление.ВидыСкладов.Оптовый)    ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.Оптовый)   ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.Розничный)  КОНЕЦ КАК ТипСклада,  ДокументТабличнаяЧасть.НомерСтроки КАК НомерСтроки,  ДокументТабличнаяЧасть.Номенклатура КАК Номенклатура,  ДокументТабличнаяЧасть.СчетУчета,  ДокументТабличнаяЧасть.СчетДоходов,  ДокументТабличнаяЧасть.СчетРасходов ПОМЕСТИТЬ Документы ИЗ  Документ.РеализацияТоваровУслуг.Товары КАК ДокументТабличнаяЧасть ГДЕ  ДокументТабличнаяЧасть.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон

ИНДЕКСИРОВАТЬ ПО  Организация,  Склад,  ТипСклада,  Номенклатура,  НомерСтроки,  Ссылка ;

//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ  ИсточникИерархии.Номенклатура КАК Номенклатура,  ИсточникИерархии.НоменклатураРодитель КАК НоменклатураРодитель,  СУММА(ВЫБОР    КОГДА ЕСТЬNULL(ИсточникИерархии.НоменклатураПорядок1, ИСТИНА) = ИСТИНА     ТОГДА 0    ИНАЧЕ 1   КОНЕЦ + ВЫБОР    КОГДА ЕСТЬNULL(ИсточникИерархии.НоменклатураПорядок2, ИСТИНА) = ИСТИНА     ТОГДА 0    ИНАЧЕ 2   КОНЕЦ + ВЫБОР    КОГДА ЕСТЬNULL(ИсточникИерархии.НоменклатураПорядок3, ИСТИНА) = ИСТИНА     ТОГДА 0    ИНАЧЕ 3   КОНЕЦ + ВЫБОР    КОГДА ЕСТЬNULL(ИсточникИерархии.НоменклатураПорядок4, ИСТИНА) = ИСТИНА     ТОГДА 0    ИНАЧЕ 4   КОНЕЦ + ВЫБОР    КОГДА ЕСТЬNULL(ИсточникИерархии.НоменклатураПорядок5, ИСТИНА) = ИСТИНА     ТОГДА 0    ИНАЧЕ 5   КОНЕЦ + ВЫБОР    КОГДА ЕСТЬNULL(ИсточникИерархии.НоменклатураПорядок6, ИСТИНА) = ИСТИНА     ТОГДА 0    ИНАЧЕ 6   КОНЕЦ + ВЫБОР    КОГДА ЕСТЬNULL(ИсточникИерархии.НоменклатураПорядок7, ИСТИНА) = ИСТИНА     ТОГДА 0    ИНАЧЕ 7   КОНЕЦ) КАК ПриоритетНоменклатура ПОМЕСТИТЬ НоменклатураСоответствие ИЗ  (ВЫБРАТЬ   Документы.Номенклатура КАК Номенклатура,   Документы.Номенклатура КАК НоменклатураРодитель,   Документы.Номенклатура КАК НоменклатураПорядок7,   NULL КАК НоменклатураПорядок6,   NULL КАК НоменклатураПорядок5,   NULL КАК НоменклатураПорядок4,   NULL КАК НоменклатураПорядок3,   NULL КАК НоменклатураПорядок2,   NULL КАК НоменклатураПорядок1  ИЗ   Документы КАК Документы    ОБЪЕДИНИТЬ ВСЕ    ВЫБРАТЬ   Документы.Номенклатура,   Документы.Номенклатура.Родитель,   NULL,   Документы.Номенклатура.Родитель,   NULL,   NULL,   NULL,   NULL,   NULL  ИЗ   Документы КАК Документы    ОБЪЕДИНИТЬ ВСЕ    ВЫБРАТЬ   Документы.Номенклатура,   Документы.Номенклатура.Родитель.Родитель,   NULL,   NULL,   Документы.Номенклатура.Родитель.Родитель,   NULL,   NULL,   NULL,   NULL  ИЗ   Документы КАК Документы    ОБЪЕДИНИТЬ ВСЕ    ВЫБРАТЬ   Документы.Номенклатура,   Документы.Номенклатура.Родитель.Родитель.Родитель,   NULL,   NULL,   NULL,   Документы.Номенклатура.Родитель.Родитель.Родитель,   NULL,   NULL,   NULL  ИЗ   Документы КАК Документы    ОБЪЕДИНИТЬ ВСЕ    ВЫБРАТЬ   Документы.Номенклатура,   Документы.Номенклатура.Родитель.Родитель.Родитель.Родитель,   NULL,   NULL,   NULL,   NULL,   Документы.Номенклатура.Родитель.Родитель.Родитель.Родитель,   NULL,   NULL  ИЗ   Документы КАК Документы    ОБЪЕДИНИТЬ ВСЕ    ВЫБРАТЬ   Документы.Номенклатура,   Документы.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель,   NULL,   NULL,   NULL,   NULL,   NULL,   Документы.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель,   NULL  ИЗ   Документы КАК Документы    ОБЪЕДИНИТЬ ВСЕ    ВЫБРАТЬ   Документы.Номенклатура,   ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяССылка),   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL  ИЗ   Документы КАК Документы) КАК ИсточникИерархии ГДЕ  ЕСТЬNULL(ИсточникИерархии.НоменклатураРодитель, ИСТИНА) <> ИСТИНА

СГРУППИРОВАТЬ ПО  ИсточникИерархии.Номенклатура,  ИсточникИерархии.НоменклатураРодитель

ИНДЕКСИРОВАТЬ ПО  Номенклатура,  НоменклатураРодитель,  ПриоритетНоменклатура ;

//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ  НоменклатураСоответствие.Номенклатура КАК Номенклатура,  СчетаУчетаНоменклатуры.Номенклатура КАК НоменклатураСчетаУчета,  СчетаУчетаНоменклатуры.Организация КАК Организация,  СчетаУчетаНоменклатуры.Склад КАК Склад,  СчетаУчетаНоменклатуры.ТипСклада КАК ТипСклада,  СчетаУчетаНоменклатуры.СчетУчета,  СчетаУчетаНоменклатуры.СчетДоходовОтРеализации,  СчетаУчетаНоменклатуры.СчетРасходовОтРеализации,  СУММА(НоменклатураСоответствие.ПриоритетНоменклатура * 1000 + ВЫБОР    КОГДА СчетаУчетаНоменклатуры.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)     ТОГДА 0    ИНАЧЕ 1   КОНЕЦ * 500 + ВЫБОР    КОГДА СчетаУчетаНоменклатуры.ТипСклада = ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.ПустаяСсылка)     ТОГДА 0    ИНАЧЕ 1   КОНЕЦ * 300 + ВЫБОР    КОГДА СчетаУчетаНоменклатуры.Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)     ТОГДА 0    ИНАЧЕ 1   КОНЕЦ) КАК ПриоритетСтрока ПОМЕСТИТЬ СчетаУчетаСПриоритетами ИЗ  НоменклатураСоответствие КАК НоменклатураСоответствие   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СчетаУчетаНоменклатуры КАК СчетаУчетаНоменклатуры   ПО НоменклатураСоответствие.НоменклатураРодитель = СчетаУчетаНоменклатуры.Номенклатура ГДЕ  (НЕ ЕСТЬNULL(СчетаУчетаНоменклатуры.Номенклатура, ИСТИНА) = ИСТИНА)

СГРУППИРОВАТЬ ПО  СчетаУчетаНоменклатуры.Номенклатура,  СчетаУчетаНоменклатуры.СчетУчета,  НоменклатураСоответствие.Номенклатура,  СчетаУчетаНоменклатуры.Склад,  СчетаУчетаНоменклатуры.Организация,  СчетаУчетаНоменклатуры.ТипСклада,  СчетаУчетаНоменклатуры.СчетДоходовОтРеализации,  СчетаУчетаНоменклатуры.СчетРасходовОтРеализации

ИНДЕКСИРОВАТЬ ПО  ПриоритетСтрока,  Номенклатура ;

//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ  Документы.Ссылка КАК Ссылка,  Документы.НомерСтроки КАК НомерСтроки,  Документы.Номенклатура КАК Номенклатура,  МАКСИМУМ(СчетаУчетаСПриоритетами.ПриоритетСтрока) КАК ПриоитетСтрока ПОМЕСТИТЬ СчететаУчетаПоСтрокамДокументаСПриоритетом ИЗ  Документы КАК Документы   ЛЕВОЕ СОЕДИНЕНИЕ СчетаУчетаСПриоритетами КАК СчетаУчетаСПриоритетами   ПО (Документы.Номенклатура = СчетаУчетаСПриоритетами.Номенклатура     ИЛИ СчетаУчетаСПриоритетами.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка))    И (Документы.ТипСклада = СчетаУчетаСПриоритетами.ТипСклада     ИЛИ СчетаУчетаСПриоритетами.ТипСклада = ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.ПустаяСсылка))    И (Документы.Организация = СчетаУчетаСПриоритетами.Организация     ИЛИ СчетаУчетаСПриоритетами.Организация = ЗНАЧЕНИЕ(Справочник.организации.ПустаяССылка))    И (Документы.Склад = СчетаУчетаСПриоритетами.Склад     ИЛИ СчетаУчетаСПриоритетами.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка))

СГРУППИРОВАТЬ ПО  Документы.Ссылка,  Документы.НомерСтроки,  Документы.Номенклатура

ИНДЕКСИРОВАТЬ ПО  НомерСтроки,  Ссылка,  ПриоитетСтрока,  Номенклатура ;

//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ  Источник.Ссылка КАК Ссылка,  Источник.НомерСтроки,  Источник.Номенклатура,  Источник.СчетУчета,  Источник.СчетДоходов,  Источник.СчетРасходов,  Источник.СчетУчетаДолженБыть,  Источник.СчетДоходовДолженБыть,  Источник.СчетРасходовДолженБыть,  ВЫБОР   КОГДА Источник.СчетУчета = Источник.СчетУчетаДолженБыть     И Источник.СчетДоходов = Источник.СчетДоходовДолженБыть     И Источник.СчетРасходов = Источник.СчетРасходовДолженБыть    ТОГДА ИСТИНА   ИНАЧЕ ЛОЖЬ  КОНЕЦ КАК ВсеХороше ИЗ  (ВЫБРАТЬ   Документы.Ссылка КАК Ссылка,   Документы.НомерСтроки КАК НомерСтроки,   Документы.Номенклатура КАК Номенклатура,   Документы.СчетУчета КАК СчетУчета,   Документы.СчетДоходов КАК СчетДоходов,   Документы.СчетРасходов КАК СчетРасходов,   ВЫРАЗИТЬ(СчетаУчетаСПриоритетами.СчетУчета КАК ПланСчетов.Хозрасчетный) КАК СчетУчетаДолженБыть,   ВЫРАЗИТЬ(СчетаУчетаСПриоритетами.СчетДоходовОтРеализации КАК ПланСчетов.Хозрасчетный) КАК СчетДоходовДолженБыть,   ВЫРАЗИТЬ(СчетаУчетаСПриоритетами.СчетРасходовОтРеализации КАК ПланСчетов.Хозрасчетный) КАК СчетРасходовДолженБыть  ИЗ   Документы КАК Документы    ЛЕВОЕ СОЕДИНЕНИЕ СчететаУчетаПоСтрокамДокументаСПриоритетом КАК СчететаУчетаПоСтрокамДокументаСПриоритетом     ЛЕВОЕ СОЕДИНЕНИЕ СчетаУчетаСПриоритетами КАК СчетаУчетаСПриоритетами     ПО СчететаУчетаПоСтрокамДокументаСПриоритетом.ПриоитетСтрока = СчетаУчетаСПриоритетами.ПриоритетСтрока      И СчететаУчетаПоСтрокамДокументаСПриоритетом.Номенклатура = СчетаУчетаСПриоритетами.Номенклатура    ПО Документы.Ссылка = СчететаУчетаПоСтрокамДокументаСПриоритетом.Ссылка     И Документы.НомерСтроки = СчететаУчетаПоСтрокамДокументаСПриоритетом.НомерСтроки) КАК Источник ИТОГИ  МИНИМУМ(ВсеХороше) ПО  Ссылка

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Piotr (Tolpinski) 17.11.11 08:04
Скриншотик маловат! ;)
2. креек фелер (GoodWinSpr) 17.11.11 08:12
3. Владимир (sinjevla) 17.11.11 11:12
скриншот симпатичный, а запрос лучше разукрасить
4. Артур Асатрян (Tur_gad) 17.11.11 14:10
Поддерживаю мнение по поводу скрина, А с кодом советую по работать внимательней)
5. mirco brons (mirco) 17.11.11 16:49
Где такую картинку нашли ? Призавайтесь...
6. Руслан Программист 1с (Mudrii_Gankster) 18.11.11 13:03
Да, фотка действительно с большими запросами
7. Дмитрий Ярославцев (DimanYa) 03.07.12 05:18
Это для того, чтобы контролировать с какого счёта списали номенклатуру? Хорошо бы запрос развить в дальнейшую разработку
8. Виктор Захаров (ZVN) 12.05.13 20:08
Да скриншот супер! Видимо это у неё реакция на Ваш запрос с проверкой счетов.
9. Юрий Лазаренко (TitanLuchs) 05.07.13 13:36
Если б потом после запроса оно еще и само переустанавливало счета в необходимых документах... И перепроводило их... Нет в жизни совершенства!
ЗЫ: скриншотик да, надо бы покрупнее сделать...
10. Ольга Пушкова (POLGA) 27.11.15 16:54
Спасибо!!! Пригодился Ваш запрос!