Имя: Пароль:
1C
1С v8
Запрос, менеджер временых таблиц
,
0 НуВотКак
 
30.11.11
16:55
добавил реквизит = ПоЗаказуПокупателя в ТабличнуюЧастьРаботы, как мне его в результат запроса вытащить?

   Запрос = Новый Запрос;
   Запрос.МенеджерВременныхТаблиц = СтруктураДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ЗаказНарядРаботы.НомерСтроки КАК НомерСтроки,
   |    ЗаказНарядРаботы.Ссылка.Дата КАК Период,
   |    ЗаказНарядРаботы.Ссылка.Финиш,
   |    &Организация КАК Организация,
   |    ЗаказНарядРаботы.Ссылка.СтруктурнаяЕдиницаПродажи КАК СтруктурнаяЕдиница,
   |    ЗаказНарядРаботы.Ссылка.Ответственный КАК Ответственный,
   |    ЗНАЧЕНИЕ(Справочник.ПериодыПланирования.Фактический) КАК ПериодПланирования,
   |    ЗаказНарядРаботы.Номенклатура.СчетУчетаЗатрат КАК СчетУчета,
   |    ЗаказНарядРаботы.Номенклатура КАК Номенклатура,
+========    |    ЗаказНарядРаботы.ПоЗаказуПокупателя КАК ПоЗаказуПокупателя, ==============
   |    ВЫБОР
   |        КОГДА &ИспользоватьХарактеристики
   |            ТОГДА ЗаказНарядРаботы.Характеристика
   |        ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
   |    КОНЕЦ КАК Характеристика,
   |    ЗНАЧЕНИЕ(Справочник.ПартииНоменклатуры.ПустаяСсылка) КАК Партия,
   |    ЗаказНарядРаботы.Ссылка КАК ЗаказПокупателя,
   |    ЗаказНарядРаботы.Ссылка КАК Документ,
   |    ЗаказНарядРаботы.Ссылка.Контрагент КАК Контрагент,
   |    ЗаказНарядРаботы.Ссылка.Контрагент.СчетУчетаРасчетовСПокупателем КАК СчетУчетаРасчетовСПокупателем,
   |    ЗаказНарядРаботы.Ссылка.Договор.ВалютаРасчетов КАК ВалютаРасчетов,
   |    ЗаказНарядРаботы.Ссылка.Договор КАК Договор,
   |    ЗаказНарядРаботы.Ссылка.СтруктурнаяЕдиницаПродажи КАК ПодразделениеПродажи,
   |    ЗаказНарядРаботы.Номенклатура.НаправлениеДеятельности КАК НаправлениеДеятельностиПродажи,
   |    ЗаказНарядРаботы.Номенклатура.НаправлениеДеятельности.СчетУчетаВыручкиОтПродаж КАК СчетУчетаПродажи,
   |    ЗаказНарядРаботы.Номенклатура.НаправлениеДеятельности.СчетУчетаСебестоимостиПродаж КАК СчетУчетаСебестоимость,
   |    ЗаказНарядРаботы.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
   |    ЗаказНарядРаботы.Количество * ЗаказНарядРаботы.Коэффициент * ЗаказНарядРаботы.Кратность КАК Количество,
   |    ЗаказНарядРаботы.СтавкаНДС КАК СтавкаНДС,
   |    ВЫРАЗИТЬ(ВЫБОР
   |            КОГДА ЗаказНарядРаботы.Ссылка.ВалютаДокумента = ЗНАЧЕНИЕ(Справочник.Валюты.НациональнаяВалюта)
   |                ТОГДА ЗаказНарядРаботы.Всего * КурсыРегВалюты.Курс * КурсыУпрВалюты.Кратность / (КурсыУпрВалюты.Курс * КурсыРегВалюты.Кратность)
   |            ИНАЧЕ ЗаказНарядРаботы.Всего * ЗаказНарядРаботы.Ссылка.Курс * КурсыУпрВалюты.Кратность / (КурсыУпрВалюты.Курс * ЗаказНарядРаботы.Ссылка.Кратность)
   |        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК Сумма,
   |    ВЫРАЗИТЬ(ВЫБОР
   |            КОГДА ЗаказНарядРаботы.Ссылка.НДСВключатьВСтоимость
   |                ТОГДА 0
   |            ИНАЧЕ ВЫБОР
   |                    КОГДА ЗаказНарядРаботы.Ссылка.ВалютаДокумента = ЗНАЧЕНИЕ(Справочник.Валюты.НациональнаяВалюта)
   |                        ТОГДА ЗаказНарядРаботы.СуммаНДС * КурсыРегВалюты.Курс * КурсыУпрВалюты.Кратность / (КурсыУпрВалюты.Курс * КурсыРегВалюты.Кратность)
   |                    ИНАЧЕ ЗаказНарядРаботы.СуммаНДС * ЗаказНарядРаботы.Ссылка.Курс * КурсыУпрВалюты.Кратность / (КурсыУпрВалюты.Курс * ЗаказНарядРаботы.Ссылка.Кратность)
   |                КОНЕЦ
   |        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СуммаНДС,
   |    ВЫРАЗИТЬ(ВЫБОР
   |            КОГДА ЗаказНарядРаботы.Ссылка.ВалютаДокумента = ЗНАЧЕНИЕ(Справочник.Валюты.НациональнаяВалюта)
   |                ТОГДА ЗаказНарядРаботы.СуммаНДС * КурсыРегВалюты.Курс * КурсыУпрВалюты.Кратность / (КурсыУпрВалюты.Курс * КурсыРегВалюты.Кратность)
   |            ИНАЧЕ ЗаказНарядРаботы.СуммаНДС * ЗаказНарядРаботы.Ссылка.Курс * КурсыУпрВалюты.Кратность / (КурсыУпрВалюты.Курс * ЗаказНарядРаботы.Ссылка.Кратность)
   |        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СуммаНДСПродажи,
   |    ВЫРАЗИТЬ(ВЫБОР
   |            КОГДА ЗаказНарядРаботы.Ссылка.НДСВключатьВСтоимость
   |                ТОГДА 0
   |            ИНАЧЕ ВЫБОР
   |                    КОГДА ЗаказНарядРаботы.Ссылка.ВалютаДокумента = ЗНАЧЕНИЕ(Справочник.Валюты.НациональнаяВалюта)
   |                        ТОГДА ЗаказНарядРаботы.СуммаНДС * КурсыРегВалюты.Курс * ЗаказНарядРаботы.Ссылка.Кратность / (ЗаказНарядРаботы.Ссылка.Курс * КурсыРегВалюты.Кратность)
   |                    ИНАЧЕ ЗаказНарядРаботы.СуммаНДС
   |                КОНЕЦ
   |        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СуммаНДСВал,
   |    ВЫРАЗИТЬ(ВЫБОР
   |            КОГДА ЗаказНарядРаботы.Ссылка.ВалютаДокумента = ЗНАЧЕНИЕ(Справочник.Валюты.НациональнаяВалюта)
   |                ТОГДА ЗаказНарядРаботы.Всего * КурсыРегВалюты.Курс * ЗаказНарядРаботы.Ссылка.Кратность / (ЗаказНарядРаботы.Ссылка.Курс * КурсыРегВалюты.Кратность)
   |            ИНАЧЕ ЗаказНарядРаботы.Всего
   |        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СуммаВал,
   |    ЗаказНарядРаботы.Количество * ЗаказНарядРаботы.Коэффициент * ЗаказНарядРаботы.Кратность КАК КоличествоПлан,
   |    ЗаказНарядРаботы.Ссылка.СостояниеЗаказа.СтатусЗаказа КАК СтатусЗаказа,
   |    ЗаказНарядРаботы.Ссылка.Закрыт КАК Закрыт,
   |    ЗаказНарядРаботы.Спецификация
   |ПОМЕСТИТЬ ВременнаяТаблицаРаботы
   |ИЗ
   |    Документ.ЗаказПокупателя.Работы КАК ЗаказНарядРаботы
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(
   |                &МоментВремени,
   |                Валюта В
   |                    (ВЫБРАТЬ
   |                        Константы.ВалютаУчета
   |                    ИЗ
   |                        Константы КАК Константы)) КАК КурсыУпрВалюты
   |        ПО (ИСТИНА)
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&МоментВремени, Валюта = ЗНАЧЕНИЕ(Справочник.Валюты.НациональнаяВалюта)) КАК КурсыРегВалюты
   |        ПО (ИСТИНА)
   |ГДЕ
   |    ЗаказНарядРаботы.Ссылка = &Ссылка
   |    И ЗаказНарядРаботы.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд)
   |    И (НЕ ЗаказНарядРаботы.Ссылка.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.Открыт))
   |    И (НЕ(ЗаказНарядРаботы.Ссылка.СостояниеЗаказа.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.ВРаботе)
   |                И ЗаказНарядРаботы.Ссылка.Закрыт))
   |";


   Запрос.ВыполнитьПакет();
   
   
   Запрос = Новый Запрос;
   Запрос.МенеджерВременныхТаблиц = СтруктураДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    МИНИМУМ(ТаблицаЗаказыПокупателей.НомерСтроки),
   |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
   |    ТаблицаЗаказыПокупателей.Финиш Как Период,
   |    ТаблицаЗаказыПокупателей.Организация КАК Организация,
   |    ТаблицаЗаказыПокупателей.Номенклатура КАК Номенклатура,
   |    ТаблицаЗаказыПокупателей.Характеристика КАК Характеристика,
   |    ТаблицаЗаказыПокупателей.ЗаказПокупателя КАК ЗаказПокупателя,
   
   |    СУММА(ТаблицаЗаказыПокупателей.Количество) Как Количество
   |ИЗ
   |    ВременнаяТаблицаРаботы КАК ТаблицаЗаказыПокупателей
   |ГДЕ
   |    ТаблицаЗаказыПокупателей.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.Выполнен)
   |
   |СГРУППИРОВАТЬ ПО
   |    ТаблицаЗаказыПокупателей.Финиш,
   |    ТаблицаЗаказыПокупателей.Организация,
   |    ТаблицаЗаказыПокупателей.Номенклатура,
   |    ТаблицаЗаказыПокупателей.Характеристика,
   |    ТаблицаЗаказыПокупателей.ЗаказПокупателя
   |";
