1с отключить контекстное меню программно
Есть программно созданная таблица значений. Надо Изменить в ней контекстное меню. От команд добавить, скопировать, удалить, переместить вверх/вниз избавилась так: Остались Изменить, ВыделитьВсе, Копировать. Как их убрать, если программно недоступно свойство контекстного меню Автозаполнение или СоставКоманд (этих пунктов просто нет)? Добавляю свои команды так: Пункт1=Элементы.Добавить("ТЗКонтекстноеМенюПункт1", Тип("КнопкаФормы"), Элементы.ТабЗН.КонтекстноеМеню); Пункт2.ИмяКоманды="Забронировать"; Эти 2 команды созданы в конфигураторе и они после добавления доступны через Элементы.ТабЗН.КонтекстноеМеню.ПодчиненныеЭлементы А вот стандартных команд там нет. Удалить их, наверное, нельзя, но убрать из видимости пользователя через свойство Видимость должно быть осуществимо. Но как их найти чтоб обратиться вообще? Для созданной на форме ТЗ с именем Реквизит1 такой код ничего не даёт (Но зато в подчинённых элементах есть все кнопки): Гуглила это. Проблема есть - решений нет. На форуме 2 года назад была такая ветка, но она осталась без решения. Может, сдвинулся прогресс уже.
Эх лентяй. я уж на что лентяй и то фотку нашел за пару минут. Да есть такая трабла, надо бы ее в саппорт 1С кинуть. Сча решается только через создание элемента в конфигураторе и через снятие галочки "автозаполнение"
+ если бы эти автоэлементы были через обход коллекции доступны чтобы Видимость=Ложь сделать, так нету их тама
это костыли 1с. и их тьма. то нажатие кнопки. только доступно для групп кнопок. если просто кнопки то фиг там. то тут. то там. зато рюшки штампуют на ура.
Я не бот) Ладно бы тема была по ассемблеру какому. Там редко верят если видят в профиле жен - 20 лет. А у нас на курсе 3м был ассемблер! Интересно, конечно, где, но не надо открывать это знание для всех. И, может, там не я) А по поводу отсутствия решения печаль, конечно. Но авось кто знает тайну постижения этой силы)
Всегда знала, что ФС - зло, но надо было завести по делу. Вроде универ свой не палила) У нас на факультете девочки в группах в большом количестве не содержатся (0-5 обычно). Но на потоке целых 2 Алёны. Ситуация на 5м курсе: Сидит весь курс, люди с параллельного потока не очень хорошо друг друга знают. Передаю записку другой девочке Алёне с надписью "Алёне НомерГруппы". Парень с параллельного нашему потока где-то в середине цепочки передачи передаёт записку обратно мне, т.к. знает меня как Алёна. Ему говорят: "Не этой Алёне". Он: "У нас что, две Алёны?" Так что есть ещё Алёны в нашем универе моего возраста)
(1) потому что при проведении прописаны условия на заполнение полей документа, когда проводишь из формы документа в процедуре ПередЗаписью. А когда проводишь из журнала, то эти условия не срабатывают и документ проводится, хотя поля не заполнены - это неправильно
(3) подобное поведение делается через дополнительныепараметры
в форме при проведении туда пишешь "РазрешитьПроведение", а в модуле обьекта при наличие такого параметра или вызываешь привел. модуль, или еще какое поведение
(14) +1 - это значит что ты согласен с этим ? а если это не мой косяк, а того кто изначально создавал этот документ и не подумал что можно проводить из контекстного меню
(20) (21) не надо ссориться. Аниса - красиво выглядишь. Но и Wobland прав. Однако "если это не мой косяк" - то все равно, надо его решать
(16) После того, как ты в конфе хотя бы два пробела на один изменишь, все косяки в ней будут уже твои :(
(27) обидно то что, этот косяк только сейчас всплыл, при проверке документов, обнаружилось, что хотя он проведен, не все поля заполнены, а еще в списке документов он так и остался красненьким, т.е. незакрытым (это у нас такая раскраска: красный - в работе, зеленый - закрытый), а галка проведения стоит!
(32) обычный рабочий процесс. Самостоятельно исправь по нормальному и перестань винить во всем окружающих.
(35) вообще я никого не обвиняю, я просто хотела узнать можно ли взять и просто удалить команду из контекстного меню, оказывается нельзя, соответственно нужно эти условия на заполнение полей поставить в модуле формы в ОбработкеПроведения
(39) не для дублирования, а для визуального представления о проведенности документа, так нам удобней смотреть и видеть какие заявки проведены, а какие еще в работе
(40) >>оказывается нельзя, соответственно нужно эти условия на заполнение полей поставить в модуле формы в ОбработкеПроведения
ну почему же и дальше захламлять конфу кривым кодом.
Уже же говорили про костыль, добавь переменную в модуле объекта, при открытии формы присваивай ей истину. И проводить в зависимости от ее значения
(43) этот реквизит называется - СтатусЗаявки, имеет 4 возможных значения: Неприсвоена, ВРаботе, Провалена, Выполнена, и в зависимости от его значения в процедуре Процедура ДокументСписокПриПолученииДанных(Элемент, ОформленияСтрок) выбирается нужный цвет
(32) Это не просто косяк, это незнание основ работы платформы 1С.
Судя по (0) ты от автора этого косяка не далеко ушла - а если групповой обработкой понадобится перепровести документы, чем тебя отсутствие кнопочки спасет?
(49) Забей, сделай через переменную модуля объекта как в (44) сказано, все равно тебе его курочить. А в сэкономленное время инструкцию по эксплуатации 1С почитай.
А лучше да, переписать проведение. Вышибать костыль костылем не лучшее решение.
(51) к сожалению такой вариант не подошел, так как, народ умный - ему сказали закрыть(провести) все заявки(эти самые документы), так они и сидят шлёпают из журнала правой кнопкой "Провести" не открывая самой формы! а с добавлением переменной
в модуле объекта ее значение остается - Неопределено
(52)Так тебе так и сказали: в обработке проведения если Неопределено - отказ=истина и все. Будет проводиться только после открытия формы.
(55) просто я думала немного по-другому, я думала что если отказ= истина, значит документ не прошел проверки на заполнение, а если "ложь", то документ заполнен правильно и его можно так провести, из контекстного меню
(11) Ты не спорь, а впитывай, что тебе люди говорят. Тут не только проектирование кривое - тут работодатель твой лох. Платить зарплату за такую хню, как в 47. "Провалена", блеать.
Так что, все проверки заполнения - только в модуле объекта. Исполнять. К вечеру доложить. Что баба - плевать.
(55) Что бы тебе твой доктор в женской консультации такие же "профессиональные" советы давал, как ты тут.
Как и в любом другом Windows приложении, в 1С контекстное меню вызывается щелчком правой кнопки мышки на элементе формы. Состав меню и наборы выполняемых команд могут редактироваться:
- Вручную, созданием соответствующего списка и определением набор процедур;
- Автоматически.
Принципам работы с контекстным меню и посвящена наша статья. Мы постараемся рассмотреть вопросы включения, отключения этого элемента на управляемых и обычных формах, а также принципы программного создания списка команд, вызываемых правой кнопкой мышки.
Автоматическое создание контекстного меню
Включение и отключение контекстного меню любого элемента формы происходит непосредственно в конфигураторе. При этом следует иметь ввиду, что для управляемых и для обычных форм возможность выполнения этого действия реализована по-разному.
Допустим, условие задачи предполагает наличие контекстного меню у элемента формы «ТабличныйДокумент». Решим эту задачу для обычной формы внешней обработки.
Выключение галочки «АвтоКонтекстноеМеню» позволяет разработчику создать меню, состоящее только из собственных пунктов. Если же флажок активирован, автоматически созданное меню будет располагаться под списком команд, сформированным пользователем.
В свойствах параметра «КонтекстноеМеню» можно определить типовой список команд, который существует на форме (Рис.2).
В нашем случае мы можем:
- Связать контекстное меню с командной панелью формы обработки;
- Вызвать те же действия, которые включены в выпадающий список команды «Действия»;
- Определить тот же набор пунктов, который реализован в основных действиях формы.
Если мы хотим, чтобы в выпадающем по правому клику списке был реализован набор команд, характерный для табличного поля, мы должны:
- Создать командную панель, для которой источником действий будет выступать наше табличное поле;
- Снять видимость с этого элемента;
- Установить в параметре «КонтекстноеМеню» нашу командную панель.
Решим эту же задачу для управляемых форм. Процесс создания формы и добавление на нее нового реквизита мы отдельно рассматривать не будем. Обратим внимание на тот факт, что не в свойствах поля (Рис.3), не в свойствах реквизита формы, не в свойствах элемента параметра, связанного с контекстным меню нет.
Включить контекстное меню можно, если по элементу формы «Реквизит1» кликнуть правой кнопкой мыши (Рис.4). В выпавшем списке выберем пункт «Показать контекстное меню».
После этого дерево элементов формы получит новую ветку (Рис.5)
Теперь рассмотрим процесс заполнения контекстного меню.
Ручное заполнение пунктов меню
Реализацию ручного заполнения контекстного меню элемента обычной формы можно осуществить простым добавлением кнопок в командную панель, которая определена в соответствующем параметре.
Для управляемой формы набор команд, реализованных в выпадающем списке можно определить, перетаскиванием их с закладки «Команды» в соответствующую ветку дерева элементов (Рис.6).
При этом важно понимать, что в качестве пунктов меню могут выступать не только команды формы, но и стандартные и глобальные команды.
Программное добавление контекстного меню и списка команд в нем
Допустим, перед нами как разработчиками стоит задача в создании в контекстном меню команд, которые перемещают строки табличной части вверх и вниз по списку. Сами процедуры перемещения мы описывать не будем, рассмотрим только программное добавление соответствующих пунктов.
- У формы создадим обработчик события ПриОткрытии;
- Процедуры разместим на клиенте и на сервере, так как для работы нам понадобятся элементы формы, использование директив без контекста не имеет смысла;
- Важное замечание: сами команды должны быть определены и прописаны, иначе запуск обработки не состоится;
- Наша форма будет иметь вид, представленный на Рис.7; Рис.7
- Перейдем к программированию;
- В первую очередь добавим новые элементы код на Рис.8; Рис.8
- Определим представление новых элементов и соответствующие команды (Рис.9); Рис.9
После этих действий контекстное меню будет выглядеть как на Рис.10
Если нам не нужны остальные действия с таблицей, и мы хотим, чтобы меню состояло только из наших пунктов, нам придется добавить еще несколько строк кода.
Первая мысль, которая приходит в голову – отключить автозаполнение. Если бы наше контекстное меню не было создано программно, мы бы так и сделали, однако попытки обнаружить соответствующее свойство у созданного с помощью кода меню (у автора статьи) не увенчались успехом. И было принято решение сделать все предопределенные строки списка невидимыми.
Для этого, перед вышеприведенным кодом был вставлен следующий цикл (Рис.11):
Таким образом, все подчиненные элементы контекстного меню стали не видны, и оно приобрело вид, как на Рис.12
В предыдущей статье мы научились создавать подсистемы 1С, а в этой статье научимся, как при помощи подсистем можно настраивать интерфейс пользовательского приложения.
Ссылка на предыдущую статью: подсистемы в 1С.
Для написания статьи я использовал учебную базу из книги «Основы разработки в 1С: Такси» со следующими подсистемами.
Свойство конфигурации «Командный интерфейс»
Мы можем самостоятельно конфигурировать расположение подсистем в пользовательском режиме. Делается это в свойстве конфигурации «Командный интерфейс». Для того, чтобы попасть в это свойство, необходимо вызвать контекстное меню конфигурации (выделить самый верхний узел конфигурации, и вызвать правой кнопкой мышки контекстное меню), в этом контекстном меню интересует команда «Свойства».
После выполнения команды «Свойства» контекстного меню, откроется палитра свойств конфигурации, где нас интересует свойство «Командный интерфейс».
После нажатия гиперссылки «Открыть» этого свойства, откроется окно командного интерфейса. В этом окне мы можем передвигать иконки подсистем, настраивать общее отображение (колонка Видимость), и настраивать отображение по ролям (колонка соответствующей роли).
Заметьте, у колонок ролей могут быть «серые» флажки, это значит, что если у роли установлен такой «серый» флажок, то для данной роли у подсистемы будет такая же видимость, которая установлена в колонке Видимость.
В этом случае роль Администратор будет видеть подсистему Закупки
Если мы отключим видимость подсистемы в свойстве Командный интерфейс, то ее в пользовательском режиме по умолчанию видно не будет (мы отключили подсистему Закупки).
Но пользователь, может включить её. Для этого нужно зайти в настройку панелей разделов.
Для платформы версий 8.15 и выше
Для платформы версий ниже 8.15.
И в открывшемся окне «Настройка панелей разделов», при помощи кнопки «Добавить» переместить нужный раздел в список «Выбранные раздел». В этом же списке вы можете перемещать разделы между собой по своему усмотрению.
Если же мы хотим, чтобы подсистема вообще не была доступна пользователю. То необходимо отключить у нужной роли право на просмотр этой подсистемы.
Для этого открываем дополнительные настройки отключаемой для роли подсистемы.
В этих дополнительных настройках нас интересует закладка Права, где у нужной роли необходимо снять флаг с права Просмотр.
После этого, пользователь не увидит эту подсистему, и не сможет добавить её, используя настройку панелей разделов.
Командный интерфейс подсистемы
Мы можем настраивать видимость нужной нам подсистемы при помощи командного интерфейса. Есть два способа попасть в командный интерфейс подсистемы.
Используя кнопку «Командный интерфейс» в редакторе подсистемы.
Используя команду «Открыть командный интерфейс» контекстного меню подсистемы.
В командном интерфейсе подсистемы по умолчанию существует всего 6 групп: три группы команд навигации (панель навигации), и три группы команд действий (панель действий).
Вы можете перемещать команды навигации между группами команд навигации, и перемещать команды действий между группами команд действий. Но команду навигации нельзя переместить в группу команд действий. И наоборот, команду действия нельзя переместить в команду навигации.
Перемещать команду внутри группы можно при помощи кнопок контекстного меню (для этого нужно выделить нужную команду).
После перемещения команды, в названии группы команд появится словосочетание «Ручной порядок».
Если вы хотите вернуть расположение команд, как было по умолчанию, то необходимо выделить нужную группу, вызвать контекстное меню и выполнить команду «Восстановить автоматический порядок».
Если вы хотите, чтобы команда располагалась в другой группе, то можно мышкой «перетащить» эту команду в нужную группу.
Или воспользоваться командной «Переместить команду». Для этого нужно выделить перемещаемую команду и, или вызвать контекстное меню, где расположена команда.
Или воспользоваться иконкой команды на верхней панели.
После выполнения команды «Переместить команду», откроется окно выбора групп команды, где нужно выбрать группу, в которую вы хотите переместить команду.
После тех или иных действий, команда переместится в нужную группу.
В командном интерфейсе подсистемы имеются также колонка Видимость и колонки видимости по ролям.
Флажки в этих колонках отвечают за видимостью команд подсистемы.
Если флаг снят у соответствующей команды в колонке Видимость, то пользователь не увидит эту команду в интерфейсе подсистемы. У колонок ролей имеется возможность установить «серый» флаг. Это значит, что видимость этой команды для данной роли будет такая, какая установлена по умолчанию в колонке «Видимость».
Например, в этом случае, роль не будет видеть команду.
В случае остальных состояний флага, все точно также как и для колонки Видимость.
Стоит флаг – пользователь с этой ролью видит команду.
Флаг снят – не видит.
Если у вас обычный (не «серый») флаг у колонки видимости роли (снят или установлен), то не играет ни какой роли состояние флага в колонке Видимость!
Но в тоже время, если видимость на какую-либо команду снята в командном интерфейсе подсистемы в конфигураторе 1С, то её можно установить обратно в пользовательском режиме.
Для этого необходимо зайти либо в настройки навигации, либо в настройки действий подсистемы в пользовательском режиме, в зависимости от того видимость какой команды (навигации или действий) вы хотите установить.
Откроется окно настроек, где можно переместить выбранную команду или при помощи кнопки «Добавить», или мышкой.
После перемещения команды
Она появится в командном интерфейсе подсистемы.
Команда «Все подсистемы»
У разработчика имеется возможность посмотреть на командный интерфейс всех подсистем сразу. Для этого необходимо выделить корневой узел ветки Подсистемы, вызвать контекстное меню, в котором выполнить команду «Все подсистемы»
После этого откроется окно «Все подсистемы», где вы можете работать со всеми подсистемами сразу.
Заметьте, если у подсистемы имеются подчиненные подсистемы, то в этом окне вы можете посмотреть, как всё выглядит в иерархии. На скрине выше это наглядно показано. Что нельзя сделать в командном интерфейсе отдельной подсистемы.
Также, в этом окне вы можете редактировать состав нужной вам подсистемы.
В остальном настройки похожи: можно перемещать команды между группами внутри подсистемы, устанавливать видимость и т.д.
Другие статьи по вопросам конфигурирования
Подробно вопросы разработки подсистем рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомиться с разработкой управляемого приложения.
Книга «Основы разработки в 1С: Такси» отлично подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
- Без сложных технических терминов;
- Более 600 страниц практического материала;
- Каждый пример сопровождается рисунком (скриншот);
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Промо-код на скидку в 15% — 48PVXHeYu
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Эти книги плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму:
Нужно чтобы пользователи не могли менять настроенный для них интерфейс!
Решение:
Для отключения нужно в правах доступа у корневого элемента конфигурации убрать право "Сохранение данных пользователя".
Отключатся настройка панелей и пункт меню "Вид" (всё что в нём находится тоже)
Меню станет таким:
Похожие FAQ
Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э PostgreSQL: установка, настройка, обслуживание 11
PostgreSQL напрямую "из коробки" применяться для использования с 1С Предприятем не может. Необходима именно адаптированная версия от 1С, превращающая PostgreSQL в блокировочник, причем нужно понимать, что блокировки будут накладываться на всю таблиц rphost занимает память и грузит процессор 19
У многих возникают проблемы с rphost.exe, разного вида: rphost занимает всю память rphost грузит процессор rphost жрет память причем 1С даже на запущена, а в диспетчере следующее: ежеминутно расчет на 2-3 мегабайта. Как быть и что делат Автоматическая архивация баз 1С с использованием Cobian Backup и VBS скриптов 8
Клиент попросил настроить автоматическую архивацию баз 1С раз в три дня и выгрузку архивов на Dropbox и на FTP Сервер. Кроме 1С нужно архивировать папку с рабочими документами. Хочет - так хочет, делаем: Первым делом настроим автоматическую архивац Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 3
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же Посмотреть все результаты поиска похожих
Еще в этой же категории
Читайте также: