Порядок включения и использования внутреннего электронного документооборота в решениях фирмы 1С описан на сайте ИТС: https://its.1c.ru/db/edohandbook/content/64/hdoc
Состав документов участвующих в внутреннем ЭДО достаточно обширен, но все равно ограничен. Данная статья расскажет, как расширить этот состав. Итак, необходимо выполнить следующие шаги:
- Добавляем в расширение форму документа и форму списка документа "ЭтапПроизводства2_2"
- Добавляем в расширение определяемый тип "ОснованияЭлектронныхДокументовЭДО" (стало возможно с режима совместимости 8.3.20). Меняем Тип, добавляя "ДокументСсылка.ЭтапПроизводства2_2". В расширении для определяемого типа мы видим только новые для этого типа объекты.
- Далее берем за основу какой-либо документ, уже включенный в внутренний ЭДО, например документ "ВнутреннееПотребление" и копируем из формы документа все что отмечено комментарием:
// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
Предварительно, конечно, добавляем в расширение необходимые процедуры и функции с директивой "После". Итого получится шесть процедур и функций:
"ПриСозданииНаСервереПосле", "ПриОткрытииПосле", "ПриЧтенииНаСервереПосле", "ПослеЗаписиПосле", "ПослеЗаписиНаСервереПосле", "ОбработкаОповещенияПосле".
А также копируем три процедуры в чистом виде:
"ДекорацияЭДОНажатие",
"Подключаемый_ВыполнитьКомандуЭДО",
"Подключаемый_ОбработчикОжиданияЭДО"
-
Добавляем на форму документа подменю "ПодменюЭДО", группу "ГруппаСостояниеЭДО" и поле надписи "ДекорацияСостояниеЭДО", связанное с реквизитом "СостояниеЭДО" (реквизит предварительно добавить с типом Строка (неогр.)). Все эти доп.поля можно скопировать также из документа "ВнутреннееПотребление". В прилагаемом расширении я добавил все эти поля программно в процедуре "ПриЧтенииНаСервереПосле".
- То же самое проделываем с формой списка. Переносим все, что отмечено комментарием:
// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
- В форму списка также необходимо добавить подменю "ПодменюЭДО". И, самое сложное, необходимо отредактировать запрос для динамического списка. Если посмотреть настройку списка документа "ВнутреннееПотребление", то можно увидеть левое соединение с регистром сведений "СостоянияПоОбъектамУчетаЭДО" из которого берутся два поля "СостояниеЭДО" и "ПредставлениеСостояния". Это также можно решить программно. В процедуре "ПриСозданииПосле" я добавил следующий код:
Список.ТекстЗапроса = Список.ТекстЗапроса + " |ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СостоянияЭД.СсылкаНаОбъект, | СостоянияЭД.СостояниеЭДО, | СостоянияЭД.ПредставлениеСостояния |ИЗ | РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД) КАК ВложенныйЗапрос | ПО (ВложенныйЗапрос.СсылкаНаОбъект = ДокументЭтапПроизводства2_2.Ссылка)"; элПоле = Элементы.Добавить("ПредставлениеСостояния", Тип("ПолеФормы"), Элементы.Список); элПоле.ПутьКДанным = "Список.ПредставлениеСостояния"; элПоле.Вид = ВидПоляФормы.ПолеНадписи; элПоле.Заголовок = "Состояние ЭДО";
- Из общего модуля "ОбменСКонтрагентамиУТ" добавляем в расширение процедуры ПодготовитьСтруктуруОбъектовКомандЭДО и ЗаполнитьПараметрыЭДПоИсточнику:
&После("ПодготовитьСтруктуруОбъектовКомандЭДО") Процедура вэдоп_ПодготовитьСтруктуруОбъектовКомандЭДО(СоставКомандЭДО) СоставКомандЭДО.Внутренние.Добавить("Документ.ЭтапПроизводства2_2"); КонецПроцедуры &После("ЗаполнитьПараметрыЭДПоИсточнику") Процедура вэдоп_ЗаполнитьПараметрыЭДПоИсточнику(Источник, ПараметрыЭлектронногоДокумента) ТипИсточника = ТипЗнч(Источник); Если ТипИсточника = Тип("ДокументСсылка.ЭтапПроизводства2_2") ИЛИ ТипИсточника = Тип("ДокументОбъект.ЭтапПроизводства2_2") Тогда ТипыДокументов = ОбменСКонтрагентами.ТипыДокументов(); НаправленияДокументов = ОбменСКонтрагентами.НаправленияДокументов(); ЭтоСсылка = ОбщегоНазначения.ЭтоСсылка(ТипИсточника); СтрокаПараметров = ПараметрыЭлектронногоДокумента[ПараметрыЭлектронногоДокумента.Количество()-1]; Реквизиты = "Организация"; Если ЭтоСсылка Тогда ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Источник, Реквизиты); Иначе ЗначенияРеквизитов = Новый Структура(Реквизиты); ЗаполнитьЗначенияСвойств(ЗначенияРеквизитов, Источник); КонецЕсли; СтрокаПараметров.Тип = ТипыДокументов.Внутренний; СтрокаПараметров.Направление = НаправленияДокументов.Внутренний; СтрокаПараметров.Организация = ЗначенияРеквизитов.Организация; КонецЕсли; КонецПроцедуры
- И последнее. Добавить три подписки для нашего документа: КонтрольОтраженияВУчетеЭДОПриЗаписиУчетногоДокумента, ПередЗаписьюДокументаОбъектаУчетаЭДО и ПриЗаписиДокументаОбъектаУчетаЭДО. Это аналоги подписок из расширяемой конфигурации. Можно скопировать наименование и вызов обработчика или добавить в расширение саму подписку, кому как удобно.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.16.74, 2.5.14.59