1 НуВотКак
 
30.11.11
16:57
Я с трудом нашел как это собирается, но вклинится в это не могу, три часа парюсь
2 ChAlex
 
30.11.11
17:00
А нафиг так запутанно и что данная конструкция дает интересного?
Запрос.МенеджерВременныхТаблиц = СтруктураДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц;

А не проще ли?

Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц
3 ChAlex
 
30.11.11
17:01
А потом, причем тут менеджер временных таблиц и сама проблема? Не доезжаю
4 Defender aka LINN
 
30.11.11
17:03
(2) СтруктураДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц может уже содержать таблицы.
5 НуВотКак
 
30.11.11
17:03
Я в душе не епу что это дает, это типовой маленького кусочка сбора инфы для проведения, и мне надо подменить "документоснование"
6 ChAlex
 
30.11.11
17:04
Аль влом поставить ЗаказНарядРаботы.ПоЗаказуПокупателя КАК ПоЗаказуПокупателя допустим второй строчкой запроса?
7 Griffin
 
30.11.11
17:04
ТаблицаЗаказыПокупателей.ПоЗаказуПокупателя КАК ПоЗаказуПокупателя добавить в выборку
8 НуВотКак
 
30.11.11
17:07
(6) я вроде поставил, не работает
  |    ЗаказНарядРаботы.Номенклатура КАК Номенклатура,
