Программное добавление документа в исходящий пакет (Контур.Диадок)

27.03.23

Функциональные - Документооборот и делопроизводство (СЭД)

В статье описана механика добавления произвольного неформализованного документа в стандартный исходящий пакет для модуля Диадок ("Универсальный модуль").

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Программно добавить документ в исходящий пакет (Контур.Диадок):
.epf 8,94Kb
33
33 Скачать (1 SM) Купить за 1 850 руб.

Для кого эта статья

Статья будет полезна пользователям Универсального модуля Диадок, которые хотят решить задачу по добавлению собственного документа в состав типового пакета исходящих документов.

 

Вводные

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

Ознакомиться с полным листингом кода можно по ссылке в конце статьи или в модуле приложенной обработки.


Общий концепт решения

Изменять поведение коробочного модуля Диадока и добавлять новые возможности нужно с помощью подключаемого модуля. Подключаемый модуль (ПМ) для Диадока представляет собой внешнюю обработку со специальным программным интерфейсом. Сейчас подробно на этом останавливаться не буду, всё будет в примере. Для реализации кейса нам потребуется определить в ПМ следующие события:

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

 

События подключаемого модуля

ПолучитьТаблицуИспользуемыхВидовДокументов

В этом событии необходимо описать добавляемые виды электронных документов:

  • внутренний идентификатор вида документов
  • пользовательское представление вида документов
  • формат отправки: тип документа в терминах Web API, тип контента (содержимого), функция электронного документа (актуально для УПД, УКД и т.п.)

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

 

 

ПодготовитьПакет

Событие предназначено для описания состава пакета отправляемых документов. Здесь можно описать состав собственного пакета или изменить состав типового пакета.

 

 

ПодготовитьЭлектронныйДокумент

Остается последний шаг - описать алгоритм получения файла отправляемого документа и заполнить сведения об электронном документе (его мету - информацию, которая будет отображаться в веб-интерфейсе: наименование файла, номер, дата, сумма и т.д.).

 

 

Результат работы нашего ПМ

 

Счет-фактура по договору 568:

 

Внешняя печатная форма договора 568:

 

Присоединенные файлы счета-фактуры (GetDocumentTypes.json и ПримерПМ_Диадок_ДобавитьДоговорВПакетУПД.epf)

 

Пакет документов на отправку УПД + договор + 2 приложения

 

Ссылки

  • Документация к модулю Диадока для разработчиков
  • С полным листингом подключаемого модуля для примера из статьи можно ознакомиться на GitHub
  • Полезная статья от John_d про то, как сформировать собственный пакет электронных документов
  • Скачать актуальную версию модуля Диадока можно с официального сайта

 

Приложенные файлы

ПримерПМ_Диадок_ДобавитьДоговорВПакетУПД.epf - подключаемый модуль, в котором реализовано добавление в пакет УПД печатной формы договора и файлов, прикрепленных к счету-фактуре. Работа подключаемого модуля протестирована на следующем окружении:

  • Платформа: 1С:Предприятие 8.3 (8.3.23.1596)
  • Конфигурация: Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.103.12) 
  • Модуль Диадок: Универсальный модуль Диадок, вер. 4.29.2

диадок эдо контур электронный документооборот неформализованный документ УПД

См. также

Документооборот и делопроизводство (СЭД) Типовые Бухгалтер Пользователь Руководитель проекта Платформа 1С v8.3 Управленческий учет Платные (руб)

Организуйте правильный оборот документов на вашем предприятии в 1С. Ведение учета и хранения документов. Управление потоками документации между подразделениями. Работа с договорами в компании. Автоматизация процессов подготовки, согласования и подписания документов. Сократите время и объем ошибок с 1С:ДО!

48500 руб.

19.02.2016    108652    123    5    

98

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

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

60000 руб.

19.12.2022    12163    34    20    

21

SALE! 30%

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

Универсальная программа для распознавания сканов или фото товарных документов в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

8400 5880 руб.

04.06.2019    107328    313    173    

326

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

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

5640 руб.

09.08.2017    151977    902    372    

548

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

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

29990 руб.

28.05.2024    1511    5    0    

7

Кассовые операции Файловый обмен (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 руб.

19.08.2020    69286    341    80    

225

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

Продукт "Апрель Софт: Бухгалтерия позаказного производства, ред. 3.0" предназначен для удобного и оперативного управления процессами производства, отгрузок и снабжения в производственных компаниях. Программный продукт открывает новые функциональные возможности для ведения документооборота.

11400 руб.

18.02.2016    22978    1    1    

5

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

Расширение для согласования справочников и документов в основных типовых конфигурациях. Ролевая адресация, условная маршрутизация, чат-бот telegram, интеграция с n8n, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Версия для 1cfresh.com. Сертификат 1С-Совместимо.

14900 руб.

15.11.2018    30403    35    49    

71
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Maksis 07.04.23 00:24 Сейчас в теме
Доброго вечера!
А не подскажите как решить обратную задачу. Т.е. из пакета программно удалить документ
2. charushkin 109 09.04.23 21:24 Сейчас в теме
(0) @Maksis, привет!

Удалить документ из пакета намного проще, чем добавить)


