"ОбработкаВыбора" на сервере

Версия для печатиPDF-версия

Платформа:

Доброго дня!
 
Кто подскажет как в 8.3 (ERP 2.0) по одному полю ТЧ заполнить остальные?  
В 8.2 при выполнении процедуры "ОбработкаВыбора" выражение ВыбранноеЗначение содержало все реквизиты или поля элемента справочника, что можно было посмотреть в Табло. Теперь же в нём лежит только значение поля ввода.  
В частности, создан новый нетиповой справочник "Картриджи" с реквизитами "Марка", "Модель" и "Серийный номер", и новый нетиповой документ "Заправка картриджа" с такими полями ТЧ. Необходимо, чтобы марка и модель заполнялись по введению серийного номера.
Но в выражении "ВыбранноеЗначение" нет "ВыбранноеЗначение.*", о чем сообщает ошибка:
{Документ.ЗаправкаКартриджа.Форма.ФормаДокумента.Форма(6)}: Значение не является значением объектного типа (Марка)
        Элементы.Картриджи.ТекущаяСтрока.Марка = ВыбранноеЗначение.Марка;
Есть какой-то аналогичный метод в 8.3?

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

 

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

Хотя в любом случае придётся получать значения реквизитов на сервере.

В том-то и дело, что Строка, конкретно - серийный номер. Была бы ссылка не было бы проблемы ))
 

Т.е. серийный номер вводится в ТЧ вручную, а не выбирается из справочника Картриджи?

Выбирается.

Я имею в виду, что при вычислении выражения там больше ничего нет, а в 8.2 там были ссылки.
 

Тут тоже всё есть, только получить значения реквизитов можно только на сервере.

ПС. Не путайте 8.2 и обычное приложение. В управляемом приложении на 8.2 ситуация точно такая же как и в 8.3.

Спасибо, что просветили, в 8.2 писал только в обычном, теперь более понятно стало.

Вот и вопрос - как получить значения реквизитов на сервере, отталкиваясь от выбранного в поле текущей строки и передать их клиенту?
 

Вот такой вариант возможен.

Передаёте выбранное значение на сервер. Там помещаете значения нужных реквизитов в структуру и возвращаете её на клиент. На клиенте заполняете текущие данные полученными значениями. (Лучше использовать именно ТекущиеДанные, а не ТекущаяСтрока.)

Вот примерный код:

&НаКлиенте
Процедура КартриджиСерийныйНомерОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	ДанныеКартриджа = ПолучитьМаркуИМодель(ВыбранноеЗначение);
	ТекущиеДанные = Элементы.Картриджи.ТекущиеДанные;
	ЗаполнитьЗначенияСвойств(ТекущиеДанные, ДанныеКартриджа);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьМаркуИМодель(ВыбранноеЗначение)
	СтруктураВозврата = Новый Структура("Марка, Модель");
	ЗаполнитьЗначенияСвойств(СтруктураВозврата, ВыбранноеЗначение);
	Возврат СтруктураВозврата;
КонецФункции

Благодарю за попытку, работает странно, см. скрины.

При выборе предлагает только "<>" в качестве серийного (заправка 1).

При этом не находит в справочнике (заправка 2).

В отладке вроде находит нужные значения (заправка 3), но ТЧ документа их не вставляет.

Прилагаю также скрин элемента справочника с его реквизитами (заправка 4).

 

Прикреплённые файлы: 

У вас наименование у элемента справочника не указано, поэтому и показывает в списке выбора "<>". Если хотите, чтобы по серийному номеру искало, то придётся свою процедуру описывать. А проще заносить серийный номер в наименование, указав у него соответствующий синоним.

А в ТЧ документа реквизиты совпадают с реквизитами справочника по наименованиям и типам данных?

Реквизиты совпадают.

Дело в том, что изначально, дабы не плодить лишние реквизиты "Модель" была "Наименованием", а "Серийный номер" - "Кодом" из Стандартных.

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

Попробую снова, может что не увидел.
 

Всё равно неколрректно - ввожу "Серийный", форма меняет его на "Модель".

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

Прикреплённые файлы: 

"Серийный номер" - это Код в справочнике Картриджи, а "Модель" - Наименование? Тогда надо на вкладке "Данные" установить "Основное представление" = "В виде кода".

А в документе реквизит Модель сейчас Строка или ссылка на справочник Картриджи?

Модель в документе - ссылка на справочник.

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

Если у вас в документе во всех полях (Серийный номер, Марка, Модель) тип значения ссылка на справочник Картриджи, то как вы хотите в них значение другого типа выбрать? Марка и Модель в документе должны иметь такой же тип как и в справочнике (я так понимаю Строка).

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

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

Ни Марка, ни Модель не заполняются? В отладчике смотрели, что с сервера в структуре возвращается?

Проморгал ещё одно - в результате добавления/удаления/изменения реквизитов документа исчезля привязка процедуры к реквизиту Серийный номер.

Однако, теперь заполняется (и возвращается с сервера, соответственно) Марка, но не Модель; Модель в отладчике "неопределено".

Может это быть потому что Модель - стандартный реквизит (Наименование) справочника, в то время как Марка - добавленный?
 

Это из-за того, что наименования реквизита Модель в документе и справочнике теперь не совпадают: в справочнике "Наименование", а в документе (и в структуре возврата) - "Модель". Тут ЗаполнитьЗначенияСвойств() не подойдёт. Надо явное присвоение прописать:

	СтруктураВозврата = Новый Структура("Марка, Модель");
	СтруктураВозврата.Модель = ВыбранноеЗначение.Наименование;

Я так и понял.

Поменял "Модель" на "Наименование" - в отладчике появилось значение, но в форму не встало.

Тогда переименовал реквизит "Модель", оставив "Модель в синониме и заменил в структуре на "Наименование" - всё заработало.

Огромная благодарность за терпениеи содействие!!!