+========    |    ЗаказНарядРаботы.ПоЗаказуПокупателя КАК ПоЗаказуПокупателя, ==============
9 НуВотКак
 
30.11.11
17:09
"ВЫБРАТЬ
   |    МИНИМУМ(ТаблицаЗаказыПокупателей.НомерСтроки),
   |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
   |    ТаблицаЗаказыПокупателей.Финиш Как Период,
   |    ТаблицаЗаказыПокупателей.Организация КАК Организация,
   |    ТаблицаЗаказыПокупателей.Номенклатура КАК Номенклатура,
   |    ТаблицаЗаказыПокупателей.Характеристика КАК Характеристика,
   |    ТаблицаЗаказыПокупателей.ЗаказПокупателя КАК ЗаказПокупателя,
   |    ТаблицаЗаказыПокупателей.ПоЗаказПокупателя КАК ПоЗаказПокупателя,
   |    СУММА(ТаблицаЗаказыПокупателей.Количество) Как Количество
   |ИЗ
   |    ВременнаяТаблицаРаботы КАК ТаблицаЗаказыПокупателей
   |ГДЕ
   |    ТаблицаЗаказыПокупателей.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.Выполнен)
   |
   |СГРУППИРОВАТЬ ПО
   |    ТаблицаЗаказыПокупателей.Финиш,
   |    ТаблицаЗаказыПокупателей.Организация,
   |    ТаблицаЗаказыПокупателей.Номенклатура,
   |    ТаблицаЗаказыПокупателей.Характеристика,
   |    ТаблицаЗаказыПокупателей.ЗаказПокупателя,
   |    ТаблицаЗаказыПокупателей.ПоЗаказПокупателя
   |";
