Имя: Пароль:
1C
1С v8
v8:Вопрос по КонвертацияДанных
0 Arhont
 
15.02.13
17:46
Нужно выгрузить штрих-коды определенной номенклатуры удалив существующие. Я создал в правиле "После Выгрузки" ПКО номенклатуры текст:

Если НЕ Источник.ЭтоГруппа Тогда
   Выполнить(Алгоритмы.ВыгрузитьШтрихКоды);
КонецЕсли;

Сам алгоритм:
Если Не Источник.ЭтоГруппа Тогда
   НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
   
   НаборЗаписей.Отбор.Владелец.Установить(Источник.Ссылка);
   
   НаборЗаписей.Прочитать();
   Если НаборЗаписей.Количество()>0 Тогда    
       Для каждого ЗаписьНабораЗаписей Из НаборЗаписей Цикл
           ВыгрузитьПоПравилу(ЗаписьНабораЗаписей,,,, "Штрихкоды");
       КонецЦикла;
   КонецЕсли;
КонецЕсли;

В таком случае новые записи штрих-кодов появляются но и старые остаются.
А добавил в правило "ПриЗагрузке" текст

Если ОбъектНайден Тогда
   Выполнить(Алгоритмы.УдалитьШтрихКоды);
КонецЕсли;

Код алгоритма:

Если Не Объект.ЭтоГруппа Тогда
   НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
   
   НаборЗаписей.Отбор.Владелец.Установить(Объект.Ссылка);
   
   НаборЗаписей.Прочитать();
   Если НаборЗаписей.Количество()>0 Тогда
       Сообщить(НаборЗаписей.Количество());
       Для каждого ЗаписьНабораЗаписей Из НаборЗаписей Цикл
           НаборЗаписей.Удалить(ЗаписьНабораЗаписей);
       КонецЦикла;
       НаборЗаписей.Записать();
       НаборЗаписей.Очистить();
   КонецЕсли;
КонецЕсли;

Пробовал по разному, и перебивал в цикле все записи регистра с их последующим удалением, и записывал набор записей (по умолчанию должен заместить), пробовал удалить с помощью Очистить() - все равно не удаляет. А на Записать() так и вовсе при загрузке через УниверсальныйОбменДанными ошибка вылетает.

Может кто подскажет как мне эти записи забороть? :)
1 Rie
 
15.02.13
17:49
(0) ПередЗагрузкой - очистить записи регистра не пробовал?
2 Arhont
 
15.02.13
17:53
1) Про ПередЗагрузков в справке по обработчикам прочитал, что:
"Событие выполняется перед загрузкой объекта. Возможен отказ от загрузки, например, в случае невыполнения каких-либо условий. Загружаемый в БД объект еще не инициализирован" и подумал что не подойдет, т.к. у кого я буду регистр чистить если владелец еще не определен?
3 Rie
 
15.02.13
17:55
(2) Можешь передать в параметрах объекта, кому чистить надо. Код. Или даже УИД.
4 Arhont
 
15.02.13
17:57
3) Про параметры можно подумать, просто вроде вот он, набор записей, даже количество записей в нем посмотреть могу а удалить - облом, как то обидно :)