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