Всем привет! Пришлось заняться доработкой очередного творения компании Контур Диадок электронный документооборот для конфигурации Бухгалтерия предприятия, редакция 3.0 (3.0.144.49).
Для запуска ее необходимо зайти через меню Файл - Открыть
Конфигурация у моего клиента закрыта для редактирования, все доработки находятся в расширении, туда же я вставил обработку КонтурЭдо.
Теперь ее можно запустить из Покупки или Продажи - Сервис - Контур.ДиаДок
А всё началось с того, что мой клиент Кабельный завод и поставляет свою продукцию интернет магазину Всеинструменты. Завод производит и продает всем остальным своим покупателям продукцию в километрах, в разрезе бухт и барабанов.
А Всеинструменты требуют счет на оплату и реализацию оформлять не в километрах, а штуках бухт. В расширении для конфигурации Бухгалтерия предприятия, редакция 3.0 в документы Счет на оплату покупателей и Реализации товаров услуг был добавлен реквизит километраж, по которому производится списание кабельной продукции со склада по 43 счету. Печатные формы выводят количество и цену в штуках. По остальным покупателям осталось по старому.
Начал доработку Диадок со счета на оплату. Счета передаются по Диадок в виде печатной формы счета в формате pdf.
Необходимо было доработать печатную форму счета формируемую Диадок. Тут то и начинается наркомания в разработке Диадок. Открываем обработку КонтурЭдо, далее открываем форму ФормаПакетаУправляемая. Да данная обработка содержит обычные и управляемые формы.
В открытой форме находим команду ПросмотретьВДругойПрограмме и переходим в модуль команды.
В команде выполняется обработчик открытия внешней обработки. А самое интересное то, что дополнительные внешние обработки находятся в макетах основной обработки КонтурЭдо в виде двоичных данных.
В нашем случае открываем макет ТиповойМодульДиадокУФ_epf и сохраняем как внешнюю обработку ТиповойМодульДиадокУФ_epf.epf Для чего необходимо сохранять по имени макета, а для того, чтобы после внесения изменения в сохраненную обработку загрузить ее обратно в макет. Банально чтобы не перепутать. Да обработка выгружается каждый раз из макета и запускается при ее выполнении.
Открываем сохраненную обработку ТиповойМодульДиадокУФ_epf.epf А вот вопрос к разработчикам Контур, зачем макет называть ТиповойМодульДиадокУФ_epf, а в обработке имя КонтурДиадокСтандартУФ. Зачем нас программистов 1С вводить в заблуждение.
Далее нам необходима внешняя обработка Модуль_ИнтеграцияБП30.epf. Выгружаем её из одноименного макета Модуль_ИнтеграцияБП30. Открываем сохраненную обработку.
Открываем модуль объекта и находим процедуру ЗаполнитьТабличнуюЧастьПечатнойФормыСчетаНаОплату(
Добавил перед процедурой свою процедуру ЕстьОбменIDE(
Так как у моего клиента проблемы только с одним покупателем, то выделил его по ИНН. В процедуру печати счета на оплату попадает сведения по покупателю в виде наименования, ИНН и КПП, адреса. В случае, если печатная форма счета формируется по Всеинструменты, то происходит в таблице товары подмена единицы измерения с км на шт.
В случае, если появится ещё новый капризный покупатель, то доработаю данный модуль. Сохраняя обработку Модуль_ИнтеграцияБП.epf и в обработке ТиповойМодульДиадокУФ_epf.epf подгружаю Модуль_ИнтеграцияБП.epf в макет Модуль_ИнтеграцияБП. Также сохраняем обработку ТиповойМодульДиадокУФ_epf.epf и её соответственно подгружаю макет в обработку КонтурЭдо в макет ТиповойМодульДиадокУФ_epf. Это писец товарищи. Получаем в итого то, что нам нужно
Теперь осталось доработать документ реализации.
В начале доработаем печатную форму УПД. Заходим в обработку КонтурЭдо в макетах сохраняем макет ПечатныеФормы_epf в обработку ПечатныеФормы_epf.epf. Открываем сохраненную обработку. Переходим в модуль объекта.
Находим процедуру ПФ_УПД_820_СтрокиТаблицы(.
Здесь также добавил перед процедурой свою процедуру ЕстьОбменIDE(. Внес строчки кода по выделению ИНН покупателя. Внес также в случае обмена IDE (подразумевается обмен с Всеинструментами) подмену единицы измерения.
Сохраняем обработку ПечатныеФормы_epf.epf и загружаем её в макет ПечатныеФормы_epf обработки КонтурЭдо. В моем случае сохраняем изменения в расширение в которое добавлена обработка КонтурЭдо. Кроме печатной формы УПД передается реализация покупателю в виде XML файла формата 5.01. Необходимо в процедуру выгрузки файла XML внести наши доработки.
В обработке КонтурЭдо из макета ГенерацияXML_epf сохраняем обработку ГенерацияXML_epf.epf. Открываем модуль объекта. Добавляем переменную кз_ИНН. Находим вначале процедуру XML_УПД_820_ЗаполнитьСведенияСФ( и в неё добавляем заполнение нашей переменной кз_ИНН.
Находим процедуру XML_УПД_820_ЗаполнитьСтрокуТабЧасти(. Перед ней также добавил свою процедуру ЕстьОбменIDE(. В случае если есть обмен IDE добавил подмену единицы измерения.
Тоже самое сделал в процедуре XML_УПД_820_ЗаполнитьДопСведТов(
Сохраняем обработку ГенерацияXML_epf.epf и загружаем её в макет ГенерацияXML_epf обработки КонтурЭдо. Формируем файл для покупателя Всеинструменты и получаем
По всем остальным покупателям печатные формы и файлы XML формируются стандартно без изменений. С такой компоновкой модулей столкнулся впервые. Целых два дня потратил на поиски необходимых модулей и процедур. Наркомания в разработке 1С.