Загрузка и обработка "плоского" Табличного документа / Excel с произвольным кодом обработки строк, который можно редактировать на лету в режиме предприятия, с автоформированием и отображением таблицы значений.
Минимум настроек - всю необходимую логику обработки данных можно реализовать возможностями языка 1с ( как нравится и на сколько хватило фантазии :) )
Позволяет:
- - Произвольно обработать табличные данные из xls, mxl применяя произвольный построчный код
- - Модифицировать табличный документ используя произвольный код (можно в несколько итераций обрабатывать данные новыми алгоритмами)
- - Сформировать на основе табл. документа Таблицу Значений и обработать ее
- - Выполнять транзакционную запись или использовать режим Без Записи (попытка записи, но откат транзакций)
- - Получить лог обработки
- - Загрузить mxl с уже существующими ссылочными данными в своих ячейках (например при прошлых выполнениях алгоритмов)
- - Можно редактировать Таб. документ/ Таблицу значений вручную ( т.е. менять значения ячеек, удалять строки и т.д.) и применять код уже модифицированным данным
Требования к загружаемому файлу:
- - если используется эксель файл - то одностраничный
- - нет разрывов (пустых строк / столбцов) между строками и колонками с данными в табличном документе
- - наименования колонок не содержат "спец" символов
- - первая строка содержит заголовки колонок
Логика работы и особенности
1.1 Читается табличный документ - в зависимости от флага - может сразу формироваться ТЗ или нет (при формировании ТЗ может сразу же выполняться и алгоритм)
1.2 Табличный документ модифицируется как угодно используя поля с вводом алгоритмов (например можно сразу добавить новый столбец с ссылками на данные, а можно это сделать модификацией ТЗ. можно результат одного выполнения модифицировать стартом нового алгоритма и т.д.)
Между алгоритмами может передаваться структура КонтекстАлгоритмов, содержащая общедоступные данные (например менеджер ВТ какого то запроса , или индексированную ТЗ).
2. На основе табличного документа можно сформировать таблицу значений и использовать ее данные, применяя алгоритмы как для каждой строки, так и перед и после обработки всех строк. (см. соответствующие флаги)
3. Формируется лог выполнения алгоритмов
4. Текст алгоритмов можно сохранять/ загружать из файла, или настроек формы
Присутствует ряд служебных переменных и функций доступных в алгоритмах, например таких, как ФиксацияТранзакции(), ЗначениеЯчейкиТабличногоДокумента()
Возможна транзакционная запись или откат транзакций по флагу БезЗаписи (тогда в алгоритме надо использовать конструкцию НачатьТранзакцию() и закрывающую ФиксацияТранзакции() - см Пример3);
Возможно прерывание цикла обхода строк при первой ошибке
Примеры
- Пример 1 - простая модификация табличного документа (см gif выше)
- Пример 2 - использование структуры КонтекстАлгоритмов передаваемой между алгоритмами,
возможно использовать по результату примера 1 - Пример 3 - работа с объектами и транзакциями (флаг БезЗаписи, процедура ФиксацияТранзакции()) (см gif выше)
- Пример 3 ( для заполнения ТЗ) - демонстрация работы флага “Использовать для заполнения значений ТЗ” при выполнении первичного формирования ТЗ, когда ее еще нет как реквизита формы. Позволяет продемонстрировать получение ссылочных данных, для дальнейшего использования
- Пример 4 - трансформация полученной ТЗ, так же демонстрирует получение ссылочных данных
Демонстрация работы обработки:
https://youtu.be/GCxGt8D0RTU?si=YBE3MzxGljsfpWsZ
P.S.
Обработок загрузки из эксель полно, так что на "открытие" года не претендует.
Но для себя похожего "минимализма" не нашел, поэтому сделал этот велосипед. Буду кататься, а точнее уже )) т.к. на практике приходится примерно одни и те же действия делать для разных данных, и хочется видеть, как они трансформируются на лету при тестовых прогонах перед тем, как загрузить в рабочую базу что-то.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.12.270
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.150.33