Имя: Пароль:
1C
 
УТ 11.4 получить все документы по виду номенклатуры
0 buketovav
 
23.11.20
22:36
Добрый день, Дорогие Форумчане!
Вот задача у меня такая, получить все документы, в табличных частых которых есть номенклатура с определенным видом, у этого вида номенклатуры указана политика учета серий "Серии не используются",
но для склада установлена политика "Управление по FEFO остатками серий". Серия идентифицирует партию товаров.

Я хочу получить все документы. в табличных частях которых есть номенклатура с определенным видом номенклатуры.

Пока выборку делаю так,  чтобы не писать километровый запрос обхожу массив с указанными возможными вариантами документов, которые надо получить


        СписокТиповДокументов = Новый Массив;
    
    СписокТиповДокументов.Добавить(Метаданные.Документы.ПриобретениеТоваровУслуг.Имя);
    СписокТиповДокументов.Добавить(Метаданные.Документы.ВозвратТоваровОтКлиента.Имя);
    СписокТиповДокументов.Добавить(Метаданные.Документы.ВозвратТоваровПоставщику.Имя);
    СписокТиповДокументов.Добавить(Метаданные.Документы.ПеремещениеТоваров.Имя);
    СписокТиповДокументов.Добавить(Метаданные.Документы.СборкаТоваров.Имя);
    СписокТиповДокументов.Добавить(Метаданные.Документы.ПрочееОприходованиеТоваров.Имя);
    
    ТекстЗапроса = "";
    Для каждого Вид Из СписокИменДокументов Цикл
        Если ТекстЗапроса<>"" Тогда
            ТекстЗапроса=ТекстЗапроса+"
            |ОБЪЕДИНИТЬ ВСЕ";
        КонецЕсли;
        
        ТекстЗапроса = ТекстЗапроса+"         
        |ВЫБРАТЬ
        |    " + Вид + "Товары.Ссылка КАК Ссылка
        |ИЗ
        |    Документ." + Вид + ".Товары КАК " + Вид + "
        |
        |СГРУППИРОВАТЬ ПО
        |    " + Вид + "Товары.Ссылка";
            
    КонецЦикла;  

основная проблема, с которой столкнулся, что таким образом я ни как не могу в своем запросе обратиться сразу к ТЧ выбираемых документов, что только не делал, ни как.
А в результате этого запроса я получаю список документов, но как теперь мне его еще обработать, чтобы оставить проведенные и наложить условие на вил номенклатуры, что-то ни как не могу сообразить.

Может кто-то уже что-то подобное делал и может мне подсказать как это реализовать?

Заранее благодарю за ответы ))
1 asady
 
23.11.20
23:00
(0) судя по всему запрос нерабочий
ТекстЗапроса = "";
    Для каждого Вид Из СписокИменДокументов Цикл
        Если ТекстЗапроса<>"" Тогда
            ТекстЗапроса=ТекстЗапроса+"
            |ОБЪЕДИНИТЬ ВСЕ";
        КонецЕсли;
        
        ТекстЗапроса = ТекстЗапроса+"        
        |ВЫБРАТЬ
        |    " + Вид + "Товары.Ссылка КАК Ссылка,
        |    " + Вид + "Товары.Номенклатура КАК Номенклатура
        |ИЗ
        |    Документ." + Вид + ".Товары КАК " + Вид + "Товары //!!!
        |
        |СГРУППИРОВАТЬ ПО
        |    " + Вид + "Товары.Ссылка";
            
    КонецЦикла;  

спокойно обращайся к табличным частям
2 asady
 
23.11.20
23:01
0) судя по всему запрос нерабочий
ТекстЗапроса = "";
    Для каждого Вид Из СписокИменДокументов Цикл
        Если ТекстЗапроса<>"" Тогда
            ТекстЗапроса=ТекстЗапроса+"
            |ОБЪЕДИНИТЬ ВСЕ";
        КонецЕсли;
        
        ТекстЗапроса = ТекстЗапроса+"        
        |ВЫБРАТЬ
        |    " + Вид + "Товары.Ссылка КАК Ссылка,
        |    " + Вид + "Товары.Номенклатура КАК Номенклатура
        |ИЗ
        |    Документ." + Вид + ".Товары КАК " + Вид + "Товары//!!!
//это лишнее
//        |
//        |СГРУППИРОВАТЬ ПО
//        |    " + Вид + "Товары.Ссылка
|";
            
    КонецЦикла;  

спокойно обращайся к табличным частям
3 buketovav
 
23.11.20
23:06
(1) Поле не входит в группу "ПриобретениеТоваровУслугТовары.Номенклатура"
<<?>>ПриобретениеТоваровУслугТовары.Номенклатура КАК Номенклатура
4 buketovav
 
23.11.20
23:07
(3) подобная ошибка и возникает, когда пытался сделать подобным образом
5 buketovav
 
23.11.20
23:08
(2) |    " + Вид + "Товары.Номенклатура КАК Номенклатура - без этого сработало
6 buketovav
 
23.11.20
23:12
(2) а не, вот так все сработало )
теперь осталось наложить условие на вид номенклатуры
7 RomanYS
 
23.11.20
23:16
(0)
Шаблон =
"ВЫБРАТЬ
|  ТЧ.Ссылка КАК Ссылка,
|  ТЧ.Номенклатура КАК Номенклатура
|ИЗ
|  Документ.ПриобретениеТоваровУслуг.Товары КАК ТЧ
|ГДЕ ТЧ.Ссылка.Проведен И ТЧ.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры";

...
Для каждого Вид Из СписокИменДокументов Цикл

...
       ТекстЗапроса = ТекстЗапроса+СтрЗаменить(Шаблон, "ПриобретениеТоваровУслуг", Вид );
8 buketovav
 
23.11.20
23:16
ТЗДокументы.Очистить();
    
    СписокИменДокументов = СформироватьСписокЗначенийСтипамиДокументов();
    
    ТекстЗапроса = "";
    Для каждого Вид Из СписокИменДокументов Цикл
        Если ТекстЗапроса<>"" Тогда
            ТекстЗапроса=ТекстЗапроса+"
            |ОБЪЕДИНИТЬ ВСЕ";
        КонецЕсли;
        
         ТекстЗапроса = ТекстЗапроса+"
        |ВЫБРАТЬ
        |    " + Вид + "Товары.Ссылка КАК Ссылка,
        |    " + Вид + "Товары.Номенклатура КАК Номенклатура
        |ИЗ
        |    Документ." + Вид + ".Товары КАК " + Вид + "Товары
        |ГДЕ
        |" + Вид + "Товары.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры";
                    
    КонецЦикла;  

    Запрос = Новый Запрос(ТекстЗапроса);
    Запрос.УстановитьПараметр("ВидНоменклатуры", ВидНоменклатуры);    
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        НоваСтрокаТЗ = ТЗДокументы.Добавить();
        НоваСтрокаТЗ.Документ = Выборка.Ссылка;
    КонецЦикла;


так пока работает. спасибо
9 RomanYS
 
23.11.20
23:19
Из плюсов подхода (7) - исходный запрос прекрасно создается и редактируется конструктором
10 buketovav
 
23.11.20
23:21
(7) спасибо
попробую и Ваш вариант
11 RomanYS
 
23.11.20
23:33
Интересно схемы запроса кто-нибудь использует, по идее как раз для подобных случаев?
12 buketovav
 
23.11.20
23:35
(11) это Вы про это? - http://catalog.mista.ru/1c/articles/307045/
13 RomanYS
 
24.11.20
00:08
(12) Ага, никак не пойму, эта штука мертворожденная или вполне рабочая. Идея вроде рабочая, и работает вроде в обе стороны (собрать/разобрать запрос), а примеров красивых не встречал.
14 buketovav
 
24.11.20
00:13
(13) согласен, надо пробовать применять в работе. Я, если честно, ни разу не использовал