Имя: Пароль:
1C
1С v8
Запрос и дополнительные характеристики номенклатуры
0 dmitriy_zima
 
31.05.12
13:39
УТ 11. В справочнике номенклатура товару добавлен код поставщика через дополнительные реквизиты и сведения. Задача стоит в следующем, найти товар по этому коду. Перепробовал много вариантов. Последний такой:

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

   Запрос.УстановитьПараметр("Значение", КодПоставщика);
   Запрос.УстановитьПараметр("Свойство", СсылкаПВХ);
Пробовал и выбирать в том числе и ссылку на доп свойство запросом, все равно результат пустой. Подскажите где ошибаюсь?
1 dmitriy_zima
 
31.05.12
16:03
Кое что нашел, Если например убрать условие с именем свойства и оставить только значение, то все находится если указать к примеру строку "13 396" именно с пробелом, Видимо именно так реквизит и хранится в базе. Как его передать в запрос если на входе пробела нет. Не уж то парсить строчку и вставлять пробелы в цикле? Что-то ничего более красивого не приходит в голову
2 Жан Пердежон
 
31.05.12
16:06
какая строка в базе хранится такую тебе запрос и выдает
3 hhhh
 
31.05.12
16:18
(1) обработкой все строчки свойства переделайте, чтобы были без пробелов, а программиста, который делал запись кода в эти реквизиты, пристрелите.
4 dmitriy_zima
 
31.05.12
16:28
(3) Тогда надо пристрелить кого-то из 1С, Это все типовой функционал УТ 11
Программист всегда исправляет последнюю ошибку.