|
УТ 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) согласен, надо пробовать применять в работе. Я, если честно, ни разу не использовал
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |