Имя: Пароль:
1C
1С v8
Запрос ТЧ "Товары" по любому типу документа
0 spiller26
 
04.02.13
16:01
Суть такова хочу сделать универсальную функцию для проверки Номенклатуры в ТЧ "Товары", для любого типа документа (в котором есть ТЧ "Товары" естественно проверка мне не нужна, т.к. она будет вписываться мною), но с запросом всё никак.

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


хелп ми!
1 GLazNik
 
04.02.13
16:04
меняй текст запроса в зависимости от вида документа
2 spiller26
 
04.02.13
16:18
(1) Всё реализовал свой злосный план

Функция ЭтоПродукцияКомпании(пДокументСсылка, пГруппаНоменклатурыСсылка) Экспорт
   ЭтоПродукция = Истина;
   //
   ТипДока = пДокументСсылка.Метаданные().Имя;
   //
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    ДокТовары.Номенклатура,
                  |    ВЫБОР
                  |        КОГДА ДокТовары.Номенклатура В ИЕРАРХИИ (&Группа)
                  |            ТОГДА ИСТИНА
                  |        ИНАЧЕ ЛОЖЬ
                  |    КОНЕЦ КАК ВГруппе
                  |ИЗ
                  |    Документ." + ТипДока +".Товары КАК ДокТовары
                  |ГДЕ
                  |    ДокТовары.Ссылка = &ДокСсылка";
   Запрос.УстановитьПараметр("Группа",    пГруппаНоменклатурыСсылка);    //Группа Номенклатура
   Запрос.УстановитьПараметр("ДокСсылка", пДокументСсылка);        //Заказ покупателя
   Результат = Запрос.Выполнить().Выбрать();
   //
   Пока Результат.Следующий() Цикл
       Если Не Результат.ВГруппе Тогда
           ГруппаДа = Ложь;    
       КонецЕсли;
   КонецЦикла;
   Возврат ГруппаДа;    
КонецФункции
3 Serg_1960
 
04.02.13
16:20
(0) А если ТЧ документа будет называться не "Товары", а допустим - "Материалы"? :)
4 spiller26
 
04.02.13
16:23
(3) Я ж писал, что это мне и не нужно. Я проверку вставлять буду только в документы с ТЧ "Товары", на крайняк можно добавить в параметр "пТипТЧ" (строка) и передавать туда "Товары" или "Материалы", запихнуть также в запрос:

Функция ЭтоПродукцияКомпании(пДокументСсылка, пГруппаНоменклатурыСсылка, пТипТЧ) Экспорт
5 Serg_1960
 
04.02.13
16:35
Жуть. В начале функции "ЭтоПродукция = Истина;" - без продолжения, а в окончание функции - неожиданное "Возврат ГруппаДа;"
6 Fragster
 
гуру
04.02.13
16:37
Из
   &_Товары КАК ДокТовары



Запрос.Текст = СтрЗаменить(ТекстЗапроса, "&_Товары", Метаданные.ПолноеИмя());
7 Fragster
 
гуру
04.02.13
16:38
вообще жесткий велосипед где-то вокруг этого кода...
8 spiller26
 
04.02.13
16:47
(5) ну забыл там по идее "ГруппаДа"
9 Fragster
 
гуру
04.02.13
17:27
Выбрать Первые 1 Из ... где ДокТовары.Номенклатура Не В ИЕРАРХИИ (&Группа)


Возврат Не Результат.Пустой()
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший