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

  • Автор темы Автор темы has
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
H

has

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

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


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

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

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



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

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

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab