Как передать значение в форму 1С?

Рейтинг: 0Ответов: 1Опубликовано: 01.02.2023

У меня есть массив ролей. Я хочу сделать так, чтобы открылась форма создания профиля группы доступа и в ней были выбраны роли из массива (чтобы стояли галочки).

Форму можно открыть и передать в нее массив так:

ПараметрыФормы = Новый Структура("КоллекцияРолей", МассивРолей);
ОткрытьФорму("Справочник.ПрофилиГруппДоступа.Форма.ФормаЭлемента", ПараметрыФормы);

Но есть два вопроса. В какой именно реквизит нужно передать роли? В КоллекцияРолей?

Если я правильно понял, что в коллекцию ролей, то как тогда преобразовать массив в таблицу значений. Так как КоллекцияРолей - это таблица значений.

Написал такой код, но вылетает ошибка и пишет, что итератор не определен.

Функция ПреобразоватьМассивВТаблицуЗначений(мсДанные) Экспорт

    тзДанные = Новый ТаблицаЗначений;

    Для Каждого ЭлементМассива Из мсДанные Цикл
        // Рисуем колонки для таблицы

        Если тзДанные.Колонки.Количество() = 0 Тогда
            Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
                тзДанные.Колонки.Добавить(ЗначениеСтруктуры.Ключ);
            КонецЦикла;
        КонецЕсли;

        // Добавляем данные в таблицу

        НоваяСтрока = тзДанные.Добавить();
        Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
            НоваяСтрока[ЗначениеСтруктуры.Ключ] = ЗначениеСтруктуры.Значение;
        КонецЦикла;

    КонецЦикла;

    Возврат тзДанные;

КонецФункции

Ответы

▲ 0

Эта задача решается в два этапа:

  1. Передать параметры в форму - с этой частью Вы справились
  2. Обработать параметры внутри формы ! Для этого открываем модуль Формы ищем процедуру ПриСозданииНаСервере; Если конфигурация недоступна для редактирования, добавляем свой код в Расширение;

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
  Если Параметры.Свойство("КоллекцияРолей") Тогда
    // Добавляем в ТЗ формы данные из переденного параметра
  КонецЕсли;
КонецПроцедуры