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