Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка в процедуре ОбработкаВыбора
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
pqvv
Здравствуйте, уважаемые эксперты ! Вопрос касается 1С:Предприятие 8.3 (8.3.8.1652), конфигурация УПП 1.3.46.1., управляемая форма. В форме "Передача материалов в эксплуатацию" в табличной части, в поле "МатериалыФизЛицо" автоматически вызывается справочник физ.лиц. Задача состояла в том, чтобы вместо него вызывался справочник сотрудников организации. В процедуре Обработка выбора возникает ошибка "Поле объекта не обнаружено (Значение)". Форма выбора возвращает ВыбранноеЗначение, в отладчике видно его тип СправочникСсылка.СотрудникиОрганизаций и само значение. Также правильно отрабатывает Сообщить(ВыбранноеЗначение). Думаю, что у меня ошибка в инструкции Элемент.Значение. подскажите, пожалуйста, как исправить.
&НаКлиенте
Процедура МатериалыФизЛицоОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;

Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.СотрудникиОрганизаций") Тогда
        Элемент.Значение = ВыбранноеЗначение.Физлицо;
        Сообщить(ВыбранноеЗначение);
    Иначе
        Элемент.Значение = ВыбранноеЗначение;
    КонецЕсли;



КонецПроцедуры
Vofka
Нельзя на клиенте обращаться к реквизитам ссылки через точку. То есть вот так ВыбранноеЗначение.Физлицо. Надо это вынести в отдельную функцию:

&НаСервереБезКонтекста
Функция ПолучитьФизЛицоИзСотрудника(Сотрудник)
    Возврат Сотрудник.Физлицо;
КонецФункции


И соответственно:

Элемент.Значение = ПолучитьФизЛицоИзСотрудника(ВыбранноеЗначение);
pqvv
Vofka @ Сегодня, 16:51 необходимо зарегистрироваться для просмотра ссылки ,
В какой модуль поместить функцию, подскажите пожалуйста ?
Vofka
В модуль формы. Туда же, где у вас находится процедура МатериалыФизЛицоОбработкаВыбора.
pqvv
Vofka @ Сегодня, 17:06 необходимо зарегистрироваться для просмотра ссылки Сделано, не помогло. Привожу текст модуля
&НаСервереБезКонтекста
Функция ПолучитьФизЛицоИзСотрудника(Сотрудник)
    Возврат Сотрудник.Физлицо;
КонецФункции

&НаКлиенте
Процедура МатериалыФизЛицоНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ФормаВыбора = ОткрытьФорму("Справочник.СотрудникиОрганизаций.ФормаВыбора", ,Элемент);
    ФормаВыбора.Открыть();          
КонецПроцедуры

&НаКлиенте
Процедура МатериалыФизЛицоОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;

Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.СотрудникиОрганизаций") Тогда
        Элемент.Значение = ПолучитьФизЛицоИзСотрудника(ВыбранноеЗначение);
        Сообщить(ВыбранноеЗначение);
    Иначе
        Элемент.Значение = ВыбранноеЗначение;
    КонецЕсли;
КонецПроцедуры
logist
Цитата(pqvv @ 03.11.16, 18:17) необходимо зарегистрироваться для просмотра ссылки
Элемент.Значение

У Элемента нет Значения, это всего лишь элемент формы, ему в данному случае нельзя ничего присвоить. Обращаться надо к Текущим данным (Элементы.Материалы.ТекущиеДанные) или к строке объекта (Объект.Материалы.Получить())

Как-то так
&НаСервереБезКонтекста
Функция ПолучитьФизЛицоИзСотрудника(Сотрудник)
    Если ТипЗнч(Сотрудник) = Тип("СправочникСсылка.СотрудникиОрганизаций") Тогда
        Возврат Сотрудник.Физлицо;
    Иначе
        Возврат Сотрудник;
    КонецЕсли;
КонецФункции

&НаКлиенте
Процедура МатериалыФизЛицоНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ФормаВыбора = ОткрытьФорму("Справочник.СотрудникиОрганизаций.ФормаВыбора", ,Элемент);
    ФормаВыбора.Открыть();          
КонецПроцедуры

&НаКлиенте
Процедура МатериалыФизЛицоОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Элементы.Материалы.ТекущиеДанные.ФизЛицо = ПолучитьФизЛицоИзСотрудника(ВыбранноеЗначение);
КонецПроцедуры
pqvv
Цитата(logist @ 03.11.16, 17:47) необходимо зарегистрироваться для просмотра ссылки
У Элемента нет Значения, это всего лишь элемент формы, ему в данному случае нельзя ничего присвоить. Обращаться надо к Текущим данным (Элементы.Материалы.ТекущиеДанные) или к строке объекта (Объект.Материалы.Получить())
Как-то так

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