Документооборот ПРОФ, КОРП, ДГУ
30.03.2016
В 1С: "Документообороте" под "превью" понимается HTML-поле для предварительного просмотра информации о документе. Поле содержит в себе идентификационные данные (например, наименование и регистрационные данные) и основные реквизиты документа.
Превью отображается:
В списках документов область просмотра выводится с помощью одноименной команды в подменю Еще – Настройки. Отображение этой области настраивается для каждого списка и для каждого пользователя индивидуально. Область просмотра отображает сокращенное превью документа, которое содержит основные данные документа, список файлов документа, задачи, созданные на его основании, и таблицу связанных с ним объектов.
При открытии карточки пользователь видит закладку "Обзор" первой. Отображение закладки "Обзор" регулируется персональной настройкой (Настройка и администрирование – Сервис – Персональные настройки – Документы – Использовать обзор документов) и по умолчанию включено. Для каждого типа документа закладка обзор содержит таблицу файлов и превью с реквизитами данного документа.
Тексты превью карточек документов формируются в функциях общего модуля ОбзорДокумента. Для внутреннего документа это ПолучитьОбзорВнутреннегоДокумента(Форма), для входящего документа – ПолучитьОбзорВходящегоДокумента(Форма), для исходящего – ПолучитьОбзорИсходящегоДокумента(Форма). В качестве параметра в функции передаются соответствующие управляемые формы. Также данный модуль содержит и все сопутствующие процедуры и функции, которые помогают формировать превью карточки документа.
Для форм списков документа созданы отдельные общие модули ОбзорСпискаДокументов и ОбзорСпискаДокументовКлиент. Первый содержит процедуры и функции, которые подготавливают данные и формируют превью документа. Второй – общие процедуры, которые выводят данные на формы списков.
Практически все реквизиты, представленные в превью, являются ссылками, причем клик на разные данные порождает различные действия. Например, клик по электронной почте открывает форму создания письма на указанный адрес. Обработчик нажатия на реквизиты превью находится в общем модуле ДелопроизводствоКлиент ОбработатьНажатиеНаПолеОбзор. В настоящий момент процедура умеет отправлять письма, открывать сайты, переходить в формы различных справочников, а также открывать документ на нужной вкладке (например, может открыть закладку "Этапы" документа).
Сформировать собственное превью карточки или списка документов можно с помощью одноименных функций в переопределяемых модулях. Для карточки документа это общий модуль ОбзорДокументаПереопределяемый, для списка документов – ОбзорСпискаДокументовПереопределяемый.
Рассмотрим, например, процедуру ОбзорДокументаПереопределяемый. ПолучитьОбзорИсходящегоДокумента(Форма):
Копировать в буфер обмена// Переопределяемая функция получения обзора исходящего документа в виде HTML текста. // // Параметры: // Форма - УправляемаяФорма - форма, из которой формируется обзор докмуента // // Возвращаемое значение: // HTMLТекст - Строка - обзор переданного объекта в виде HTML текста // Функция ПолучитьОбзорИсходящегоДокумента(Форма) Экспорт HTMLТекст = ""; // Укажите свое представление документа. Возврат HTMLТекст; КонецФункции
Данная процедура вызывается в начале построения стандартного превью документа ОбзорДокумента.ПолучитьОбзорИсходящегоДокумента. Если она возвращает не пустую строку, то программа считает, что превью документа переопределено, и показывает его. При этом стандартное отображение превью игнорируется.
Рассмотрим такой пример: заказчик просит, чтобы у документов на сумму более 100 000 рублей в превью сумма выделялась красным цветом. Это удобно для быстрой идентификации таких документов сотрудниками.
Для реализации просьбы необходимо сделать следующее:
Копировать в буфер обменаФункция ПолучитьОбзорВнутреннегоДокументаСКорреспондентом(Форма) Объект = Форма.Объект; Если Не ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ВидДокумента, "УчитыватьСуммуДокумента") Или Объект.Сумма < 100000 Тогда Возврат ""; КонецЕсли; …… Если РеквизитыВида.УчитыватьСуммуДокумента Тогда ДобавитьРеквизит(HTMLТекст, НСтр("ru = 'Сумма:'"), Формат(Объект.Сумма, "ЧДЦ=2; ЧН=0") + " " + Объект.Валюта.Наименование, "FF0303"); ……
Тогда превью документа будет выглядеть так:
Рассмотрим другой пример: заказчик попросил вывести в превью документа информацию о визах согласования, чтобы ее можно было увидеть сразу, без перехода по закладкам.
Для реализации просьбы в процедуру ПолучитьОбзорВнутреннегоДокументаСКорреспондентом необходимо добавить следующий код:
Копировать в буфер обменаФункция ПолучитьОбзорВнутреннегоДокументаСКорреспондентом(Форма) …… Если ПолучитьФункциональнуюОпцию("ИспользоватьСостоянияДокументов") Тогда ДобавитьПодпись(HTMLТекст, НСтр("ru = 'Состояние:'")); HTMLТекст = HTMLТекст + СтрШаблон( ""<A href="v8doc:%1">%2</A><BR>", "status", Форма.СостояниеТекст); КонецЕсли; ТаблицаВизДокумента = РаботаСВизамиСогласования.ПолучитьВизыДокумента(Объект.Ссылка); Если ТаблицаВизДокумента.Количество() > 0 Тогда ДобавитьПодпись(HTMLТекст, НСтр("ru = 'Визы согласования:'")); КонецЕсли; Для Каждого Виза Из ТаблицаВизДокумента Цикл Если Виза.РезультатСогласования = Перечисления.РезультатыСогласования.НеСогласовано Тогда ДобавитьЗначение(HTMLТекст, СокрЛП(Виза.Исполнитель) + ": " + СокрЛП(Виза.РезультатСогласования) + ";", "B22222"); Иначе ДобавитьЗначение(HTMLТекст, СокрЛП(Виза.Исполнитель) + ": " + СокрЛП(Виза.РезультатСогласования) + ";", "008000"); КонецЕсли; HTMLТекст = HTMLТекст + "<br>"; КонецЦикла; HTMLТекст = HTMLТекст + "<p>";; ……
Тогда превью будет выглядеть следующим образом:
Рассмотрим пример переопределения превью в списке внутренних документов: заказчик просит добавить в превью списка информацию о состоянии документа.
Для реализации просьбы необходимо выполнить следующее:
Копировать в буфер обмена// Переопределяемая функция получения обзора документа Функция ПолучитьОбзорДокумента(Документ) Экспорт … Если ПолучитьФункциональнуюОпцию("ИспользоватьСостоянияДокументов") Тогда ДобавитьПодпись(HTMLТекст, НСтр("ru = 'Состояние:'")); HTMLТекст = HTMLТекст + СтрШаблон( ""<A href="v8doc:%1">%2</A><BR>", "status", Делопроизводство.ПолучитьСтроковоеПредставлениеСостояний(Выборка.Ссылка)); КонецЕсли; … Возврат HTMLТекст; КонецФункции
Результат работы процедуры изображен на рисунке:
Таким образом, переопределяя работу указанных модулей, разработчик может довольно быстро изменить работу стандартного превью документа. Он может как добавлять/убирать нужные или ненужные реквизиты, так и полностью менять содержимое и назначение превью того или иного документа.