10 Griffin
 
30.11.11
17:11
(9) ПоЗаказуПокупателя, не ПоЗаказПокупателя
11 ChAlex
 
30.11.11
17:12
А что собственно говоря не работает? Тут работать то нечему, разберитесь в каком месте и откуда что не берется
12 НуВотКак
 
30.11.11
17:13
(10) да я уже понял, спасибо

Да все заработало, всем спасибо.
13 НуВотКак
 
30.11.11
17:23
А вот если встаялять в полный запрос то не работает, это я разбивал чтобы понять в чем ошибка... Ошибка получается в другом ее я точно не понимаю

-----
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ЗаказПокупателя.МодульМенеджера(1060)}: Ошибка при вызове метода контекста (Выполнить)
   РезультатЗапроса = Запрос.Выполнить();
по причине:
{(8, 2)}: Поле не входит в группу "ТаблицаЗаказыПокупателей.ПоЗаказуПокупателя"
<<?>>ТаблицаЗаказыПокупателей.ПоЗаказуПокупателя КАК ЗаказПокупателя,
------
   Запрос = Новый Запрос;
   Запрос.МенеджерВременныхТаблиц = СтруктураДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц;
   Запрос.Текст =
   "ВЫБРАТЬ
   //|    МИНИМУМ(ТаблицаЗаказыПокупателей.НомерСтроки) КАК НомерСтроки,
   //|    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
   //|    ТаблицаЗаказыПокупателей.Период КАК Период,
   //|    ТаблицаЗаказыПокупателей.Организация КАК Организация,
   //|    ТаблицаЗаказыПокупателей.Номенклатура КАК Номенклатура,
   //|    ТаблицаЗаказыПокупателей.Характеристика КАК Характеристика,
   //|    ТаблицаЗаказыПокупателей.ЗаказПокупателя КАК ЗаказПокупателя,
   //|    СУММА(ТаблицаЗаказыПокупателей.КоличествоПлан) КАК Количество
   //|ИЗ
   //|    ВременнаяТаблицаРаботы КАК ТаблицаЗаказыПокупателей
   //|
   //|СГРУППИРОВАТЬ ПО
   //|    ТаблицаЗаказыПокупателей.Период,
   //|    ТаблицаЗаказыПокупателей.Организация,
   //|    ТаблицаЗаказыПокупателей.Номенклатура,
   //|    ТаблицаЗаказыПокупателей.Характеристика,
   //|    ТаблицаЗаказыПокупателей.ЗаказПокупателя
   //|
   //|ОБЪЕДИНИТЬ ВСЕ
   //|
   //|ВЫБРАТЬ
   //|    МИНИМУМ(ТаблицаЗаказыПокупателей.НомерСтроки),
   //|    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход),
   //|    ТаблицаЗаказыПокупателей.Период,
   //|    ТаблицаЗаказыПокупателей.Организация,
   //|    ТаблицаЗаказыПокупателей.Номенклатура,
   //|    ТаблицаЗаказыПокупателей.Характеристика,
   //|    ТаблицаЗаказыПокупателей.ЗаказПокупателя,
   //|    СУММА(ТаблицаЗаказыПокупателей.Количество)
   //|ИЗ
   //|    ВременнаяТаблицаТовары КАК ТаблицаЗаказыПокупателей
   //|
   //|СГРУППИРОВАТЬ ПО
   //|    ТаблицаЗаказыПокупателей.Период,
   //|    ТаблицаЗаказыПокупателей.Организация,
   //|    ТаблицаЗаказыПокупателей.Номенклатура,
   //|    ТаблицаЗаказыПокупателей.Характеристика,
   //|    ТаблицаЗаказыПокупателей.ЗаказПокупателя
   //|
   //|ОБЪЕДИНИТЬ ВСЕ
   //|
   //|ВЫБРАТЬ
   //|ВЫБРАТЬ
   |    МИНИМУМ(ТаблицаЗаказыПокупателей.НомерСтроки),
   |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
   |    ТаблицаЗаказыПокупателей.Финиш Как Период,
   |    ТаблицаЗаказыПокупателей.Организация КАК Организация,
   |    ТаблицаЗаказыПокупателей.Номенклатура КАК Номенклатура,
   |    ТаблицаЗаказыПокупателей.Характеристика КАК Характеристика,
   //|    ТаблицаЗаказыПокупателей.ЗаказПокупателя КАК ЗаказПокупателя,
   |    ТаблицаЗаказыПокупателей.ПоЗаказуПокупателя КАК ЗаказПокупателя,
   |    СУММА(ТаблицаЗаказыПокупателей.Количество) Как Количество
   |ИЗ
   |    ВременнаяТаблицаРаботы КАК ТаблицаЗаказыПокупателей
   |ГДЕ
   |    ТаблицаЗаказыПокупателей.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.Выполнен)
   |
   |СГРУППИРОВАТЬ ПО
   |    ТаблицаЗаказыПокупателей.Финиш,
   |    ТаблицаЗаказыПокупателей.Организация,
   |    ТаблицаЗаказыПокупателей.Номенклатура,
   |    ТаблицаЗаказыПокупателей.Характеристика,
   |    ТаблицаЗаказыПокупателей.ЗаказПокупателя
   |
   |ОБЪЕДИНИТЬ ВСЕ
   |
   |ВЫБРАТЬ
   |    МИНИМУМ(ТаблицаЗаказыПокупателей.НомерСтроки),
   |    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход),
   |    ТаблицаЗаказыПокупателей.Финиш,
   |    ТаблицаЗаказыПокупателей.Организация,
   |    ТаблицаЗаказыПокупателей.Номенклатура,
   |    ТаблицаЗаказыПокупателей.Характеристика,
   |    ТаблицаЗаказыПокупателей.ЗаказПокупателя,
   |    СУММА(ТаблицаЗаказыПокупателей.Количество)
   |ИЗ
   |    ВременнаяТаблицаТовары КАК ТаблицаЗаказыПокупателей
   |ГДЕ
   |    ТаблицаЗаказыПокупателей.СтатусЗаказа = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказов.Выполнен)
   |
   |СГРУППИРОВАТЬ ПО
   |    ТаблицаЗаказыПокупателей.Финиш,
   |    ТаблицаЗаказыПокупателей.Организация,
   |    ТаблицаЗаказыПокупателей.Номенклатура,
   |    ТаблицаЗаказыПокупателей.Характеристика,
   |    ТаблицаЗаказыПокупателей.ЗаказПокупателя";
   
   РезультатЗапроса = Запрос.Выполнить();
14 Buster007
 
30.11.11
17:26
|СГРУППИРОВАТЬ ПО
   |    ТаблицаЗаказыПокупателей.Финиш,
   |    ТаблицаЗаказыПокупателей.Организация,
   |    ТаблицаЗаказыПокупателей.Номенклатура,
   |    ТаблицаЗаказыПокупателей.Характеристика,
   |    ТаблицаЗаказыПокупателей.ЗаказПокупателя
вверху ты закомментил, а в группировке оставил
15 Buster007
 
30.11.11
17:26
|    ТаблицаЗаказыПокупателей.ПоЗаказуПокупателя КАК ЗаказПокупателя,
поставил вот это, а группируешь по старому
16 НуВотКак
 
30.11.11
17:34
Ну ты ты конечно прав ща попробую некуда не уходи ))
17 НуВотКак
 
30.11.11
17:42
Ну в целом все понятно, еще раз спасибо, завтра буду думать а то запросы слишком тяжело
Закон Брукера: Даже маленькая практика стоит большой теории.