• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

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

has

Значит так, есть у меня справочник Номенклатура, у которого есть табличная часть. Точнее у некоторых элементов есть, а у некоторых нет. В табличной части указываются комплектующие и их количество. При проведении расходной накладной, если указана номенклатура, у которой есть комплектующие, должны списываться комплектующие в том количестве, в котором они указаны в справочнике. Вот не могу создать запрос, который выбирает всю номенклатуру из табличной части документа и смотрит, если у нее есть комплектующие, то выбирает только комплектующие с соответствующим количеством. Например, есть номенклатура "Компьютер", у которого такие комплектующие:
Комплектующая Кол-во
Монитор 1
Сис. блок 1
Мышь 1
Клавиатура 1
В расходной накладной мы указываем одну мышь и один компьютер, соответственно должно списаться 2 мыши, 1 монитор, 1 клавиатура, 1 сис. блок. Кто может помочь?
 
B

BikerDan

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

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


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

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

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



P.S. код на 8.1...
 
H

has

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

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

Выдает пустой результат...
 
B

BikerDan

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

HUNTER424

Да вы че ребята какая табличная часть, это же скорее всего регистр сведений "КомплектующиеНоменклатуры"
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!