Подгрузка реквизита из Справочника в Документ
Есть справочник "Услуги" с реквизитом "Стоимость" и "НаименованиеУслуги"
И есть документ "ОказаниеУслуги", в котором при выборе Услуги с типом Справочник.Ссылка.Услуги
У нас автоматически подгружалась цена в поле документа "ОказаниеУслуги" "Стоимость" из Справочника "НаименованиеУслуги"
И вот так выглядит мой код:
К полю Услуга я обращался и как Элемент.Услуга
Но все время одна и та же ошибка:
Поле объекта не обнаружено (Услуга)
В строке {Документ.ОказаниеУслуги.Форма.ФормаДокумента.Форма(3)}:Если Не ЭтотОбъект.Услуга.ПустаяСсылка() Тогда
Я и через общий модуль пробовал сделать, но никак
И есть документ "ОказаниеУслуги", в котором при выборе Услуги с типом Справочник.Ссылка.Услуги
У нас автоматически подгружалась цена в поле документа "ОказаниеУслуги" "Стоимость" из Справочника "НаименованиеУслуги"
И вот так выглядит мой код:
&НаКлиенте
Процедура УслугаПриИзменении(Элемент)
Если Не ЭтотОбъект.Услуга.ПустаяСсылка() Тогда
ЭтотОбъект.Стоимость = ПолучитьСтоимостьУслуги(ЭтотОбъект.Услуга);
Иначе
ЭтотОбъект.Стоимость = 0;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьСтоимостьУслуги(Услуга)
Если Не Услуга.ПустаяСсылка() Тогда
Стоимость = Справочники.Услуги.НайтиПоСсылке(Услуга).Стоимость;
Возврат Стоимость;
КонецЕсли;
Возврат 0;
КонецФункции
ПоказатьК полю Услуга я обращался и как Элемент.Услуга
Но все время одна и та же ошибка:
Поле объекта не обнаружено (Услуга)
В строке {Документ.ОказаниеУслуги.Форма.ФормаДокумента.Форма(3)}:Если Не ЭтотОбъект.Услуга.ПустаяСсылка() Тогда
Я и через общий модуль пробовал сделать, но никак
По теме из базы знаний
- Знакомство с 1С:Документооборот. История автоматизации и доработок. Печатная форма Лист согласования
- Как работают управляемые формы и тонкий клиент 1С – взгляд "из-под капота"
- Консоль кода для управляемых форм
- SynchroWB — интеграция 1С и Wildberries: автоматизация заказов и остатков по API с УТ, КА, ERP, УНФ, Розница 3
- Государственные контракты в УТ 11.5, КА 2.5.с выгрузкой в ЕИС (Госзакупки)
Найденные решения
Код |
---|
&НаКлиенте
Процедура УслугаПриИзменении(Элемент)
Объект.Стоимость = ПолучитьСтоимостьУслуги(Объект.Услуга);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСтоимостьУслуги(Услуга)
Если ЗначениеЗаполнено(Услуга) Тогда
Возврат Услуга.Стоимость;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
Показать полностью |
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Если у вас нет своей экспортной функции с именем "НайтиПоСсылке" в менеджере справочника "Услуги", то конечно это работать не будет.
Используйте лучше "НайтиПоКоду" или "НайтиПоНаименованию"
+ предыдущие ответы тоже корректные. "ЭтотОбъект" - не подходит. Используй "ЭтаФорма"
Стоимость = Справочники.Услуги.НайтиПоСсылке(Услуга).Стоимость;
Если у вас нет своей экспортной функции с именем "НайтиПоСсылке" в менеджере справочника "Услуги", то конечно это работать не будет.
Используйте лучше "НайтиПоКоду" или "НайтиПоНаименованию"
Стоимость = Справочники.Услуги.НайтиПоНаименованию(Услуга.Наименование).Стоимость;
+ предыдущие ответы тоже корректные. "ЭтотОбъект" - не подходит. Используй "ЭтаФорма"
Прикрепленные файлы:

Код |
---|
&НаКлиенте
Процедура УслугаПриИзменении(Элемент)
Объект.Стоимость = ПолучитьСтоимостьУслуги(Объект.Услуга);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСтоимостьУслуги(Услуга)
Если ЗначениеЗаполнено(Услуга) Тогда
Возврат Услуга.Стоимость;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
Показать полностью |
(8) Гадание на кофейной гуще. На начальном этапе и с ЗначениеЗаполнено и без него, одинаково нормально. Каждый напишет как привык.
Поскольку заранее не известно, что потом поменяется.
Может у нового типа вместо Стоимость будет реквизит Сумма.
А может Стоимость вообще в регистр перенесут.
Сейчас с применением ЗначениеЗаполнено не свалится при расширении типа.
А без, быстрее отловишь ошибку почему документ не правильно рассчитывается после внесенных доработок.
Ещё можно так написать
Поскольку заранее не известно, что потом поменяется.
Может у нового типа вместо Стоимость будет реквизит Сумма.
А может Стоимость вообще в регистр перенесут.
Сейчас с применением ЗначениеЗаполнено не свалится при расширении типа.
А без, быстрее отловишь ошибку почему документ не правильно рассчитывается после внесенных доработок.
Ещё можно так написать
Если ТипЗнч(Услуга) <> Тип("СправочникСсылка.Услуга") или Услуга.Пустая() Тогда
ВызватьИсключение "Параметр Услуга - ожидается значение типа СправочникСсылка.Услуга";
КонецЕсли;
(4)
Спасибо большое
&НаКлиенте
Процедура УслугаПриИзменении(Элемент)
Объект.Стоимость = ПолучитьСтоимостьУслуги(Объект.Услуга);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСтоимостьУслуги(Услуга)
Если ЗначениеЗаполнено(Услуга) Тогда
Возврат Услуга.Стоимость;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
ПоказатьПроцедура УслугаПриИзменении(Элемент)
Объект.Стоимость = ПолучитьСтоимостьУслуги(Объект.Услуга);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСтоимостьУслуги(Услуга)
Если ЗначениеЗаполнено(Услуга) Тогда
Возврат Услуга.Стоимость;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
Спасибо большое
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот