1C 77 Открыть Форму Документа Программно

Форматированный документ

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


Перекресток - акции, товары, адреса магазинов: 🍩 🍩 🍩 🍩 🔥 режим работы, смотрите на нашем сайте https://moj-perekrestok.ru

Для работы с форматированным документом предназначен объект ФорматированныйДокумент, с помощью которого можно выполнять программную обработку документа, и поле вида Поле форматированного документа, который предназначен для интерактивного изменения форматированного документа.

В информационной базе форматированный документ рекомендуется хранить в реквизите типа ХранилищеЗначения, в который помещается объект типа ФорматированныйДокумент.

Для того чтобы предоставить пользователю возможность интерактивного изменения документа, следует выполнить следующие шаги:

  • Создать реквизит формы типа ФорматированныйДокумент и установить для него свойство Сохраняемые данные.
  • Создать элемент формы типа Поле ввода вида Поле форматированного документа и связать его с ранее созданным реквизитом.
  • При чтении данных формы (обработчик ПриЧтенииНаСервере()) загрузить в реквизит формы документ (метод УстановитьHTML()), который необходимо редактировать, предварительно получив его из информационной базы.
  • Перед записью данных формы (обработчик ПередЗаписьюНаСервере()) получить результат (метод ПолучитьHTML()) редактирования документа и поместить его в реквизит, сохраняемый в информационной базе.

В процессе работы с документом можно использовать закладки. Закладка описывает положение некоторого символа в документе. При определении положения нужно учитывать следующие особенности:

С помощью закладок можно получать и устанавливать выделение или позицию курсора в редакторе, добавлять и удалять элементы текста в документе (собственно текст, картинка, перевод строки).

Приведем пример получения и установки выделения в редакторе форматированного документа.

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

Если в форматированном документе присутствуют гиперссылки и форматированный документ отображается в режиме Только просмотр, то гиперссылки доступны для перехода. Переход выполняется в новом окне веб-браузера.

Также имеется возможность программного доступа к тексту форматированного документа. Сам текст состоит из объектов типа ПараграфФорматированногоДокумента, который доступен через свойство Элементы объекта ФорматированныйДокумент. При этом каждый параграф состоит из объектов типа

Доступ к этой коллекции обеспечивается через свойство Элементы объекта ПараграфФорматированногоДокумента. Границей элемента не обязательно является граница слова.

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

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

Разница в работе этих методов будет в том, что метод ПолучитьЭлементы() возвращает все элементы, которые попадают между заданными закладками (включая все граничные элементы), т. е. рассматриваемом примере будет выведен следующий текст:

Другими словами, при использовании метода СформироватьЭлементы() система формирует набор элементов таким образом, чтобы он включал в себя только то содержимое форматированного документа, которое ограничено закладками.

Такой результат будет даже в том случае, если полученный, после вызова СформироватьЭлементы(), набор элементов никак не изменялся.

Добавление нумерации в типовой конфигурации 1С

Давайте теперь посмотрим как добавить нумерацию в типовую конфигурацию. Я возьму для примера «Управление торговлей, редакции 11» и документ «Авансовый отчет». Делаем все тоже самое открываем конфигуратор, ищем нужный документ и открываем макет.

Для того чтобы добавить нумерацию страниц программно нужно сделать следующие. Зайти в конфигуратор, найти нужный документ открыть процедуру «Печать» которая находиться в «Модуле менеджера» и дописать код.

В качестве примера поменяем расположение нумерации и сделаем её в правом верхнем углу, а в левый добавим вывод текущей даты.

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

Программное переопределение обработчиков событий формы и элементов формы
● в параметры формы добавить ключевой параметр ЗначениеКопирования такого же типа, как и сам объект;

понедельник, 7 августа 2017 г.

Присоединенные файлы (доработка присоединенных файлов в конфигурациях на БСП)

Доработаем не типовой справочник Объекты строительства в конфигурации ЦРМ + УНФ (1.5.4.53). По ТЗ в нем должны хранится присоединенных файлы.

Создаем вспомогательный справочник для хранения присоединенных файлов. (я просто копировал аналогичный справочник у другого объекта и переименовал)

Реквизит «ВладелецФайла» – указываем объект к которому будем присоединять файлы.

————————————————-
В регистре сведений «ПрисоединенныеФайлы» в реквизите «ПрисоедененныйФайл» расширяем тип данных нашим созданным справочником.

Программное создание групп формы.
Добрый день, Валентина.
Список всех Документов, у которых есть прикрепленные файлы хранится в Регистры сведений — Наличие файлов раздел Главное меню — Все функции — Регистры сведений.
Список всех файлов, присоединенных к конкретному документу. По скрепке открывается список файлов кнопка ЕЩЕ — Дополнительно — Вывести список.
При необходимости можно настроить список.

Вывод реквизитов на форму.

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

  • Если вы не используете префиксы при создании новых команд и элементов рекомендуется проверять существование создаваемых объектов по имени с помощью метода Найти(), который вернет Неопределено, если объект в коллекции не найден:
    • Элементы.Найти(«пр_Владелец»);
    • Команды.Найти(«пр_НоваяКоманда»);
    • Свойства, методы и коллекции управляемой формы описаны в синтакс-помощнике в разделе «Интерфейс (управляемый)»;
    • Изучите БСП, если она имеется в вашей конфигурации. Например в общем модуле «ОбщегоНазначения» уже описаны функции для создания объекта ОписаниеТипов, необходимого при создании новых реквизитов на форме:
      • ОбщегоНазначения.ОписаниеТипаСтрока(ДлинаСтроки) — Создает объект ОписаниеТипов, содержащий тип Строка;
      • ОбщегоНазначения.ОписаниеТипаЧисло(Разрядность, РазрядностьДробнойЧасти = 0, ЗнакЧисла = Неопределено) — Создает объект ОписаниеТипов, содержащий тип Число;
      • ОбщегоНазначения.ОписаниеТипаДата(ЧастиДаты) — Создает объект ОписаниеТипов, содержащий тип Дата;
      • ОбщегоНазначенияВызовСервера.ЦветСтиля(ИмяЦветаСтиля) — Функция получает цвет стиля по имени элемента стиля;
      • ОбщегоНазначенияВызовСервера.ШрифтСтиля(ИмяШрифтаСтиля) — Функция получает шрифт стиля по имени элемента стиля.

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

      «Толстые» объекты на управляемой форме.

      Несмотря на то, что типы ДанныеФормыКоллекция , имеют достаточно широкий функционал, иногда возникает необходимость на сервере получить, «оригинал» — тот объект который отображает форма. Особенно это актуально для реквизитов формы, ведь данные реквизитов объекта, можно получить из самого объекта. Для таких случаев существует метод РеквизитФормыВЗначение() , например:

      Второй параметр необязательный. (и не совсем понятно зачем он нужен). Возможно и обратное преобразование, бывает необходимо когда полученный извне или сгенерированный объект «засунуть» в уже существующий реквизит формы, соответствующего типа для этого существует

Оставить отзыв

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

©Купоно-Мания.ру