Редактор формы
Редактор формы используется для создания и редактирования форм объектов прикладного решения. Формы объектов используются системой для визуального отображения данных в процессе работы пользователя.
Редактор формы содержит несколько закладок, обеспечивающих редактирование всех составляющих формы.
В отдельном окне, в нижней части редактора, отображается внешний вид формы в режиме 1С:Предприятие.
Редактирование элементов
Редактор форм позволяет разработчику использовать широкий набор возможностей для изменения внешнего вида формы — того вида, который форма будет иметь в режиме 1С:Предприятие. Перечислим основные из этих возможностей:
Страницы, закладки
Редактор форм позволяет добавлять в форму специальные элементы, которые помогают придать форме собственный узнаваемый стиль, сделать доступ к данным простым и понятным, а также разместить большой объем информации на ограниченной площади.
Редактор позволяет добавить в форму несколько элементов Группа — Страницы, каждая из которых может содержать несколько элементов Группа — Страница.
Например, форма документа может содержать один элемент Группа — Страницы, которому подчинены несколько элементов Группа — Страница с заголовками Изображение, Характеристики и Описание:
Тогда в режиме 1С:Предприятие она будет выглядеть следующим образом:
Заголовок каждой группы — страницы отображается на отдельной закладке. Разработчик имеет возможность задать режим отображения закладок: снизу или сверху:
Например, закладки можно расположить снизу:
Элементы
Редактор позволяет добавлять в форму различные элементы. Добавлять элементы можно с помощью команды добавления или путем перетаскивания реквизитов формы в дерево элементов:
Все элементы формы представляются в виде иерархической структуры, корнем которой является сама форма. Это позволяет быстро перемещаться к нужному элементу формы:
Располагая элементы выше/ниже в дереве, подчиняя их другим элементам и задавая свойства элементов-групп можно задавать порядок, в котором пользователь будет обходить элементы управления формы при вводе и редактировании данных. В режиме 1С:Предприятие элементы формы будут обходиться в порядке их иерархии и в соответствии с тем, какой тип группировки выбран для групп: вертикальная или горизонтальная.
Разделители
Разделители являются специальными элементами, с помощью которых возможно перераспределение пространства формы без изменения ее размеров. Платформа в режиме 1С:Предприятие самостоятельно добавляет эти элементы в форму. Разделитель обладает способностью «захватываться» мышью и перемещаться внутри формы в ее пределах с учетом возможности расположения других элементов и ориентации разделителя:
При перемещении разделителя, все элементы, связанные с разделителем, будут изменять свои размеры или перемещаться.
Модуль формы
Для редактирования модуля формы конфигуратор вызывает редактор текстов и модулей. Этот редактор предоставляет разработчику большое разнообразие возможностей для создания и изменения текста модуля. Подробнее…
Реквизиты формы
Редактирование реквизитов формы выполняется в списке, который позволяет создавать новые реквизиты, изменять имеющиеся и удалять ненужные реквизиты. Свойства реквизитов задаются с помощью палитры свойств.
Если у формы существует основной реквизит, определяющий поведение формы, отличное от типового, — он выделяется жирным шрифтом.
Командный интерфейс формы
Командный интерфейс формы редактируется в дереве. Основные ветви дерева содержат команды, добавленные в панель навигации окна, в котором будет показана форма, и в командную панель формы. Внутри каждой из этих ветвей команды разделены по стандартным группам.
Часть команд в командный интерфейс платформа добавляет автоматически. Наряду с этим разработчик самостоятельно может добавить в командный интерфейс команды, перетащив их из списка команд формы или из списка доступных глобальных команд. Для всех команд, добавленных в командный интерфейс, разработчик может задать их видимость для различных ролей, определенных в конфигурации.
Команды формы
Команды формы редактируются в списке. Разработчик имеет возможность добавить, удалить команды формы и задать их свойства с помощью палитры свойств. В том числе назначить для команды процедуру, которая будет выполняться при вызове этой команды пользователем.
На закладках Стандартные команды и Глобальные команды разработчику предоставляются списки команд, генерируемых платформой и доступных для использования в данной форме. Их свойства изменять нельзя, можно только добавлять их в форму.
С помощью мыши разработчик может перетащить команду в командный интерфейс формы. Также можно перетащить команду и прямо в дерево элементов, если нужно, например, отобразить эту команду в виде кнопки, расположенной в форме.
Параметры формы
Параметры формы редактируются в списке. Разработчик имеет возможность добавить, удалить параметры формы и задать их свойства с помощью палитры свойств.
Лайфхаки 1С. Настройка списков (Часть 3)
Ссылки на предыдущие статьи
Значительная часть информации, связанной с учетом или ведением бухгалтерии, хранится в виде списков. Эта традиция заведена уже очень давно и табличная информация воспринимается уже как нечто само собой понятное. Списки могут быть разными и представлены могут быть различными способами.
Программные продукты от 1С предлагают свою версию реализации списков. Это стандартный механизм для всех продуктов от 1С. Очень полезно научиться работать со списками в этой среде. Знания будут полезны как бухгалтерам, так и абсолютно всем, кто так или иначе, вынужден работать в программах от 1С.
1. Дату можно не вбивать полностью
Можно не вбивать текущую дату каждый раз. Просто введите сегоднящнее число в соответствующее поле и нажмите Enter. Программа сама допишет отсутствующую информацию. Это не ахти насколько важные знания, но если вы работаете с большим потоком документов, то этот лайфхак значительно ускорит обработку данных. Ведь каждый раз тратятся драгоценные секунды.
Нажимаем кнопку «Ещё» и находим опцию «Вывести список». Нажимаем на этот пункт и перед нами открывается панель настройки. Эта панель позволяет галочками указать, какие данные нужно сохранить в результирующем списке, который мы, например, хотим вывести на печать.
После такой сортировки, на выходе мы получим таблицу со всеми выбранными данными. Эту таблицу можно распечатать или использовать любым способом.
3. Быстрый отбор
Если нам нужно получить данные по какому-то контрагенту, то можно использовать простой способ сортировки. Достаточно кликнуть правой кнопкой по наименованию партнера или контрагента и выбрать опцию «Найти». В результате, система предложит вам сводную таблицу со всеми данными, отвечающими поставленному запросу. Это называется быстрый отбор. Очень полезная на практике функция. Кстати говоря. результат отбора будет висеть над всей таблицей как закладка. Его можно закрыть крестиком.
4. Сортировка данных
Обратите внимание, что колонки имеют шапки с названиями, которые можно кликать. Кликайте по нужному столбцу и произойдет сортировка в установленном порядке. Это очень удобно, когда нужно выполнить сортировку по одному из параметров.
5. Изменить форму
Если перейти во вкладку «ещё», то там вы увидите закладку изменить форму. Появляется форма настройки.
Тут можно поубирать галочками лишние пункты или добавить что-то новое. Благодаря этому можно сделать список более компактным. Здесь же можно изменить стиль и форму отображения объектов.
У некоторых пунктов возможно расширить набор полей. используя справочник. Там, где это возможно. появляется зеленый плюсик рядом с надписью добавить поле в конструкторе формы. Там есть много интересных и полезных полей. Например, можно вытащить поле ИНН и т.п.
Здесь же можно сформировать удобный быстрый отбор. Просто кликните по вкладке, как показано на рисунке. а в появившемся наборном поле введите нужного контрагента (или любую другую информацию, соответствующую выбранному полю). Впоследствии, программа выведет подборку, аналогичную быстрому подбору.
6. Подборка документов по признаку
С помощью опции настройка списков можно не только сформировать удобную для прочтения форму или упорядочить данные, но и сделать выборку по признаку. Например, вывести все документы, которые нужно подписывать. Очень полезная функция. которая значительно сократит рутинную обработку стандартных документов.
Настроить эту функцию очень просто. Переходите во вкладку «ещё», выбирайте настройку списков. Тут выбираем вкладку отбор, как показано на картинке выше и в итоге получаем отсортированные данные, где подобраны все неподписанные документы.
7. Группировка
Данные можно не только сортировать, но и группировать. Иногда группировка внутри списка бывает очень и очень полезной. поскольку позволяет работать сразу с несколькими важными параметрами. Для того, чтобы выполнить группировку, нужно в уже знакомой нам вкладке «ещё», выбрать соответствующий раздел.
После выполнения группировки все данные будут отсортированы по группам. Можно сделать, например. группировку по контрагенту, как указано на рисунке выше. Это позволит нам выполнить удобную подборку всех данных, которые будут объединены в сводный перечень данных. Так можно в одном раскрывающемся списке увидеть и долги, и неподписанные документы, и другое.
8. Изменить форму внутри документа
Менять можно не только общий список, но и конкретный документ. Перейдем в уже известный нам раздел, там выберем «изменение формы».
Настройка формы позволяет открыть или спрятать ненужные нам пункты. Обратите внимание, что мы работаем не просто со списком, а с папками. Пункты будущего списка можно перемещать из папки в папку, а затем выводить в нужном поле.
Настройка списков
Настройка списков — это один из стандартных интерфейсных механизмов. Он предоставляется платформой и доступен пользователям любых прикладных решений. С его помощью пользователь может изменить внешний вид списка в соответствии со своими предпочтениями — представить список в виде дерева или в виде линейного списка, сгруппировать элементы списка, задать динамическое оформление списка в зависимости от тех данных, которые в него выводятся.
Например, список, спроектированный разработчиком, может выглядеть следующим образом:
Пользователь может сгруппировать документы по поставщику и те документы, которые приходуют товар на малый склад выделить жирным шрифтом.
Вызвать настройку списка можно с помощью команды Еще — Настроить список…
Отбор
Настройка списка позволяет установить произвольный отбор данных, которые отображаются в списке. Например, можно отобрать только те документы, которые приходуют товары от поставщиков Мосхлеб ОАО и Магазин «Продукты» на средний склад.
Сортировка
Группировка
Настройка списка позволяет сгруппировать данные, представленные в списке по значению какого-либо поля. Причем такая группировка может быть многоуровневой.
Например, можно сгруппировать документы сначала по поставщику, а затем — по складу.
В результате такой группировки список будет выглядеть следующим образом.
Условное оформление
Настройка списка позволяет устанавливать динамическое оформление списков в зависимости от выводимых в них данных. Например, документы, приходующие товары на малый склад можно выделить цветом Циан, а документы в валюте USD — жирным шрифтом.
В результате такого оформления список будет выглядеть следующим образом.
Режим просмотра
Для списков, содержащих иерархические данные, например, для справочника товары, система предоставляет стандартную возможность изменять режим просмотра.
Например, список товаров изначально может быть представлен в виде иерархического списка.
Пользователь может переключить его представление в виде дерева.
Изменение режима просмотра списка выполняется с помощью команды Еще — Режим просмотра.
Авторы: В.А. Ажеронок, А.В. Островерх, М.Г. Радченко, Е.Ю. Хрусталева
Заметки из Зазеркалья
Реализовано в версии 8.3.10.2168.
Как вы знаете, динамический список удобен и полезен для быстрого показа больших списков. Он довольно гибок, позволяет вам изменять стандартный запрос, и даже создавать собственный сложный запрос. Благодаря этому у вас есть возможность выводить в списке разные дополнительные данные, связанные с основными данными списка.
Однако такая универсальность имеет и оборотную сторону. Желание «показать сразу всё» может приводить вас к значительному усложнению запроса. В результате вы будете получать неэффективные планы выполнения и, как результат, снижение производительности при отображении и пролистывании списка.
Кроме этого есть ряд прикладных задач, в которых алгоритм отбора и оформления данных списка довольно сложен. В этих случаях возможностей произвольного запроса и условного оформления просто не хватает. Хочется иметь более «свободный» и более «точный» инструмент, который позволит сделать «что угодно» и «только там, где нужно».
Событие ПриПолученииДанныхНаСервере
Специально для этих целей мы реализовали новый обработчик ПриПолученииДанныхНаСервере(). Он добавлен в расширение таблицы, отображающей динамический список.
Этот обработчик вызывается на сервере после того, как динамический список получил и оформил для отображения очередную порцию данных.
Важная особенность заключается в том, что в этом обработчике недоступен контекст формы. Вы можете оперировать только коллекцией тех строк списка, которые получены из базы, уже отобраны и оформлены в соответствии с настройками динамического списка.
Вы можете изменить данные, находящиеся в этих строках, или применить к ячейкам собственное оформление. Доступны такие возможности оформления как ЦветФона, ЦветТекста, Шрифт, ГоризонтальноеПоложение, Видимость, Доступность, Отображать, Текст и Формат.
Также, при необходимости, вы можете посмотреть и проанализировать копию полных настроек динамического списка. Но изменить настройки вы не сможете.
Простейший сценарий использования
Проще всего понять назначение этого обработчика на примере. Пример заключается в том, чтобы в списке товаров показать их остатки из регистра накопления. Количество меньше некоторого значения выделить красным цветом.
До сих пор эта задача решалась левым соединением в запросе динамического списка, и условным оформлением списка, устанавливаемым в конфигураторе.
Теперь она решается так. Стандартный запрос списка не усложняется, в него добавляется только фиктивное поле Остаток.
А в обработчике ПриПолученииДанныхНаСервере() только для полученных строк вычисляются остатки. И тут же маленькие остатки выделяются красным.
Здесь, методом ПолучитьКлючи(), из коллекции строк динамического списка вы получаете их ключи (ссылки), и передаёте эти ключи в запрос остатков.
Затем, при обходе результатов запроса, вы получаете нужные строки по ключу, в колонку Остаток помещаете значение, и устанавливаете оформление этого поля, если нужно.
В результате пользователь видит следующий список:
В чём преимущество такого варианта?
Во-первых, запрос списка остаётся простым. Или он не остаётся простым, но количество соединений в нём уменьшается. А это значит, что для него, с большой долей вероятности, будет построен хороший план.
Во-вторых, получение остатков в обработчике будет выполняться только один раз, в то время как запрос списка может быть выполнен несколько раз (в зависимости от настроек списка и сценария листания).
И, в-третьих, новый обработчик выполняется уже после того, как основные данные получены из базы и прошли проверку прав. Это значит, что в некоторых сценариях получение связанных данных в обработчике можно выполнять в привилегированном режиме, без проверки прав. Это ускоряет работу списка.
Ограничения на изменяемые и добавляемые поля
Тот факт, что в обработчике вы можете изменить значения полей списка, несет в себе особенность, которую нужно всегда учитывать.
Если не предпринять дополнительных мер, то пользователь может быть сильно удивлён результатами группировки, сортировки или отбора (в том числе и поиска) по тем полям, которые вы изменили. Ведь эти действия будут выполняться по исходным данным, получаемым запросом, а не по тем данным, которые видит пользователь.
Поэтому в тех случаях, когда вы изменяете значения полей, не забывайте исключить их из группировки, порядка и отбора. Специально для этого мы реализовали три новых метода.
Кроме этого, возможно, в некоторых сценариях имеет смысл визуально выделить такие колонки в таблице, чтобы пользователи видели, что эти колонки «особенные», не такие, как все.
1С форма редактирования списка значений
Иногда возникают такие ситуации, когда необходимо обработать события при редактировании списка значений. Кроме того для некоторых подбираемых элеметов не задается владелец, например для характеристик, и они вываливаются всем списком, что не очень удобно. Но поскольку стандартный диалог реализован на уровне платформы, программист не может внести в него никаких изменений. Для таких случаев я и сделал аналог стандартного диалога – он полностью повторяет его функционал, но позволяет при необходимости обрабатывать различные проблемные ситуации.
ОТЛИЧИЯ ОТ СТАНДАРТНОГО ДИАЛОГА
– есть возможность задать свойство ВыборПоВладельцу для ограничения списка элементов, предлагаемых для выбора и подбора (например, может применяться при использовании характеристик в отборах: в стандартном диалоге открывается полный список без установки владельца);
– можно назначать свои обработчики ПриИзменении, НачалоВыбора, Очистка, ОбработкаВыбора, АвтоПодборТекста, ОкончаниеВводаТекста для значений списка (позволяет обработать процесс наполнения списка нужным образом);
ПАРАМЕТРЫ ФОРМЫ
Список – тип «СписокЗначений», в параметр передается список значений, который необходимо редактировать (например, правое значение отбора с сответствующим видом сравнения), наполнение списка зависит от его свойства ТипЗначения;
ВыборПоВладельцу – тип «ЛюбаяСсылка», необязательный параметр, в который может передаваться элемент-владелец, по которому будут выбираться значения (например, элемент плана видов характеристик, для ограничения списка свойств предлагаемых для выбора и подбора);
ОБРАБОТКА РЕЗУЛЬТАТА
Для получения отредактированного списка, необходимо задать владельцем формы поле ввода, значением которого является искомый список.
ПРИМЕР ИСПОЛЬЗОВАНИЯ
Необходимо в отборе отчета, построенного на СКД, ограничить перечень предлагаемых для выбора элементов справочника «Контрагенты» (только юрлица) и их свойств при редактировании списка.
Код в форме настройки отчета:
Попробуем реализовать программную установку значений отбора в форме выбора, получаемой через «Подбор» формы редактирования списка значений. Напрямую повлиять на форму редактирования нельзя, она создается средствами платформы. Сразу же напрашивается вариант создания своей формы редактирования списка, с расширенным функционалом и красивыми кнопками. Но мы пойдем другим путем и попробуем передать параметры отбора в форму выбора необходимого справочника. Так же рассмотрим варианты реализации в обычном и управляемом приложениях.
Реализуем простую конфигурацию с двумя простыми справочниками:
-«Подразделения»;
– «Склады», с реквизитом «Подразделение», тип «Справочник.Подразделения».
Начнем эксперименты с обычного приложения. Добавляем обычную форму выбора для справочника «Склады». Так же добавляем обработку, на форму выносим реквизиты:
– Подразделение, тип «СписокЗначений», тип значений списка «СправочникСсылка.Подразделения»;
– Склад, тип «СписокЗначений», тип значений списка «СправочникСсылка.Склады».
Теперь попробуем реализовать фильтрацию складов. У списка значений есть свойство ДоступныеЗначения, которое позволяет настроить ограничение значений списка, в том числе и в диалоге редактирования. Попробуем реализовать отбор через этот механизм.
Предварительно, в модуле менеджера справочника «Склады» добавлю функцию:
Теперь, при изменении значения реквизита «Подразделение» будем выполнять следующую процедуру:
В результате, получаем следующую картину. Список выбора значений ограничивается по выбранному подразделению, но подбор все равно показывает весь справочник, а выбор значения, не принадлежащего доступным значениям, преобразуется в пустое значение.
Теперь остается применить эти значения к отбору списка формы выбора справочника. При открытии через «Подбор» в форму выбора, как владелец формы, передается табличное поле формы редактирования списка. Табличное поле, в свою очередь, содержит колонку, с элементом управления, у которого свойство «СписокВыбора» как раз и содержит необходимый нам список значений. Добавляем следующий код в процедуру ПриОткрытии обычной формы выбора справочника «Склады»:
В результате, мы и выбираемые значения ограничили, и отбор в подборе установили.
Теперь реализуем тоже самое на управляемых формах. Создаем форму с такими же реквизитами.
Видим, что варианты для выбора в списке мы ограничили, но кнопка подбора не активна. Поэтому реализация задачи через ДоступныеЗначения в нашем случае не подходит.
Переделаем процедуру ПодразделениеПриИзмененииНаСервере, будем использовать свойство ПараметрыВыбора элемента формы:
Подбор стал активен, при добавлении элемента списка на форму выбора накладывается отбор, но форма выбора, вызываемая через подбор все равно показывает все значения справочника.
Отойдем ненадолго от наложения отбора и выполним небольшую оптимизацию. Сейчас мы передаем в параметр выбора список значений, формируемый на сервере. Размер этого списка, в свою очередь может быть довольно таки массивным, например для номенклатуры. Соответственно, мы можем получить значимую задержку при его формировании и передаче клиенту. Управляемые формы позволяют уйти от предварительного формирования набора значений для фильтрации.
Реализуем отбор по подразделению склада на стороне клиента:
В форме выбора добавляем процедуру ПриОткрытии, так же смотрим владельца формы (так же можно посмотреть через родителей владельца, как называется системная форма списка :)), читаем параметры выбора и устанавливаем отбор на список:
Готово, после таких нехитрых манипуляций у нас и добавление элементов, и подбор значений ограничены выбранными элементами.
В предыдущей статье «Изучаем список значений 1С» я показал, каким образом можно программного работать со списком значений. Мы научились добавлять, вставлять и загружать нужные элементы в список. Но со списком значений можно работать на управляемой форме 1С, когда он используется в качестве реквизита этой формы. В этой статье мы разберем вопросы работы со списком значений на форме.
На управляемой форме 1С список значений можно разместить в качестве реквизита управляемой формы.
Мы уже знаем, что каждый элемент списка значений содержит значения типа Элемент списка значений, но можно задать тип данных, которые будут содержаться в этом элементе. Делается это при помощи свойства реквизита – тип значения. В этом случае, все элементы заданного списка значений будут одного типа.
Реквизит с типом список значений можно разместить на форме, где он отобразится или виде таблицы или в виде поля. Для размещения реквизита достаточно мышкой просто перенести его в элементы управляемой формы.
После начала размещения, будет предложено выбрать тип нового элемента. Можно выбрать или таблицу, или поле.
Если мы выберем тип Таблица, то будет размещен элемент с типом Таблица, где в качестве колонок можно размещать соответствующие свойства списка значений.
Теперь на форме можно работать с этим списком, выбирая нужные объекты, указанного типа.
С реквизитом формы мы можем работать как с обычным списком значений. Например, заполним созданный нами список всеми складами, которые можно использовать.
В этом случае, список заполниться сразу при открытии формы.
Более подробно о работе со списками значений и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655