В процессе автоматизации учета часто возникает задача связки внешних табличных документов с системой 1С. Рассмотрим, как правильно организовать передачу данных из Excel в 1С для автоматического создания документов, например, Приемо-сдаточного акта (ПСА), избегая при этом проблем с блокировками файлов и потерей данных.
Прежде чем приступать к разработке, проанализируем риски:
Excel для работы, 1С не сможет получить к нему доступ для чтения, что приведет к ошибкам в РегламентныхЗаданиях.Наиболее надежный и рекомендуемый подход — это использование промежуточного звена. Вместо того чтобы 1С «лезла» в рабочий файл пользователя, мы организуем процесс отправки данных по кнопке.
Алгоритм реализации:
Excel макрос на VBA.txt или json) в специально выделенной папке обмена.РегламентноеЗадание в 1С периодически сканирует эту папку, находит новые файлы, считывает их, создает документ ПСА и перемещает обработанный файл в архив.Этот метод исключает монопольную блокировку основного файла Excel, так как 1С работает только с «выгруженными» записями.
Если пользователь категорически не хочет нажимать дополнительные кнопки, можно прибегнуть к методу «теневого копирования».
Рассмотрим по шагам:
PowerShell или VBScript), который перед запуском РегламентногоЗадания делает копию файла Excel в рабочую директорию.ПСА в базу 1С, файл копии удаляется.Рассмотрим более современный подход. Если Excel используется как инструмент первичного ввода, мы можем сделать интеграцию событийной, а не основанной на опросе.
Для реализации этого метода:
HTTP-сервис, который будет принимать данные через POST-запрос.Excel через VBA настройте отправку данных сразу после того, как пользователь заполнит строку и нажмет кнопку.JSON как формат обмена данными, так как 1С имеет встроенные функции ЗаписатьJSON и ПрочитатьJSON, что позволяет передавать сложные структуры данных без ошибок парсинга.Этот способ позволяет 1С создавать документы мгновенно, без задержек, характерных для регламентных заданий.
Важно понимать, что использование Excel как основной базы данных для учета задолженностей и взаиморасчетов — это стратегически рискованное решение. Рассмотрим причины, почему лучше перенести этот функционал в 1С:
ПравДоступа.Веб-клиент 1С или настройте МобильныйКлиент. Вам не потребуется синхронизировать файлы, так как данные будут храниться в одной централизованной базе.РегистреСведений или специализированном документе позволит в любой момент строить отчеты, которые в Excel пришлось бы собирать вручную часами.Если руководство настаивает на текущей схеме, предложите им создать в 1С Обработку, которая по внешнему виду будет имитировать привычную таблицу Excel. Это позволит пользователям привыкнуть к интерфейсу, а вам — обеспечить надежное хранение данных непосредственно в базе данных 1С.
При использовании регламентного задания, алгоритм внутри процедуры ВыполнитьОбмен будет выглядеть примерно так:
// Пример псевдокода для обработки файлов
Файлы = НайтиФайлы(ПутьКПапке, "*.txt");
Для Каждого Файл Из Файлы Цикл
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(Файл.ПолноеИмя);
// Парсим данные из файла
Данные = РазобратьСтроку(ТекстовыйДокумент.ПолучитьТекст());
// Создаем документ
НовыйДокумент = Документы.ПСА.СоздатьДокумент();
ЗаполнитьЗначенияСвойств(НовыйДокумент, Данные);
НовыйДокумент.Записать();
// Перемещаем в архив
ПереместитьФайл(Файл.ПолноеИмя, ПутьКАрхиву + Файл.Имя);
КонецЦикла;
Этот простой подход позволит автоматизировать процесс, избавит вас от рутины и минимизирует риски потери информации при работе с внешними файлами.