Как подготовить пакет документов для отправки

Модуль умеет отправлять документы контрагентам. По одной сделке часто требуется отправить не один документ, а минимум два.

Поэтому документы объединяются в пакет, который может включать несколько документов доступных типов.

Пакеты и документы связаны между собой через идентификаторы документа. Объем и количество документов в пакете ограничивается возможностями сервиса Диадок:

  • Размер пакета — до 30 документов.

  • Размер одного файла в пакете — до 5 мб.

  • Объем пакета — до 45 мб.

Предварительно следует назвать пакет, определить состав и логику сбора документов. Каждый этап подготовки описывается в событии подключаемого модуля.

Определение пакетов на отправку

Документы, которые будут отправлены вместе, отображаются в списке для отправки в одну строку.

Описание пакета берется из события подключаемого модуля ПолучитьТаблицуИспользуемыхПакетов.

Для удобства работы с подключаемым модулем описание поставляемых пакетов и электронных документов представлено в форме таблиц значений.

Содержание таблицы:

  • ID — идентификатор пакета.

  • Наименование — представление добавляемого пакета в интерфейсе модуля.

  • СоставПакета — перечисление идентификаторов видов документов, которые будут добавляться в пакет. Указываются значения из колонки «ID» таблицы используемых видов документов.

  • КатегорияПакета — идентификатор категории пакета.

  • НаименованиеКатегории — представление категории пакета(ов).

  • Шаблон — признак, определяющий что текущий пакет будет использоваться как шаблон.

../_images/Tablitsa-ispolzuemykh-paketov.png

На выходе получаем таблицу, которая определяет:

  • название пакета для пользователя;

  • название категории, к которой относится пакет (необязательное к заполнению);

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

В интерфейсе модуля таблица используемых пакетов представлена следующим образом:

../_images/Interfeys-tablitsa-ispolzuemykh-paketov.png
  • 1 — категория,

  • 2 — пакет,

  • 3 — состав пакета.

Категория пакета — группа видов пакетов, из которых формируется только один. Например УПД или СФ+ТОРГ. Это разрешает включать или отключать вид пакета на отправку в настройках организации или контрагента.

Состав пакета нужен для отображения списка документов в настройках документов организации или контрагента. Для этих документов можно:

  • изменять формат формализованного, если предусмотрено в модуле;

  • изменять на свою печатную форму в пользовательском режиме;

  • добавлять внешнюю печатную форму, которая может формироваться на основании документа-основания 1С.

Хранение:

  • на объектах Диадока в справочнике «Диадок: Дополнительные справочники» (Имя справочника = «ВидыПакетов»);

  • в типовом регистре дополнительных сведений таблица сохраняется в кэше сеанса по данным из подключаемого модуля.

Пример заполнения:

../_images/Kod-vidy-paketov.png

Форматы документов

При формировании документа важно знать какие передавать сведения, учитывать ограничения ФНС и др.

Для объединения похожих по структуре документов используются такие характеристики: тип контента, функция и тип документа API.

Определение комбинаций этих характеристик («видов документов»), которые будут использованы в пакетах на отправку, происходит в функции ПолучитьТаблицуИспользуемыхВидовДокументов

Содержание таблицы:

  • ID — идентификатор вида документа. Указывается в колонке «СоставПакета» таблицы используемых видов пакетов для связи с пакетом.

  • Наименование — представление электронного документа в интерфейсе модуля.

  • ТипДокументаAPI — тип электронного документа, который будет добавлен в пакет.

  • ТипКонтентаAPI — тип контента текущего электронного документа. Значение по умолчанию — пустая строка. Смотри описание ниже.

  • ФункцияДокументаAPI — свойство электронного документа, конкретизирующее одно из возможных содержаний документа. Значение по умолчанию — пустая строка. Смотри описание ниже.

  • БазовыйВидДокумента — идентификатор вида документа, от которого зависит текущий документ.

../_images/Tablitsa-vidov-dokumentov.png

В интерфейсе модуля таблица используемых документов представлена следующим образом:

../_images/Interfeys-tablitsa-vidov-dokumentov.png

1 — электронный документ из пакета.

Хранение:

  • СХ1: в справочнике «Диадок: Дополнительные справочники» (Имя справочника = «ВидыПакетов»).

  • СХ2: в типовом регистре дополнительных сведений.

Типы и версии документов

