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

20.02.12

Разработка - Универсальные функции

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Заказ на производство.epf
.epf 12,15Kb
87 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    4710    Abysswalker    11    

46

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

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

14.05.2025    8802    DeerCven    15    

63

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

21.05.2024    57141    dimanich70    85    

174

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    8049    7    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    71710    atdonya    31    

73

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

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

30.11.2023    10045    ke.92@mail.ru    17    

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