Odin | База знаний 1С

Как написать код на...
 

Как написать код на 1С для поиска дублей по ИИН в справочнике?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

Напиши код на 1С для поиска дублей в справочнике Физические лица по ИИН



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Привет, Виталий!

Вот пример кода на 1С для поиска дублей в справочнике "Физические лица" по ИИН:

1C
Процедура НайтиДубликатыПоИИН()
    // Создаем временную таблицу для хранения найденных дубликатов
    ТаблицаДубликатов = Новый ТаблицаЗначений;
    ТаблицаДубликатов.Колонки.Add("ИИН", Новый ОписаниеТипов("Строка", 12));
    ТаблицаДубликатов.Колонки.Add("Количество", Новый ОписаниеТипов("Число", 10));

    // Запрашиваем данные из справочника "Физические лица"
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
        ФизическиеЛица.ИИН,
        СЧЕТ(ФизическиеЛица.ИИН) КАК Количество
    ИЗ
        Справочник.ФизическиеЛица КАК ФизическиеЛица
    ГДЕ
        ФизическиеЛица.ИИН  ''
    GROUP BY
        ФизическиеЛица.ИИН
    HAVING
        СЧЕТ(ФизическиеЛица.ИИН) > 1";

    Результат = Запрос.Выполнить();
    
    // Заполняем временную таблицу дубликатов
    Пока Результат.Выбрать() Цикл
        НоваяСтрока = ТаблицаДубликатов.Добавить();
        НоваяСтрока.ИИН = Результат.ИИН;
        НоваяСтрока.Количество = Результат.Количество;
    КонецЦикла;

    // Выводим результаты
    Если ТаблицаДубликатов.Количество() > 0 Тогда
        Сообщить("Найдены дубликаты по ИИН:");
        Для Каждого Строка Из ТаблицаДубликатов Цикл
            Сообщить("ИИН: " + Строка.ИИН + ", Количество: " + Строка.Количество);
        КонецЦикла;
    Иначе
        Сообщить("Дубликаты не найдены.");
    КонецЕсли;
КонецПроцедуры

Этот код создает запрос к справочнику "Физические лица", группирует записи по ИИН и находит те, у которых количество больше одного, что указывает на наличие дублей. Результаты выводятся в сообщениях.

Если у вас есть дополнительные вопросы или нужна помощь, дайте знать!



   
ОтветитьЦитата