внешняя обработка для изменения свойств номенклатуры

Тема в разделе "1C и всё что с ней связано", создана пользователем Simon-Phoenix, 16 ноя 2007.

  1. Simon-Phoenix

    Simon-Phoenix Гость

    Репутация:
    0
    1С восьмерка
    занимаюсь совсем недавно, так что может вопрос и простой, но для меня сложный )

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

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

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

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


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

    Если ВыборФайла.Выбрать() Тогда

    Файл = Exel.Workbooks.Open(ВыборФайла.ПолноеИмяФайла);
    Табл = Файл.WorkSheets(1);

    ЗначенияСвойствОбъектов = РегистрыСведений.ЗначенияСвойствОбъектов;
    НаборСвойств = ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();


    Для СчСтрок = 1 По КоличествоСтрок Цикл

    КодТовара = Табл.Cells(СчСтрок, 1).Text;
    Товар = Справочники.Номенклатура.НайтиПоНАИМЕНОВАНИЮ(КодТовара).Ссылка;

    Если Товар.Пустая() Тогда
    Сообщить("Не найден элемент справочника: Код - " + КодТовара + " Наименование - " + Табл.Cells(СчСтрок, 1).Text);

    Продолжить;

    КонецЕсли;

    НовоеСвойство = НаборСвойств.Добавить();
    НовоеСвойство.Объект = Товар;
    НовоеСвойство.Свойство = Свойство;
    НовоеСвойство.Значение = Значение;


    КонецЦикла;
    НаборСвойств.Записать();

    КонецЕсли;


    Файл.Close();
    Exel.Quit();
    КонецПроцедуры


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

    проблема в том, что фактически создается новый РегистрыСведений.ЗначенияСвойствОбъектов, затирая уже имеющийся, а мне же надо, чтобы он добавлял запись, если таковой не присутствует, либо изменял уже существующую, меняя в ней свойство...третий день сижу, зарывшись в пособия разработчика 1С )...поможите плз )
     
  2. Zab

    Zab Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    при записи набора восьмерка перезаписывает все старые записи с таким-же отбором. Чтобы добавить, надо прочитать в набор то, что есть в регистре, потом дописать в него новые записи, и только потом записывать. Чтобы изменить - соответственно: читаем, изменяем то, что есть, записываем. Удачи.
     
  3. Simon-Phoenix

    Simon-Phoenix Гость

    Репутация:
    0
    а можно поподробнее?
    попытался добавить в код
    НаборСвойств.Отбор.Объект.Установить(Товар);
    НаборСвойств.Отбор.Свойство.Установить(Свойство);
    НаборСвойств.Прочитать();
    если ставлю перед
    НовоеСвойство = НаборСвойств.Добавить();
    НовоеСвойство.Объект = Товар;
    НовоеСвойство.Свойство = Свойство;
    НовоеСвойство.Значение = Значение;
    то новые записи добавляет, но старые не редактирует, ругаясь, что запись уже существует в списке...т.е. ведет себя так, будто Запись=Ложь
    если ставлю перед
    НаборСвойств.Записать(Истина);
    то вообще никакой реакции не получаю, будто обработка и не выполнялась )
     
  4. Simon-Phoenix

    Simon-Phoenix Гость

    Репутация:
    0
    все, разобрался
     
Загрузка...

Поделиться этой страницей