Развитие информационных технологий, отказ от бумаги, внедрение системы сплошной маркировки товаров, распространение пандемии коронавируса и другие факторы стремительно расширяют сферы бизнеса, где требуется использовать электронный документооборот (ЭДО).
В типовых решениях 1С можно отправить универсальный передаточный документ (УПД) через ЭДО прямо из документа РеализацияТоваровУслуг. В тех случаях, когда база 1С не подключена к ЭДО, можно воспользоваться этой обработкой, которая сформирует XML-файл для отправки через сторонних операторов ЭДО. В основе лежит процедура ПодготовитьДанныеДляЗаполненияДокументов типовой обработки ОбменСКонтрагентами.
Проверялось на платформе 8.3.15.1830 и конфигурации Бухгалтерия предприятия 3.0.80.40. Также проходит аудит при загрузке в 1С:ФРЕШ.
Код модуля формы обработки ниже.
&НаСервере
Функция СформироватьЭлектронныйДокументНаСервере()
// Получение файла электронного документа
МассивСсылокНаОбъект = Новый Массив;
МассивСсылокНаОбъект.Добавить(Документ);
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("МассивСсылокНаОбъект", МассивСсылокНаОбъект);
ПараметрыЗадания.Вставить("ОтправкаЧерезБС", Ложь);
АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
Обработки.ОбменСКонтрагентами.ПодготовитьДанныеДляЗаполненияДокументов(ПараметрыЗадания, АдресХранилища);
ТаблицаЭД = ПолучитьИзВременногоХранилища(АдресХранилища);
// Подготовка структуры параметров для отображения и отправки
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("АдресХранилища", ПоместитьВоВременноеХранилище(ТаблицаЭД[0].ДвоичныеДанныеПакета, УникальныйИдентификатор));
СтруктураПараметров.Вставить("ФайлАрхива", Истина);
СтруктураПараметров.Вставить("НаименованиеФайла", ТаблицаЭД[0].НаименованиеФайла);
СтруктураПараметров.Вставить("НаправлениеЭД", ТаблицаЭД[0].НаправлениеЭД);
СтруктураПараметров.Вставить("Контрагент", ТаблицаЭД[0].Контрагент);
СтруктураПараметров.Вставить("УникальныйИдентификатор", ТаблицаЭД[0].УникальныйИдентификатор);
СтруктураПараметров.Вставить("ВладелецЭД", ТаблицаЭД[0].ВладелецЭД);
МассивСтруктур = Новый Массив;
МассивСтруктур.Добавить(СтруктураПараметров);
АдресМассива = ПоместитьВоВременноеХранилище(МассивСтруктур, Неопределено);
Возврат АдресМассива;
КонецФункции
&НаКлиенте
Процедура СформироватьЭлектронныйДокумент(Команда)
Если Документ.Пустая() Тогда
Возврат;
КонецЕсли;
АдресМассива = СформироватьЭлектронныйДокументНаСервере();
Элементы.ПоказатьЭлектронныйДокумент.Доступность = Истина;
Элементы.СохранитьЭлектронныйДокумент.Доступность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьЭлектронныйДокумент(Команда)
МассивСтруктур = ПолучитьИзВременногоХранилища(АдресМассива);
ФормаПросмотраЭД = ОткрытьФорму("Обработка.ОбменСКонтрагентами.Форма.СписокВыгружаемыхЭлектронныхДокументов", Новый Структура("СтруктураЭД", МассивСтруктур), ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура СохранитьЭлектронныйДокумент(Команда)
МассивСтруктур = ПолучитьИзВременногоХранилища(АдресМассива);
Режим = РежимДиалогаВыбораФайла.Сохранение;
ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогСохраненияФайла.ПолноеИмяФайла = СтрЗаменить(Документ, ":", "");
Фильтр = "Текст(*.zip)|*.zip";
ДиалогСохраненияФайла.Фильтр = Фильтр;
ДиалогСохраненияФайла.МножественныйВыбор = Ложь;
ДиалогСохраненияФайла.Заголовок = "Выберите файл";
Если ДиалогСохраненияФайла.Выбрать() Тогда
ПутьКФайлу = ДиалогСохраненияФайла.ПолноеИмяФайла;
ДвоичныеДанные = ПолучитьИзВременногоХранилища(МассивСтруктур[0].АдресХранилища);
ДвоичныеДанные.Записать(ПутьКФайлу);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДокументПриИзменении(Элемент)
Элементы.ПоказатьЭлектронныйДокумент.Доступность = Ложь;
Элементы.СохранитьЭлектронныйДокумент.Доступность = Ложь;
КонецПроцедуры
Готовое решение
Выгрузка УПД в формате XML для Диадок, Сайнердокс и др.
Данные обработки позволяют выгружать документ УПД в формате xml. (В ФАЙЛ) для обменников типа ДИАДОК, САЙНЕРДОКС и др. в 1С: УТ, БП, КА версии ПРОФ и БАЗОВЫЕ