close

Вход

Забыли?

вход по аккаунту

?

Лабраб11(ИС)

код для вставкиСкачать
 2.11 Лабораторная работа № 11. Планы видов характеристик.
Цель работы. Получение навыков конфигурирования и использования прикладных объектов подсистемы "Бухгалтерский учет".
2.11.1 Теоретические сведения
Основная задача любой учетной системы - управление и контроль за работой объекта учета. Задача бухгалтерского учета - учет операций хозяйственной деятельности всего предприятия в целом. Цель учета - контроль за финансово - хозяйственной деятельностью и управление всем предприятием посредством замкнутой системы показателей.
2.11.1.1 Планы видов характеристик
Сейчас мы познакомимся с новым объектом конфигурации - планом видов характеристик - и узнаем, каким образом можно использовать этот объект для расширения возможностей нашей конфигурации.
Задача, которую мы перед собой поставим, будет заключаться в следующем: мы создадим механизм, который позволит пользователю произвольным образом описывать материалы, и, что самое главное, вести учет в разрезе всех тех описаний, которые могут быть заданы пользователем.
Описывать материалы пользователь сможет следующим образом: для каждого материала будет возможность создать некоторые (произвольные) характеристики этого материала (например, цвет, производитель и пр.). Затем, при поступлении материалов можно будет задать конкретные значения интересующих характеристик (например, при поступлении электрических кабелей можно будет указать, что они белого цвета и их сечение равно 2,5 мм2, а при поступлении резиновых шлангов указать, что они черного цвета и произведены на фирме "Fagumit Sp.").
В дальнейшем всегда можно будет получить информацию о том, сколько и каких материалов есть у нас, скажем, белого цвета, или сколько было израсходовано черных резиновых шлангов.
Поскольку заранее не известно, какими именно характеристиками пользователь захочет описать тот или иной материал, мы должны предоставить ему некоторый механизм, позволяющий создавать любые характеристики и, что самое важное, указывать, какой тип значения должен быть у этих характеристик. Тогда при задании значений определенной характеристики пользователь сможет выбирать значения строго в соответствии с указанным типом.
Такую возможность описания характеристик как раз и обеспечивает объект конфигурации "План видов характеристик", с которым мы сейчас познакомимся.
Объект конфигурации "План видов характеристик" является прикладным объектом и предназначен для описания структуры хранения информации о характеристиках, создаваемых пользователем. На основе объекта конфигурации "План видов характеристик" платформа создает в базе данных информационную структуру, в которой может храниться информация о том, какие существуют виды характеристик и какой тип должно иметь значение характеристики каждого вида.
В сущности, план видов характеристик очень напоминает справочник. Однако план видов характеристик имеет более узкую "специализацию": он хранит, по сути, информацию только о том, какими видами характеристик может описываться какой-либо объект базы данных. Эта информация состоит из названия вида характеристики и ее типа. Разработчик и, что самое важное, пользователь могут задать в нем любое необходимое им количество видов характеристик.
Для того чтобы разработчик мог задать некий "набор" возможных типов значений, которые могут принимать виды характеристик, у объекта конфигурации "План видов характеристик" существует свойство "Тип значения характеристик". Это свойство определяет составной тип данных, в который входят все типы, которые могут понадобиться при указании типа значения характеристики.
Кроме этого может случиться так, что пользователю станет недостаточно тех типов данных, которые существуют в конкретной системе (например, он захочет вести учет в разрезе цвета товаров, а справочник "Цвет" в конфигурации отсутствует). В этом случае он сможет воспользоваться неким вспомогательным справочником, который разработчик создаст заблаговременно и укажет в качестве свойства объекта конфигурации "План видов характеристик" - дополнительные значения характеристик.
Тогда пользователь, создав новый вид характеристики "Цвет", сможет создать необходимые значения этого вида характеристики в справочнике дополнительных значений характеристик.
Примечательно, что этот справочник является подчиненным плану видов характеристик. Таким образом, если затем пользователь пожелает создать новый вид характеристик "Запах" и создать его значения, он будет создавать их в том же самом справочнике дополнительных характеристик, и они не будут "смешиваться" со значениями цвета.
План видов характеристик не имеет внутренних предопределенных механизмов привязки вида характеристики к тому объекту, который должен описывать этот вид характеристики. Он лишь предоставляет возможность разработчику и пользователю описать некий набор характеристик и задать их тип. Каким образом хранить соответствие конкретного вида характеристик или значения характеристик конкретному объекту базы данных, - решает сам разработчик в зависимости от создаваемого прикладного решения.
С точки зрения реализации пример, который мы будем рассматривать далее, является более сложным, чем остальные, поэтому сначала мы объясним логическую связь между объектами, которые будут использоваться в этом примере.
Для реализации этого примера нам понадобятся три новых объекта конфигурации. Прежде всего, это план видов характеристик, который будет хранить виды характеристик, которыми в принципе можно описывать материалы. Затем это справочник, подчиненный справочнику "Номенклатура", элементы которого будут идентифицировать партии материалов с некоторым фиксированным набором значений характеристик. И третий объект - это регистр сведений, в котором собственно и будет храниться соответствие конкретных значений характеристик некоторому варианту материала.
В результате использования подобной логической структуры объектов мы получим возможность описывать каждую поступающую партию материала, любым количеством видов характеристик, поскольку это соответствие будет храниться в регистре сведений. И вместе с тем получим возможность вести учет в разрезе видов характеристик, добавив в регистры накопления еще одно измерение для хранения ссылки на элемент справочника, подчиненного справочнику "Номенклатура".
Рис. 139 Связь справочника, плана видов характеристик и регистров
Теперь для того, чтобы узнать остатки материалов, обладающих некоторым значением характеристики, достаточно будет выбрать из регистра сведений все элементы подчиненного справочника, обладающие таким значением характеристики, и затем по ним и их владельцам получить остатки регистра накопления.
2.11.1.2 Создание дополнительных объектов
Нам понадобится создать несколько новых объектов конфигурации. Создадим объект конфигурации "Справочник" с именем "ВариантыНоменклатуры" и укажем, что он будет подчинен справочнику "Номенклатура". Рис. 140 Создание справочника "ВариантыНоменклатуры"
Рис. 141 Задание подчинения справочника "ВариантыНоменклатуры"
Затем создадим еще один объект конфигурации "Справочник" с именем "ДополнительныеСвойстваНоменклатуры".
Рис. 142 Создание справочника "ДополнительныеСвойстваНоменклатуры"
После этого создадим объект конфигурации "План видов характеристик" с именем "СвойстваНоменклатуры". Тип значения характеристик установим следующим:
• Число, длина 15, точность 3,
• Строка, длина 25,
• Дата,
• Булево,
• СправочникСсылка.ДополнительныеСвойстваНоменклатуры. Рис. 143 Задание составного типа данных для плана видов характеристик
Справочнику "ДополнительныеСвойстваНоменклатуры" укажем владельца - план видов характеристик "СвойстваНоменклатуры".
Рис. 144 Задание владельца справочнику "ДополнительныеСвойстваНоменклатуры "
Рис. 145 Задание владельца справочнику "ДополнительныеСвойстваНоменклатуры"
После этого определим, что дополнительные значения характеристик плана видов характеристик будут располагаться в справочнике "ДополнительныеСвойстваНоменклатуры".
Рис. 146 Создание плана видов характеристик
В заключение создадим объект конфигурации "Регистр сведений" с именем "ЗначенияСвойствНоменклатуры".
Измерения регистра:
• "НаборСвойств", ведущее, тип "СправочникСсылка. ВариантыНоменклатуры",
• "ВидСвойства", тип "ПланВидовХарактеристикСсылка. СвойстваНоменклатуры".
Ресурс регистра:
• "Значение", тип "Характеристика.СвойстваНоменклатуры".
Рис. 147 Создание регистра сведений "ЗначенияСвойствНоменклатуры"
Рис. 148 Задание измерений и ресурсов регичтра сведений
Обратите внимание, что мы имеем возможность определить тип значения ресурса регистра, как "Характеристика.<имя>". По сути, это определение представляет собой составной тип данных, как он задан в типе значения соответствующего плана видов характеристик. To есть, ресурс регистра может иметь значение любого типа из тех, которые описаны в типе значения плана видов характеристик.
2.11.1.3 Доработка справочника "Номенклатура"
Для доработки справочника "Номенклатура" прежде всего, в нем надо обеспечить возможность редактирования варианта материала. Для этого укажем, что справочник "Номенклатура" будет редактироваться теперь обоими способами, в списке и в диалоге, и создадим основную форму элемента при помощи конструктора. Немного раздвинем форму по ширине и высоте и добавим в нее панель ("Форма | Вставить элемент управления | Панель"):
Рис. 149
После того, как мы слегка изменим положение любой из границ панели, появится вопрос:
Рис. 150
На этот вопрос мы ответим утвердительно, и все элементы управления переместятся в добавленную панель.
Теперь мы скорректируем размеры панели и добавим в нее новую страницу (добавление страницы: контекстное меню правой кнопки мыши на поле формы - "Добавить страницу..."):
Рис. 151 Добавление второй страницы
Зададим имя и заголовок новой страницы - "Свойства", а первую страницу также переименуем в "Основные" и зададим ей такой же заголовок (группа свойств "Текущая страница" в палитре свойств формы):
Рис. 152 Переименование страницы
После этого выделим все элементы управления, расположенные панели, и выполним команду "Форма | Центрирование | Центрировать по вертикали".
Теперь перейдем на страницу "Свойства" и добавим надпись "НадписьВариантыНоменклатуры" с заголовком "Варианты номенклатуры:". Укажем для нее начертание шрифта "Жирный".
Рис. 153 Размещение надписи
Под этой надписью расположим табличное поле с командной панелью с именем "Варианты" и типом "СправочникСписок. ВариантыНоменклатуры". Рис. 154 Размещение табличного поля
Из табличного поля удалим колонку "Код". Рис. 155 Удаление колонки "Код"
Для этого табличного поля установим свойство "Связь по владельцу" - "СправочникОбъект.Ссылка".
Рис. 156 Установки связи по владельцу
Установка этого свойства будет обеспечивать нам то, что для источника данных этого поля - реквизита формы "Варианты", имеющего тип "СправочникСписок.ВариантыНоменклатуры", - значение отбора по владельцу всегда будет равно ссылке на редактируемый элемент справочника "Номенклатура". Иными словами, список справочника, содержащийся в реквизите формы "НаборСвойств" всегда будет содержать только элементы, подчиненные редактируемому элементу справочника "Номенклатура". А значит и табличное поле "Варианты", для которого этот реквизит является источником данных, будет отображать только элементы, подчиненные редактируемому элементу справочника "Номенклатура".
Ниже разместим аналогичным образом еще одну надпись "НадписьЗначенияСвойств" с заголовком "Значения свойств:" и начертанием шрифта "Жирный".
Под ней расположим табличное поле с командной панелью с именем "Свойства" и типом "РегистрСведенийСписок. ЗначенияСвойствНоменклатуры".
Рис. 157 Вставка табличного поля
Рис. 158 Размещение средств управления на панели
Для колонки "НаборСвойств" снимем флаг "Видимость", а для поля ввода в колонке "Значение" установим связь по типу -"ЭлементыФормы.Свойства.ТекущиеДанные.ВидСвойства". Связь по типу будет обеспечивать нам то, что тип значений, вводимых в это поле ввода, будет ограничен только типом характеристики, выбранной в поле "Вид свойства". Однако этим мы никак не можем повлиять на само значение, хранимое в этом поле. Если не предпринять никаких дополнительных действий, то получится, что в случае, когда в поле "Значение" было введено какое-либо значение, поменять его на значение другого вида характеристики не удастся. При выборе другого вида характеристики будет возникать несоответствие между типом хранимого значения и типом, которым ограничен ввод в элементе управления. В этом случае, естественно, система будет предлагать вводить тот тип, который имеет хранимое значение.
Чтобы избежать такой ситуации, нам нужно будет при смене значения в поле "Вид свойства" привести значение поля "Значение" к типу характеристики, выбранной в поле "Вид свойства".
Поэтому для поля ввода в колонке "Вид свойства" создадим обработчик события "При изменении()":
Процедура СвойстваВидСвойстваПриИзмененииЭлемент)
ДанныеВидСвойства = ЭлементыФормы.Свойства. ТекущиеДанные.ВидСвойства;
ЭлементыФормы.Свойства.ТекущиеДанные.Значение = ДанныеВидСвойства.ТипЗначения.
ПривестиЗначение (ЭлементыФормы.
Свойства.ТекущиеДанные.Значение);
КонецПроцедуры Теперь нам нужно сделать так, чтобы в табличном поле "Свойства" отображались записи регистра сведений, относящиеся только к выбранному в верхнем табличном поле элементу справочника "ВариантыНоменклатуры".
Поэтому для табличного поля "Варианты" создадим обработчик события "При активизации строки()":
ПроцедураВариантыПриАктивизацииСтрокиСЭлемент)
ЭлементыФормы.Свойства.Значение.Отбор.НаборСвойств
.Установить(Элемент.ТекущиеДанные.Ссылка, Истина);
КонецПроцедуры
Кроме этого, чтобы не отображать весь регистр при открытии формы, создадим обработчик события формы "ПриОткрытии()", содержащий следующий текст:
Процедура ПриОткрытии()
ЭлементыФормы.Свойства.Значение.Отбор. НаборСвойств.Установить(,Истина);
КонедПроцедуры
2.11.1.4 Доработка справочника "ВариантыНоменклатуры" Теперь нам следует доработать справочник "ВариантыНоменклатуры" таким образом, чтобы пользователь имел возможность создавать новые свойства материалов не только при редактировании самого материала, но и в процессе ввода документов, когда в табличную часть подбирается набор свойств. Поэтому для справочника "ВариантыНоменклатуры" укажем, что он будет редактироваться обоими способами (как в списке, так и в диалоге) и создадим с помощью конструктора основную форму элемента.
Доработка формы элемента справочника "ВариантыНоменклатуры" будет сводиться, по большому счету, к тем же действиям, которые мы выполнили с формой справочника "Номенклатура". В форме нам нужно будет расположить табличное поле, которое должно отображать существующие в регистре сведений записи о значениях свойств для этого элемента справочника. Откроем основную форму элемента справочника "ВариантыНоменклатуры" и раздвинем форму вниз. На освободившемся пространстве поместим табличное поле с именем "Свойства", типом "РегистрСведенийСписок. ЗначенияСвойствНоменклатуры" и командной панелью.
Рис. 159 Вставка табличного поля "Свойства"
Для колонки "НаборСвойств" снимем флаг видимости:
Рис. 160 Форма элемента в конфигураторе
Затем для поля ввода, расположенного в колонке "Значение" зададим связь по типу "ЭлементыФормы.Свойства.ТекущиеДанные. ВидСвойства".
Для поля ввода, расположенного в колонке "ВидСвойства" создадим обработчик события "ПриИзменении":
Процедура СвойстваВидСвойстваПриИзменении(Элемент)
ДанныеВидСвойства = ЭлементыФормы.Свойства. ТекущиеДанные.
ВидСвойства;
ЭлементыФормы.Свойства.ТекущиеДанные.Значение = ДанныеВидСвойства.ТипЗначения.
ПривестиЗначение( ЭлементыФормы.Свойства. ТекущиеДанные.Значение);
КонецПроцедуры
Теперь необходимо сделать так, чтобы при открытии формы устанавливался нужный нам отбор, а также, в случае, если мы добавляем новый элемент справочника, чтобы отбор устанавливался и после того, как элемент будет записан. Для этого мы воспользуемся возможностью назначения обработчика события изменения данных, который будет отслеживать изменения ссылки на редактируемый элемент справочника. Прежде всего, создадим обработчик события "ПриИзмененииСсылки()", в котором установим требуемый нам отбор:
Процедура ПриИзмененииСсылки(ПутьКДанным)
ЭлементыФормы.Cвойства.Отбор.Ha6opCвойств.Установить
(ЭлементыФормы.Cвойства.Cсылка,Истина);
КонецПроцедуры
Затем в тело модуля добавим вызов этого обработчика:
ПодключитьОбработчикИзмененияДанных (
"СправочникОбъект.Ссылка","ПриИзмененииСсылки");
И в заключение нужно предусмотреть возможность того, что пользователь может начать задавать новые значения свойств, не записав еще сам элемент справочника "НаборыСвойств". Поэтому создадим обработчик события табличного поля "ПередНачаломДобавления":
Процедура СвойстваПередНачаломДобавления(Элемент, Отказ,
Копирование)
Если ЭтоНовый() Тогда
Записать();
КонецЕсли;
КонецПроцедуры
2.11.1.5 Доработка регистра "ОстаткиНоменклатуры"
Для того чтобы обеспечить учет материалов по значениям характеристик нам нужно будет изменить структуру регистра накопления "ОстаткиНоменклатуры" и добавить в него новое измерение "НаборСвойств" с типом СправочникСсылка.ВариантыНоменклатуры:
Рис. 161 Добавление измерения в регистр "ОстаткиНоменклатуры"
Аналогичным образом поступают с регистром сведений "ЦеныПоставщиков", добавляя в него в него новое измерение "НаборСвойств".
2.11.1.6 Доработка документа "ПриходнаяНакладная"
Последнее, что нам осталось - доработать документ "ПриходнаяНакладная". Для того чтобы при оприходовании товаров пользователь мог указывать набор свойств для каждого приходуемого материала, добавим в табличную часть документа новый реквизит "НаборСвойств" с типом СправочникСсылка.ВариантыНоменклатуры:
Рис. 162 Добавление реквизита в табличную часть документа
После этого расположим этот реквизит в табличном поле формы документа (правая кнопка мыши, из контекстного меню выбрать "Размещение данных..."):
Рис. 163 Доработка формы документа "Приходная накладная"
Для поля ввода, расположенного в колонке "НаборСвойств" снова воспользуемся свойством "Связь по владельцу" -
"ЭлементыФормы.Материалы. ТекущиеДанные.Материал". Теперь при выборе в этом поле ввода будет всегда открываться список элементов справочника "ВариантыНоменклатуры", подчиненных материалу, выбранному в колонке "Материал".
В заключение откроем процедуру обработки проведения в модуле документа и добавим к формируемым движениям присвоение значения измерению "НаборСвойств":
Рис. 164 Редактирование процедуры "ОбработкаПроведения()"
Теперь запустим 1С:Предприятие в режиме отладки и создадим несколько наборов свойств для наших материалов.
2.11.1.7 Создание наборов свойств
Откроем элемент справочника "Номенклатура" - "Кабель электрический". Перейдем на закладку "Свойства" и создадим набор свойств этого элемента под названием "Белый". Он будет состоять их следующих характеристик:
* "Цвет" - "Белый",
* "Сечение, мм2" - 2,5.
Затем создадим набор свойств для элемента справочника "Номенклатура" - "Шланг резиновый".
Этот набор свойств будет называться "Польша" и состоять из следующих характеристик:
* "Цвет" - "Черный",
* "Производитель" - "Fagumit":
Рис. 165 Создание набора свойств для элемента номенклатуры
Теперь откроем документ "ПриходнаяНакладная" №2, где были оприходованы эти материалы, и укажем, что был закуплен белый электрический кабель в количестве 2 шт. и польский резиновый шланг.
Кроме этого посмотрим на записи, которые содержатся в регистре сведений "ЗначенияСвойствНоменклатуры":
Затем скопируем первую строку документа и укажем, что был закуплен еще и черный электрический кабель в количестве 3 шт. (в процессе ввода нам придется создать еще один набор свойств для электрического кабеля - "черный", у которого "Цвет" - "Черный" и "Сечение" - 2,5):
Проведем документ и посмотрим на движения документа по регистру "ОстаткиМатериалов":
Рис. 166 Движения приходной накладной по регистру
2.11.1.8 Отчет "ОстаткиМатериаловПоСвойствам"
Для полного завершения картины мы создадим отчет, который будет показывать нам наличие материалов с теми или иными свойствами.
Создадим новый объект конфигурации "Отчет" и назовем его "ОстаткиМатериаловПоСвойствам". Запустим конструктор выходной формы, и займемся конструированием запроса.
Исходными данными для нашего запроса будут являться материал, свойство и значение свойства. Причем нужно предусмотреть возможность того, что материал выбираться не будет, а будут указываться только свойство и его значение.
Таким образом, алгоритм получения результирующих данных будет распадаться на две части: сначала, по указанным свойству и его значению, нам нужно будет выбрать все наборы свойств из регистра сведений "ЗначенияСвойствНоменклатуры", которым сопоставлены указанно свойство с указанным значением. Затем, для выбранных наборов свойств и их владельцев нам нужно будет получить остатки и обороты из регистра накопления "ОстаткиНоменклатуры".
Для того чтобы обеспечить такую "двухуровневую" выборку данных, мы воспользуемся возможностью создания вложенных запросов.
Сначала мы создадим вторую часть нашего алгоритма - запрос к регистру накопления "ОстаткиНоменклатуры".
Выберем виртуальную таблицу регистра накопления "ОстаткиНоменклатуры.ОстаткиИОбороты". В параметрах виртуальной таблицы зададим условие отбора таким, что значение измерения регистра "НаборСвойств" должно находиться в списке, передаваемом в качестве параметра "СписокСвойств":
Рис. 167 Задание параметров виртуальной таблицы
"ОстаткиНоменклатуры.ОстаткиИОбороты"
Для формирования такого списка наборов свойств нам и понадобится вложенный запрос к регистру сведений. Но этим мы займемся позже, а сейчас продолжим работать с регистром накопления.
Из виртуальной таблицы регистра накопления "ОстаткиНоменклатуры.ОстаткиИОбороты" выберем следующие поля:
* "ОстаткиНоменклатурыОстаткиИОбороты.Материал",
* "ОстаткиНоменклатурыОстаткиИОбороты.НаборСвойств,
* "ОстаткиНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток",
* "ОстаткиНоменклатурыОстаткиИОбороты.КоличествоПриход",
* "ОстаткиНоменклатурыОстаткиИОбороты.КоличествоРасход",
* "ОстаткиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток":
Рис. 168 Задание таблиц и полей запроса
После этого на закладке "Объединения/Псевдонимы" псевдонимы числовых полей без слова "Количество": Рис. 169 Задание псевдонимов полей
На закладке "Отчет" сбросим флаг "Использовать построитель отчета", а на закладке "ВыходнаяФорма" укажем, что не нужно редактировать в форме параметр "СписокСвойств".
На этом создание первого запроса завершено. Нажмем "ОК".
Откроем модуль формы и удалим элементы текста, которые нам не понадобятся. В процедуре "ДействияФормыОстаткиНоменклатурыПоСвойствамСформировать()" удалим второй параметр при "ОстаткиНоменклатурыПоСвойствам":
Рис. 170 Корректировка текста процедуры
После этого в процедуре "ОстаткиНоменклатурыПоСвойствам" соответствующим образом изменим строку объявления процедуры и затем удалим строку, устанавливающую параметр запроса:
Рис. 171 Корректировка текста процедуры
Теперь мы можем перейти к созданию вложенного запроса, который будет передаваться в условие, заданное в параметре виртуальной таблицы.
Обладая достаточными навыками написания запросов, мы могли бы вручную, вместо "&СписокСвойств" написать текст вложенного запроса. Но, поскольку мы только осваиваем язык запросов, воспользуемся более комфортным способом: создадим текст вложенного запроса при помощи конструктора, а затем просто скопируем его в нужное нам место модуля. Для этого щелкнем правой кнопкой мыши на пустом месте модуля и выполним команду "Текст | Конструктор запроса..."
В качестве исходных данных вложенного запроса выберем таблицу регистра сведений "ЗначенияСвойствНоменклатуры". Из нее выберем единственное поле - "ЗначенияСвойствМатериалов.НаборСвойств".
Рис. 172 Задание таблиц и полей вложенного запроса
Зададим условия выборки. Прежде всего, владелец набора свойств должен быть равен переданному в параметре "Материал" материалу:
ЗначенияСвойствНоменклатуры.НаборСвойств.Владелец = &Материал
Затем укажем, что вид свойства должен быть равен переданному в параметре "ВидСвойства" значению:
ЗначенияСвойствНоменклатуры.ВидСвойства = &ВидСвойства
И в заключение отметим, что значение свойства также будет задаваться параметром "Значение":
ЗначенияСвойствНоменклатуры.Значение = &Значение
Рис. 173 Задание условий отбора вложенного запроса
Вложенный запрос готов. Теперь нажмем кнопку "Запрос", расположенную в нижней части окна конструктора запроса, в ответ откроется окно с текстом только что созданного запроса.
Рис. 174 Вновь построенный вложенный запрос
В этом окне выделим и скопируем текст запроса в буфер обмена Windows. Закроем окно с текстом запроса и нажмем "Отмена" в конструкторе запроса. Теперь вставим текст из буфера обмена вместо параметра в созданный нами ранее запрос:
Рис. 175 Вставка вложенного запроса
Маленькая доработка, которую нам останется сделать, будет заключаться в том, чтобы предусмотреть динамическое формирование текста запроса в зависимости от того, выбрано пользователем значение материала, или нет:
Рис. 176 Доработка текста запроса
После этого добавим в текст модуля установку параметров запроса:
Если Не Материал.Пустая() тогда
Запрос.УстановитьПараметр("Материал", Материал);
КонецЕсли;
Запрос.УстановитьПараметр("ВидСвойства", ВидСвойства);
Запрос.УстановитьПараметр("Значение", Значение);
Результат = Запрос.Выполнить();
Теперь последнее, что нам осталось сделать - это разместить в форме поля для ввода параметров запроса.
Откроем форму отчета и разместим на ней три поля ввода (открыть вкладку "Диалог", затем из главного меню вызвать "Форма | Размещение данных"):
* "Материал" с типом СправочникСсылка.Номенклатура,
* "ВидСвойства" с типом ПланВидовХарактеристикСсылка.СвойстваНоменклатуры,
* "Значение" с типом Характеристика.СвойстваНоменклатуры:
Рис. 177 Вставка диалоговых полей
Рис. 178 Добавленные диалоговые поля
Для поля ввода "Материал" установим свойство "Выбор групп и элементов" как "Элементы".
Для поля ввода "Значение" установим связь по типу с реквизитом "ВидСвойства". А для поля ввода "ВидСвойства" создадим обработчик события "ПриИзменении":
Рис. 179 Обработчик события "ПриИзменении"
На этом создание отчета завершено. Запустим 1С:Предприятие в режиме отладки и посмотрим, какие результаты можно получить с помощью нашего отчета.
Сначала посмотрим, какие у нас есть материалы с сечением 2,5 мм2:
Затем посмотрим, какие у нас есть материалы черного цвета.
И в заключение, чтобы убедиться в правильности работы отчета посмотрим, сколько у нас электрических кабелей черного цвета:
Таким образом, вы убедились в том, что при использовании данной логической схемы мы имеем теперь возможность вести учет материалов в произвольном количестве разрезов свойств и их значений.
Следует заметить, что пример, рассмотренный нами, не является законченным решением для данной конфигурации. Мы лишь продемонстрировали возможность ведения такого учета. Для того, чтобы наша конфигурация могла полноценно использовать свойства материалов, необходимо внести соответствующие изменения в остальные регистры, документы и некоторые отчеты.
2.11.2 Задания на лабораторную работу
1. Создать справочник "ВариантыНоменклатуры", подчиненный справочнику "Номенклатура".
2. Создать справочник "ДополнительныеСвойстваНоменклатуры".
3. Создать план видов характеристик "СвойстваНоменклатуры", сделав его владельцем справочника "ДополнительныеСвойстваНоменклатуры".
4. Создать регистр сведений "ЗначенияСвойствНоменклатуры".
5. Доработать форму элемента справочника "Номенклатура" для обеспечения возможности редактирования вариантов материала.
6. Доработать форму элемента справочника "ВариантыНоменклатуры" для обеспечения возможности создания и редактирования вариантов материала.
7. Доработать регистр накопления "ОстаткиНоменклатуры" для учета движения материалов по свойствам.
8. Доработать регистр сведений "ЦеныПоставщиков" для учета движения материалов по свойствам.
9. Доработать документ "ПриходнаяНакладная" для учета движения материалов по свойствам в регистре "ОстаткиНоменклатуры".
10. Доработать документ "РасходнаяНакладная" для учета движения материалов по свойствам в регистре "ОстаткиНоменклатуры".
11. Доработать документ "ОказаниеУслуги" для учета движения материалов по свойствам в регистре "ОстаткиНоменклатуры".
12. Создать отчет "ОстаткиМатериаловПоСвойствам".
13. Создать справочник "ВариантыКлиентов", подчиненный справочнику "Клиенты".
14. Создать справочник "ДополнительныеСвойстваКлиентов".
15. Создать план видов характеристик "СвойстваКлиентов", сделав его владельцем справочника "ДополнительныеСвойстваКлиентов".
16. Создать регистр сведений "ЗначенияСвойствКлиентов".
17. Доработать форму элемента справочника "Клиенты" для обеспечения возможности редактирования свойств клиентов.
18. Доработать форму элемента справочника "ВариантыКлиентов" для обеспечения возможности создания и редактирования свойств клиентов.
19. Доработать регистр накопления "Покупатели" для учета расчетов с покупателями по свойствам.
20. Доработать документ "РасходнаяНакладная" для учета расчетов с покупателями по свойствам клиентов в регистре "Покупатели".
21. Доработать документ "ОказаниеУслуги" для учета расчетов с покупателями по свойствам клиентов в регистре "Покупатели".
22. Доработать документ "ПриходныйКассовыйОрдер" для учета расчетов с покупателями по свойствам клиентов в регистре "Покупатели".
23. Создать отчет "РасчетыСКлиентамиПоСвойствам".
2.11.3 Контрольные вопросы
1. Предназначение объекта конфигурации "План видов характеристик".
2. Принципиальное отличие плана видов характеристик от справочника.
3. Понятие типа значения характеристик.
4. Предназначение дополнительных значений характеристик.
5. Как, используя план видов характеристик, организовать учет по переменному количеству характеристик?
6. Как создать план видов характеристик?
7. Как добавить новую панель в форму и добавить в нее страницы?
8. Как перенести элементы управления в новую панель?
9. Что такое связь по типу?
10. Что такое связь по владельцу?
11. Как обработать конфликтные ситуации при работе со связью по типу?
12. Как назначить обработчик события изменения данных?
13. Как ограничить выборку виртуальной таблицы результатом вложенного запроса?
Документ
Категория
Без категории
Просмотров
129
Размер файла
12 002 Кб
Теги
лабраб11
1/--страниц
Пожаловаться на содержимое документа