Как загрузить данные из Excel в документ «Бухгалтерская справка» в 1С 7.7?

Программист 1С v7.7 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Загрузка внешних данных из таблиц Excel в учетную систему является классической задачей для администратора или программиста 1С. Рассмотрим подробно, как организовать этот процесс, чтобы автоматизировать перенос начислений и удержаний в бухгалтерские справки, избегая ручного ввода.

Подготовка данных и идентификация объектов

Перед тем как приступать к написанию кода, необходимо определить уникальный идентификатор для сопоставления данных. Поскольку в Excel у вас есть Ф.И.О., важно убедиться, что они однозначно соответствуют записям в справочнике Сотрудники. Мы рекомендуем использовать сочетание Ф.И.О. и табельного номера. Если в базе данных 1С 7.7 возможны дубликаты, добавьте этап верификации: если при загрузке программа не находит сотрудника, запись должна попадать в протокол ошибок для ручной обработки бухгалтером.

Вариант 1: Использование COM-объекта (Excel.Application)

Этот метод является наиболее универсальным и не требует установки сторонних драйверов или настройки системных ODBC-источников. Мы работаем с Excel как с внешним объектом, управляя его интерфейсом напрямую из кода 1С.

Разберем по шагам реализацию через Excel.Application:


Excel = СоздатьОбъект("Excel.Application");
Попытка
    Книга = Excel.Workbooks.Open(ПутьКФайлу);
    Лист = Книга.Sheets(1);
Исключение
    Предупреждение("Не удалось открыть файл!");
    Возврат;
КонецПопытки;

// Перебор строк до тех пор, пока не встретим пустую ячейку в ключевом столбце
Стр = 2; // Предположим, первая строка - заголовки
Пока 1 = 1 Цикл
    ФИО = СокрЛП(Лист.Cells(Стр, 1).Value);
    Если ПустаяСтрока(ФИО) = 1 Тогда
        Прервать;
    КонецЕсли;
    Сумма = Лист.Cells(Стр, 2).Value;
    // Здесь выполняем поиск сотрудника и заполнение документа
    Стр = Стр + 1;
КонецЦикла;

Вариант 2: Использование ADO (ActiveX Data Objects)

Если файл Excel имеет большой объем, использование SQL-запросов через драйверы Microsoft.Jet.OLEDB.4.0 или Microsoft.ACE.OLEDB.12.0 позволит значительно ускорить чтение данных. Этот метод позволяет обращаться к листу как к таблице базы данных.

Рассмотрим структуру подключения:


СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + ИмяФайла + "; Extended Properties=""Excel 8.0;HDR=NO;IMEX=1"";";
Соединение = СоздатьОбъект("ADODB.Connection");
Соединение.Open(СтрокаПодключения);
НаборЗаписей = Соединение.Execute("SELECT * FROM [Лист1$A1:C100]");
// Далее обходим НаборЗаписей методами MoveNext, EOF

Важно: При использовании ADODB учитывайте разрядность ОС. Поскольку 1С 7.7 — 32-битное приложение, драйверы должны быть также 32-битными. Для файлов формата .xlsx (Excel 2007+) обязательно установите Microsoft Access Database Engine.

Формирование проводок в 1С

После того как данные из Excel считаны в ТаблицаЗначений, мы приступаем к созданию документа БухгалтерскаяСправка. Проанализируем типичные требования:

  1. Создаем объект Документ.БухгалтерскаяСправка.
  2. Используем метод Новый() для создания новой записи.
  3. Заполняем шапку документа (дата, содержание операции).
  4. Используем метод Операция.НоваяПроводка() для формирования проводок.
  5. Для каждого сотрудника из считанной таблицы указываем дебет, кредит и сумму.

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

Практические рекомендации

Использование предложенных методов позволит вам превратить процесс ручного начисления в полуавтоматизированную систему, где Excel выступает в роли расчетного модуля, а 1С 7.7 — в роли системы для формирования бухгалтерского баланса и отчетности.

← На главную