Подключение функционала БСП "Присоединенные файлы" к функционалу Диадок

23.12.22

Интеграция - ЭДО и ОФД

Альтернативный вариант хранения файлов документов и подписей ЭДО Диадок на сетевом ресурсе.

Постановка задачи

После завершения основного этапа внедрения модуля Диадок в корпоративную систему принялись за оптимизацию модулей, в частности, вынести хранение файлов Диадок из СУБД в файловое хранилище, с использованием возможностей БСП.
Так же нам требовалось внедриться максимально аккуратно, чтобы иметь возможность максимально просто устанавливать обновления поставляемого модуля без риска поломать наш функционал.

Первым делом изучили штатный функционал. В обработке Диадока (на момент добавления функционала версия 4.10.6) есть настройка для хранения файлов документов и подписей на диске:

 

 

Но данная реализация нас не устроила т.к. нужно было вводить ещё один адрес хранения на сетевом ресурсе, осуществлять передачу нового ресурса системным администраторам для поддержки, организовать мероприятия, необходимые для корректной работы системы.

В своей работе уже используем функционал присоединенных файлов (версия БСП 2.3.3.66):

1. установлена настройка «хранить файлы в томах на диске»;

2. настроена работа с томом на сетевом диске: проверка на вирусы;

3. включен мониторинг объема занимаемых присоединённых файлов и контроль свободного места на диске;

4. штатный механизм очистки файлов для старых документов;

5. со временем планируется даже миграция файлов в облако (что БСПшным функционалом будет реализовать гораздо проще.

 

Реализация

За основу реализации задачи был взят механизм Диадок «Хранить файлы документов и подписей на диске» с небольшими дополнениями.

Можно выделить следующие доработки:

  1. Подключение подсистемы хранения вложенных файлов БСП
  2. Добавление настроек на форму НастройкиУправляемая;
  3. Сохранение значение настройки для использования в модулях;
  4. Изменение функций записи файлов на сетевой том;
  5. Изменение функция чтения файлов из сетевого тома;

Добавили механизм БСП «Присоединенные файлы» для справочника Диадок_Документы. Как это сделать подробно написано на сайте ИТС (инструкция для БСП версии 2.3).

 

Добавление опции хранения в присоединенных файлах

Далее уже правили обработку «КонтурЭДО». Тексты процедур и функций штатной обработки публиковать не буду, а только тот код, который сами добавляли.

Добавили настройку, которая переключает хранение файлов по нашему алгоритму. Для этого в обработке Диадок на форму «НастройкиУправляемая» добавили новый реквизит формы ХранитьДокументыВПрикрепленныхФайлах тип Булево.

 

 

И вынесли на форму рядом со штатной настройкой:

 

 

В обработчике события «При изменении» сохраняем значение нашего реквизита в настройках Диадок (был скопирован штатный код с небольшими правками):

Процедура ХранитьДокументыВПрикрепленныхФайлахПриИзменении
 

 

Далее написали функционал для обработки настройки. Для этого выгрузили макеты «Ядро_epf» и «ХранениеДанных_epf» из обработки в файлы «Ядро.epf» и «ХранениеДанных.epf».

В модуле объекта обработки «Ядро.epf» в функцию Контракт_ОбщиеНастройки() добавили к стандартным настройкам нашу настройку:

Результат.Вставить("ХранитьДокументыВПрикрепленныхФайлах", Ложь);

В функцию ОбщиеНастройки_ОбработанныеЗначенияПередЗаписью(СтруктураНастроек) добавили проверку на нашу переменную:

Если НЕ (СтруктураНастроек.ХранитьДокументыНаДиске ИЛИ СтруктураНастроек.ХранитьДокументыВПрикрепленныхФайлах) Тогда
	СтруктураНастроек.УдалятьСодержимоеУстаревшихДокументов = Ложь;	
КонецЕсли;

На этом изменения в «Ядро.epf» готовы. Импортировали обработку обратно в макет обработки «КонтурЭДО».

Запись файлов документов и подписей в присоединенные файлы.

Настала очередь «ХранениеДанных.epf».

Для установки настройки по умолчанию, не заданной в предыдущем релизе модуля в процедуру Настройки_ОбщиеНастройки() прописали условие:

Если Результат.Свойство("ХранитьДокументыВПрикрепленныхФайлах") И ТипЗнч(Результат.ХранитьДокументыВПрикрепленныхФайлах) <> Тип("Булево") Тогда
	Результат.ХранитьДокументыВПрикрепленныхФайлах = Ложь;
КонецЕсли;

Для добавления файлов в присоединенные в процедуре  Документы_ЗаписатьДанныеХранилища_Диадок(ДанныеХранения, ИмяХранилища, ДокументЭДО) добавили обработку переменной:

Если Данные <> Неопределено Тогда
...
 ИначеЕсли Настройки_ОбщиеНастройки().ХранитьДокументыВПрикрепленныхФайлах Тогда
  Документы_ЗаписатьДанныеХранилища_ПрикрепленныеФайлы(Данные, ДокументЭДО, ИмяХранилища);
...
КонецЕсли;
И далее, когда определили ЗашифрованныеДанные допиcали условие:
Если ЗашифрованныеДанные <> Неопределено Тогда
…
 ИначеЕсли Настройки_ОбщиеНастройки().ХранитьДокументыВПрикрепленныхФайлах Тогда
  Документы_ЗаписатьДанныеХранилища_ПрикрепленныеФайлы(ЗашифрованныеДанные, ДокументЭДО, ИмяХранилища, Истина);
…
КонецЕсли;

Процедура из условия:

 
 Процедура Документы_ЗаписатьДанныеХранилища_ПрикрепленныеФайлы

 

Получение файлов подписей и документов из присоединенных файлов.

Для получения данных из присоединенных файлов добавили изменения в функцию Документы_КонтрактДанныхХранилищаПоВыборке_Диадок(Выборка, ИмяХранилища) условие:

Если Настройки_ОбщиеНастройки().ХранитьДокументыНаДиске Тогда	
…
 ИначеЕсли Настройки_ОбщиеНастройки().ХранитьДокументыВПрикрепленныхФайлах Тогда	
  УстановитьПривилегированныйРежим(Истина);
  СтруктураДанных = Документы_ДвоичныеДанныеХранилища_ПрикрепленныеФайлы(Результат, Выборка.КодПакета, Выборка.КодДокумента, ИмяХранилища);
  ЗаполнитьЗначенияСвойств(Результат, СтруктураДанных, "Данные, ЗашифрованныеДанные");

Функция из условия:

 
 Функция Документы_ДвоичныеДанныеХранилища_ПрикрепленныеФайлы

Для получения данных подписи нужно добавить в функцию Документы_КонтрактПодписиПоВыборке_Диадок ветку условия:

Если Настройки_ОбщиеНастройки().ХранитьДокументыНаДиске Тогда
…
 ИначеЕсли Настройки_ОбщиеНастройки().ХранитьДокументыВПрикрепленныхФайлах Тогда
  ДанныеПодписи = Документы_ДвоичныеДанныеПодписи_ПрикрепленныеФайлы(Выборка.КодПакета, Выборка.КодДокумента, ИмяХранилища);
  Результат.ДанныеПодписи = ДанныеПодписи;

И сама функция:

 
Функция Документы_ДвоичныеДанныеПодписи_ПрикрепленныеФайлы

На этом сохранили «ХранениеДанных.epf» и импортировали в макет обработки «КонтурЭДО».

 

Результат

Для справочника «Диадок: Документы» подключен функционал БСП «Присоединенные файлы»

 

 

Для документов Диадок список присоединенных файлов

 

 

Проблемы, которые возникли в процессе

  1. Исторические данные. После установки настройки, все документы, которые получили до установки параметра, перестали подписываться. Поэтому в процедуре Документы_КонтрактДанныхХранилищаПоВыборке_Диадок добавили проверку на тот случай если присоединенного файла нет, то данные брать из базы.
    Позже написали обработку, которая для старых документов перекладывала файлы из базы в присоединенные файлы.
  1. При переносе исторических данных стала возникать ошибка: «Ошибка при добавлении файла в том: Access is denied».
    В ходе анализа выяснили, что БСП при сохранении файла, проверяет наличие в этой папке файла с таким же именем. Если файл уже есть в папке, то создается вложенная папка со случайными именем A, B, ... Z,  A1, B1, .. Z1, ..  A2, B2, …, Z99 и в неё сохраняется файл.
    Наименование файлов для всех документов Диадок постоянны (ХранилищеКонтента, ПодписьПокупателя, ОтказВПодписанииДокумента и т.д.), поэтому при сохранении файла средствами БСП в сетевую папку возникли проблемы: БСП не могла создать новую папку т.к. закончился лимит на наименование папки и вызывала исключение.
    У нас стоит версия БСП 2.3.3.66 и функция (ФайловыеФункцииСлужебныйКлиентСервер.ПолучитьУникальноеИмяСПутем), которая определяет путь для сохранения файлов, может сгенерировать всего 2600 папок с различными именами. Если за день придёт документов ЭДО свыше 2600 шт, то БСП уже не сможет сохранить присоединенный файл.
    Проблему решили просто, обновили процедуру из новых версий БСП. В новых версиях переписали алгоритм и теперь количество папок для присоединенных файлов может быть 26 в степени 5. Такое количество нас устраивает и ошибок больше не возникало.
    Но даже для старых версий БСП можно было бы избежать ошибки. В процедуре Документы_ЗаписатьДанныеХранилища_ПрикрепленныеФайлы при формировании структуры ПараметрыФайла для ключа ИмяБезРасширения добавлять значение по маске «номер пакета»-«номер документа»-«Имя файла без расширения». В таком виде файлы были бы уникальны и хранились бы все в папке с наименованием равной текущей дате.
  1. Обновление обработки «КонтурЭДО». Теперь нужно помнить, что у нас есть изменения в макетах. Поэтому это нужно учитывать при переходе на новую версию обработки КонтурЭДО. Для каждой новой версии обработки нужно добавлять изменения в макеты «Ядро_epf» и «ХранениеДанных_epf». Для упрощения обновления макетов используем Git. Более подробно как это реализовали расскажу в другой статье.

 

Заключение

После доработки системы хранения входящих файлов ЭДО удалось сократить размер базы примерно на 6% (30.4 Гб) и получили единый сетевой ресурс для хранения всех файлов в 1С.

После доработки системы хранения входящих файлов ЭДО удалось сократить размер базы примерно на 6% (30.4 Гб) и получили единый сетевой ресурс для хранения всех файлов в 1С.

эдо Диадок БСП

См. также

Загрузка чеков ФНС в документы 1С:БП, 1С:УНФ, 1С:ERP, 1С:КА и 1С:УТ

Кассовые операции Файловый обмен (TXT, XML, DBF), FTP ЭДО и ОФД Платформа 1С v8.3 Бухгалтерский учет 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Налоговый учет Управленческий учет Платные (руб)

В публикации размещены специализированные обработки для загрузки чеков в базах 1С (для локальных баз): '1С:Бухгалтерия предприятия, ред. 3.0', '1С:Управление нашей фирмой 8, ред. 3.0', '1С:Комплексная автоматизация, ред. 2.5', ‘1С:ERP Управление предприятием, ред. 2’ и ‘1С:Управление торговлей, ред. 11.5’. Вы просто сканируете QR коды с бумажных и электронных чеков c помощью мобильного приложения ФНС и чеки автоматически (без ручного ввода) загружаются в документы 'Авансовый отчет', 'Расходы предпринимателя', 'Путевой лист', 'Приходная накладная', 'Поступление (акты, накладные, УПД)', 'Приобретение товаров и услуг', 'Отчет о розничных продажах' и 'Поступление денежных документов'.

12960 руб.

19.08.2020    65235    303    73    

210

Загрузка в 1С:Бухгалтерию 3.0, 1С:КА 2.4, 2.5, УНФ 1.6/3.0 данных из ОФД о денежных поступлениях (чеках)

Кассовые операции ЭДО и ОФД Платформа 1С v8.3 Бухгалтерский учет 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Платные (руб)

Согласно 54-ФЗ по правилам ведения кассовых операций необходимо оформлять приходные кассовые ордера (ПКО) и расходные кассовые ордера (РКО) на основании чеков ККМ. Все данные о чеках, можно взять на сайте оператора фискальных данных (ОФД). Эта обработка сделает за вас в 1С - ПКО и РКО, Операции по платежным картам или Отчет о розничных продажах (может создать номенклатуру в 1С, указать налоги и др. реквизиты в документах в зависимости от налогообложения ККМ в торговой точке). Проверено на: OFD.RU / Первый ОФД / Такском / Платформа ОФД / Ярус / ОФД Яндекс / ОФД Астрал /ОФД СБИС / Гарант ОФД / КОРУС ОФД / КОНТУР ОФД / ОФД АО Тандер / ИнитПро / Группа Элемент/

3600 руб.

09.08.2017    148078    867    372    

527

Выгрузка УПД реализации в xml ФНС для загрузки в ЭДО: Диадок, СБИС, Такском, КОРУС, Астрал и прочие. Обработка на управляемых формах для БП 3.0, УНФ 1.6 / 3.0, УТ 11.4 / 11.5, КА 2, ERP 2 (Приказ ФНС №820 от 19.12.2018, 736 от 12.10.2020)

Оптовая торговля Производство готовой продукции (работ, услуг) Файловый обмен (TXT, XML, DBF), FTP ЭДО и ОФД Платформа 1С v8.3 Бухгалтерский учет Управляемые формы 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Платные (руб)

Выгрузка УПД, товарной накладной ТОРГ-12, акта, счета-фактуры по реализации (в БП сч-ф на аванс) в xml-файл в формате ФНС приказ 820 от 19.12.2018. Выгрузка УКД и корректировочного счета-фактуры в xml-файл в формате ФНС приказ 736 от 12.10.2020. Выгрузка товарной накладной в xml-файл ФНС приказ 551 от 13.11.2015, редакция 08.04.2019. Выгрузка акта приемки-сдачи работ (услуг) в xml-файл ФНС приказ 552 от 13.11.2015, редакция 08.04.2019. Добавлена выгрузка счетов на оплату по документам ЗаказПокупателя (в УНФ), ЗаказКлинета (в УТ / КА / ERP), СчетНаОплатуПокупателю (в БП). Добавлена обработка Выгрузка УПД c документов реализации 1С в Контур.Диадок по API.

12000 руб.

13.04.2018    82341    392    9    

427

Акцизы на сахаросодержащие напитки

Регламентированный учет и отчетность ЭДО и ОФД Платформа 1С v8.3 1С:Бухгалтерия 3.0 Пищевая промышленность Россия Бухгалтерский учет Налоговый учет Акцизы Платные (руб)

Расширение для Бухгалтерии предприятия 3.0 «Акцизы на сахаросодержащие напитки» предназначено для автоматизированного учета сумм акцизов по реализованным сахаросодержащим напиткам с 01 июля 2023 года. Позволяет выделить суммы акциза в первичных документах («Реализация товаров и услуг», «Корректировка реализации»), сформировать проводки по начислению акциза, а также сформировать и отправить корректные документы по ЭДО.

14400 руб.

16.10.2023    1134    10    0    

9

Загрузка документов поступления из XML формата 820 (Контур.Диадок) в 1С:УТ10/11, БП 3.0, КА2.5, УПП1.3 и обработка выгрузки УПД в Контур Диадок и СБИС для 1С:Бухгалтерии 3.0

ЭДО и ОФД Загрузка и выгрузка в Excel Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Кто получает документы через Контур.ДиаДок (XML файл формат 820) и набивает их вручную в 1С, тот наверняка хотел бы автоматизировать этот процесс. Поддержка конфигураций: Бухгалтерии 3, УПП 1.3, 1С:КА 2.4 и 1С:КА 2.5, УТ10, УТ11.4 и УТ11.5. Выгрузка XML в формате 820 для диадок из БУХ3

3600 руб.

11.02.2020    88760    283    156    

207

ЭДО: организация архива оригиналов первичных документов, комплексный отчет по ошибкам

Документооборот и делопроизводство (СЭД) ЭДО и ОФД Учет документов Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Мощный, единый инструмент для решения всех проблем, связанных с переходом на ЭДО. Экономит бумагу и время - организует архив оригиналов первичных документов прямо в базе 1С, в прикрепленных файлах к соответствующим документам. С помощью комплексного отчета по ошибкам в ЭДО позволяет выявить и исправить все возможные ошибки - ошибочно сопоставленные документы, не подписанные документы, подписанные, но не загруженные в 1С документы. Автоматически сопоставляет не сопоставленные между собой документы. Может работать по расписанию и присылать отчет о состоянии архива/по ошибкам на почту. Взаимодействует напрямую с сервисами Диадок/СБИС, имеет интуитивно понятный интерфейс и учитывает 3-х летний опыт 40+ клиентов.

14880 руб.

17.12.2018    44372    58    51    

71
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. fatman78 17 19.07.23 11:15 Сейчас в теме
Отличная статья. Думаю разработчики Диадок не стали делать хранение через БСП ради универсальности модуля...

Позже написали обработку, которая для старых документов перекладывала файлы из базы в присоединенные файлы.

Тоже стоит задача изъятия из БД файлов. Можете поделиться своей обработкой с сообществом?
2. user1490177 20 26.07.23 13:44 Сейчас в теме
(1) нашёл первую версию обработки
Прикрепленные файлы:
ПереносИсторическихДанных_2.epf
fatman78; +1 Ответить
Оставьте свое сообщение