Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1S_8.2_Praktikum

.pdf
Скачиваний:
28
Добавлен:
11.06.2022
Размер:
18.49 Mб
Скачать

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

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

ДанныеФормыКоллекция – это список типизированных значений, похожий на массив. Доступ к элементу коллекции осуществляется по индексу или идентификатору. Доступ по идентификатору может отсутствовать в некоторых случаях. Это обусловлено типом прикладного объекта, который представлен этой коллекцией. Идентификатором может быть любое целое число. Таким типом представляется, например, в форме табличная часть.

ДанныеФормыСтруктураСКоллекцией – это объект, который представлен в виде структуры и коллекции одновременно. С ним можно обращаться как с любой из этих сущностей. Таким типом представляется, например, в форме набор записей.

ДанныеФормыДерево – объект предназначен для хранения иерархических данных.

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

Например, если реквизит Объект содержит данные элемента справочника Товары, то в колонке Тип отображается не настоящий тип этого реквизита формы – ДанныеФормыСтруктура, а тип прикладного объекта, данные которого содержатся в этом реквизите – СправочникОбъект.Клиенты. Причем чтобы было понятно, что это «ненастоящий» тип реквизита, тип прикладного объекта показывается в круглых скобках.

Т.о. форма содержит некоторую проекцию данных прикладных объектов в виде своих собственных типов данных и автоматически выполняет преобразование между ними при необходимости.

481

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

Для конвертирования прикладных объектов в данные формы и обратно существует набор глобальных методов:

ЗначениеВДанныеФормы() – преобразует объект прикладного типа в данные формы.

ДанныеФормыВЗначение() – преобразует данные формы в объект прикладного типа.

Аналогичные методы, предназначенные для конвертирования значений реквизитов формы в прикладные объекты и обратно, существуют и у самой управляемой формы:

ЗначениеВРеквизитФормы() – преобразует объект прикладного типа в реквизит управляемой формы.

РеквизитФормыВЗначение() – преобразует реквизит в значение прикладного типа.

Методы, работающие с прикладными объектами, доступны только в серверных процедурах формы.

При выполнении стандартных действий формы с основным реквизитом (открытие формы, выполнение команды Записать и т.д.) преобразование выполняется автоматически.

Связанные списки

При создании прикладных решений часто возникает необходимость из какой-либо формы прикладного объекта перейти к информации, логически связанной с этим объектом.

Это может быть, например, список подчиненного справочника; регистры, в которых объект производит движения; регистры, где измерение с типом этого объекта указано как ведущее; критерии отбора, в которые входит этот тип; объекты, которые можно ввести на основании этого типа и т.д.

482

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

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

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

В режиме Конфигуратор

Для примера откроем форму документа ОказаниеУслуги.

Влевом верхнем окне перейдем на закладку Командный интерфейс.

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

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

483

Врежиме 1С:Предприятие

Врежиме отладки откроем один из документов Оказание услуги.

Впанели навигации формы мы видим команды перехода к списку

записей регистров, связанных с открытым документом.

Например, выполним команду Стоимость материалов и перейдем к движениям, которые произвел в этом регистре наш документ.

Оформление строк в форме списка

Одним из полезных свойств формы списка является возможность настройки оформления его строк. Для иллюстрации этой возможности мы воспользуемся формой списка справочника Номенклатура и придадим ей нестандартный вид.

484

В режиме Конфигуратор

Откроем в конфигураторе форму списка справочника Номенклатура и создадим обработчик события формы

ПриСозданииНаСервере.

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

СписокСправочника = Элементы.Список;

// Задать режим отображения справочника СписокСправочника.Отображение = ОтображениеТаблицы.Список;

// Скрыть линии сетки СписокСправочника.ВертикальныеЛинии = Ложь; СписокСправочника.ГоризонтальныеЛинии = Ложь;

КонецПроцедуры

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

Затем мы скрываем линии, разделяющие колонки и строки таблицы списка.

Теперь настроим условное оформление строк списка. Для этого вызовем окно свойств основного реквизита формы Список.

В строке Настройка списка нажмем Открыть.

485

Поскольку реквизит имеет тип ДинамическийСписок, который построен на основе системы компоновки данных, то мы можем настроить для него Отбор, Порядок, Группировку и УсловноеОформление,

аналогично тому, как это делалось в отчетах.

В открывшемся окне настройки динамического списка перейдем на закладку Условное оформление и нажмем кнопку Добавить в

командной панели окна. Нажмем кнопку выбора в поле Оформление и установим сиреневый цвет фона. Нажмем ОК.

Затем укажем условие, при наступлении которого будет применяться оформление, то есть когда строки списка будут сиреневыми.

Нажмем кнопку выбора в поле Условие и в появившемся окне добавим Новый элемент отбора. Для этого нажмем кнопку Добавить и укажем в графе Левое значение – поле ВидНоменклатуры, в графе Вид сравнения Равно, а в графе Правое значение выберем Перечисление.ВидыНоменклатуры.Услуга.

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

Поскольку мы хотим выделить полностью строки, а не отдельные поля списка, то список оформляемых полей можно оставить пустым. Нажмем ОК.

486

В режиме 1С:Предприятие

Запустим режим отладки и откроем список номенклатуры.

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

Пользователь может изменить заданное оформление списка, выполнив команду Все действия – Настроить список… Откроется окно настройки

487

динамического списка, аналогичное окну в конфигураторе, где он может задать свое условное оформление списка и другие настройки.

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

Но выполняется это уже с помощью условного оформления самой формы. Т.е. в дереве элементов формы нужно выделить корневой элемент и в палитре свойств открыть ссылку УсловноеОформление.

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

Вычисляемые колонки в списках

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

Мы рассмотрим эту ситуацию на примере отображения актуальной цены в списке справочника Номенклатура.

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

В режиме Конфигуратор

Откроем в конфигураторе форму списка справочника Номенклатура и вызовем свойства основного реквизита формы

Список.

До сих пор в свойствах динамического списка была указана Основная таблица Справочник.Номенклатура, и список формировался путем запроса к этой таблице.

Нам нужна еще связанная информация из таблицы регистра сведений Цены.СрезПоследних. Поэтому установим флажок

ПроизвольныйЗапрос и в строке Настройка списка нажмем Открыть.

488

Откроется окно настройки динамического списка. На закладке Запрос мы видим запрос, в котором выбираются все поля из таблицы

Справочник.Номенклатура.

Изменим его. Для этого нажмем Конструктор запроса.

489

Добавим в список таблиц Цены.СрезПоследних и выберем из нее поле

Цена.

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

Поставим флажок Все у таблицы Справочник.Номенклатура и снимем его у таблицы Цены.СрезПоследних.

Тем самым мы задаем, что в списке номенклатуры будут отражены все позиции, даже те, по которым не установлены цены.

Создание запроса окончено, нажмем ОК. Текст запроса нам уже знаком и понятен, поэтому не будет на нем останавливаться.

Теперь колонка Цена, содержащая актуальную цену, будет отображаться в списке номенклатуры, когда мы поместим ее в форме списка.

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

Для этого перейдем на закладку Условное оформление. Там мы видим созданное нами ранее условное оформление для строк списка. Нажмем кнопку Добавить в командной панели окна.

490

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
  • #
    11.06.202218.49 Mб281S_8.2_Praktikum.pdf
  • #
    11.06.202268 Кб7доп ер диаграмаа.vsdx
  • #
    11.06.202260.24 Кб4ер диаграмма.vsdx
  • #
    11.06.20228.63 Кб7Заказы.xlsx
  • #
    11.06.20228.61 Кб4Рабочее место.xlsx
  • #
    11.06.20228.56 Кб4Склад.xlsx