ОБСУЖДЕНИЕ

Запрос по документу и справочнику

5 ответов 5 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

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

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


Пока Результат .Следующий() Цикл

................................
//Процедура списания комплектующих,товар ведь как таковой не списываеся...
.................................
Перемен = ИСТИНА;
КонецЦикла;
Если не Перемен Тогда
....................................
//Списываем товар у которого нет комплектующих
.....................................
КонецЕсли
КонецЦикла;

Перебираем строки табличной части ТаблицаНоменклатура и если запрос выдает необходимую информацию,то есть проверяется условие есть ли комплектующие или нет,если есть то списываем нужную номенклатуру...



P.S. код на 8.1...
 
BikerDan Дело в том, что у номенклатуры имеется признак "ИмеетКомплектующие". Вот пишу вот такой запрос:
"ВЫБРАТЬ
| Номенклатура.Комплектующие.(
| Комплектующая,
| Количество
| )
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| &ИмеетКомплектующие = 1
| Номенклатура.Ссылка = &Номенклатура";

Запрос.УстановитьПараметр("Номенклатура",ТекТовар.Номенклатура);
Запрос.УстановитьПараметр("ИмеетКомплектующие",ТекТовар.Номенклатура.ИмеетКомплектующие);

Выдает пустой результат...
 
"ИмеетКомплектующие" какой тип...если булево тогда замени
| &ИмеетКомплектующие = 1
на
| &ИмеетКомплектующие = ИСТИНА
причем Истина обязательно большими буквами..
запросу вроде твоя единичка не нравится
а параметр
Запрос.УстановитьПараметр("ИмеетКомплектующие",ТекТовар.Номенклатура.ИмеетКомплектующие);
можешь удалить...
 
Да вы че ребята какая табличная часть, это же скорее всего регистр сведений "КомплектующиеНоменклатуры"
 
Да вы че ребята какая табличная часть, это же скорее всего регистр сведений "КомплектующиеНоменклатуры"
Согласен регистр прогресивней и работает быстрее да и базу меньше грузит. :rolleyes:
 
Статус
Закрыто для дальнейших ответов.

Ещё по теме