Поиск дублей в справочнике
21.08.2005
13:34
#1
Помогите, плз.
Существует справочник номенклатуры. Как отследить в нем повторяющиеся по артикулам товары и пометить на удаление дубли?
Спасибо.
Существует справочник номенклатуры. Как отследить в нем повторяющиеся по артикулам товары и пометить на удаление дубли?
Спасибо.
11.09.2005
05:44
#3
"Примерно так...
Сп=СоздатьОбъект("СписокЗначений")
Удалять=СоздатьОбъект("СписокЗначений")
Ном=СоздатьОбъект("Справочник.Номерклатура");
Ном.ВыбратьЭлементы();
Пока Ном.ПолучитьЭлемент()=1 Цикл
Если Ном.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Если Сп.НайтиЗначение(ном.Артикул)>0 Тогда
Удалять.ДобавитьЗначение(Ном.ТекущийЭлемент());
Иначе
Сп.ДобавитьЗначение(Ном.Артикул);
КонецЕсли;
КонецЦикла;
КК=20;
Для К=1 По Удалять.РазмерСписка() Цикл
Если К>=КК Тогда
Состояние("Удалено "+КК+" из "+Удалять.РазмерСписка()+" ...");
КК=КК+20;
КонецЕсли;
Ном.НайтиЭлемент(Удалять.ПолучитьЗначение(К));
Попытка
Ном.Удалить(1);
Исключение
Ном.Удалить(0);
КонецПопытки;
КонецЦикла;
Сообщить("Выполнено!");
"
Сп=СоздатьОбъект("СписокЗначений")
Удалять=СоздатьОбъект("СписокЗначений")
Ном=СоздатьОбъект("Справочник.Номерклатура");
Ном.ВыбратьЭлементы();
Пока Ном.ПолучитьЭлемент()=1 Цикл
Если Ном.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Если Сп.НайтиЗначение(ном.Артикул)>0 Тогда
Удалять.ДобавитьЗначение(Ном.ТекущийЭлемент());
Иначе
Сп.ДобавитьЗначение(Ном.Артикул);
КонецЕсли;
КонецЦикла;
КК=20;
Для К=1 По Удалять.РазмерСписка() Цикл
Если К>=КК Тогда
Состояние("Удалено "+КК+" из "+Удалять.РазмерСписка()+" ...");
КК=КК+20;
КонецЕсли;
Ном.НайтиЭлемент(Удалять.ПолучитьЗначение(К));
Попытка
Ном.Удалить(1);
Исключение
Ном.Удалить(0);
КонецПопытки;
КонецЦикла;
Сообщить("Выполнено!");
"
Читают тему
(гостей: 1)