Доработка справочника Номенклатура
Прежде всего, в справочнике "Номенклатура" нам нужно обеспечить возможность редактирования варианта материала. Для этого укажем, что справочник "Номенклатура" будет редактироваться теперь обоими способами, в списке и в диалоге, и создадим основную форму элемента при помощи конструктора. Немного раздвинем форму по ширине и высоте и добавим в нее панель (Форма
Вставить элемент управленияПанель):[261]
После того, как мы слегка изменим положение любой из границ панели, появится вопрос:
На этот вопрос мы ответим утвердительно, и все элементы управления переместятся в добавленную панель:
[262]
Теперь мы скорректируем размеры панели и добавим в нее новую страницу (добавление страницы – контекстное меню правой кнопки мыши на поле формы
Добавить страницу...):Зададим имя и заголовок новой страницы – "Свойства", а первую страницу также переименуем в "Основные" и зададим ей такой же заголовок (группа свойств "Текущая страница" в палитре свойств формы):
[263]
После этого выделим все элементы управления, расположенные на панели, и выполним команду Форма
ЦентрированиеЦентрировать по вертикали:Теперь перейдем на страницу "Свойства" и добавим надпись "НадписьВариантыНоменклатуры" с заголовком "Варианты номенклатуры:". Укажем для нее начертание шрифта "Жирный".
[264]
Под этой надписью расположим табличное поле с командной панелью с именем "Варианты" и типом СправочникСписок.ВариантыНоменклатуры. Из табличного поля удалим колонку "Код". Для этого табличного поля установим свойство "Связь по владельцу" – СправочникОбъект.Ссылка:
Установка этого свойства будет обеспечивать нам то, что для источника данных этого поля – реквизита формы "Варианты", имеющего тип СправочникСписок.ВариантыНоменклатуры, – значение отбора по владельцу всегда будет равно ссылке на редактируемый элемент справочника "Номенклатура". Иными словами, список справочника, содержащийся в реквизите формы "НаборСвойств" всегда будет содержать только элементы, подчиненные редактируемому элементу справочника "Номенклатура". А значит и табличное поле "Варианты", для которого этот реквизит является источником данных, будет отображать только элементы, подчиненные редактируемому элементу справочника "Номенклатура".[265]
Ниже разместим аналогичным образом еще одну надпись "НадписьЗначенияСвойств" с заголовком "Значения свойств:" и начертанием шрифта "Жирный".:
[266]
Под ней расположим табличное поле с командной панелью с именем "Свойства" и типом РегистрСведенийСписок.ЗначенияСвойствНоменклатуры. Для колонки "НаборСвойств" снимем флаг "Видимость", а для поля ввода в колонке "Значение" установим связь по типу – ЭлементыФормы.Свойства.ТекущиеДанные.ВидСвойства:
Связь по типу будет обеспечивать нам то, что тип значений, вводимых в это поле ввода, будет ограничен только типом характеристики, выбранной в поле "Вид свойства". Однако этим мы никак не можем повлиять на само значение, хранимое в этом поле. Если не предпринять никаких дополнительных действий, то получится, что в случае, когда в поле "Значение" было введено какое-либо значение, поменять его на значение другого вида характеристики не удастся. При выборе другого вида характеристики будет возникать несоответствие между типом хранимого значения и типом, которым ограничен ввод в элементе управления. В этом случае, естественно, система будет предлагать вводить тот тип, который имеет хранимое значение.[267]
Чтобы избежать такой ситуации, нам нужно будет при смене значения в поле "Вид свойства" привести значение поля "Значение" к типу характеристики, выбранной в поле "Вид свойства".
Поэтому для поля ввода в колонке "Вид свойства" создадим обработчик события "При изменении":
ДанныеВидСвойства = ЭлементыФормы.Свойства.ТекущиеДанные.ВидСвойства;
ЭлементыФормы.Свойства.ТекущиеДанные.Значение = ДанныеВидСвойства.ТипЗначения.ПривестиЗначение(ЭлементыФормы.Свойства.ТекущиеДанные.Значение);
КонецПроцедуры
Поэтому для табличного поля "Варианты" создадим обработчик события "При активизации строки":
ЭлементыФормы.Свойства.Значение.Отбор.НаборСвойств.Установить(Элемент.ТекущиеДанные.Ссылка, Истина);
КонецПроцедуры
ЭлементыФормы.Свойства.Значение.Отбор.НаборСвойств.Установить(,Истина);
КонецПроцедуры [268]