gifts2017

Как быстро вынести типовую печатную форму из конфигурации во внешнюю печатную форму

Опубликовал Илья Кутузов (Kutuzov) в раздел Программирование - Практика программирования

Как быстро и с минимальными изменениями встроенную печатную форму (например, ТОРГ-12) вынести во внешнюю печатную форму и выполнить требуемые доработки?

Иногда требуется модифицировать встроенные печатные формы. Один из вариантов - выносить их во внешние печатные формы (чтобы конфигурацию не сильно портить). Но сталкиваемся с проблемой: хотя в типовой конфигурации логически выделяется в виде функции печать каждой печатной формы, но идет непосредственно обращение к реквизитам документа. А во внешней печатной форме этих реквизитов нет, есть только ссылка на объект. Приходится менять код формирования печатной формы не только там, где это нужно нам, но и везде. Плюс это вызовет проблему при возможном обновлении этого участка кода у поставщика конфигурации - придется или вникать в изменения после обновления, или заново вносить все наши изменения.

Как вариант решения этой проблемы - завести во внешней обработке, содержащей печатную форму, переменные, аналогичные реквизитам и табличным частям документа. А чтобы не уподобляться мастерам китайского кода, и не писать вещи, такие как: Реквизит1 = Док.Реквизит1 и т.д., можно воспользовать хорошей функцией ЗаполнитьЗначенияСвойств. Только переменные в обработке нужно объявлять экспортными. Вот пример кода модуля для внешней печатной формы заказа на производство (текст модуля ПечатьЗаказа() убран из соображений краткости).

Перем мВалютаРегламентированногоУчета Экспорт;

Перем
//реквизиты док-та
ВремяНапоминания Экспорт,
ДатаИсполнения Экспорт,
Комментарий Экспорт,
НапомнитьОСобытии Экспорт,
Организация Экспорт,
Ответственный Экспорт,
Подразделение Экспорт,
Исполнитель Экспорт,
ОсновнойЗаказНаПроизводство Экспорт,
ДатаЗапуска Экспорт;

Перем
Номер Экспорт, Дата Экспорт, Проведен Экспорт, Ссылка Экспорт;

Перем
//табличные части док-та
Продукция Экспорт,
ПараметрыВыпускаПродукции Экспорт,
Материалы Экспорт;

Процедура
ЗаполнитьЗначенияРеквизитовИзДокумента()

   
ЗаполнитьЗначенияСвойств(ЭтотОбъект, СсылкаНаОбъект);

КонецПроцедуры

Функция
ПечатьЗаказа()


КонецФункции
// ПечатьЗаказа()

Функция Печать() Экспорт

    Если Не
УправлениеДопПравамиПользователей.РазрешитьПечатьНепроведенныхДокументов(СсылкаНаОбъект.Проведен) Тогда
       
Предупреждение("Недостаточно полномочий для печати непроведенного документа!");
        Возврат Неопределено;
    КонецЕсли;

   
ТабДокумент = ПечатьЗаказа();

    Возврат
ТабДокумент;

КонецФункции

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

Еще вот челвек предложил алгоритм для автоматического формирования списка экспортных переменных из реквизитов документа: http://infostart.ru/public/116567/

Скачать файлы

Наименование Файл Версия Размер
Заказ на производство.epf 88
.epf 12,15Kb
20.02.12
88
.epf 12,15Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Игорь Гладкий (smooth) 17.12.11 11:19
А почему бы не воспользоваться вариантом:
http://infostart.ru/public/66588/
?
И переменные переносить не надо! Форма обработки, в этом случае, сама думает, что она документ, со всеми вытекающими от сюда возможностями...
Конечно как вариант...
Anything; ir_en; sound; artbear; +4 Ответить 3
2. Алексей Ермилов (Alex_E) 17.12.11 11:49
Сам давно пользуюсь этим способом, а вот заполнить переменные функцией не догадался. Спасибо за подсказку!
3. Илья Кутузов (Kutuzov) 17.12.11 14:57
(1) smooth, спасибо за ссылку, там даже более универсальный вариант получается.
4. Модератор раздела Артур Аюханов (artbear) 19.12.11 18:45
(0) Давно известный баян, (1) намного функциональнее и проще.
5. evgen1977 (musatov1c.ru) 21.12.11 08:38
Спасибо автору за поднятую тему. И спасибо прокомментировавшим. Проблема регулярная. Любая методическая помощь будет кстати :)
6. Михаил Шайдуров (Mshaydurov) 23.12.11 10:27
ТАк то крутой выход. Спасибо автору! Интересно - сам додумался?
7. sound sound (sound) 23.12.11 13:32
Да реально в (1) ссылка на более красивое решение, всегда под рукой есть такой шаблончик.
9. Irina Semiranova (avenira_) 29.12.11 19:01
Спасибо! Для начинающего программиста (как я) очень полезная информация.
10. Владимир Гусев (adhocprog) 24.01.12 21:19
"+" за идею
хотя сам делаю как "мастер китайского кода".
изменения в типовом коде отмечаю, поэтому легко их внести повторно.
11. Алексей Савельев (Akahe) 25.01.12 05:19
Спасибо очень интересная информация.
12. Дмитрий Головинский (Karglak) 25.01.12 10:41
Очень полезной была бы подобная инфа по УТ 11 например.
13. q_i 19.02.12 16:26
Написал генератор раздела описания переменных для данного алгоритма. Если кому нужно: http://infostart.ru/public/116567/
14. Программулькин (Программулькин) 22.02.12 03:45
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа