1С-Предприятие 8.0. Практическое пособие разработчика

       

Доработка справочника Номенклатура


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

Вставить элемент управления
Панель):


[261]

После того, как мы слегка изменим положение любой из границ панели, появится вопрос:

На этот вопрос мы ответим утвердительно, и все элементы управления переместятся в добавленную панель:


[262]

Теперь мы скорректируем размеры панели и добавим в нее новую страницу (добавление страницы – контекстное меню правой кнопки мыши на поле формы

Добавить страницу...):

Зададим имя и заголовок новой страницы – "Свойства", а первую страницу также переименуем в "Основные" и зададим ей такой же заголовок (группа свойств "Текущая страница" в палитре свойств формы):


[263]



После этого выделим все элементы управления, расположенные на панели, и выполним команду Форма

Центрирование
Центрировать по вертикали:

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


[264]

Под этой надписью расположим табличное поле с командной панелью с именем "Варианты" и типом СправочникСписок.ВариантыНоменклатуры. Из табличного поля удалим колонку "Код". Для этого табличного поля установим свойство "Связь по владельцу" – СправочникОбъект.Ссылка:

Установка этого свойства будет обеспечивать нам то, что для источника данных этого поля – реквизита формы "Варианты", имеющего тип СправочникСписок.ВариантыНоменклатуры, – значение отбора по владельцу всегда будет равно ссылке на редактируемый элемент справочника "Номенклатура". Иными словами, список справочника, содержащийся в реквизите формы "НаборСвойств" всегда будет содержать только элементы, подчиненные редактируемому элементу справочника "Номенклатура". А значит и табличное поле "Варианты", для которого этот реквизит является источником данных, будет отображать только элементы, подчиненные редактируемому элементу справочника "Номенклатура".[265]




Ниже разместим аналогичным образом еще одну надпись "НадписьЗначенияСвойств" с заголовком "Значения свойств:" и начертанием шрифта "Жирный".:



[266]

Под ней расположим табличное поле с командной панелью с именем "Свойства" и типом РегистрСведенийСписок.ЗначенияСвойствНоменклатуры. Для колонки "НаборСвойств" снимем флаг "Видимость", а для поля ввода в колонке "Значение" установим связь по типу – ЭлементыФормы.Свойства.ТекущиеДанные.ВидСвойства:



Связь по типу будет обеспечивать нам то, что тип значений, вводимых в это поле ввода, будет ограничен только типом характеристики, выбранной в поле "Вид свойства". Однако этим мы никак не можем повлиять на само значение, хранимое в этом поле. Если не предпринять никаких дополнительных действий, то получится, что в случае, когда в поле "Значение" было введено какое-либо значение, поменять его на значение другого вида характеристики не удастся. При выборе другого вида характеристики будет возникать несоответствие между типом хранимого значения и типом, которым ограничен ввод в элементе управления. В этом случае, естественно, система будет предлагать вводить тот тип, который имеет хранимое значение.[267]

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

Поэтому для поля ввода в колонке "Вид свойства" создадим обработчик события "При изменении":

Процедура СвойстваВидСвойстваПриИзменении(Элемент)

ДанныеВидСвойства = ЭлементыФормы.Свойства.ТекущиеДанные.ВидСвойства;

   ЭлементыФормы.Свойства.ТекущиеДанные.Значение = ДанныеВидСвойства.ТипЗначения.ПривестиЗначение(ЭлементыФормы.Свойства.ТекущиеДанные.Значение);

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

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



Поэтому для табличного поля "Варианты" создадим обработчик события "При активизации строки":

Процедура ВариантыПриАктивизацииСтроки(Элемент)

   ЭлементыФормы.Свойства.Значение.Отбор.НаборСвойств.Установить(Элемент.ТекущиеДанные.Ссылка, Истина);

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

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

Процедура ПриОткрытии()

   ЭлементыФормы.Свойства.Значение.Отбор.НаборСвойств.Установить(,Истина);

КонецПроцедуры [268]

Содержание раздела