Типы документов, доступные для использования в ящике, определяются конечным перечнем типов в сервисе Диадок и настройками ящика. В каждом ящике сервиса подключены только некоторые типы документов из всего перечня. Типы документов для ящика подключаются вручную. Получение описания для доступных в ящике типов реализовано в методе GetDocumentTypes.

Каждый существующий тип электронного документа представлен одной или несколькими версиями.

Примеры версий для документа Акт МХ-3 с типом документа «ReturnInventoryAcceptanceCertificate»:

  • utd970_05_03_01.01

  • utd820_05_01_02_hyphen.01

  • utd820_05_01_01_hyphen.01

  • utd_05_02_01.01

  • utd820_05_01_01.01

  • utd_05_01_05.01

  • utd970_05_02_01.01

  • utd_05_01_02.01

Тип контента и функции

Тип контента электронного документа — это отдельная сущность в модуле Диадок УМ. Иногда она называется базовым форматом или «FormatVersion». По сути, это префикс версии до символа «_». Например, для универсального передаточного документа тип контента может быть «utd970» или «utd820». Исключение — версия «v1». Чтобы использовать её, укажите пустую строку.

У каждого вида документа может быть несколько типов контента. Значение типа контента API указывайте для определения версии, которая будет использоваться. По умолчанию, используется последняя актуальная версия документа указанного базового типа. Однако, в подключаемом модуле вы можете указать иную доступную версию.

Функция электронного документа определяет вариант наполнения этого документа. Каждый документ может иметь одну или несколько функций, которые описывают его назначение. Например, универсальный передаточный документ может использоваться в следующих вариантах:

  • только как счёт-фактура – значение функции «СЧФ»,

  • только как первичный документ – значение «ДОП»,

  • как первичный документ и счёт-фактура одновременно – значение «СЧФДОП».

Неформализованный документ может содержать только один вариант наполнения – значение функции «default».

Конкретный вариант наполнения определяется указанным значением функции. Исключение – функция с именем «default», для которой указывайте пустую строку.

Для каждой функции доступен свой набор версий контента. Узнать доступные функции документа вы сможете из его описания, которое возвращается в ответе метода GetDocumentTypes:

../_images/GetDocumentTypes.png

Зависимые документы

В некоторых случаях электронный документ может быть создан только как продолжение ранее созданного. Например, исправительный УПД – UniversalTransferDocumentRevision создается только на основании существующего УПД – UniversalTransferDocument.

Чтобы зафиксировать такую зависимость, в описании вида документа указывается базовый вид документа. Идентификатор базового вида документа указывает на другой вид, который является основанием текущего.

В интерфейсе настроек модуля зависимый документ не отображается отдельно. Для него автоматически применяются все настройки базового вида.

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

Примеры для определения форматов

  • формализованный УПД;

  • формализованный иУПД, формат которого зависит от УПД;

  • полуформализованный Счет на оплату.

Для этого используйте такой код:

../_images/Kod-vidy-documentov.png

Заполнение списка пакетов на отправку

Построение запроса для заполнения списка пакетов на отправку происходит в функции ПолучитьТекстЗапросаДляСпискаПакетовНаОтправкуПоМассивуВидовПакетов.

Логика заполнения пакета предусматривает наличие одного главного документа, без которого отправлять контрагенту остальные не имеет смысла.

Сколько таких документов будет выбрано в запросе, столько пакетов и будет сформировано на отправку.

Пример выбора счетов-фактур из 1С для формирования вида пакета «УПД»:

../_images/Kod-na-otpravku.png

Состав пакетов

Наполнение документами происходит в функции ПодготовитьПакет.

В качестве параметров передаются:

  • структура пакета, в который добавляется документ;

  • ссылка на документ 1С, по сведениям которого будет сформирован электронный документ;

  • внутренний идентификатор вида документов, в формате которого будет сформирован электронный документ;

  • дополнительный параметр, который будет передан в функцию по формированию электронного документа (необязательный).

Пользователю видны подготовленные документы в форме пакета на отправку.

Пример определения состава пакетов:

../_images/Kod-podgotovka-paketov.png

Формирование электронного документа

Электронный документ состоит из метаданных и контента, заполнение которых происходит в функции ПодготовитьЭлектронныйДокумент.

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

Формализованные документы

Сбор контента для формализованных документов проще всего сделать с помощью метода основного модуля «ТиповойМодуль_ПолучитьКонтент».

В параметрах передается ссылка на документ 1С и тип контента, который надо собрать. Если это УПД или УКД, то в дополнительных параметрах стоит указать функцию.

Полученную структуру переводим в объект XDTO с помощью метода основного модуля ЗаполнитьКонтентXDTOПоСтруктуре.

Пример типового сбора контента для документов типа «УПД»:

../_images/Kod-podgotovka-documenta.png

Если документ 1С доработан или сбор контента для его типа не определен в модуле, то можно воспользоваться шаблоном кода.

В настройке модуля на закладке «Подключаемый модуль» при нажатии на кнопку «Генерировать пример подключаемого модуля» откроется вспомогательная форма.

В этой форме надо отметить галочкой нужный формат документа и нажать «Сгенерировать шаблон кода ПМ».

Определение значений полей в формате приказа №820 есть в документации.

Пример заполнения контента продавца в формате приказа №820 (Utd820SellerContent):

../_images/Kod-UPD820.png

Неформализованные документы

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

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

Получить двоичные данные файла можно несколькими способами:

  • с помощью метода основного модуля «ТиповойМодуль_СформироватьПечатнуюФорму» для типовых печатных форм документов «Счет на оплату» и «Акта сверки»;

../_images/Kod-poluformalizovannyy.png
  • с помощью метода «СформироватьВнешнююПечатнуюФорму» для внешних печатных форм;

../_images/Kod-VPF.png
  • стандартными функциями из объектов 1С, например «ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла».

Отправка пакета-шаблона

Пакет-шаблон — это сообщение с шаблонами, на основании которых можно создать юридически значимые документы.

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

ТЗ  = Новый ТаблицаЗначений;
ОсновнойМодуль.ЭДО_Служебные_ДобавитьКолонкиВТаблицуЗначений(ТЗ, "ID, Наименование, Шаблон");
ОсновнойМодуль.ЭДО_Служебные_ДобавитьСтрокуВТаблицуЗначений(ТЗ, "ID_Шаблоны_КС2_КС3", "Шаблоны КС2, КС3", Истина);
Если ВидПакетаРазвернутый.ID = "ID_Шаблоны_КС2_КС3" Тогда

  // Документы должен подготовить получатель шаблона
  Пакет.ПараметрыШаблона.MessageFromBoxId = Пакет.ДанныеДД.CounterAgentId;
  Пакет.ПараметрыШаблона.MessageToBoxId         = Пакет.ДанныеДД.OrganizationId;

  // Документы должны быть отправлены все вместе в одном сообщении,
  // подписать или отклонить документы можно разными сообщениями
  Пакет.ПараметрыШаблона.LockMode = "Send";

КонецЕсли
  • Если поля документа созданного на основании шаблона требуется дозаполнить, то необходимо указать соотвествующий идентификатор настройки редактирования ПараметрыШаблона.EditingSettingId в функции ПодготовитьЭлектронныйДокумент.

Если ВидДокументаРазвернутый.ID = "ID_Шаблон_УПД_БезДатыНомера" Тогда
  Результат.ПараметрыШаблона.EditingSettingId = "ab30afed-e04f-4309-9b15-51a77f55e183";
КонецЕсли;

Если идентификатор настройки редактирования заполнен, то модуль не будет выполнять валидацию контента шаблона.

Отправка дополнительной печатной формы

В настройках организации или контрагента можно к виду документа привязать отправку дополнительных печатных форм. Для этого кликните на «Организации» или «Ваши контрагенты».

../_images/Dobavlenie-pechatki_1.png

Щелкните два раза на подходящую организацию или контрагента.

../_images/Dobavlenie-pechatki_2.png

В открывшемся окне перейдите на «Настройки документов». Выберите документ, который хотите отредактировать.

../_images/Dobavlenie-pechatki_3.png

В открывшемся окне нажмите «Добавить».

../_images/Dobavlenie-pechatki_4.png

Выберите нужную печатную форму и сохраните все настройки.

../_images/Dobavlenie-pechatki_5.PNG

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

Влиять на формирование такого документа можно в событии ПодготовитьЭлектронныйДокументПоВнешнейПечатнойФорме. Например, можно переопределить документ, на основании которого формируется печатная форма.

Пример подготовки печатной формы:

../_images/Kod-dop-pechatki.png

Заполнение реквизитов документов в списке на отправку

В списке документов на отправку возможно два режима просмотра:

  • по пакетам,

  • развернуто по документам пакета.

Режим просмотра регулируется настройкой модуля Расширенные настройки → Документы → Показывать содержимое пакета на отправку.

../_images/Spisok-razvernutyy.png

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

Пример заполнения полей:

../_images/Kod-zapolneniya-rekvizitov.png