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

Копирование элементов подчиненного справочника

Автор _max_, 21 янв 2015, 09:00

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

_max_

Добрый день помогите пожалуйста... Есть код он создает элементы в справочнике номенклатуры, подскажите при повторном создании элементов чтобы он не создавал дубликатов:

Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   СпрХарактеристикиНоменклатуры = Справочники.ХарактеристикиНоменклатуры;
   СпрНоменклатура = Справочники.Номенклатура;
        Наменклатура = СпрНоменклатура.Выбрать(Родитель);

   
   Пока Наменклатура.Следующий() Цикл
      
      
      Элемент = Наменклатура.ПолучитьОбъект();
      Элемент.ВестиУчетПоХарактеристикам = Истина;
      Элемент.Записать();   
         
      ЭлементХар = СпрХарактеристикиНоменклатуры.СоздатьЭлемент();
      ЭлементХар.Владелец     = Элемент.Ссылка;
      ЭлементХар.Наименование = "Брак ";
      ЭлементХар.Активная     = Истина;
      ЭлементХар.Записать();
               
                ЭлементХар = СпрХарактеристикиНоменклатуры.СоздатьЭлемент();
      ЭлементХар.Владелец     = Элемент.Ссылка;
      ЭлементХар.Наименование = "Бой ";
      ЭлементХар.Активная     = Истина;
      ЭлементХар.Записать();
       
   КонецЦикла;   
   Предупреждение("Загрузка завершена");
КонецПроцедуры
Если элемент записан брак или бой то он их пропускал в номенклатуре!!!

SkyNetYar

Если Значение = NULL Тогда
или ПустаяСсылка();
Вроде как то так надо..
Проверять на наличие элемента..

LexaK

самое простое смотреть флаг ВестиУчетПоХарактеристикам

ваш код

Пока Наменклатура.Следующий() Цикл
     
     
      Элемент = Наменклатура.ПолучитьОбъект();


замените на следующий


Пока Наменклатура.Следующий() Цикл
   
    //проверка 
    Если Наменклатура.ВестиУчетПоХарактеристикам Тогда
        //считаем что по данной номенклатуре Характеристики есть, пропускаем
        Продолжить;
    КонецЕсли;

      Элемент = Наменклатура.ПолучитьОбъект();



данная проверка позволит вам только для товара у которых еще не было учета по характеристикам их создавать.

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

если вам важно конкретный состав характеристик по товарам, тогда лучше с помощью запроса получить выборку, конкретных товаров, которым надо создать нужные характеристики, в этом случае все зависит от результата запроса, товары которые уже были обработаны и/или имеют нужные характеристики в результат запроса не попадут.
если помогло нажмите: Спасибо!

_max_

Цитата: LexaK от 21 янв 2015, 11:26
самое простое смотреть флаг ВестиУчетПоХарактеристикам

ваш код

Пока Наменклатура.Следующий() Цикл
     
     
      Элемент = Наменклатура.ПолучитьОбъект();


замените на следующий


Пока Наменклатура.Следующий() Цикл
   
    //проверка 
    Если Наменклатура.ВестиУчетПоХарактеристикам Тогда
        //считаем что по данной номенклатуре Характеристики есть, пропускаем
        Продолжить;
    КонецЕсли;

      Элемент = Наменклатура.ПолучитьОбъект();



данная проверка позволит вам только для товара у которых еще не было учета по характеристикам их создавать.

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

если вам важно конкретный состав характеристик по товарам, тогда лучше с помощью запроса получить выборку, конкретных товаров, которым надо создать нужные характеристики, в этом случае все зависит от результата запроса, товары которые уже были обработаны и/или имеют нужные характеристики в результат запроса не попадут.

Не работает
Добавлено: 21 янв 2015, 15:35


Если есть ВестиУчетПоХарактеристикам в номенклатуре то новые не добавляет, если нету не одной то все добавляет а так работает

LexaK

да, по простому не получилось,
тогда переходите ко второму варианту (с запросом).

если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск