Как загрузить контрагентов с ИНН и номерами телефонов из Excel в 1С:Комплексная автоматизация 1.1

Программист 1С v8.3 (Обычные формы) 1С:Комплексная автоматизация Управленческий учет IT и автоматизация бизнеса
← На главную

При переходе с одной системы на другую или при массовом обновлении базы данных часто возникает необходимость импортировать данные из внешних файлов. В конфигурации «1С:Комплексная автоматизация 1.1» (КА 1.1) задача загрузки контрагентов из Excel имеет свои особенности, связанные с архитектурой хранения контактной информации. В данной статье мы подробно разберем два основных способа решения этой задачи: использование встроенной обработки и написание собственного программного кода.

Способ 1: Использование встроенной обработки «Загрузка данных из табличного документа»

Этот способ является наиболее предпочтительным для большинства пользователей и администраторов, так как он не требует написания кода и уже встроен в систему. Рассмотрим пошагово, как правильно настроить этот инструмент.

Поиск обработки в интерфейсе

Многие пользователи сталкиваются с тем, что не могут найти нужную обработку в меню «Дополнительные внешние отчеты и обработки». В типовой конфигурации КА 1.1 она находится в другом месте. Чтобы открыть её, перейдем в главное меню: «Операции» — «Обработка» — «Загрузка данных из табличного документа».

Этап 1: Загрузка основных данных контрагента

Проанализируем процесс создания самих карточек контрагентов. В первую очередь нам необходимо создать элементы справочника Контрагенты.

  1. В поле «Режим загрузки» выберем «Загрузка в справочник».
  2. В поле «Вид справочника» выберем «Контрагенты».
  3. На вкладке «Табличный документ» нажмем кнопку открытия файла и выберем наш Excel-документ.
  4. Перейдем на вкладку «Настройка параметров». Здесь важно правильно сопоставить поля:
    • Наименование: укажем номер колонки из файла Excel.
    • ИНН: установим флаг «Поле поиска». Это критически важно, чтобы при повторной загрузке система не создавала дубликатов, а обновляла существующих контрагентов.
    • ЮрФизЛицо: если в файле нет этой информации, можно установить фиксированное значение (например, «Юр. лицо»).
    • Покупатель / Поставщик: обязательно установим эти флаги, иначе контрагенты не будут отображаться в журналах соответствующих документов.
  5. Нажмем «Загрузить».

Этап 2: Загрузка контактной информации (телефонов)

В конфигурации 1.1 контактная информация хранится не в самом справочнике, а в подчиненном регистре сведений. Поэтому вторым шагом мы выполним загрузку именно в него.

  1. Изменим «Режим загрузки» на «Загрузка в регистр сведений».
  2. Выберем регистр «Контактная информация».
  3. Настроим сопоставление полей:
    • Объект: это ссылка на нашего контрагента. Выберем способ поиска «По ИНН» (соответствующая колонка в Excel).
    • Тип: установим фиксированное значение «Телефон».
    • Вид: установим фиксированное значение «Телефон контрагента» (выбирается из справочника «Виды контактной информации»).
    • Представление: укажем колонку, в которой записан номер телефона в Excel.
  4. Нажмем «Загрузить».

Способ 2: Программная загрузка с использованием встроенного языка

Если требуется более сложная логика (например, автоматическое создание основного договора или сложная очистка строк), можно воспользоваться программным методом. Рассмотрим пример кода, который считывает данные из файла и создает новых контрагентов.

Разберем логику работы с объектом ТабличныйДокумент и ПостроительОтчета для быстрого извлечения данных из Excel:


&НаСервере
Процедура ПрочитатьЭксельчик(Файл)
    ТД = Новый ТабличныйДокумент;
    // Читаем файл в табличный документ
    ТД.Прочитать(Файл, СпособЧтенияЗначенийТабличногоДокумента.Текст);
    
    // Используем построитель для удобной выгрузки области в таблицу значений
    Построитель = Новый ПостроительОтчета;
    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТД.Область(1, 1, ТД.ВысотаТаблицы, ТД.ШиринаТаблицы));
    Построитель.Выполнить();
    Результат = Построитель.Результат.Выгрузить();
    
    Для Каждого Строка Из Результат Цикл
        // Сначала проверим, нет ли уже такого контрагента в базе по ИНН
        ИщемКлиента = НайдемКлиента(Строка.ИНН);
        
        Если ИщемКлиента.Пустая() Тогда
            НовыйКлиент = Справочники.Контрагенты.СоздатьЭлемент();
            НовыйКлиент.Наименование = Строка.Наименование;
            НовыйКлиент.НаименованиеПолное = Строка.Наименование;
            НовыйКлиент.ИНН = Строка.ИНН;
            
            // В КА 1.1 важно заполнить признак ЮрФизЛицо
            НовыйКлиент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо;
            
            Попытка
                НовыйКлиент.Записать();
                // После записи контрагента можно добавить запись телефона в регистр
                ЗаписатьТелефон(НовыйКлиент.Ссылка, Строка.Телефон);
            Исключение
                Сообщить("Ошибка при записи контрагента " + Строка.Наименование + ": " + ОписаниеОшибки());
            КонецПопытки;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Для поиска существующего контрагента используем функцию с запросом. Проанализируем её структуру:


&НаСервере
Функция НайдемКлиента(ИНН)
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Контрагенты.Ссылка
        |ИЗ
        |   Справочник.Контрагенты КАК Контрагенты
        |ГДЕ
        |   Контрагенты.ИНН = &ИНН";
    
    Запрос.УстановитьПараметр("ИНН", ИНН);
    Результат = Запрос.Выполнить().Выбрать();
    
    Если Результат.Следующий() Тогда
        Возврат Результат.Ссылка;
    Иначе
        Возврат Справочники.Контрагенты.ПустаяСсылка();
    КонецЕсли;
КонецФункции

Важные технические нюансы при работе с КА 1.1

Проанализируем несколько критических моментов, которые часто упускают при загрузке данных:

  1. Формат данных в Excel: Перед загрузкой убедитесь, что колонки ИНН и Телефон имеют текстовый формат. Если Excel определит их как числа, ИНН крупных организаций может преобразоваться в экспоненциальную форму (например, 7.7E+9), а ведущие нули в номерах телефонов будут потеряны.
  2. Обязательные реквизиты: В «Комплексной автоматизации 1.1» для проведения документов по контрагенту обязательно должен быть создан Основной договор. При программной загрузке рекомендуется сразу создавать договор после записи контрагента, используя Справочники.ДоговорыКонтрагентов.СоздатьЭлемент().
  3. Дублирование: Если у организации есть филиалы, поиск только по ИНН может быть некорректным (у них один ИНН, но разные КПП). Выясним, есть ли в вашем файле КПП, и если да — включите его в условия поиска.
  4. Регистр «Контактная информация»: Помните, что простое присвоение значения полю Телефон в коде (как в некоторых примерах на форумах) не сработает в типовой КА 1.1, так как в справочнике Контрагенты нет такого реквизита. Всегда используйте запись в регистр сведений.

Подводя итог, использование стандартной обработки «Загрузка данных из табличного документа» является самым быстрым и безопасным способом. Она позволяет гибко настроить поля поиска и загрузить данные в разные объекты (справочники и регистры) последовательно, что полностью закрывает потребность в переносе данных из Excel.

← На главную