1с программно отключить автозаполнение командной панели
Всем привет. Просьба помочь разобраться. Создаю программно страницу, на ней размещаю командную панель и табличное поле. Панель создается, таблица тоже, причем в таблице можно редактировать и добавлять строки. Но вот проблема, что кнопки не заполняются(создаются) автоматически на командной панели. В чем может быть проблема? Вот код:
Панель создается программно, автозаполнение включено. не могу понять где ещё надо включить. Вот скриншоты:
Здесь командная панель добавляется не на страницу, а на форму Вместо ЭлементыФормы попробуй НовыйЭлмент .. свойство Автозаполнение только для чтения
Есть книжка В.А. Ажеронок, А.В. Островерх, М.Г. Радченко, Е. Ю. Хрусталева "Разработка управляемого интерфейса". небольшая цитата: Форма не рождается на клиенте. Форма рождается на сервере, она проходит несколько важных стадий предварительной обработки, прежде чем достичь глаз пользователя. Платформа содержит достаточно сложные механизмы многоуровневого кеширования различных частей формы, как на сервере, так и на клиенте. По этой причине возможность программного изменения формы является скорее опциональной, дополнительной. Она рассчитана на отдельные конкретные сценарии работы и не предполагает массового использования в большом количестве форм конфигурации или в часто используемых формах. Основным подходом при разработке прикладных решений должно являться визуальное конструирование форм в конфигураторе. А программное изменение форм рекомендуется использовать лишь в отдельных специфических сценариях работы. Такими сценариями могут быть, например, отображение в форме имеющихся типовых операций или характеристик объектов. То есть той информации, которая содержится в базе данных и структура которой неизвестна на этапе конфигурирования. Ее можно узнать только уже в процессе функционирования прикладного решения, в режиме 1С:Предприятие. Поэтому для ее отображения в форме и требуется ее программное изменение. . Полагаю, что ты не сможешь реализовать свою задачку только кодом.
Как обходной вариант. Создать общую форму в конфигурации и открывать её. Не всё можно сделать только кодом даже в обычном режиме.
Не если кнопки описать вручную (создание), то они выводятся, но тогда нужно описать и каждое событие на кнопку! А цель была включить внутрений механизм автозаполнения и чтобы он работал как через конф. созданный. на автомате.
Почему не устраивает форма, в которой в интерактивном режиме создана и страница, и командная панель и остальное?
Есть элементы созданные на УФ программно, их командные панели наполняются автоматически.
Мне нужно самостоятельно их наполнить, это я знаю как.
Но вот галочку снять программно "Автозаполнение" не могу. Как сделать?
РАСШИРЮ ВОПРОС - БОЛЬШЕ ВСЕГО ИНТЕРЕСУЕТ ОТКЛЮЧЕНИЕ АВТОЗАПОЛНЕНИЕ
У КОНТЕКСТНОГО МЕНЮ.
Как костылями справится с командной панелью разобрался.
Кому будет интересно, программно повлиять можно на командную панель.
1. Создать группу удобнее даже просто руками в конфигураторе, допустим "ГруппаМОЯНОВАЯ".
Программно создать туда новую командную панель:
2. Дальше загнать нужные в неё кнопки программно.
3. Конечный этап отключить у элемента стандартную командную панель:
Вот такие костыли)))
НО МНЕ НУЖНО ещё по хорошему и контекстное по своему заполнить. тут вообще засада(((
Создают "Обычную группу " и в нее программно добавляют команды, а текущую панель в свойстве формы "состав команд" очищают.
Кому будет интересно, программно повлиять можно на командную панель.
1. Создать группу удобнее даже просто руками в конфигураторе, допустим "ГруппаМОЯНОВАЯ".
Программно создать туда новую командную панель:
2. Дальше загнать нужные в неё кнопки программно.
3. Конечный этап отключить у элемента стандартную командную панель:
Вот такие костыли)))
НО МНЕ НУЖНО ещё по хорошему и контекстное по своему заполнить. тут вообще засада(((
(4), можно скрыть стандартные команды (ну и соответственно отказы на события по горячим клавишам поставить) как контекстного меню, так и у стандартной командной панели.
Делается примерно так:
Элементы.КонтекстноеМенюДобавить.Видимость = Ложь; - скрывает команду добавить. И прописать это в событии ПриАктивизацииСтроки.
Для командной панели надо это прописывать в событии ПриСозданииНаСервере и следующее:
Элементы.Добавить.Видимость = Ложь; - скрывают команду добавить таблицы формы.
Единственная поправка, что это нужно делать на клиенте. Поэтому для командной панели отображение кнопок стандартных команд надо скрывать в процедуре ПриОткрытии.
Создаем новую группу "КомманднаяПанель", указываем источник комманд - "форма". Дальше галочка Видимость в помощь.
Разложим все по полочкам. В типовых конфигурациях 90% форм списков и форм объектов ссылочного типа на командной панели в подменю "Ввод на основании" содержат действие "(Ввести на основании)". Это действие в режиме предприятия замещается списком синонимов типов объектов, которые можно вводить на основании текущего объекта. Это обстоятельство предоставляет нам отличную возможность замечательного нецелевого использования этого списка.
Бонус
При обновлении почти никаких забот. Только в случае добавления новых объектов придется доставить для них галочки во вводе на основании.
- планы обмена
- справочники
- документы
- планы видов характеристик
- планы счетов
- планы видов расчета
- бизнес-процессы
- задачи
Для наглядности возьмем и создадим 2 универсальные команды "Запомнить" и "Использовать". Первая будет сохранять ссылку. Вторая будет ее использовать в форме.
1. Команда "Запомнить".
Итак, создаем новый план обмена. Даем ему имя "кмдЗапомнить", синоним "Запомнить".
Открыв закладку ввода на основании, мы неприятно удивимся, что средств для групповой установки флажков в этом диалоге нет. Здесь нужно каждый флажок установить персонально. Однако есть альтернатива (спасибо KAO111 ) - в конфигураторе есть возможность сразу выбрать группу объектов для ввода на основании. Для этого необходимо открыть дополнительные свойства объекта конфигурации (Alt+Shift+Enter), перейти на закладку "Ввод на основании" и снять флажок "Только выбранные".
Теперь создаем основную форму объекта (узла обмена). Она будет нужна только для обработки события ПередОткрытием, так что избавляемся от излишеств. Закрываем конструктор. Открываем модуль формы. Ссылка на основание доступна здесь через свойство ПараметрОснование расширения формы. Таким образом, весь функционал можно разместить здесь и не использовать обработку заполнения.
2. Команда "Использовать".
Аналогично создаем команду "Использовать".
Хотелось бы получить доступ к той форме (в случае формы объекта) или элементу формы (в случае формы списка), откуда вызвали команду. В модуле формы нам предоставляется такая возможность через использование свойства ВладелецФормы .
Как поступить с теми формами, в которых нет подменю ввода на основании?
В случае, если флажок "Автозаполнение" у нужной командной панели формы отключен и разработчики формы не добавили туда подменю ввода на основании, вы не увидите нужного вам списка в режиме предприятия. В этом случае можно добавить его туда вручную, а можно использовать более элегантный метод, программно добавляющий необходимое подменю в обработчике ПриОткрытии. Так как действие "(Ввести на основании)" является предопределенным, программно его создать, к сожалению, нельзя! Но можно обойти это ограничение. Создадим в одной из форм наших объектов-команд командную панель и добавим туда ввод на основании в режиме конфигуратора. Эта форма все равно никогда не открывается, так что используем ее как шаблон. Перед открытием нужной формы будем проверять наличие в заданной командной панели необходимого подменю, и, если его там не обнаружим, то скопируем его из нашей формы-шаблона.
Добавляем в форме объекта "кмдЗапомнить" командную панель "ДействияФормы".
Создаем там подменю с типом "Ввести на основании".
В глобальном модуле размещаем функцию
Теперь в теле обработчика ПриОткрытии любой формы можно вызывать эту процедуру. При отсутствии подменю ввода на основании она будет добавлять его в логический (в зависимости от типа выравнивания) конец найденной командной панели, список которых задан в массиве МассивИменКомандныхПанелей в порядке убывания приоритета. Алгоритм конечно предусматривает далеко не все возможные варианты, но на типовых отрабатывает почти всегда.
Итоги.
Полезность описанного метода создания универсальных интерактивных команд трудно переоценить. Пользуюсь этими командами каждый рабочий день! В платформах 8.0 и 8.1 на текущий момент отсутствует какая либо альтернатива этому методу.
Можно развить идею и сделать только один объект-команду. В него поместить все необходимые функции. А пользователю при активации этой команды предоставлять возможность выбора конкретной функции. Получится что то вроде универсального контекстного меню ссылочных объектов.
Как программно добавить в командную панель кнопку со стандартной функцией "Сортировать по убыванию"?
Можно, например, включить автозаполнение в ком. панели, потом при открытии создать структуру или массив с действиями, заполнить его, и после этого отключить автозаполнение
Код 1C v 8.х
Похожие FAQ
Еще в этой же категории
Как обновить динамический список или реквизит на форме клиента? 22
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Динамический список ~ Как на управляемой форме разместить список регистра сведений с отбором? 18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Как установить параметр динамического списка? 16
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма ~ Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора ~ Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами
Как программно добавить в командную панель кнопку со стандартной функцией "Сортировать по убыванию"?
Можно, например, включить автозаполнение в ком. панели, потом при открытии создать структуру или массив с действиями, заполнить его, и после этого отключить автозаполнение
Код 1C v 8.х
Похожие FAQ
Google maps, поиск оптимального маршрута 5
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута: * Географические координаты объектов, которые хранятся в базе; * Координаты начальной и коне База 1С при запуске уходит в дамп и вылетает 1
В последнее время частенько обращаются пользователи у которых после замены или ремонта компьютера 1С не запускается, а точнее при открытии уходит в dump и вылетает. Как правило, решение одно: Отключить аппаратное ускорение видеокарты В Window В регламентированной отчетности не печается штрих-код 1С ( EanGnivc ) 0
Установка шрифта EanGnivc В формах регламентированной отчетности, например, налоговые декларации, которые введены для предоставления отчетности, на всех листах в левом верхнем углу содержат свой уникальный штрих-код. В этих формах, которые распрос Горячие клавиши 1С Пользователю [ Предприятие] 5
Основные команды: Интерфейс: F6 - переключение между формами рабочего стола F10 - переход в главное меню окна Alt+1 - переход на панель Разделов Alt+2 - переход на панель Навигации Alt+3 - переход на панель Действий Alt+9 - переход Горячие клавиши 1С Разработчику [ Конфигуратор ] 128
Основные команды: Кодирование: Ctrl+Пробел - вызов подсказки Ctrl+Q - вызов шаблона Ctrl+F1 - поиск в синтакс-помощнике Ctrl + L - удалить текущую строку Alt+Shift+F - отформатировать код Исследование: F12 - ставим курсор на про Посмотреть все результаты поиска похожих
Читайте также: