V8 Использование универсальных механизмов типовых конфигураций для получения и дальнейшей программной обработки табличных документов

30.05.09

Разработка - Механизмы платформы 1С

А пробовали вы в типовых получить табличный документ, содержащий встроенную печатную форму объекта?
Рекомендую попытаться

Собственно задача с которой всё началось до безобразия проста: отправка произвольных печатных форм по e-mail. Вполне логичным в этом случае кажется использование встроенного универсального инструментария для получения печатных форм, сохранения их в виде файлов в temp-директории и последующей отправкой. Но не все так просто...

В типовых конфигурациях от 1С существует довольно мощный механизм внешних печатных форм. Зиждется он на внутреннем стандарте, подробно описанном на дисках ИТС в разделе «Система стандартов и методик разработки конфигураций для платформы 1С:Предприятие 8»
Однако, если функция внешней обработки формирования печатных форм, созданной с соблюдением стандарта, возвращает сформированный табличный документ, то для встроенных печатных форм работает экспортная процедура модуля объекта Печать() которая не только формирует табличный документ (вызывая ту или иную неэкспортную функцию с нестандартизированным именем), но и сразу же открывает его окно (либо отсылает его на принтер). Нам же ни окно, ни, тем более, распечатанные бумажки не нужны. Нужно-то всего ничего: объект типа табличный документ… Что прикажете делать? Лопатить модули всех объектов, дописывая ключевое Экспорт и где-то хранить имена функций для каждого из объектов? Дублировать встроенные печатные формы внешними? Сомнительное удовольствие.
Но всё же выход есть. Кроется он в экспортной процедуре НапечататьДокумент(), вызываемой как для встроенных так и для внешних печатных форм.
Вот как выглядит девственно-нетронутое тело этой процедуры:

Если ПечДокумент = Неопределено тогда
Возврат;
КонецЕсли;

// Получить необходимое количество копий
Если КоличествоЭкземпляров > 0 Тогда
ПечДокумент.КоличествоЭкземпляров = КоличествоЭкземпляров;
КонецЕсли;



Вживим сюда небольшой имплант:

Если ПечДокумент = Неопределено тогда
Возврат;
КонецЕсли;

//+++++
Если КоличествоЭкземпляров = -1 Тогда
// Вызов процедуры печати из внешнего объекта
КоличествоЭкземпляров = ПечДокумент;
Возврат;
КонецЕсли;
//----- 



// Получить необходимое количество копий
Если КоличествоЭкземпляров > 0 Тогда
ПечДокумент.КоличествоЭкземпляров = КоличествоЭкземпляров;
КонецЕсли;



Теперь, если на вход процедуры вторым параметром передать переменную, содержащую значение –1, то после исполнения процедуры эта самая переменная (благодаря тому что переменные передаютя по ссылке) будет содержать требуемый табличный документ. Что, собственно и требовалось.
Таким образом, для получения произвольной имеющейся печатной формы объекта достаточно выполнить примерно такой код:


ТабДок = -1;
УниверсальныеМеханизмы.ПечатьПоДополнительнойКнопке(…, …, …, …, ТабДок);

А уж дальше с содержащимся в ТабДок объектом разработчик волен поступать как сочтет нужным.

PS примеры процедур и функций взяты из типовой БП 1.6.15.5.

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

См. также

SALE! %

Мастера заполнения Поиск данных База данных Инструментарий разработчика Корректировка данных Универсальные функции Механизмы платформы 1С Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

5000 4000 руб.

25.02.2026    1944    9    1    

11

Механизмы платформы 1С Программист Бесплатно (free)

Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?

16.07.2025    30168    TitanLuchs    106    

149

Механизмы платформы 1С Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    16466    bayselonarrend    127    

68

Механизмы платформы 1С Программист 1С:Предприятие 8 Бесплатно (free)

В этой статье подробно рассматривается работа с JSON в XDTO в 1С:Предприятие. Вы узнаете, как сериализовать и десериализовать объекты XDTO в JSON, интегрировать 1С с веб-сервисами и API, а также корректно обрабатывать данные при обмене. Разбираются особенности работы с коллекциями, использование функций восстановления и частые ошибки при работе с JSON и XDTO.

30.01.2025    19662    user2122906    9    

66

Механизмы платформы 1С Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 Бесплатно (free)

Этот материал познакомит вас с механизмом XDTO (XML Data Transfer Objects) в 1С и научит эффективно использовать его возможности. Мы разберёмся, как работать с XML-схемами, создавать модели данных, манипулировать объектами XDTO, а также сериализовать и десериализовать их в XML. Вы узнаете, как использовать XDTO для интеграции с внешними системами, избегать типичных ошибок и оптимизировать код. К концу вы будете уверенно применять XDTO для решения сложных задач обмена данными и автоматизации процессов.

17.01.2025    33928    user2122906    12    

61

Механизмы платформы 1С WEB-интеграция Программист 1С:Предприятие 8 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    30644    dsdred    100    

147

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

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    27174    bayselonarrend    22    

176
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Свой 164 30.05.09 18:01 Сейчас в теме
укажите явно , в заголовке, что статья для 8ки и негодится для 7ки
2. roma n 8 30.05.09 18:24 Сейчас в теме
(1)
- тематические разделы определены, но и в названии упоминание не помешает
- пример взят из V8, однако, флот сработает и в 7.7,- механика передачи параметров та же
3. Душелов 4025 31.05.09 14:54 Сейчас в теме
А можно просто взять и сделать ПечДокумент экспортной переменной и все.
4. artbear 1587 31.05.09 15:48 Сейчас в теме
(3) Ага, попробуй-ка в общем модуле 8-ки сделать экспортную переменную.
А если перенести в модуль приложения, то глобальная переменная все равно не гуд. Может возникнуть куча проблем.
Подход автора, в принципе, неплох.
Я и сам аналог использую для своего тестирования печатных форм.
5. BabySG 17.06.09 20:08 Сейчас в теме
А зачем менять конфу для этого?
Чем не понравились ВПФ?
Для отправки сообщения требуется регистрация/авторизация