// Описывает правила формирования состава пакета исходящих документов.
// https://developer.kontur.ru/Docs/Diadoc_UM/func/pm/Podgotovit%27Paket.html
//
// Параметры:
//  ПараметрыСобытия - Структура - содержит ключи:
//    * ВидПакетаРазвернутый - Структура - описание вида пакета
//    * СтрокаСписка - Структура - значения колонок строки списка пакетов для отправки
//    * Пакет - Структура - сведения о формируемом пакете
//    * Результат_ИМ - Булево - (необязательный) Если ключа нет, значит это вызов перед типовым обработчиком
// 
// Возвращаемое значение:
//  Произвольный - Неопределено, если обработчик отключен, иначе Истина.
//
Функция ПодготовитьПакет(ПараметрыСобытия)
	
	Если ОбработчикиСобытий_ЭтоВызовПередТиповымОбработчиком(ПараметрыСобытия) Тогда
		// пример реализации проверки смотри тут: https://gist.github.com/acharushkin/87c87441e97b973c5a9329aabb66d2e5
		Возврат Неопределено;
	КонецЕсли;
	
	ТекущийПакет = ПараметрыСобытия.Пакет;
	
	Если ТекущийПакет.ИдентификаторВида = "ИдентификаторПакетаИзКоторогоНужноУдалитьДокумент" Тогда
		
		Пакеты_УдалитьЛишниеДокументы(ТекущийПакет);
		
		Возврат Истина;
		
	КонецЕсли;
	
КонецФункции
Показать


Вот пример реализации удаления документов из пакета:
Процедура Пакеты_УдалитьЛишниеДокументы(Пакет)
	
	ДокументыНаОтправку = Пакет.Документы;
	МаксИндекс = ДокументыНаОтправку.ВГраница();
	
	Для ОбратныйИндекс = -МаксИндекс По 0 Цикл
		
		Индекс = -ОбратныйИндекс;
		Элемент = ДокументыНаОтправку[Индекс];
		
		Если Элемент.ИдентификаторВида = "ИдентификаторЛишнегоВидаДокументов"
			И ТребуетсяОтменитьОтправкуЭлектронногоДокумента(Элемент.ДокументУчета) Тогда
			
			ДокументыНаОтправку.Удалить(Индекс);
			
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры
Показать
user712426; John_d; +2 Ответить
3. John_d 5893 17.04.23 13:03 Сейчас в теме
(2) Спасибо. Пригодилось удаление)
Мне кажется любые подобные статьи по Диадок облегчают разработчику жизнь.
4. charushkin 109 17.04.23 15:51 Сейчас в теме
(3) рад, что смог помочь. А о чём ещё хотелось бы узнать? Задавай вопросы, попробую дать развернутые ответы
user712426; +1 Ответить
5. John_d 5893 21.04.23 15:52 Сейчас в теме
(4) Добрый день! В Счет-фактуре в шапке есть строка Идентификатор государственного контракта, договора (соглашения) (при наличии):
А можно через подключаемый модуль добавить ниже еще строчки?
- Дополнение: договор Договор поставки №1 от 08.09.2022 г.
- Данные о транспортировке и грузе: 123 от 18.03.2023
- Примечание: счет-фактура составлена ООО "ннн", посредником (комиссионером), приобретающим товары (работы, услуги) от своего имени, за счет Комитента.
6. charushkin 109 26.04.23 13:48 Сейчас в теме
(5) Jhon_d, привет!

А можно через подключаемый модуль добавить ниже еще строчки?


Счет-фактура - это XML-файл, формат которого регламентируется ФНС. Взять и добавить в произвольное место свои дополнительные поля нельзя. Дополнительную информацию (дополнительные поля) можно передавать в специальных элементах (тегах), предусмотренных форматом 820@: ТекстИнф в элементах ИнфПолФХЖ1, ИнфПолФХЖ2 и ИнфПолФХЖ3.

В Универсальном модуле такие дополнительные поля выводятся в превью электронного документа.

Дополнительные поля шапки документа (ИнфПолФХЖ1) можно добавлять прямо в пользовательском режиме в форме исходящего пакета (приложил файл с примером). Любые дополнительные поля можно добавлять программно через событие "ПодготовитьЭлектронныйДокумент" в подключаемом модуле с помощью функции ДобавитьИнформационноеПоле

P.S. Для веб-интерфейса можно подключить функцию "Кастомная печатная форма", чтобы стандартную визуализацию электронного документа. Но работать это будет только в веб-интерфейсе, в модуле для 1С визуализация останется прежней.
Прикрепленные файлы:
VyacheslavShilov; +1 Ответить
8. John_d 5893 11.05.23 13:45 Сейчас в теме
(6) Спасибо. Так и сделал.
7. John_d 5893 11.05.23 13:25 Сейчас в теме
(4) Что будет если к документу реализация уже привязан один пакет, а я хочу еще один пакета привязать
Можно так делать? Потом это учтется при отправки в Диадок в доп.свойствах?
ОсновнойМодуль.ЭДО_Служебные_ДобавитьСтрокуВТаблицуЗначений(ТЗ, "ID_СФ", "СФ" , "ID_СФ", "РеализацияТоваровУслуг", "РеализацияТоваровУслуг");
ОсновнойМодуль.ЭДО_Служебные_ДобавитьСтрокуВТаблицуЗначений(ТЗ, "ID_АктПП", "АктПП" , "ID_АктПП", "РеализацияТоваровУслуг", "РеализацияТоваровУслуг");
9. John_d 5893 24.05.23 14:03 Сейчас в теме
(4) Добры день! Как можно через подключаемый модуль указать промежуточного получателя?
10. charushkin 109 08.06.23 10:58 Сейчас в теме
(9) Привет!
Промежуточного получателя можно указать в событии ПослеПодготовкиПакета.
Пример есть в официальной инструкции Дополнительная обработка исходящих пакетов
11. John_d 5893 08.06.23 11:37 Сейчас в теме
(10) Спасибо. Буду смотреть
12. user631502_m.parakhina 07.07.23 10:42 Сейчас в теме
Добрый день.
А для групповой отправки документов это тоже будет работать?
13. charushkin 109 17.07.23 15:21 Сейчас в теме
(12) Привет!

Да, работает в том числе при групповой отправке
14. kai068 5 30.10.23 12:38 Сейчас в теме
Здравствуйте! Возможно ли исключить пользователя из процесса? А именно: что бы статус "Передать на подпись" присваивался автоматически определенным УПД (по Контрагентам например). Исключая из цепочки менеджера, который может "забыть" отправить документ на подпись.
15. psa247 21 30.10.23 15:46 Сейчас в теме
Доброго дня! Не подскажете, как получить хмл входящего документа программно, не используя ПМ
VyacheslavShilov; +1 Ответить
16. psa247 21 06.12.23 05:38 Сейчас в теме
(15) В итоге "ковыряния" модуля Диадок - вывод такой: проще добавить объекты в основную конфу и выдергивать данные оттуда
17. mrcamomile 83 20.12.23 14:19 Сейчас в теме
Спасибо за статью.
Вопрос: событие "ПодготовитьПакет" вызывается всегда при выводе списка + при открытии конкретного пакета. Есть способ отличить эти вызовы?
Пока выкрутился так: в структуру "СтрокаСписка" добавил 2 свойства (просмотр пакета исходящее / входящее).
ЭтоПросмотрПакета__НаправлениеИсходящее = ПараметрыСобытия.СтрокаСписка.ЭтоПросмотрПакета__НаправлениеИсходящее;


Если так не сделать - получается для каждой строки списка при открытии обработки мой подключаемый модуль генерил временные файлы и подкладывал двоичные данные для каждого пакета. А по факту отправить хотели только один документ. Поэтому сделал при открытии конкретного пакета.
18. dezd 04.03.24 18:14 Сейчас в теме
Добрый день. Есть необходимость удалить из пакета лишний документ. Пакет уже отправлен. Можно ли такое осуществить?
19. IvanPoh 25 24.04.24 15:31 Сейчас в теме
Добрый день. А как можно добавить программно сформированный файл в пакет? т.е. я при подготовке пакет формирую некий файл, и мне нужно его просто добавить в пакет, так же как если бы я через плюсик в режиме пользователя его добавлял
20. user1446168 06.05.24 18:02 Сейчас в теме
Добрый день, а как можно добавить внешнюю печатную форму УПД?
21. asdPerepel 12 06.08.24 09:37 Сейчас в теме
Здравствуйте.
Подскажите пожалуйста.

Хочу отследить статус документа "Подписан". Делаю в подключаемом модуле.

Функция ОбработатьСобытие(ИмяСобытия, Параметры) Экспорт
...
ИначеЕсли ИмяСобытия = "ПослеУстановкиСтатусаДокумента" Тогда

Событие не происходит ни когда. Происходят события: "ПодготовитьПакет", "ПолучитьНастройкиДополнительныхКолонокСпискаДокументов", "ПриПолученииДанныхТабличнойЧасти" и всё.
Что не так?
VyacheslavShilov; +1 Ответить
22. sdjoker 39 07.08.24 13:13 Сейчас в теме
А может кто нибудь случайно знает как повторно отправить документ?
Изначально: отправлен документ, контрагент отказал в подписи, поменяли данные самого документа 1с, заново появляется документ для отправки (с тем же самым документом 1с, в старом/отказанном пакете и документе диадок - документ 1с очищен), но не отправляется, пишет: "Этот пакет уже был отправлен ранее".
Как программно заставить повторно отправить этот же документ не снимая галочку "контроль дублирования пакетов на отправку"?
Оставьте свое сообщение