Загрузка внешних данных из таблиц Excel в учетную систему является классической задачей для администратора или программиста 1С. Рассмотрим подробно, как организовать этот процесс, чтобы автоматизировать перенос начислений и удержаний в бухгалтерские справки, избегая ручного ввода.
Перед тем как приступать к написанию кода, необходимо определить уникальный идентификатор для сопоставления данных. Поскольку в Excel у вас есть Ф.И.О., важно убедиться, что они однозначно соответствуют записям в справочнике Сотрудники. Мы рекомендуем использовать сочетание Ф.И.О. и табельного номера. Если в базе данных 1С 7.7 возможны дубликаты, добавьте этап верификации: если при загрузке программа не находит сотрудника, запись должна попадать в протокол ошибок для ручной обработки бухгалтером.
Этот метод является наиболее универсальным и не требует установки сторонних драйверов или настройки системных ODBC-источников. Мы работаем с Excel как с внешним объектом, управляя его интерфейсом напрямую из кода 1С.
Разберем по шагам реализацию через Excel.Application:
Excel = СоздатьОбъект("Excel.Application");
Попытка
Книга = Excel.Workbooks.Open(ПутьКФайлу);
Лист = Книга.Sheets(1);
Исключение
Предупреждение("Не удалось открыть файл!");
Возврат;
КонецПопытки;
// Перебор строк до тех пор, пока не встретим пустую ячейку в ключевом столбце
Стр = 2; // Предположим, первая строка - заголовки
Пока 1 = 1 Цикл
ФИО = СокрЛП(Лист.Cells(Стр, 1).Value);
Если ПустаяСтрока(ФИО) = 1 Тогда
Прервать;
КонецЕсли;
Сумма = Лист.Cells(Стр, 2).Value;
// Здесь выполняем поиск сотрудника и заполнение документа
Стр = Стр + 1;
КонецЦикла;
Если файл 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.
После того как данные из Excel считаны в ТаблицаЗначений, мы приступаем к созданию документа БухгалтерскаяСправка. Проанализируем типичные требования:
Документ.БухгалтерскаяСправка.Новый() для создания новой записи.Операция.НоваяПроводка() для формирования проводок.Если для аналитики (субконто) в вашем Excel-файле недостаточно данных, мы рекомендуем создать справочник-соответствие, в котором для каждого вида начисления из файла будет жестко прописан корреспондирующий счет и вид субконто. Это позволит бухгалтеру не выбирать аналитику вручную после каждой загрузки.
Протокол загрузки. Выводите в него информацию о том, сколько строк было успешно обработано, а сколько — пропущено из-за отсутствия сотрудника в справочнике.Jet 4.0, так как он встроен в Windows.1С++ и ODBCRecordSet, это даст возможность выполнять сложные JOIN-запросы прямо к файлам Excel, что упрощает сопоставление справочников до передачи данных в 1С.Использование предложенных методов позволит вам превратить процесс ручного начисления в полуавтоматизированную систему, где Excel выступает в роли расчетного модуля, а 1С 7.7 — в роли системы для формирования бухгалтерского баланса и отчетности.