Создание реквизита формы программно при нажатии кнопки
&НаСервере
Процедура СозданиеРеквизитаФормы()
Если МассивУдаляемыхРеквизитов.Количество()>0 Тогда
МассивДанных = МассивУдаляемыхРеквизитов.ВыгрузитьЗначения();
Для каждого ЭлементМассива Из МассивДанных Цикл
НайдЭлемент = Элементы.Найти(ЭлементМассива);
Если НайдЭлемент<>Неопределено Тогда
Элементы.Удалить(НайдЭлемент);
КонецЕсли;
КонецЦикла;
ИзменитьРеквизиты(,МассивДанных);
МассивУдаляемыхРеквизитов.Очистить();
КонецЕсли;
МассивДобавляемыхРеквизитов = новый Массив;
Сч = 1;
Для каждого СубконтоСчета Из Счет.ВидыСубконто Цикл
НовыйРеквизит = Новый РеквизитФормы("Субконто" + Сч, Новый ОписаниеТипов(СубконтоСчета.ВидСубконто.ТипЗначения));
МассивДобавляемыхРеквизитов.Добавить(НовыйРеквизит);
МассивУдаляемыхРеквизитов.Добавить("Субконто" + Сч);
Сч= Сч + 1;
КонецЦикла;
ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
Для каждого ЭлементСписка Из МассивДобавляемыхРеквизитов Цикл
НовыйЭлемент = Элементы.Добавить(ЭлементСписка.Имя, Тип("ПолеФормы"));
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = ЭлементСписка.Имя;
КонецЦикла;
КонецПроцедуры // ()
&НаКлиенте
Процедура СчетПриИзменении(Элемент)
Если ЗначениеЗаполнено(Счет) Тогда
СозданиеРеквизитаФормы();
КонецЕсли;
КонецПроцедуры
ПоказатьПолучаю ошибку
Ошибка при вызове метода контекста (СозданиеРеквизитаФормы)
{Документ.Расход.Форма.ФормаПодбора.Форма(72)}:СозданиеРеквизитаФормы();
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'v':
форма: Элемент
имя: {
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'value':
форма: Элемент
имя: {
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'РеквизитФормы'
Покажите как правильно сделать,
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) В любом случае - я не вижу смысла два раза применять ИзменитьРеквизиты(). Это считай двойное полное перестроение формы со всеми вытекающими
Да я, в принципе, и вообще без него бы обошелся в данном случае:
- максимальное количество реквизитов плана счетов известно (читай - фиксированное количество реквизитов и их имен)
- доступно переименование реквизитов (например, переименовать старые и добавить их в массив удаляемых, добавить новые и одним движением ИзменитьРеквизиты(Жлбавляемые, Удаляемые))
- доступно изменение типа реквизита (просто тупо в цикле у этих реквизитов поменять тип, и не надо вообще никакого ИзменитьРеквизиты()).
Честно скажу - не экспериментировал, но попробовать можно. Быстродействие при изменении счета на форме повысится на порядок.
Да я, в принципе, и вообще без него бы обошелся в данном случае:
- максимальное количество реквизитов плана счетов известно (читай - фиксированное количество реквизитов и их имен)
- доступно переименование реквизитов (например, переименовать старые и добавить их в массив удаляемых, добавить новые и одним движением ИзменитьРеквизиты(Жлбавляемые, Удаляемые))
- доступно изменение типа реквизита (просто тупо в цикле у этих реквизитов поменять тип, и не надо вообще никакого ИзменитьРеквизиты()).
Честно скажу - не экспериментировал, но попробовать можно. Быстродействие при изменении счета на форме повысится на порядок.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот