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

1S_8.2_Praktikum

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

Ввод на основании

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

Для каждого объекта конфигурации Документ можно разрешить его ввод на основании других объектов базы данных и возможность являться основанием для других объектов.

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

ОбработкаЗаполнения.

Это можно сделать вручную или с помощью конструктора ввода на основании, который позволяет визуальными средствами конструировать текст обработчика.

Рассмотрим пример, когда документ ОказаниеУслуги буде вводиться на основании справочника Клиенты.

Команда ввода на основании

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

Откроем окно редактирования документа ОказаниеУслуги и добавим новый реквизит документа – ОбъектОснование с типом

СправочникСсылка.Клиенты.

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

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

Нажмем кнопку Редактировать элемент списка над списком Вводится на основании и выберем справочник Клиенты.

471

Затем вызовем конструктор ввода на основании и зададим значения реквизитов документа, создаваемого на основании.

Для этого воспользуемся кнопкой Заполнить выражения. Нажмем ОК.

472

В модуле документа будет сформирован текст обработчика события

ОбработкаЗаполнения.

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) //{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ

//Данный фрагмент построен конструктором.

//При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

Если ТипЗнч(ДанныеЗаполнения) = Тип("СправочникСсылка.Клиенты") Тогда

// Заполнение шапки Клиент = ДанныеЗаполнения.Ссылка;

ОбъектОснование = ДанныеЗаполнения.Ссылка; КонецЕсли; //}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ

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

Как видите, для каждого типа объекта-основания формируется своя ветка условия Если…, в которой происходит заполнение реквизитов нового документа.

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

Запустим режим отладки, откроем список клиентов. В командной панели формы списка справочника Клиенты появилась команда

Создать на основании.

Выделив нужного клиента и выполнив команду Создать на основании

– Оказание услуги, создадим новый документ Оказание услуги, где в качестве клиента будет выбран выделенный в списке справочника клиент.

Введите самостоятельно еще несколько документов на основании какого-либо клиента.

473

Объекты, введенные на основании

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

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

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

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

Критерий отбора

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

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

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

Получение объектов, введенных на основании

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

Раскроем ветвь Общие и создадим новый объект КритерийОтбора с

именем ОказаниеУслуги.

На закладке Данные выберем тип используемого критерия –

СправочникСсылка.Клиенты.

474

На закладке Состав в качестве объектов, входящих в критерий, выберем реквизит ОбъектОснование документа ОказаниеУслуги.

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

Создадим эту форму: в Справочнике Клиенты – создать форму элемента и на закладке Командный интерфейс установим видимость команды Оказание услуги.

475

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

Запустим режим отладки и проверим работу критерия отбора.

В форме списка клиентов выделим клиента Роман, на основании которого мы создавали документы Оказание услуги.

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

Мы видим в этом списке документы Оказание услуги, созданные на основании клиента Роман. К содержимому документа можно перейти, нажав соответствующую ссылку в списке документов. (У меня список пуст, потому что я не проводил документы с его участием, может у вас будет по-другому).

Контрольные вопросы

Что такое подбор.

Как организовать различные виды подбора в табличную часть формы документа.

Что такое ввод на основании

Как организовать ввод одних объектов на основании других.

Как с помощью критерия отбора вывести список объектов введенных на основании текущего объекта.

476

Практическая работа № 26

Приемы разработки форм (2:10)

Вэтой работе мы рассмотрим несколько типичных приемов работы

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

Данные и элементы формы

Важной особенностью платформы 1С:Предприятие 8 является механизм представления данных в формах. Ключевым моментом является то, что принадлежность формы к тому или иному объекту никоим образом не определяет состав данных, которые форма будет отображать.

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

Форма сама по себе и ее элементы обособлены от объектов конфигурации. Для отображения данных в форме, необходимо задать связь самой формы и ее элементов с данными. Если связь не задана, то элементы вообще не будут отображены в форме (кроме элементов оформления).

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

Связь элементов формы с данными, которые они должны отображать, задается в свойстве ПутьКДанным.

Связь формы и ее элементов с данными осуществляется при помощи реквизитов формы. Список существующих реквизитов формы доступен на закладке Реквизиты окна редактора формы.

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

477

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

Например, если основному реквизиту формы указать тип значения

Документ.Объект.ПриходнаяНакладная, то при закрытии формы программа будет запрашивать подтверждение записи и проведения документа.

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

Похожее влияние источники данных оказывают и на элементы формы.

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

РегистрНакопления.ОстаткиНоменклатуры или Справочник.Номенклатура.

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

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

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

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

Нажмем кнопку Далее и кроме полей Наименование и Код включим в состав таблицы Список еще одно поле – ВидНоменклатуры. И затем нажмем Готово.

478

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

Сама форма отображает данные объекта ДинамическийСписок (основной реквизит формы – Список – имеет тип

ДинамическийСписок).

479

Поэтому к свойствам, методам и событиям объекта встроенного языка

УправляемаяФорма добавляется Расширение управляемой формы для динамического списка. В результате этого у формы появляются такие параметры, как ТекущаяСтрока, Отбор и т.п.

Теперь посмотрим на таблицу Список.

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

добавляется Расширение таблицы формы для динамического списка.

В результате у таблицы Список появляются такие свойства, как

АвтоОбновление, ОтображатьКорень и т.д.

И в заключение посмотрим на поле ВидНоменклатуры.

Это поле связано с реквизитом типа

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

Поэтому к свойствам, методам и событиям объекта встроенного языка

ПолеФормы добавляется Расширение поля формы для поля ввода.

Типы данных формы

В управляемой форме можно выделить следующие категории типов, с которыми она работает:

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

СправочникСсылка.<имя>, ГрафическаяСхема, ТабличныйДокумент и т.д.

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

ДанныеФормыСтруктура, ДанныеФормыКоллекция и другие.

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

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

480

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
  • #
    11.06.202218.49 Mб261S_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