Имя: Пароль:
LIFE
 
OFF: Свойства номенклатуры, чтение и запись значений
, ,
0 Steelwolf
 
16.02.14
14:47
Доброго времени суток! Пишу простенькую обработку. Конфигурация УТ 10.3. Для справочника "Номенклатура" создал свойство "Артикул производителя" с типом значений "Строка". Значения не предопределяю. Суть обработки в том, чтобы считать и записать значения этого свойства для нужных товаров.
Товара много, набивать руками - можно смело повеситься. Поэтому и пишу небольшую обработку, где я получаю артикулы из файла и сохраняю их в массив. Потом по определенным условиям присваиваю их нужной номенклатуре, если их нет, а если есть, то сверяю с эталоном, и если не совпадают, то перезаписываю.

Для примера, есть товар 1, товар 2 и так далее, товар 10000, всем этим товарам я присвоил свойство "Артикул производителя". Руками я могу указать значение, для этого могу зайти в редактирование номенклатуры и выбрать вкладку "Свойства". Но товаров ~10000, лень столько колотить, да и вероятность ошибки очень высока.

Вариант с уже имеющимся свойством "Артикул" не рассматриваю, так как поставщиков много и номенклатура тоже разная, соответственно артикулов будет много. Например, "Артикул производителя", "Артикул Магазина 1" и так далее.
То есть тут два вопроса: как считать значение свойства, которое принадлежит товару 10, например, и как это значение определить или переопределить.

Навыки программирования есть, а вот знаний по структуре и принципам работы нет. Поэтому прошу помощи.

P.S. Я думаю, что решаю единичную задачу, поэтому, пожалуйста, не предлагайте пройти в лес и почитать Радченко.
1 Эльниньо
 
16.02.14
14:50
Кури подчиненные справочники и ИспользоватьВладельца()
2 Yea-Yea
 
16.02.14
14:50
"артикулы из файла"  - а данные для сопоставления с имеющейся номенклатурой в ИБ есть?
3 Yea-Yea
 
16.02.14
14:50
(1)имхо для свойств номенклатуры подчиненные и владельцы ни к чему.
истина в регистре значения свойств объектов
4 Эльниньо
 
16.02.14
14:54
(3) Извиняюсь. Не обратил внимание на "УТ 10.3".
Я презренный клюшешник.
5 Yea-Yea
 
16.02.14
14:56
(4) бывает ) клюшечники профессионалы сейчас тоже в цене )
6 Steelwolf
 
16.02.14
14:58
(2) Да, в данном случае в качестве сопоставления будет выступать наименование товара номенклатуры.
7 Yea-Yea
 
16.02.14
15:00
тогда грузи файл в таблицу значений, в запросе к таблице значений присоединяй элементы номенклатуры (соединение по наименованию), полученный результат перебирай в цикле и для каждой строки создавай запись в регистре ЗначенияСвойствОбъектов
8 Steelwolf
 
16.02.14
15:08
(7) Извините, Вы сейчас на китайском? :)
Я немного разверну вопрос.
Есть файл, из этого файла я выгрузил все в двумерный массив, где есть артикул и есть наименование.
Далее в цикле хочу сделать проверку для каждой единицы номенклатуры на наличие артикула.
Или я неправильно делаю?
9 Yea-Yea
 
16.02.14
15:14
походу да, на китайском )))
10 Yea-Yea
 
16.02.14
15:15
держи. бесплатно )

ВЫБРАТЬ
    ТаблицаАртикулов.Наименование КАК Наименование,
    ТаблицаАртикулов.Артикул КАК Артикул
ПОМЕСТИТЬ ТаблицаАртикулов
ИЗ
    &ТаблицаАртикулов КАК ТаблицаАртикулов
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаАртикулов.Наименование КАК Наименование,
    ТаблицаАртикулов.Артикул КАК Артикул,
    Номенклатура.Ссылка КАК Ссылка
ПОМЕСТИТЬ ТаблицаНоменклатуры
ИЗ
    ТаблицаАртикулов КАК ТаблицаАртикулов
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
        ПО ТаблицаАртикулов.Наименование = Номенклатура.Наименование
ГДЕ
    НЕ Номенклатура.Ссылка ЕСТЬ NULL
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаНоменклатуры.Наименование,
    ТаблицаНоменклатуры.Артикул,
    ТаблицаНоменклатуры.Ссылка,
    ЗначенияСвойствОбъектов.Значение
ИЗ
    ТаблицаНоменклатуры КАК ТаблицаНоменклатуры
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        ПО ТаблицаНоменклатуры.Ссылка = ЗначенияСвойствОбъектов.Объект
            И (ЗначенияСвойствОбъектов.Свойство = &ТвоеСвойствоАртикула)
ГДЕ
    НЕ ЗначенияСвойствОбъектов.Значение ЕСТЬ NULL
11 Steelwolf
 
16.02.14
15:18
Ой, благодарю!
Сейчас буду пробовать переваривать! :)
12 Steelwolf
 
19.02.14
10:52
А что-то я не пойму.

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

Запись в Регистре сведений точно есть.
13 Steelwolf
 
19.02.14
10:53
Ой, не дописал.
На выходе ничего нет, все пусто.
14 Steelwolf
 
19.02.14
11:27
Я понимаю, что собака зарыта где-то в запросе, а где - сообразить не могу. В регистре значений на данное свойство по крайней мере есть один объект с заполненным значением. Так что на выходе я должен получить как минимум одну запись, но не получаю.