1с поле html документа сохранить
Сохранение html документа
Как сохранить содержимое «Поле HTML документа» в html-файл?
&НаКлиенте
Процедура СохранитьHTML(Команда)
ДиалогФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
РазобранноеНаименование = Объект.Наименование;
РазобранноеНаименование = РазборНаименования(РазобранноеНаименование);
ДиалогФайла.ПолноеИмяФайла = «БизнесСправка_» + РазобранноеНаименование;
ДиалогФайла.Фильтр = «Табличный документ (*.mxl)|*.mxl|Документ HTML (*.htm)|*.htm|Лист Excel (*.xls)|*.xls|Текстовый файл UTF-8 (*.txt)|*.txt|PDF (*.pdf)|*.pdf»;
ТипыТабДокумента = Новый Соответствие;
ТипыТабДокумента.Вставить(0, ТипФайлаТабличногоДокумента.MXL);
ТипыТабДокумента.Вставить(1, ТипФайлаТабличногоДокумента.HTML);
ТипыТабДокумента.Вставить(2, ТипФайлаТабличногоДокумента.XLS);
ТипыТабДокумента.Вставить(3, ТипФайлаТабличногоДокумента.TXT);
ТипыТабДокумента.Вставить(4, ТипФайлаТабличногоДокумента.PDF);
Если ДиалогФайла.Выбрать() Тогда
Попытка
Отчет = СохранитьHTMLНаСервере(Объект.ПолеHTMLДокумента,ТипыТабДокумента[ДиалогФайла.ИндексФильтра],ДиалогФайла.ПолноеИмяФайла);
Отчет = ПолучитьИзВременногоХранилища(Отчет);
Отчет.Записать(ДиалогФайла.ПолноеИмяФайла,ТипыТабДокумента[ДиалогФайла.ИндексФильтра]);
Сообщить(«Сохранили файл «+ ДиалогФайла.ПолноеИмяФайла);
Исключение
Предупреждение(«Файл отчета не сохранен!
|» + ИнформацияОбОшибке().Описание);
КонецПопытки;
КонецЕсли;
КонецПроцедуры
1С html. Cоздание поля html документа
В статье на примере будут описаны все этапы создания поля html документа. В 1с html поле позволяет представить данные, которые не требуется редактировать, в более эстетичном виде. Разработчик может применить возможности html для создания и настройки формы справочника или бизнес-процесса (как делается в конфигурации Документооборот).
Рассмотрим пример. Разработаем обработку, которая будет представлять элемент справочника Пользователи в виде поля html документа. Для разработки примера я использовал демо БСП 3.1 (управляемое приложение).
Выведем в документ следующие поля справочника:
Размещение реквизитов на форме
Для начала создадим внешнюю обработку и добавим форму. На форме создадим два реквизита Пользователь (тип СправочникСсылка.Пользователи) и ПредставлениеHTML (тип Строка неограниченной длины). Перетащим реквизиты в дерево элементов. Для элемента ПредставлениеHTML выберем вид Поле HTML документа и отключим отображение заголовка. Должно получится так:
Теперь поработаем над программной частью формы:
В итоге должно получиться следующее:
Получение данных
Во входные параметры функции ЗаполнитьHTMLПредставление мы передаем только ссылку на пользователя, поэтому для начала надо собрать все данные, необходимые для вывода в html документ. Для этого воспользуемся запросом, который вынесем в отдельную процедуру. Приводить текст процедуры здесь я не буду, чтобы не занимать много места. Ознакомиться с ним можно во внешней обработке, ссылка на которую находится внизу статьи.
Функция возвращает структуру, в которой содержится две выборки. Первая, ВыборкаДанных — содержит одну строку с основными данными пользователя. Вторая, ВыборкаКонтактов — содержит контактную информацию пользователя, в разрезе двух полей: Вид и Представление. Вызов функции получения данных выглядит так:
Заполнение стилей 1с html поля
Рассмотрим заполнение стилей более подробно:
Создание тела html документа в 1с 8
Вывод изображения в html
Начнем с вывода фотографии пользователя. В элементе справочника она хранится в реквизите Фотография, в виде хранилища значения. Его мы получили вместе с остальными данными пользователя, при помощи запроса.
Разберем представленный код:
Для того чтобы отделить изображение от следующей информации, используем тег
. Он означает начало нового абзаца. При описании стилей мы указали, что перед началом нового абзаца устанавливается отступ в 10 пикселей.
Вывод текстового реквизита в html
После фотографии выведем основные данные пользователя в следующем формате:
Начнем с имени пользователя:
Разберем представленный код:
Вывод ссылки в html
Теперь выведем в документ физлицо пользователя. Так как оно представлено ссылочным типом, оформим его в виде ссылки.
Разберем представленный код:
Далее нам необходимо будет вывести еще один текстовый реквизит и еще один ссылочный. Для того чтобы не дублировать код вынесем добавление реквизита в html в отдельную, универсальную процедуру.
Вывод всех реквизитов будет выглядеть следующим образом:
Вывод таблицы в html 1с
Осталось вывести таблицу контактной информации пользователя. Это делается довольно просто.
На этом формирование поля html документа в 1с завершено. Осталось только закрыть теги и вернуть сформированный текст.
В итоге у нас получается html поле, заполненное следующим образом:
Обработка нажатия на ссылку
В нашей обработке мы используем не веб ссылки, а на навигационные ссылки 1с. По этой причине система не может корректно обработать их нажатие. Это можно исправить, создав обработчик события ПриНажатии, для Поля HTML документа.
В обработчике мы анализируем текст ссылки, на которую произошло нажатие. Если это навигационная ссылка, обрабатываем ее по отдельному алгоритму. Получаем текст и осуществляем переход. Таким образом при нажатии на ссылку, у нас произойдет переход на форму элемента справочника.
Скачать обработку формирования html поля можно здесь: СозданиеHTMLПоля
Печать в word, pdf через html
Постановка задачи
При работе с клиентами возникла задача: использовать форматированный документ. Итак, существует справочник, в нем табличная часть. Для каждой строки требуется ввести описание, причем описание имеет тип форматированный документ. Потребовалось организовать печать табличной части справочника с описанием для каждой строки. Тип данных «Форматированный документ» не может выводится в табличный документ, поэтому пришлось организовывать печать через Microsoft Word. Для этого требуется:
Все это требуется сделать программно.
1. Формирование временного файла html.
Один из самых простых, но определяющих внешний вид печатной формы этап. Вот пример формирования простого файла html:
Из типа данных «Форматированный документ» легко получить html строку и вставить её в html файл. Причем это можно сделать и с учетом картинок. Вот пример кода:
В html-документ можно передавать данные с учетом форматирования. В Microsoft Word существуют свои особенности. Так например следующая конструкция формирует строку курсивом и шрифтом «Times New Roman»:
Подробно на форматах останавливаться не буду. В интернете существуют множество онлайн сервисов, в которых можно получить требуемый формат вывода. (Например: https://wordhtml.com/).
2. Открытие html с помощью Microsoft Word и сохранение в pdf
Средствами Microsoft Word возможно сохранение файла html в другие форматы (в том числе в pdf). Для данной операции использовалась следующая конструкция:
После открытия файлов не следует забывать об удалении временных файлов.
Удобное хранение форматированного текста
Данная статья описывает хранение форматированного текста с картинками в обычном текстовом поле.
1С учетная система построенная на таблицах, в которых удобно хранить текст и числа, но не очень удобно хранить форматированное описание.
Мы для учета задач реализовали удобное хранение описания в 1С в формате HTML. В платформе есть объект Форматированный документ, но хранить его можно только в поле хранилище значений. Также мы внедрим картинки в HTML. Для внедрения картинок воспользуемся кодированием данных в base64 и внедрением их в текст HTML http://ru.wikipedia.org/wiki/Data:_URL
Дальнейшее описание актуально для управляемых форм.
Создаем структуру данных.
В базе для хранения описания добавляем текстовое поле неограниченной длины.В нём описание в формате HTML. Для примера назовём его ОписаниеHTML.
Настраиваем форму
На форме добавляем реквизит ФорматированныйДокумент с типом ФорматированныйДокумент. Хотя хранение и подразумевается в формате HTML, но редактировать удобнее в специализированной форме.
Добавляем элемент формы связанный с реквизитом ФорматированныйДокумент
Добавляем командную панель и связываем её с ФорматированнымДокументом
Пишем код
Для загрузки в форматированный документ данных при открытии из HTML напишем процедуру
И вызов процедуры ПриСозданииНаСервере
Известные баги
Вывод в поле HTML документа в windows осуществляется через Internet Explorer, который официально не поддерживает вставку изображений более 80 кб. По факту работает.
Оформление вложенных списков ломается при вызове УстановитьHTML
Картинки из буфера обмена не вставляются.
Вопросы производительности
В нашей базе данный механизм используется для хранения задач и загрузки писем из почты по техподдержке. Форма с 20 скриншотами работает быстро. Можно дополнительно обсуждать вопрос занимаемого места, но при нашем количестве данных перенос вложенных изображений в отдельное хранилище не имеет смысла.
Итак, что у нас получилось
Что можно сделать ещё
Ещё к этому можно добавить систему комментирования с отображением комментариев единым списком.
А ещё можно сделать вставки JavaScript в 1С.
Скачать файлы
Специальные предложения
Хранится не в поле наверное.. Поле на форме.. А хранится в реквизите..
А если в тексте будут просто кавычки использоваться? Мы всё что после них будем пытаться перекодировать в двоичные данные из Base64?
А вообще спасибо.. Мне помогло и пригодилось. Ставлю лайк.
У меня у одного в браузере приведенные для примера процедуры отображаются не полностью.
Например не понятно чему равен лкПрефикс
лкВложения = Новый Структура;
лкПрефикс = «
Пока Найти(пТекстHTML, лкПрефикс) > 0 Цикл
Спасибо, все работает.
Только у вас в описаниях процедур всё связанное с тегами img потерялось. Видать из-за особенностей движка сайта.
Из-за этого пришлось конфигурацию качать, чтобы посмотреть полный текст процедур.
), это всё сохранится?
Спасибо!
Обновление 15.04.14 09:07
Код открыт Не указано
См. также
FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы «Режим сравнения форм») на примере ERP 2.5 Промо
Данная публикация является продолжением описания функционирования обработки «FormCodeGenerator » в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.
21.12.2020 8894 26 huxuxuya 11
Альтернативный способ добавления элементов и реквизитов на формы
Предлагаю альтернативный вариант добавления динамически создаваемых элементов и реквизитов на форму.
09.09.2019 16883 33 bmk74 6
Вам нравятся запросы в 1С?
Речь не только о том, что простейший запрос с «легальным» оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать «в нагрузку» к тексту запроса. Все эти «Новый Запрос», «УстановитьПараметр» и последующие пляски с обработкой результата. Пора с этим заканчивать!
03.07.2019 27468 7 m-rv 91
Открывашка ячеек таблиц
Глобальное сочетание клавиш для открытия объекта по ссылке из текущей ячейки любой таблицы в большинстве управляемых форм
27.10.2018 21718 12 tormozit 31
Расширенная настройка динамического списка УФ Промо
Открывая управляемую форму выбора и не увидев там видимых в форме списка элементов, часто хочется узнать причину их отсутствия там, т. е. какой наложен отбор. Но стандартная настройка списка управляемой формы показывает только пользовательские настройки, скрывая от пользователя фиксированный отбор. Предлагаю вам расширение конфигурации с расширенной настройкой динамического списка, отображающей пользователю кроме пользовательских настроек еще фиксированные.
31.05.2017 38211 161 tormozit 25
Работа с публикациями «Инфостарт»
Работа с рублевыми публикациями на сайте «Инфостарт»: ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.
13.09.2018 28143 14 RocKeR_13 16
Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции
09.08.2018 35892 31 informa1555 30
Визуализация событий на временной шкале средствами «Поле HTML документа»
Интересный способ наглядно отобразить события на временной шкале. Например, может быть применен для красивого вывода документов по клиенту. Тестировалось на платформе 8.3.12.1469
31.07.2018 28419 145 Plotks2017 27
(Толстый клиент) Подарите бухгалтеру счеты, и он(а) Вас никогда не забудет.
13.05.2011 44039 923 Tatitutu 45
Работа с данными выбора
17.07.2018 65622 25 kalyaka 17
ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ («001», «Новый товар»)
Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.
01.06.2018 36438 94 m-rv 58
Заполняем по шаблону (по умолчанию)
Простой в подключении, универсальный и достаточно удобный механизм заполнения реквизитов произвольных документов/справочников значениями по умолчанию. Реализован в расширении, но может быть и непосредственно включен практически в любую конфигурацию на управляемых формах простым копированием одной формы и двух команд. Весь код в статье.
08.02.2018 34384 20 mvxyz 17
Нечеткий поиск одним запросом Промо
Использование механизма полнотекстового поиска в 1С не всегда оправдано, т.к. построение индекса и поддержание его в актуальном состоянии может значительно нагружать систему. Предлагаемая реализация нечеткого поиска методом N-грамм выполняется одним запросом, что позволяет производить поиск в любой таблице и не требует предварительного построения индекса.
28.12.2015 34172 73 vasvl123 9
Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП
Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.
06.12.2017 32755 58 kwazi 6
Программное формирование форматированной строки в стиле html+inline CSS
Если вам приходилось работать с форматированными строками программно, то вы знаете, какая это боль. Данное решение облегчает программное формирование таких строк.
18.11.2017 41713 45 bonv 13
Расширения конфигураций 1С: учимся перехватывать методы
В этой статье я на примерах разберу некоторые механизмы расширений конфигураций 1С. А именно «перехваты» методов модуля объекта и «перехваты» событий формы и элементов формы. Данная статья написана с учебными целями, чтобы показать, как при помощи расширений конфигурации можно делать такие доработки, ради которых раньше приходилось снимать конфигурацию с поддержки.
30.05.2017 163873 13 signum2009 48
1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут
Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании
14.08.2016 54554 36 Demanoidos 60
Хранение файлов в томах на диске (для УПП 1.3)
Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных
05.06.2016 67183 11 wowik 32
БСП 2.3 и БСП 3.0: Просто про выполнение внешней обработки в фоне (c индикацией прогресса выполнения)
Простое пояснение о том, как сделать внешнюю обработку с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП 2.3.2. UPDATE 20/09/19: добавлен вариант обработки с индикацией процента выполнения и статусом выполнения для БСП 3.0.
18.05.2016 73952 215 rozer 67
Остатки на каждый день в запросе
Запрос формирует остатки товаров на каждый день в пределах выбранного периода.
26.04.2016 76009 21 arakelyan 25
Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии
Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)
22.03.2016 94656 172 igo1 58
Количество дней недели (понедельников/вторников/. ) в заданном диапазоне одним запросом
При реализации периодического авто-заполнения маршрутных листов по графику (недельному) необходимо было просчитать стоимость всего периода, с условием выездов только по определенным дням. Заморачиваться с обходом результата не хотелось. Пришлось написать «Небольшой» запрос.
03.03.2016 22662 1 Alexander.Shvets 5
Простые радости жизни программиста 1С: выбор типа значения
Предлагаемая в работе обработка включает обычную и управляемую формы, которые максимально точно реализуют функциональность системного диалога выбора типа в толстом клиенте обычное приложение (включая оформление диалога). Эти формы имеют дополнительные интерфейсные удобства и могут быть использованы в качестве альтернативных диалогов выбора типа.
17.02.2016 58666 56 yuraos 18
Отображение прогресса выполнения длительных операций в БСП и их отладка в текущем сеансе.
В статье описан способ исполнения длительных операций в конфигурациях, в которых используется библиотека стандартных подсистем, с визуализацией прогресса исполнения и отображения хода обработки данных. Также дается краткое описание процесса отладки длительных операций в текущем сеансе.
17.02.2016 68518 212 balanton 23
Яндекс.Деньги «Благотворительность»
Яндекс.Деньги теперь в 1С. Форма для приема благотворительных взносов. Форму легко сделать и вставить на любую страницу сайта или блога. Платежи будут приходить на ваш кошелек. На форме есть три способа платежа: из кошелька, с банковской карты, с баланса мобильного.
16.02.2016 28055 8 Tatitutu 5
Мастер рассылки e-mail 2.2 для управляемых форм
Для пользователей: переделанный из старый разработки под 8.2 с использованием библиотеки Мастер рассылки e-mail 2.2 (ERP, УТ, БП) (Только управляемые формы), который теперь может запускаться под любой версией платформы с разрешенными или запрещенными модальными/синхронными вызовами в конфигурации. Также удобный выбор e-mail и их владельцев с помощью отбора динамического списка по любым критериям и галочки исключения.
29.12.2015 46222 21 milkers 4
Передача больших пакетов через веб-сервисы
Реализация механизма передачи больших пакетов через веб-сервисы. С его помощью передать файл размером в несколько гигабайт не составит проблем.
06.12.2015 65232 56 YPermitin 19
Пример связи 1С и мессенджера Telegram. Получение данных из 1С запросом из Telegram
В результате чтения публикации Вы получите готовую внешнюю обработку, позволяющую получать из 1С данные, запрашиваемые через Telegram. В данной статье рассмотрим следующее: Использование HTTPСоединение; Чтение JSON для версии 1С 8.3.6 и выше, а также аналог JSON для версии 1С ниже 8.3.6; Подключение обработчика ожидания; Некоторые основные возможности API Telegram; Как создать бота для Telegram; Программное создание колонок дерева на управляемой форме;
19.11.2015 111578 507 Luchik 216
Быстрое определение интервалов в запросе
В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.
01.10.2015 60248 35 ildarovich 41
Полезные приемы при работе с Excel из 1С (Версия 3.1)
Программисту 1С часто приходится работать с таблицами Excel из 1С. Я постарался собрать небольшой FAQ и набор функций для работы с файлами Excel. Надеюсь, кому-то будет полезна данная статья.
22.09.2015 247434 510 Zerocl 80
Javascript и 1С. Кросс-платформенное взаимодействие
Что делать, если необходим богатый интерфейс, а управляемые формы нам его не могут обеспечить? Использовать HTML и JavaScript. В статье рассмотрено взаимодействие кода 1С и JavaScript, работающее на любой платформе: толстый, тонкий и веб-клиент, под Windows и Linux.
14.09.2015 79713 219 VitaliyCeban 63
Code First и Linq to EF на примере 1С версии 7.7 и 8.3 часть I
28.08.2015 25586 3 Serginio 2
Универсальная учетная система с конструктором документов и справочников в режиме 1С: Предприятие
29.07.2015 35107 143 informa1555 41
NativeDraw: Компонента рисования для 1С [V2.6.2]
Рисуйте в формах 1С, также предлагается небольшое количество нерисовальных функций
13.07.2015 52380 472 ПерваяСистема 147
Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7
Я очень часто использую группировку данных по полю и полям, как в восьмерке, так и в семерке. Это аналог запроса Итоги, но там строится дерево, а в большинстве случаев нужны «плоские данные». Да и делать запрос в большинстве случаев более накладный процесс, чем работа с ТЗ. Все достоинства такого подхода приведены на примере метода универсального списания по париям, а так же отбора строк в ТЗ по произвольному условию. Для 7.7 еще отчеты сравнения двух ТЗ. Работая с различными базами для упрощения сравнения номенклатуры, или как аналог джойнов(join), сделал сравнение двух таблиц значений по нескольким полям. Пока группировки полей должны быть уникальны. Часто приходится искать дубли, для универсального поиска есть ДублиВТзПоПолю и пример в Тест.ert.
25.06.2015 31674 4 Serginio 1
Использование элемента управления ПолеHTMLдокумента в 1С
Платформа 1С представляет собой достаточно мощный инструмент, предназначенный для решения широкого круга задач. В этой статье мы хотим рассказать об одном типе объекта, с помощью которого можно:
Этот объект называется в 1С полеHTMLдокумента.
Элемент управления ПолеHTMLДокумента имеет одно существенное ограничение в использовании – его нельзя использовать для расположенных в таблице полей.
Создание собственного браузера в 1С
Давайте попробуем с помощью этого поля создать обработку, открывающую ссылку на ресурс в интернете:
Проверим, как это работает. Запустим нашу обработку и введем в поле URL адрес нашего сайта (blog.it-terminal.ru). Получим картинку (Рис.4) Рис.4.
Проанализируем, что мы видим:
С чем связана ошибка? С тем, что ПолеHTMLДокумента – это фактически типовой Internet Explorer, причем не самой последней версии, который не поддерживает большинство современных ресурсов. Так что сайты, не поддерживающие режим совместимости, будут открываться с ошибками в сценарии.
Закрыв предупреждение, можно перейти по ссылке.
Для удобства пользователя можно на форме создать навигационные команды «Вперед» и «Назад», которые будут описывать соответствующие перемещения.
Создание ссылки на объект базы данных
Задача состоит в следующем:
Создадим нашу обработку и форму на ней.
Подробнее рассмотрим, что мы сделали:
Попробовав сейчас активировать любую из имеющихся гиперссылок мы столкнемся с тем, что «Такая страница не найдена»(Рис.8) Рис.8
Продолжим описывать обработчик.
Создадим процедуру, которая обрабатывает клик мышки по гиперссылке на элемент справочника (Рис.9).
Рассмотрим её подробнее:
Протестируем выполнение созданного кода.
Так как в настройках нашей программы запрещено использование модальных окон, выполнение выше приведенного кода завершилось ошибкой (Рис.10). В противном случае все бы отработало нормально.
Зайдем в конфигураторе в меню Текст->Рефакторинг->Нерекомендуемые синхронные вызовы->Преобразовать вызовы модуля. По прошествии некоторого времени текст нашего модуля будет выглядеть как на Рис.11
Опробовав обработку еще раз можно убедиться, что все работает нормально и при щелчке на ссылку открывается соответствующий элемент справочника.
Некоторые пояснения к коду. Статистика говорит, что в пределах одной базы маловероятно существование элементов с одинаковыми идентификаторами, однако платформа может гарантировать уникальность только в пределах одной таблицы. Именно поэтому мы и формировали ссылку из двух частей.
Пара слов о Javascript
Вызовы функций JS в ранних версиях программы осуществлялись через параметр поля document.parentWindow.MyFunk(), однако в современных браузерах эта возможность была утрачена. Не срабатывают так же вызовы через eval().
Выход состоит в использовании специальной функции fireEvent, которая является универсальным механизмом обмена данными между 1С и Javascript.