Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 21:51

Программная запись свойства номернклатуры

Автор Евгений90, 17 окт 2012, 08:45

0 Пользователей и 1 гость просматривают эту тему.

Евгений90

Есть справочник Номенклатура у нее есть свойство Импортер. Как для всех элементов группы "Группа 1" программно записать в свойство Импортер определенное значение.

mixqn

свойство - это именно свойство (механизм, основанный на плане видов характеристик и регистре сведений) или реквизит?
если реквизит, то вообще все просто - получаете запросом нужные элементы справочника, меняете значение реквизита, записываете.
если свойство - получаете запросом нужные элементы справочника, при помощи менеджера записи регистра сведений записываете значения свойства.

Евгений90

а можно немного поподробнее. Свойство это ПланыВидовХарактеристик

mixqn

Значения свойств хранятся в регистре сведений.
Как его найти? Называться он может "ЗначенияСвойствОбъектов" или что-то подобное, точно вы можете узнать, зайдя в форму элемента справочника и посмотрев тип значения табличного поля на закладке "свойства" - тип должен быть табличная часть какой-то обработки (обычно через обработку делается редактирование свойств). Найдете обработку, посмотрите, куда ведется запись.

Предположим, регистр нашли и допустим, называется он ЗначенияСвойствОбъектов.
Далее запросом выбрали нужные элементы справочника номенклатура, циклом обходите выборку из результата запроса, внутри цикла - создаете менеджер записи регистра таким примерно образом:

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Объект = Выборка.Номенклатура;
МенеджерЗаписи.Свойство = ВашеСвойство; // "импортер" или что-то еще, тип - ПланВидовХарактеристикСсылка
МенеджерЗаписи.Значение = ВашеЗначение; // Истина или что-то еще, в зависимости от типа свойства
МенеджерЗаписи.Записать();
КонецЦикла;

Евгений90

Делаю во внешней обработке. А как сделать запись только для элементов определенной группы?

mixqn

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СправочникНоменклатура.Ссылка КАК Номенклатура
|ИЗ
| Справочник.Номенклатура КАК СправочникНоменклатура
|ГДЕ
| СправочникНоменклатура.Ссылка В ИЕРАРХИИ(&ВашаГруппа)
| И СправочникНоменклатура.ЭтоГруппа";
Запрос.УстановитьПараметр("ВашаГруппа", ВашаГруппа);

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Объект = Выборка.Номенклатура;
МенеджерЗаписи.Свойство = ВашеСвойство; // "импортер" или что-то еще, тип - ПланВидовХарактеристикСсылка
МенеджерЗаписи.Значение = ВашеЗначение; // Истина или что-то еще, в зависимости от типа свойства
МенеджерЗаписи.Записать();
КонецЦикла;


все за вас написал  :D
Добавлено: 17 окт 2012, 09:44


запрос так же может быть таким:
Запрос.Текст = "ВЫБРАТЬ
| СправочникНоменклатура.Ссылка КАК Номенклатура
|ИЗ
| Справочник.Номенклатура КАК СправочникНоменклатура
|ГДЕ
| СправочникНоменклатура.Родитель = &ВашаГруппа
| И СправочникНоменклатура.ЭтоГруппа";

Евгений90

Большое спасибо ), тока ошибка небольшая выскакивает {Форма.Форма.Форма(12,47)}: Ожидается символ ')'
Ошибка указывает на строку Запрос.УстановитьПараметр("Товары МФГ", Товары МФГ);
В чем может быть дело ?

mixqn

Ну в этой строке точно все хорошо. Посмотрите на строку выше. Или как вариант - перезапустите отладку. Может вы что-то меняли в коде, строка съехала и на самом деле ошибка в другой строчке сейчас.

Евгений90

Вот весь код, не могу понять в чем дело



Процедура КнопкаВыполнитьНажатие(Кнопка)

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|    СправочникНоменклатура.Ссылка КАК Номенклатура
|ИЗ
|    Справочник.Номенклатура КАК СправочникНоменклатура
|ГДЕ
|    СправочникНоменклатура.Родитель = &ТоварыМФГ И СправочникНоменклатура.ЭтоГруппа";
Запрос.УстановитьПараметр("ТоварыМФГ", Товары МФГ);

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Объект = Выборка.Номенклатура;
    МенеджерЗаписи.Свойство = "Импортер";
   МенеджерЗаписи.Значение = Мелон;
    МенеджерЗаписи.Записать();
КонецЦикла;
КонецПроцедуры


Slin

skype: slin-dev

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск