При работе с системой 1С:Документооборот 2.1 через браузер пользователи часто сталкиваются с ситуацией, когда прикрепленные к карточкам документов или задачам файлы формата .mxl (Табличный документ 1С) не открываются для просмотра прямо в интерфейсе программы. Вместо этого веб-клиент выводит стандартный диалог браузера с предложением сохранить файл на локальный диск.
Рассмотрим подробнее причины такого поведения платформы, проанализируем ограничения веб-клиента и разберем практические способы решения этой задачи.
Проанализируем механику работы веб-клиента и типовой конфигурации. Выделяются две основные причины:
ТабличныйДокумент, когда тот является элементом формы, но не содержит встроенной службы для ассоциации произвольных файлов .mxl с диска без их предварительной передачи и обработки на сервере.Если в тонком клиенте файл MXL открывается штатно встроенными средствами платформы, то в веб-клиенте без специализированной доработки просмотр файла прямо из прикрепленных материалов недоступен.
Разберем наиболее удобный и прозрачный способ решения проблемы для пользователей веб-клиента — создание расширения конфигурации (.cfe), которое позволит просматривать MXL прямо в форме 1С без снятия основной базы с поддержки.
Смысл решения заключается в следующем: мы добавляем команду просмотра, вычитываем двоичные данные прикрепленного файла на сервере, загружаем их в объект ТабличныйДокумент и отображаем на форме в специальном поле.
Рассмотрим по шагам реализацию обработки файла:
.mxl из хранилища или с сервера файлов.ТабличныйДокумент методом Прочитать().ТабличныйДокумент.Посмотрим на пример серверного кода, выполняющего чтение MXL из двоичных данных:
&НаСервере
Функция ПолучитьТабличныйДокументИзФайла(СсылкаНаФайл) Экспорт
ДвоичныеДанныеФайла = РаботаСФайламиВызовСервера.ПолучитьДвоичныеДанныеФайла(СсылкаНаФайл);
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("mxl");
ДвоичныеДанныеФайла.Записать(ИмяВременногоФайла);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяВременногоФайла);
УдалитьФайлы(ИмяВременногоФайла);
Возврат ТабДок;
КонецФункции
Сформированный ТабличныйДокумент передается в реквизит управляемой формы. Веб-клиент платформы 1С рендерит поле табличного документа в родном HTML-коде браузера. Это дает пользователю возможность просматривать документ, масштабировать его и отправлять на печать прямо из браузера без скачивания на диск.
Проанализируем альтернативный вариант, не требующий написания интерактивных форм просмотра. Если задача состоит только в ознакомлении с содержимым MXL-документа, можно настроить автоматическое создание копии файла в формате PDF или HTML при его загрузке в базу.
Современные веб-браузеры умеют отображать файлы PDF встроенными средствами. Схема работы выглядит следующим образом:
.mxl срабатывает подписка на событие или фоновое задание.ТабличныйДокумент, в который считывается файл MXL.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF).Если использование веб-клиента обусловлено лишь сложностью установки и обновления программного обеспечения на рабочих местах пользователей, рассмотрим административные варианты развертывания тонкого клиента 1С:
AppData текущего пользователя. Данная процедура не требует прав локального администратора Windows.1cestart.exe по сетевому пути. При выходе обновлений администратор обновляет платформу только на сетевом ресурсе, а у пользователей клиент обновляется автоматически.Работа в тонком клиенте полностью снимает проблему просмотра и редактирования файлов .mxl, так как платформа открывает их во встроенном редакторе табличных документов «из коробки» без дополнительных доработок.