Имя: Пароль:
1C
1С v8
Перехват запроса у построителя
0 picom
 
27.08.12
17:58
В УПП есть бланк товарного наполнения
остатки он показывает по складу из документа
Собственно нужно остатки без учета организации по складу.
...
Открываю обработку
Нахожу текст запроса в построителе
загоняю его в буфер чтобы потом его поковырять в консоле запросов или отчетов
...
А там комментарии
удаляем комменты
ругается на итоги (
Как запрос выхватить пригодный для СКД?
..

ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ЗапросАдрес.*
//СВОЙСТВА
//ПРЕДСТАВЛЕНИЯ_СВОЙСТВА
ИЗ
   (ВЫБРАТЬ
       ОсновнаяТаблица.Номенклатура КАК Номенклатура,
       ОсновнаяТаблица.Номенклатура.Наименование КАК НоменклатураПредставление,
       ОсновнаяТаблица.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
       ОсновнаяТаблица.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияПредставление,
       ОсновнаяТаблица.Номенклатура.ЕдиницаДляОтчетов КАК ЕдиницаДляОтчетов,
       ОсновнаяТаблица.Номенклатура.ЕдиницаДляОтчетов.Наименование КАК ЕдиницаДляОтчетовПредставление,
       ОсновнаяТаблица.ЕдиницаИзмерения.Вес * ОсновнаяТаблица.Количество КАК Вес,
       ОсновнаяТаблица.Склад КАК СкладОтгрузкиОприходования,
       ОсновнаяТаблица.Количество КАК Количество,
       ОсновнаяТаблица.Количество / ОсновнаяТаблица.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоОтч,
       ЕСТЬNULL(РегМестаХраненияОсновной.МестоХранения, "") КАК МестоХраненияРодитель,
       ЕСТЬNULL(РегМестаХранения.МестоХранения.Наименование, "") КАК МестоХранения,
       ЕСТЬNULL(РегМестаХранения.Приоритет, 0) КАК Приоритет,
       СпрСклады.Ссылка КАК Склад,
       СпрСклады.Наименование КАК СкладПредставление,
       ВЫРАЗИТЬ(((ЕСТЬNULL(ТоварыНаСкладах.КоличествоОстаток, 0)
          - ЕСТЬNULL(ТоварыВРезервеНаСкладах.КоличествоОстаток, 0)
          - ЕСТЬNULL(ТоварыКПередачеСоСкладов.КоличествоОстаток, 0)
          + ЕСТЬNULL(РезервыПоЗаказу.КоличествоОстаток, 0)

          + ЕСТЬNULL(ТоварыНаСкладахПоДокументу.Количество, 0)
          - ЕСТЬNULL(ТоварыВРезервеНаСкладахПоДокументу.Количество, 0)
          - ЕСТЬNULL(ТоварыКПередачеСоСкладовПоДокументу.Количество, 0)
          ) * ОсновнаяТаблица.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент
          / ОсновнаяТаблица.ЕдиницаИзмерения.Коэффициент) КАК ЧИСЛО(15, 3)) КАК Остаток
   ИЗ
       (ВЫБРАТЬ
           ДокИсточникПервичный.Склад КАК Склад,
           ДокИсточникПервичный.Номенклатура КАК Номенклатура,
           ДокИсточникПервичный.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
           ДокИсточникПервичный.Количество КАК Количество,
           МИНИМУМ(ЕСТЬNULL(РегМестаХранения.Приоритет, 0)) КАК МинПриоритет
       ИЗ
           (ВЫБРАТЬ
               ТЧТовары.Склад КАК Склад,
               ЕСТЬNULL(ТЧСоставНабора.Номенклатура, ТЧТовары.Номенклатура) КАК Номенклатура,
               ЕСТЬNULL(ТЧСоставНабора.ЕдиницаИзмерения, ТЧТовары.ЕдиницаИзмерения) КАК ЕдиницаИзмерения,
               СУММА(ЕСТЬNULL(ТЧСоставНабора.Количество * ТЧТовары.Количество, ТЧТовары.Количество)) КАК Количество

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

   ЕСТЬNULL(ДокСостав.Номенклатура, Док.Номенклатура) КАК Номенклатура

ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК Док

ЛЕВОЕ СОЕДИНЕНИЕ
   Документ.РеализацияТоваровУслуг.СоставНабора КАК ДокСостав
ПО
   ДокСостав.Ссылка = Док.Ссылка
   И ДокСостав.КлючСтроки = Док.КлючСтроки

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

   ЕСТЬNULL(ДокСостав.Номенклатура, Док.Номенклатура) КАК Номенклатура

ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК Док

ЛЕВОЕ СОЕДИНЕНИЕ
   Документ.РеализацияТоваровУслуг.СоставНабора КАК ДокСостав
ПО
   ДокСостав.Ссылка = Док.Ссылка
   И ДокСостав.КлючСтроки = Док.КлючСтроки

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

   ЕСТЬNULL(ДокСостав.Номенклатура, Док.Номенклатура) КАК Номенклатура

ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК Док

ЛЕВОЕ СОЕДИНЕНИЕ
   Документ.РеализацияТоваровУслуг.СоставНабора КАК ДокСостав
ПО
   ДокСостав.Ссылка = Док.Ссылка
   И ДокСостав.КлючСтроки = Док.КлючСтроки

ГДЕ
   Док.Ссылка = &ТекДокумент
   
)) КАК ТоварыКПередачеСоСкладов
           ПО ТоварыКПередачеСоСкладов.Склад = СпрСклады.Ссылка
               И ТоварыКПередачеСоСкладов.Номенклатура = ОсновнаяТаблица.Номенклатура
           ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(,
              ДокументРезерва = &ДокументРезерва) КАК РезервыПоЗаказу
           ПО РезервыПоЗаказу.Номенклатура = ОсновнаяТаблица.Номенклатура
               И РезервыПоЗаказу.Склад = СпрСклады.Ссылка

           ЛЕВОЕ СОЕДИНЕНИЕ
               (ВЫБРАТЬ
                   ТоварыНаСкладах.Номенклатура КАК Номенклатура,
                   ТоварыНаСкладах.Склад КАК Склад,
                   СУММА(ВЫБОР КОГДА ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
                       -ТоварыНаСкладах.Количество
                   ИНАЧЕ
                       ТоварыНаСкладах.Количество
                   КОНЕЦ) КАК Количество
               ИЗ
                   РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
               ГДЕ
                   ТоварыНаСкладах.Регистратор = &ТекДокумент
               СГРУППИРОВАТЬ ПО
                   ТоварыНаСкладах.Номенклатура,
                   ТоварыНаСкладах.Склад
               ) КАК ТоварыНаСкладахПоДокументу
           ПО ТоварыНаСкладахПоДокументу.Склад = СпрСклады.Ссылка
               И ТоварыНаСкладахПоДокументу.Номенклатура = ОсновнаяТаблица.Номенклатура
           ЛЕВОЕ СОЕДИНЕНИЕ
               (ВЫБРАТЬ
                   ТоварыВРезервеНаСкладах.Номенклатура КАК Номенклатура,
                   ТоварыВРезервеНаСкладах.Склад КАК Склад,
                   СУММА(ВЫБОР КОГДА ТоварыВРезервеНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
                       -ТоварыВРезервеНаСкладах.Количество
                   ИНАЧЕ
                       ТоварыВРезервеНаСкладах.Количество
                   КОНЕЦ) КАК Количество
               ИЗ
                   РегистрНакопления.ТоварыВРезервеНаСкладах КАК ТоварыВРезервеНаСкладах
               ГДЕ
                   ТоварыВРезервеНаСкладах.Регистратор = &ТекДокумент
               СГРУППИРОВАТЬ ПО
                   ТоварыВРезервеНаСкладах.Номенклатура,
                   ТоварыВРезервеНаСкладах.Склад
               ) КАК ТоварыВРезервеНаСкладахПоДокументу
           ПО ТоварыВРезервеНаСкладахПоДокументу.Склад = СпрСклады.Ссылка
               И ТоварыВРезервеНаСкладахПоДокументу.Номенклатура = ОсновнаяТаблица.Номенклатура
           ЛЕВОЕ СОЕДИНЕНИЕ
               (ВЫБРАТЬ
                   ТоварыКПередачеСоСкладов.Номенклатура КАК Номенклатура,
                   ТоварыКПередачеСоСкладов.Склад КАК Склад,
                   СУММА(ВЫБОР КОГДА ТоварыКПередачеСоСкладов.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
                       -ТоварыКПередачеСоСкладов.Количество
                   ИНАЧЕ
                       ТоварыКПередачеСоСкладов.Количество
                   КОНЕЦ) КАК Количество
               ИЗ
                   РегистрНакопления.ТоварыКПередачеСоСкладов КАК ТоварыКПередачеСоСкладов
               ГДЕ
                   ТоварыКПередачеСоСкладов.Регистратор = &ТекДокумент
               СГРУППИРОВАТЬ ПО
                   ТоварыКПередачеСоСкладов.Номенклатура,
                   ТоварыКПередачеСоСкладов.Склад
               ) КАК ТоварыКПередачеСоСкладовПоДокументу
           ПО ТоварыКПередачеСоСкладовПоДокументу.Склад = СпрСклады.Ссылка
               И ТоварыКПередачеСоСкладовПоДокументу.Номенклатура = ОсновнаяТаблица.Номенклатура
) КАК ЗапросАдрес
//СОЕДИНЕНИЯ
УПОРЯДОЧИТЬ ПО
   МестоХраненияРодитель,
   Приоритет,
   МестоХранения
ИТОГИ
   МИНИМУМ(ЕдиницаИзмерения),
   МИНИМУМ(ЕдиницаДляОтчетов),
   СРЕДНЕЕ(Вес),
   СРЕДНЕЕ(Количество),
   СРЕДНЕЕ(КоличествоОтч),
   МИНИМУМ(МестоХранения),
   СРЕДНЕЕ(Остаток),
   МИНИМУМ(НоменклатураПредставление),
   МИНИМУМ(ЕдиницаИзмеренияПредставление),
   МИНИМУМ(ЕдиницаДляОтчетовПредставление),
   МИНИМУМ(СкладПредставление)
//ИТОГИ
ПО
   СкладОтгрузкиОприходования,
   МестоХраненияРодитель,
   Номенклатура,
   Склад,
   Приоритет
//ОБЩИЕ_СВОЙСТВА
АВТОУПОРЯДОЧИВАНИЕ
1 GROOVY
 
27.08.12
18:05
ПостроительОтчета.ПолучитьЗапрос (ReportBuilder.GetQuery)
ПостроительОтчета (ReportBuilder)
ПолучитьЗапрос (GetQuery)
Синтаксис:

ПолучитьЗапрос()
Возвращаемое значение:

Тип: Запрос.

Описание:

Получить запрос для выполнения отчета. Данный метод недоступен в случае, если установлено свойство ИсточникДанных.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Пример:

РезультатЗапроса = ПостроительОтчета.ПолучитьЗапрос().Выполнить();



Текст = ПостроительОтчета.ПолучитьЗапрос().Текст;
2 picom
 
27.08.12
18:07
Понял, спасбо
3 Fragster
 
гуру
27.08.12
18:07
(1) так это ты у автора СП украл?
4 GROOVY
 
27.08.12
18:15
Это не я это ДенисЧ
Закон Брукера: Даже маленькая практика стоит большой теории.