Помощь - Поиск - Пользователи - Календарь
Полная версия: внешняя обработка для изменения свойств номенклатуры
"1C-PRO" - форум по 1C > Форумы по платформе "1С:Предприятие 8.x" > (8.х) Отчеты и обработки для платформы "1С:Предприятие 8.x"
Simon-Phoenix
1С восьмерка
занимаюсь совсем недавно, так что может вопрос и простой, но для меня сложный )

ситуация: нужно изменить одно из свойств товара, в часности Основной производитель

есть форма, в которой указывается изменяемое свойство и какое значение ему присваивать, подгрузка списка номенклатуры, у которой нужно изменить указанное свойство, осуществляется из экселевского файла

модуль формы:

Код
Перем ВыборФайла, Exel;


Процедура КнопкаВыполнитьНажатие(Элемент)
    
    Если ВыборФайла.Выбрать() Тогда
    
        Файл = Exel.Workbooks.Open(ВыборФайла.ПолноеИмяФайла);
        Табл = Файл.WorkSheets(1);
        
        ЗначенияСвойствОбъектов = РегистрыСведений.ЗначенияСвойствОбъектов;
        НаборСвойств = ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
        
        
        Для СчСтрок = 1 По КоличествоСтрок Цикл
        
            КодТовара = Табл.Cells(СчСтрок, 1).Text;
            Товар = Справочники.Номенклатура.НайтиПоНАИМЕНОВАНИЮ(КодТовара).Ссылка;
            
            Если Товар.Пустая() Тогда
                Сообщить("Не найден элемент справочника: Код - " + КодТовара + " Наименование - " + Табл.Cells(СчСтрок, 1).Text);
        
                Продолжить;
        
            КонецЕсли;
            
            НовоеСвойство = НаборСвойств.Добавить();
            НовоеСвойство.Объект  = Товар;
            НовоеСвойство.Свойство = Свойство;
            НовоеСвойство.Значение = Значение;
            
            
        КонецЦикла;
        НаборСвойств.Записать();
                                
    КонецЕсли;
    
        
    Файл.Close();
    Exel.Quit();
КонецПроцедуры


Exel = Новый COMОбъект("Excel.Application",);
ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыборФайла.МножественныйВыбор = Ложь;



проблема в том, что фактически создается новый РегистрыСведений.ЗначенияСвойствОбъектов, затирая уже имеющийся, а мне же надо, чтобы он добавлял запись, если таковой не присутствует, либо изменял уже существующую, меняя в ней свойство...третий день сижу, зарывшись в пособия разработчика 1С )...поможите плз )
Simon-Phoenix
попытался добавить в код
НаборСвойств.Отбор.Объект.Установить(Товар);
НаборСвойств.Отбор.Свойство.Установить(Свойство);
НаборСвойств.Прочитать();
если ставлю перед
НовоеСвойство = НаборСвойств.Добавить();
НовоеСвойство.Объект = Товар;
НовоеСвойство.Свойство = Свойство;
НовоеСвойство.Значение = Значение;
то новые записи добавляет, но старые не редактирует, ругаясь, что запись уже существует в списке...т.е. ведет себя так, будто Запись=Ложь
если ставлю перед
НаборСвойств.Записать(Истина);
то вообще никакой реакции не получаю, будто обработка и не выполнялась )
Simon-Phoenix
все, разобрался
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2008 Invision Power Services, Inc.