Программное создание элемента "Переключатель" формы справочника.
Есть УТ 10. В справочник ДоговорыКонтрагентов необходимо добавить реквизит ВидУсловийОплаты с типом "Перечисление". Для отображения этого реквизита необходимо программно разместить на форме переключатель.
При попытке присвоить значение
возникает ошибка. Я посмотрела в отладчике атрибут "ВыбираемоеЗначение" после программного создания переключателя имеет тип "Неопределено"
Как все-таки правильно программно определить значение для переключателя?
Переключатель.Имя = "Переключатель1";
Переключатель.Заголовок = "Переключатель1";
Переключатель.Верх = 92;
Переключатель.Высота = 15;
Переключатель.Ширина = 276;
Переключатель.Лево = 16;
Переключатель.Доступность = Истина;
Переключатель.АвтоКонтекстноеМеню = Истина;
Переключатель.АктивизироватьПоУмолчанию = Ложь;
Переключатель.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
Переключатель.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево;
Переключатель.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
Переключатель.Видимость = Истина;
Переключатель.ВыбираемоеЗначение = 0;
Переключатель.ИзменяетДанные = Ложь;
Переключатель.ПервыйВГруппе = Истина;
Переключатель.ПоложениеЗаголовка = ПоложениеЗаголовка.ЗаголовокСправа;
Переключатель.ПорядокОтображения = 4;
Переключатель.ПрозрачныйФон = Ложь;
Переключатель.ПропускатьПриВводе = Ложь;
ПоказатьПри попытке присвоить значение
Переключатель.ВыбираемоеЗначение = 0;
возникает ошибка. Я посмотрела в отладчике атрибут "ВыбираемоеЗначение" после программного создания переключателя имеет тип "Неопределено"
Как все-таки правильно программно определить значение для переключателя?
По теме из базы знаний
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2/3.0
- Тестер: частые вопросы
- Взаимодействие с сотрудниками и клиентами из одного окна конфигурации 1С (Телеграм, ВКонтакте, Facebook, Discord). Преимущества, технические особенности, подводные камни
- 1С:Документооборот КОРП. Интеграция vs синхронизация. Бесшовная интеграция
- ТехСобес глазами рекрутера, или Вы не готовы!
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Xershi, Перечисление - это реквизит элемента справочника ДоговорыКонтрагентов. Принимает такие значения, как Предоплата, Отсрочка платежа до 14 дней, Отсрочка от 14 до 21 дня. Хочется пользователям видеть именно в виде переключателя. Все изменения на формы должны вноситься программно.
(3) Fox44, не совсем понятно, дело в том, что у меня обычные формы.
Скорее всего, сделаю обычным полем выбора, не будет у пользователей переключателя.
(3) Fox44, не совсем понятно, дело в том, что у меня обычные формы.
Скорее всего, сделаю обычным полем выбора, не будет у пользователей переключателя.
(5) 3762515, так захотел пользователь, говорит, так нагляднее. Но у меня не получилось программно добавить переключатель с типом "Перечисление". Число - получается, другой тип - нет. Сделала полем выбора.
P.S. При программном создании переключателя на обычной форме оказалась важной последовательность операторов. Вот такой код работает для реквизита "ВидУсловийОплаты" типа "Число";
P.S. При программном создании переключателя на обычной форме оказалась важной последовательность операторов. Вот такой код работает для реквизита "ВидУсловийОплаты" типа "Число";
Переключатель.Данные = "ВидУсловийОплаты";
Переключатель.ПервыйВГруппе = Истина;
Переключатель.ВыбираемоеЗначение = 0;
Вот пример:
Родитель = ""; // родитель для сравнения - определения факта смены родителя
НомерГруппы = 0;
Для Каждого Строка Из ТаблицаСвойств Цикл
Если Родитель <> Строка.Родитель Тогда // сменился родитель
ДобавляемыеРеквизиты = новый Массив; // создаём массив для добавляемого реквизита
НомерСтроки = 0;
Родитель = Строка.Родитель;
НомерГруппы = НомерГруппы + 1;
НазваниеГруппы = "Переключатель"+НомерГруппы;
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(НазваниеГруппы, // имя создаваемого реквизита
Новый ОписаниеТипов("Число") // тип реквизита
,,Строка.Родитель)); // заголовок
ИзменитьРеквизиты(ДобавляемыеРеквизиты); // добавляем реквизит
// добавляем элемент формы
НазваниеГруппы = "Переключатель"+НомерГруппы;
НовыйЭлемент = Элементы.Добавить(НазваниеГруппы, Тип("ПолеФормы"), Элементы.ГруппаВариантов);
// связываем реквизит и элемент формы
НовыйЭлемент.ПутьКДанным = НазваниеГруппы; // "Пер"+НомерГруппы;
// установим некоторые свойства
НовыйЭлемент.Вид = ВидПоляФормы.ПолеПереключателя;
НовыйЭлемент.КоличествоКолонок=1;
// установим имя события и процедуру, его обрабатывающую
НовыйЭлемент.УстановитьДействие("ПриИзменении", "НовыйПриИзменении");
НомерСтроки = НомерСтроки+1; // добавляем первую строчку // ЭтаФорма
НазваниеСтроки =НомерСтроки;
НовыйЭлемент.СписокВыбора.Добавить(НазваниеСтроки, Строка.Значение); // Объект
Иначе // добавляем остальные строки
НомерСтроки = НомерСтроки+1;
НазваниеСтроки =НомерСтроки;
НовыйЭлемент.СписокВыбора.Добавить(НазваниеСтроки, Строка.Значение);
КонецЕсли;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот