внешняя обработка для изменения свойств номенклатуры
16.11.2007
07:15
#1
"1С восьмерка
занимаюсь совсем недавно, так что может вопрос и простой, но для меня сложный )
ситуация: нужно изменить одно из свойств товара, в часности Основной производитель
есть форма, в которой указывается изменяемое свойство и какое значение ему присваивать, подгрузка списка номенклатуры, у которой нужно изменить указанное свойство, осуществляется из экселевского файла
модуль формы:
Перем ВыборФайла, Exel;
Процедура КнопкаВыполнитьНажатие(Элемент)
Если ВыборФайла.Выбрать() Тогда
Файл = Exel.Workbooks.Open(ВыборФайла.ПолноеИмяФайла);
Табл = Файл.WorkSheets(1);
ЗначенияСвойствОбъектов = РегистрыСведений.ЗначенияСвойствОбъектов;
НаборСвойств = ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
Для СчСтрок = 1 По КоличествоСтрок Цикл
КодТовара = Табл.Cells(СчСтрок, 1).Text;
Товар = Справочники.Номенклатура.НайтиПоНАИМЕНОВАНИЮ(КодТовара).Ссылка;
Если Товар.Пустая() Тогда
Сообщить("Не найден элемент справочника: Код - " + КодТовара + " Наименование - " + Табл.Cells(СчСтрок, 1).Text);
Продолжить;
КонецЕсли;
НовоеСвойство = НаборСвойств.Добавить();
НовоеСвойство.Объект = Товар;
НовоеСвойство.Свойство = Свойство;
НовоеСвойство.Значение = Значение;
КонецЦикла;
НаборСвойств.Записать();
КонецЕсли;
Файл.Close();
Exel.Quit();
КонецПроцедуры
Exel = Новый COMОбъект("Excel.Application",);
ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыборФайла.МножественныйВыбор = Ложь;
проблема в том, что фактически создается новый РегистрыСведений.ЗначенияСвойствОбъектов, затирая уже имеющийся, а мне же надо, чтобы он добавлял запись, если таковой не присутствует, либо изменял уже существующую, меняя в ней свойство...третий день сижу, зарывшись в пособия разработчика 1С )...поможите плз )"
занимаюсь совсем недавно, так что может вопрос и простой, но для меня сложный )
ситуация: нужно изменить одно из свойств товара, в часности Основной производитель
есть форма, в которой указывается изменяемое свойство и какое значение ему присваивать, подгрузка списка номенклатуры, у которой нужно изменить указанное свойство, осуществляется из экселевского файла
модуль формы:
Перем ВыборФайла, Exel;
Процедура КнопкаВыполнитьНажатие(Элемент)
Если ВыборФайла.Выбрать() Тогда
Файл = Exel.Workbooks.Open(ВыборФайла.ПолноеИмяФайла);
Табл = Файл.WorkSheets(1);
ЗначенияСвойствОбъектов = РегистрыСведений.ЗначенияСвойствОбъектов;
НаборСвойств = ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
Для СчСтрок = 1 По КоличествоСтрок Цикл
КодТовара = Табл.Cells(СчСтрок, 1).Text;
Товар = Справочники.Номенклатура.НайтиПоНАИМЕНОВАНИЮ(КодТовара).Ссылка;
Если Товар.Пустая() Тогда
Сообщить("Не найден элемент справочника: Код - " + КодТовара + " Наименование - " + Табл.Cells(СчСтрок, 1).Text);
Продолжить;
КонецЕсли;
НовоеСвойство = НаборСвойств.Добавить();
НовоеСвойство.Объект = Товар;
НовоеСвойство.Свойство = Свойство;
НовоеСвойство.Значение = Значение;
КонецЦикла;
НаборСвойств.Записать();
КонецЕсли;
Файл.Close();
Exel.Quit();
КонецПроцедуры
Exel = Новый COMОбъект("Excel.Application",);
ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыборФайла.МножественныйВыбор = Ложь;
проблема в том, что фактически создается новый РегистрыСведений.ЗначенияСвойствОбъектов, затирая уже имеющийся, а мне же надо, чтобы он добавлял запись, если таковой не присутствует, либо изменял уже существующую, меняя в ней свойство...третий день сижу, зарывшись в пособия разработчика 1С )...поможите плз )"
16.11.2007
10:06
#2
"попытался добавить в код
НаборСвойств.Отбор.Объект.Установить(Товар);
НаборСвойств.Отбор.Свойство.Установить(Свойство);
НаборСвойств.Прочитать();
если ставлю перед
НовоеСвойство = НаборСвойств.Добавить();
НовоеСвойство.Объект = Товар;
НовоеСвойство.Свойство = Свойство;
НовоеСвойство.Значение = Значение;
то новые записи добавляет, но старые не редактирует, ругаясь, что запись уже существует в списке...т.е. ведет себя так, будто Запись=Ложь
если ставлю перед
НаборСвойств.Записать(Истина);
то вообще никакой реакции не получаю, будто обработка и не выполнялась )"
НаборСвойств.Отбор.Объект.Установить(Товар);
НаборСвойств.Отбор.Свойство.Установить(Свойство);
НаборСвойств.Прочитать();
если ставлю перед
НовоеСвойство = НаборСвойств.Добавить();
НовоеСвойство.Объект = Товар;
НовоеСвойство.Свойство = Свойство;
НовоеСвойство.Значение = Значение;
то новые записи добавляет, но старые не редактирует, ругаясь, что запись уже существует в списке...т.е. ведет себя так, будто Запись=Ложь
если ставлю перед
НаборСвойств.Записать(Истина);
то вообще никакой реакции не получаю, будто обработка и не выполнялась )"
Очень интересная задачка с одним неизвестным!!! 1С 7.7Добавление записи в регистр расчета "Основные начисления работников организации"
Читают тему
(гостей: 1)