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

27.03.23

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Программно добавить документ в исходящий пакет (Контур.Диадок):
.epf 8,94Kb
35
35 Скачать (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    109174    128    5    

99

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

Расширение для автоматизации процесса подписания электронных документов в мобильном приложении "Госключ" с видом подписи УКЭП/УНЭП, которое подходит для электронного подписания бухгалтерских документов, список которых утвержден в приказе Минфина №61н «Об утверждении унифицированных форм электронных документов бухгалтерского учета…»

500000 руб.

06.11.2024    1172    1    0    

1

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

Продукт "Интеграция с 1С:Документооборот" позволяет использовать функции программы "1С:Документооборот 8" напрямую из учетной системы (1С:УПП; 1С:КА, 1С:УТ 10.3, 1С:БГУ 1.0, 1С:ЗБУ 1.0, 1С:УПП для Казахстана и отраслевых решений, разработанных на их основе) на платформе "1С:Предприятие 8": выполнять и ставить задачи, просматривать документы, скан-копии и прочие файлы, штрих-кодировать документы отправлять письма, вести учет рабочего времени - не входя в "1С:Документооборот 8", работая в одной программе, что значительно сокращает время и делает работу более комфортной и эффективной. Продукт прошел сертификацию 1С-Совместимо

96000 руб.

11.06.2015    57725    36    20    

45

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    108275    315    173    

327

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

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

6000 руб.

09.08.2017    152712    912    372    

554

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

229

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

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

60000 руб.

19.12.2022    12579    35    20    

21
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 5911 17.04.23 13:03 Сейчас в теме
(2) Спасибо. Пригодилось удаление)
Мне кажется любые подобные статьи по Диадок облегчают разработчику жизнь.
4. charushkin 109 17.04.23 15:51 Сейчас в теме
(3) рад, что смог помочь. А о чём ещё хотелось бы узнать? Задавай вопросы, попробую дать развернутые ответы
user712426; +1 Ответить
5. John_d 5911 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 5911 11.05.23 13:45 Сейчас в теме
(6) Спасибо. Так и сделал.
7. John_d 5911 11.05.23 13:25 Сейчас в теме
(4) Что будет если к документу реализация уже привязан один пакет, а я хочу еще один пакета привязать
Можно так делать? Потом это учтется при отправки в Диадок в доп.свойствах?
ОсновнойМодуль.ЭДО_Служебные_ДобавитьСтрокуВТаблицуЗначений(ТЗ, "ID_СФ", "СФ" , "ID_СФ", "РеализацияТоваровУслуг", "РеализацияТоваровУслуг");
ОсновнойМодуль.ЭДО_Служебные_ДобавитьСтрокуВТаблицуЗначений(ТЗ, "ID_АктПП", "АктПП" , "ID_АктПП", "РеализацияТоваровУслуг", "РеализацияТоваровУслуг");
9. John_d 5911 24.05.23 14:03 Сейчас в теме
(4) Добры день! Как можно через подключаемый модуль указать промежуточного получателя?
10. charushkin 109 08.06.23 10:58 Сейчас в теме
(9) Привет!
Промежуточного получателя можно указать в событии ПослеПодготовкиПакета.
Пример есть в официальной инструкции Дополнительная обработка исходящих пакетов
11. John_d 5911 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 84 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с очищен), но не отправляется, пишет: "Этот пакет уже был отправлен ранее".
Как программно заставить повторно отправить этот же документ не снимая галочку "контроль дублирования пакетов на отправку"?
23. Wi5hMaCTeP 5 18.12.24 15:27 Сейчас в теме
Всем привет!
А кто-нибудь делал программную подготовку и отправку на подпись прям из формы документа?
Желательно не напрямую через API Диадок, а через методы обработки.
Спасибо!
Оставьте свое сообщение