1с имя команды недопустимое значение
Программная модификация формы может потребоваться в нескольких случаях:
В управляемой форме можно программно добавить, изменить и удалить:
- реквизиты;
- локальные команды;
- элементы.
Все указанные операции возможны только на сервере.
Программное изменение формы имеет ограничения:
- Удалить можно только программно добавленные реквизиты/команды/элементы. Нельзя программно удалить объекты, созданные в конфигураторе.
- Нельзя назначить реквизит основным.
Изменение команд формы
Для управления составом команд у объекта УправляемаяФорма есть коллекция Команды . У коллекции есть несколько методов:
Коллекция Команды доступна как на клиенте, так и на сервере. Изменять коллекцию (методы Добавить () и Удалить () ) можно только на сервере. Искать и получать количество элементов (методы Найти () и Количество () ) можно как на клиенте, так и на сервере.
Обработчик команды должен располагаться в форме и иметь директиву компиляции &НаКлиенте .
Изменение реквизитов формы
Чтение состава реквизитов формы выполняется функцией ПолучитьРеквизиты (< Путь >) , возвращающей массив типа РеквизитФормы . Параметр функции указывает путь к родительскому реквизиту (в виде строки). Если параметр опущен или указана пустая строка, возвращаются реквизиты верхнего уровня.
Изменение реквизитов выполняется методом ИзменитьРеквизиты (< ДобавляемыеРеквизиты >, < УдаляемыеРеквизиты >) объекта УправляемаяФорма . В параметр ДобавляемыеРеквизиты передается массив с элементами типа РеквизитФормы . В параметр УдаляемыеРеквизиты передается массив строк, описывающих пути к удаляемым реквизитам.
Внимание!
Процесс изменения состава реквизитов является достаточно ресурсоемким. Фактически выполняется пересоздание формы. В связи с этим работа с реквизитами формы выполняется в пакетном режиме.
Создадим новый реквизит формы с именем Покупатель:
Изменение элементов формы
Для управления составом элементов у объекта УправляемаяФорма есть коллекция Элементы . У коллекции есть несколько методов:
Переместить (< Элемент >, < Родитель >, < МестоРасположения >)Коллекция Элементы доступна как на клиенте, так и на сервере. Изменять коллекцию (методы Вставить () , Добавить () , Переместить () и Удалить () ) можно только на сервере. Искать и получать количество элементов (методы Найти () и Количество () ) можно как на клиенте, так и на сервере. Элементами коллекции могут быть:
- ГруппаФормы;
- ТаблицаФормы;
- ПолеФормы;
- КнопкаФормы.
Элементам формы можно программно назначить обработчики событий. Для этих целей предназначен метод УстановитьДействие (< ИмяСобытия >, < Действие >) .
Рассмотрим несколько наиболее распространенных на практике примеров работы с командами, реквизитами и элементами формы.
Добавление команды и связанной с ней кнопки:
Добавление реквизита и связанного с ним поля ввода:
Назначение элементу формы обработчика события:
Внимание!
Процедурам, которые устанавливаются в качестве обработчиков событий из кода с помощью метода УстановитьДействие () , рекомендуется задавать префикс Подключаемый_.
Внимание!
Остались вопросы?
Спросите в комментариях к статье.
2 комментария
Ваш текст:
В параметры ДобавляемыеРеквизиты и УдаляемыеРеквизиты передаются массивы с элементами типа РеквизитФормы.
Верный текст:
(необязательный)
Тип: Массив.
Массив, содержащий СТРОКИ, описывающие ПУТИ к удаляемым реквизитам.
Внешняя обработка. Таблица значений добавлена в реквизиты и элементы формы (для размещения на форме в нужном месте). Структура таблицы не определена (колонок нет). Вывод осуществляется одной процедурой, в качестве параметра в которую передаётся таблица значений. Дополнительно можно для созданной таблицы определить обработчики событий.
Специальные предложения
Спасибо! Программно добавил колонки в тз и долго мучился с выводом их на форму. Постоянно была Ошибка при установке значения атрибута контекста (ПутьКДанным) по причине: Недопустимое значение.
Оказалось что перед добавлением элементов формы нужно еще реквизиты формы добавить (ИзменитьРеквизиты).
Если бы в коде (3) была проверка на ПрограммноСозданныйРеквизит да и еще для внешней обработки, то юзал бы Ваш код "as is":)
Типовое создание элементов/реквизитов управляемой формы.В чем уникальность публикации? Или просто как визуализация книжек по упр. интерфейсу?
Уникальности никакой нет, на неё и не претендую. Обработка находится в нужное время, в нужном месте, пользуется спросом. У самого на днях стояла такая задача. Пришлось порыться в интернете, литературы под рукой не было. На инфостарте не нашел.
Особенностью обработки считаю универсальную процедуру, т.к. в инете есть примеры с конкретной структурой.
(5) hiduk, Большое спасибо за помощь. В 82 из мелочи любят выдумывать сложности. Туда сюда гонять реквизиты и т д. Не понимаю зачем так заморачиваться. Сам не додумался. Большое спасибо! Получилось с вашей помощью . Спасибо за готовое решение.Скопировал код, буду использовать в ближайшее время - ибо пока обходился без заполнения таблиц на УФ.
Я пробовал вышеуказанный код - у меня не работало удаление таблицы значений из управляемой формы. В итоге сделал свою модификацию:
Удаление таблицы значений из управляемой формы
Удалять реквизиты таблицы значений нет нужды - достаточно удалить саму таблицу значений.
Ну и до кучи - процедура вывода таблицы значений на управляемую форму:
v.l.; detro; lost-s0u1; Steelvan; Valerich; Prog1CZUP31; mangy; Styvi; + 8 – Ответить&НаСервере
Процедура УдалитьТЗ(УФ, НомерТЗ="1") Экспорт
ИмяТЗНаФорме = ИмяТаблицы + НомерТЗ;
// Если удаляемая таблица значений действительно присутствует на данной управляемой форме
Если НЕ УФ.Элементы.Найти(ИмяТЗНаФорме) = Неопределено Тогда
// Сначала удалим реквизит "Таблица значений" из УФ
МассивИменУдаляемыхРеквизитов = Новый Массив;
Если НЕ УдаляемыйЭлемент = Неопределено Тогда
// Теперь удалим элемент формы, который служил для визуального отображения
// удалённого реквизита УФ "Таблица значений"
УФ.Элементы.Удалить(УдаляемыйЭлемент);
А как сделать группы. Ну чтобы при отображении на форме несколько колонов были объединены в Группу колонок. (11) AleksSF, Добрый день! Группы сделать можно, но сложно:) (13) hiduk,
Повозился немного и сделал. В принципе не так сложно.
Но я делал для своей конфы, поэтому не доводил ее до универсальности.
Если интересно могу прислать.
Я немного подправил код вывода ТЗ: ранее он позволял вывести на управляемую форму только одну таблицу значений. Либо нужно было удалять сначала одноимённую ТЗ. Теперь ничего удалять не надо, и можно выводить на форму сколько угодно ТЗ, причём процедура принимает только один параметр - саму таблицу значений и ничего лишнего:
Но ещё интереснее было бы печатать таблицу значений в независимый табличный документ. Как бы это сделать?
Спасибо за обработку, очень удобнов вставлять и юзать. Даже внутрь не лазил процедур, юзал как функцию.
Если у таблицы тип содержит массив, не выводится.
Пришлось сделать проверку, ну и потом добавление колонок в попытке-исключении.
Спасибо за открытый код в комментариях! Даже скачивать не пришлось))Просмотры 52875
Загрузки 316
Рейтинг 45
Создание 21.06.13 22:59
Обновление 21.06.13 22:59
№ Публикации 191774
Конфигурация Конфигурации 1cv8
Операционная система Windows
Страна Россия
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Не указано
См. также
Альтернативный способ добавления элементов и реквизитов на формы Промо
Предлагаю альтернативный вариант добавления динамически создаваемых элементов и реквизитов на форму.
1 стартмани
09.09.2019 18020 35 bmk74 7
Выделение текущей строки в отчете (сделать сразу во всех отчетах и ничего не сломать)
Как за 10 минут упростить работу с отчётами программистам и пользователям. Добавить ВО ВСЕ ОТЧЁТЫ механизм автоматического выделения текущей строки отчёта (той, на которой установлен курсор). И ПРИ ЭТОМ НИЧЕГО НЕ СЛОМАТЬ.
1 стартмани
17.10.2021 2834 6 Патриот 48
Самые красивые шахматы для 1С на управляемых формах
Здравствуйте, представляем Вашему вниманию классическую игру – Шахматы! Написана игра средствами 1С, на управляемых формах. Программный код представляет собой с аккуратностью составленную систему, содержащую лаконичные логические приемы и описательные имена переменных, объектов и функций. Программа полностью отлажена и многократно протестирована. Оригинальный авторский дизайн фигур, иконок и кнопок приятен глазу. Игра содержит большое количество функций, настроек и режимов игры, включая сетевую игру, тренировку с ботом или игру на двоих. Не упустите возможность найти ряд технических решений, применимых для реализации различных задач, а также поиграть в вечную игру с отличным оформлением! Желающие научиться программировать на управляемых формах могут многое почерпнуть в этой конфигурации.
5 стартмани
18.02.2021 5754 13 compmir 30
Интерактивная справка по объектам 1С (подключаемое расширение)
База знаний, подключаемая к объектам основной базы. Пополняется интерактивно, формируется в виде статей прямо в 1С (текст, картинки, таблицы, ссылки). Есть возможность прикрепления файлов, привязки к объектам 1С, возможности рейтинга и комментирования пользователями.
3 стартмани
29.09.2020 16008 84 sapervodichka 47
Расширенная настройка динамического списка УФ Промо
Открывая управляемую форму выбора и не увидев там видимых в форме списка элементов, часто хочется узнать причину их отсутствия там, т. е. какой наложен отбор. Но стандартная настройка списка управляемой формы показывает только пользовательские настройки, скрывая от пользователя фиксированный отбор. Предлагаю вам расширение конфигурации с расширенной настройкой динамического списка, отображающей пользователю кроме пользовательских настроек еще фиксированные.
Версия 2.1 Проведено дополнительное тестирование. Устранены выявленные ошибки. Доработан интерфейс, внешний вид, добавлена маленькая справка. После проведенный доработок текущее описание обработки не переделывалось.
Версия 2. Скомпонована более универсально, добавлен функционал регистрации в ПланОбмена, добавлено сравнение Данных, устранены замеченные ошибки. Из-за недостатка времени доработка ведется только при крайней необходимости. Поставляется "Как Есть" - есть вероятность потери данных при перегрузке через COM. Тестировалась на 8.1.
Возможности обработки:
Выгрузка объектов в другую базу посредством COM -соединения.
Формирование простых отчетов на базе построителя отчета по выбранному объекту /объектам. Результат выводится на экран или в таблицу значений.
вывести на экран - будет сформирована печатная форма результатов запроса.
вывести в таблицу – выводит данные в таблицу значений внизу формы.
результат в план обмена – регистрирует выбранные объекты в план обмена.
Режим доступен, если узел плана обмена заполнен.
Выгрузить через COM – выгружает объекты в другую базу посредством COM- соединения.
Описание формы инструментария
При открытии обработки формируется дерево метаданных.
При заполненном поле «ПланОбмена», метаданные ограничиваются регистрируемыми объектами выбранного плана обмена.
Обработка отмеченных объектов возможна по отдельности или по всем: «ОбработатьСтроку» или «ОбработатьОтмеченные».
Объекты МД с настроенными отборами отмечаются в дереве значком «*».
Кнопки панели управления позволяют:
Действия с деревом метаданных: свернуть, развернуть, отметить, снять отметки.
Открыть форму списка выбранного объекта метаданных.
Распечатать дерево метаданных
Полностью зарегистрировать или отменить регистрацию всего объекта в плане обмена.
Сохранить/восстановить настройку на диск.
Открывает/скрывает таблицу значений (Предварительный анализ результатов в таблице значений)
Проведение тонкой настройки отборов, указание перегружаемых полей, замена элементов, синхронизация объектов
Форма тонкой настройки открывается по двойному клику на строке дерева объектов.
Возможны настройки:
Настройка соответствий реквизитов с COM -объектом:
Настройка требуется, если объекты в базах имеют различную структуру.
Пример 1: требуется перегрузить справочник Клиенты в справочник Контрагенты.
Необходимо ввести наименование справочника в Сom-базе. В дальнейшем при выгрузке объектов для реквизитов данного типа будет устанавливаться соответствующий тип автоматически.
Пример 2: Различаются наименования реквизитов.
Пример 3: требуется перегрузить только несколько реквизитов.
Настройка замен:
Настройка замен возможна для справочников. При настроенной замене будет происходить подмена элементов.
Пример 1: В новой базе создан новый предопределенный элемент.
Описание приемов работы с обработкой.
Выгрузка данных через com-соединение.
Для простой выгрузки данных через com-соединение достаточно установить режим “Выгрузить через COM”. Если настройка отборов не требуется, то дополнительных действий более не требуется. В момент подключения будут заполнены соответствия объектов и реквизитов и т.д.
Соответствие реквизитов будет устанавливаться по Com-имени, если оно было заполнено в форме тонкой настройки.
Алгоритм выгрузки оптимизирован для больших объемов: при выгрузке, определение Com-ссылок происходит только один раз, в дальнейшем ссылка получается из таблицы соответствий.
Запись всех объектов в Com-базе происходит в режиме: ОбменДанными.Загрузка=Истина.
Ограничения на применение COM – технологии в 1С, из личного опыта (рецензии приветствуются только с примером реализации).
- Сверка может производится только по простым типам: дата, число, строка. (ограничение на строки для SQL 2000 не более 25 символов, SQL 2005 не более 256 символов)
В SQL 2000 ограничение 25 символов срабатывает на больших объемах, на маленьких проходит без проблем и с большим количеством записей -- наблюдал лично.
- Нет возможности использовать в COM - base механизм транзакций.
- В случаях размещения в процедурах ПередЗаписью(), ПриЗаписи() дополнительных действий с объектом может появляться ошибка записи. Для исключения ошибки в COM - base необходимо вставить блок кода:
Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли;
Ошибка
Возможная Причина
: Ошибка при вызове метода контекста (Записать): Произошла исключительная ситуация: Ошибка при выполнении обработчика –
Получение элемента по индексу для значения не определено' ComЭлемент.Записать();
В COM -базе. В случаях размещения в процедурах ПередЗаписью(), ПриЗаписи() дополнительных действий – возникает ошибка записи. Для использования технологии необходимо вставить блок кода:
Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли;
: Ошибка при вызове метода контекста (ЗарегистрироватьИзменения): Недопустимое значение параметра (параметр номер '1')
ПланыОбмена.ЗарегистрироватьИзменения(ПланОбмена,ТКСТР[ИмяКолонки]);
по причине:
Недопустимое значение параметра (параметр номер '1')
Выбран предопределенный Узел или данный объект не входит в состав объектов регистрируемых в плане обмена.
Читайте также: