Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 20:57

Выпадающий список в поле табличной части управляемой формы

Автор Katish, 24 ноя 2012, 17:01

0 Пользователей и 1 гость просматривают эту тему.

Katish


Есть в документе табличная часть.
В форме документа хочу поля одной из колонок (Оценка) табличной части заполнять при помощи выпадающего списка. Список значений должен формироваться в зависимости от значения поля той же строки (Дисциплина).


Установила галку в свойствах реквизита "Оценка":
Кнопка списка выбора - Да,
Использование кнопки выбора - Нет,
Быстрый выбор - Да.


Для события "НачалоВыбораИзСписка" назначаю процедуру ОценкаНачалоВыбораИзСписка().



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


&НаСервере
Функция ПолучитьСписокОценок(Дисциплина)
Оценки = Новый СписокЗначений;
...
Возврат Оценки;
КонецФункции



В результате при нажатии на кнопку выбора выходит:


{Документ.ВыдачаСертификатов.Форма.ФормаДокумента.Форма(178)}: Ошибка при вызове метода контекста (ПолучитьСписокОценок)
   СписокОценок = ПолучитьСписокОценок(Элемент.Родитель.ТекущиеДанные.Дисциплина);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'valList':
   форма: Элемент
   имя: {http://v8.1c.ru/8.2/managed-application/logform}valList
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'value':
   форма: Элемент
   имя: {http://v8.1c.ru/8.1/data/core}value
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ЭлементСпискаЗначений'


Если эту же процедуру ПолучитьСписокОценок() запускаю для установки отбора в форме выбора того же поля - всё ок...


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

Dethmontt

Ошибка скорее всего у тебя вот тут:
Элемент.Родитель.ТекущиеДанные.Дисциплина //вообще не понятная строка...

Что вы пытаетесь передать на сервер? Это реквизит формы? Реквизит Табличной части? Или что это?
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Katish

Цитата: Dethmontt от 25 ноя 2012, 01:10Ошибка скорее всего у тебя вот тут:
Код: [Выделить]
Элемент.Родитель.ТекущиеДанные.Дисциплина //вообще не понятная строка...


Что вы пытаетесь передать на сервер? Это реквизит формы? Реквизит Табличной части? Или что это?

Это значение поля текущей строки в колонке "Дисциплина". Если в конфигураторе пошагово смотреть, то передаётся корректное значение Дисциплины в серверную функцию, та корректно отрабатывает и выдаёт совершенно верный список значений, цикл добавления этого списка в список выбора тоже проходит нормально. Но выпадающий список не появляется, а при повторном нажатии на кнопку выпадающего списка падает вышеописанная ошибка... Причём перед самым выходом ошибки, когда отладка находится на этой самой строке:
СписокОценок = ПолучитьСписокОценок(Элемент.Родитель.ТекущиеДанные.Дисциплина);
Само значение, передаваемой функции, совершенно нормальное, а вот если вычислить выражание самой функции, то уже ошибка. И это только во второй раз, при первом вызове отрабатывает корректно.
В чём причина :dfbbdrfb:

Dethmontt

Давайте выкладывайте сюда вашу базу... Будем смотреть
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Из синтаксис помощника!

Расширение поля формы для поля ввода (Form field extension for a text box)
НачалоВыбораИзСписка (StartListChoice)
Синтаксис:

НачалоВыбораИзСписка(<СтандартнаяОбработка>)
Параметры:

<СтандартнаяОбработка>

Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет.
Значение по умолчанию: Истина.
Описание:

Возникает в момент нажатия кнопки выбора из списка.
Примечание:

В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Katish

Цитата: Dethmontt от 25 ноя 2012, 23:59В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.
То есть хотите сказать, что вообще нельзя в обработчике этого события вызывать серверные процедуры?

Dethmontt

Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск