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

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С v8.3 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)

Работаете по контрактной схеме, сталкивались с проблемой, что в контракте жестко указаны наименование, цена, единица измерения товара. И не все готовы создавать новую номенклатуру под каждый контракт или менять наименование и единицу измерения для уже имеющейся. Тем более, бывает так, что контракт - это формальность. Контракт не описывает жесткие условия поставки, нужно соблюсти правильность в предоставлении документов. Данное решение позволит вам оперировать своей номенклатурой при оформлении реализаций по государственному контракту в УТ 11.5 и КА 2.5.11, в то же время выводить на печать документы, соответствующие данным контракта. Реализована выгрузка для сайта госзакупок (ЕИС) по 44-ФЗ.

60000 руб.

19.12.2022    12023    34    20    

21

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

Согласно 54-ФЗ по правилам ведения кассовых операций необходимо оформлять приходные кассовые ордера (ПКО) и расходные кассовые ордера (РКО) на основании чеков ККМ. Все данные о чеках, можно взять на сайте оператора фискальных данных (ОФД). Обработка загрузки данных из ОФД в 1С сделает за вас в 1С - ПКО и РКО, Операции по платежным картам или Отчет о розничных продажах (может создать номенклатуру в 1С, указать налоги и др. реквизиты в документах в зависимости от налогообложения ККМ в торговой точке).

5640 руб.

09.08.2017    151781    901    372    

548

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

ПОДПИСЫВАЙТЕ ДОКУМЕНТЫ С ФИЗЛИЦАМИ ПО СМС. Ваши клиенты и сотрудники смогут подписывать документы простой электронной подписью (ПЭП) без визита к вам в офис. С телефона или компьютера без установки приложений и регистраций.

29990 руб.

28.05.2024    1453    5    0    

7

SALE! 50%

Кассовые операции Файловый обмен (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С:УНФ 3.0, 1С:КА. 2.5, 1С:ERP Управление предприятием, ред. 2 и 1С:УТ 11.5. Вы просто сканируете QR коды с бумажных и электронных чеков c помощью мобильного приложения ФНС и чеки автоматически (без ручного ввода) загружаются в документы 'Авансовый отчет', 'Расходы предпринимателя', 'Путевой лист', 'Приходная накладная', 'Поступление (акты, накладные, УПД)', 'Приобретение товаров и услуг', 'Отчет о розничных продажах' и 'Поступление денежных документов'.

12960 9720 руб.

19.08.2020    69116    339    80    

225

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

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

3600 руб.

11.02.2020    92690    301    156    

220

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

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

14880 руб.

17.12.2018    45663    65    59    

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

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

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