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

Удаление дублирующихся записей в справочнике

Автор Electron, 17 ноя 2015, 13:37

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

vitasw

Уж простите и не воспринимайте на личный счет, но весь приведенный код из разряда "обезьяна с гранатой". Начать с того, что работа с выборкой - это каменный век и заканчивая непосредственным удалением объектов.

Electron

А всё, разобрал твой код, Записать там вообще не нужно, оно относится к ПоменткеУдаления) Спасибо за помощь! Повысил репу)
Добавлено: 20 ноя 2015, 13:19


Цитата: vitasw от 20 ноя 2015, 12:34
Уж простите и не воспринимайте на личный счет, но весь приведенный код из разряда "обезьяна с гранатой". Начать с того, что работа с выборкой - это каменный век и заканчивая непосредственным удалением объектов.
Что не так с выборкой? А что касается непосредственного удаления - то и нужно, по сути никаких связей с дисциплиной не будет, это нужно для отсеивания лишних дисциплин при их выгрузке из Excel файла)
Добавлено: 20 ноя 2015, 13:24


Финальный код:

МассивДисциплиныНаименование = Новый Массив;
МассивДисциплиныКод = Новый Массив;
МассивДисциплиныКодУдалить = Новый Массив;

Выборка = Справочники.Дисциплины.Выбрать();
Пока Выборка.Следующий() = 1 Цикл
МассивДисциплиныНаименование.Добавить(Выборка.Наименование);
МассивДисциплиныКод.Добавить(Выборка.Код);
КонецЦикла;

ТекущийИндекс = 0;
ВсегоЭлементов = МассивДисциплиныНаименование.Количество();
Пока ТекущийИндекс < ВсегоЭлементов Цикл
НовыйИндекс = ТекущийИндекс + 1;
Пока НовыйИндекс < ВсегоЭлементов Цикл
Если МассивДисциплиныНаименование[НовыйИндекс] = МассивДисциплиныНаименование[ТекущийИндекс] Тогда
МассивДисциплиныНаименование.Удалить(НовыйИндекс);
МассивДисциплиныКодУдалить.Добавить(МассивДисциплиныКод[НовыйИндекс]);
МассивДисциплиныКод.Удалить(НовыйИндекс);
ВсегоЭлементов = ВсегоЭлементов - 1;
Иначе
НовыйИндекс = НовыйИндекс + 1;
КонецЕсли;
КонецЦикла;
ТекущийИндекс = ТекущийИндекс + 1;
КонецЦикла;

Пока Выборка.Следующий() Цикл
СправочникДисциплины = Выборка.ПолучитьОбъект();
Для Каждого ЭлементМассива Из МассивДисциплиныКодУдалить Цикл
Если ЭлементМассива = СправочникДисциплины.Код Тогда
Сообщить("Удалена дисциплина [" + СправочникДисциплины.Наименование + " - " + СправочникДисциплины.Код + "]");
СправочникДисциплины.Удалить();
КонецЕсли;
КонецЦикла;
КонецЦикла;

Теги:

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

Рейтинг@Mail.ru

Поиск