Выгрузка акта для ЭДО
Когда я купил себе немного ЭДО от Астрал, обнаружил, что файлы из 1С не так-то просто выгрузить. Если это не 1С:ЭДО, то задача не решается без «костылей». Это разве честная конкуренция?
Ну да ладно. Нашел один из таких костылей на Инфостарте. Скачал обработку — работает. Комментарии, правда, запрещены. Причем, можно выгружать сразу несколько документов — это внешняя печатная форма.
Плохо, конечно, что выгружает в архивы, приходится распаковывать. Ну да ладно.
Но счастье было недолгим. Перестало выгружать.
Оказалось, 1С поменяло логику процедуры ВыгрузитьДанныеВФайл. Если раньше параметр ПараметрыВыполненияКоманды был не обязательным, то теперь там должна быть структура:
Поправил, заработало.
У меня был месяц бесплатной отправки любого количества документов. Я собрался и выгрузил большой пакет актов:
Но он не загрузился в Астрал:
Как вам такой уровень диагностики ошибок? Стыдно, Астрал!
Попробовал проверить файл на Контур-Диадок, он не смог переварить этот файл:
Я написал в поддержку, но пока они неспешно отвечали, подумал, может проблема только у ИП и попробовал выгрузить акт с ООО. И тут меня ждали незабываемые «приключения».
Дело оказалось в том, что у договора не стоял акт, но 1С никак не извещало об ошибках — даже в журнал регистрации не пишет. Ошибку я нашел только отладчиком.
Увы, акт по ООО тоже не подгрузился.
Тогда я проверил сформированные ранее из 1С файлы. Они благополучно загружались в ЭДО Астрал. Тогда я подумал, что проблема может быть в ошибке текущего релиза 1С и решил обновить 1С до текущего релиза:
Но тут меня ждали очередные «пляски на граблях». 1С поменяла название модуля выгрузки в ЭДО.
Я нашел, исправил:
ИнтерфейсДокументовЭДОКлиент.ВыгрузитьДанныеВФайл(ОбъектыНазначенияМассив, ПараметрыВыполненияКоманды);
Но документ опять не выгружался, причем тот, который ранее выгружался. Я подумал, что документ опять не проходит валидацию и начал отладчиком искать, в чем причина.
Оказалось, что в реквизите документа «Вид электронного документа» сохраняется вид документа ЭДО:
А так как 1С в очередной раз поменяла типы документов, то этот тип уже не поддерживается.
Посмотрел логику выгрузки:
Доработал обработку выгрузки, чтобы она очищала этот реквизит перед выгрузкой в ЭДО:
ОчиститьВидЭлектронногоДокументаПоМассивуДокументов(ОбъектыНазначенияМассив);
ИнтерфейсДокументовЭДОКлиент.ВыгрузитьДанныеВФайл(ОбъектыНазначенияМассив, ПараметрыВыполненияКоманды);
&НаСервереБезКонтекста
Процедура ОчиститьВидЭлектронногоДокументаПоМассивуДокументов(ОбъектыНазначенияМассив)
Для Каждого Источник ИЗ ОбъектыНазначенияМассив Цикл
ОчиститьВидЭлектронногоДокумента(Источник);
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ОчиститьВидЭлектронногоДокумента(Источник)
УстановитьПривилегированныйРежим(истина);
ДО = Источник.ПолучитьОбъект();
ДО.ОбменДанными.Загрузка = истина;
ДО.ВидЭлектронногоДокумента = Неопределено;
ДО.Записать(РежимЗаписиДокумента.Запись);
УстановитьПривилегированныйРежим(ложь);
КонецПроцедуры
Всё заработало!
А тут пришел и ответ от Астрала:
Проверил файл на flk.keydisk.ru, формат оказался правильным:
И как мне оценивать этот ответ? Только так:
В общем, я написал в поддержку, что файл прошел проверку. Теперь жду от них ответа.
Как видите, ЭДО в 1С не через 1С:ЭДО — это то ещё извращение!
В общем, иногда мне кажется, что сходить на почту и отправить оригиналы в конверте намного проще!
Объем факт: 1 час. Среда: БП3 3.0.93.20.
+1800, уже не плохо )