Меню

Контекстное меню вставить таблицу



Программирование в 1С для всех

В одной практической задаче мне пришлось разрабатывать контекстное меню таблицы управляемой формы, которое должно было меняться в зависимости от данных, находящихся в этой таблице. Ниже приведен мой способ решения этой задачи. Я не претендую на «правильность» этого способа, поэтому, если кто-то знает, как решить эту задачу более «красиво» или «правильно», просьба написать свой вариант в комментариях к этой статье.

И так, я не буду приводить реальную конфигурацию, где возникла эта задача (она достаточно специфична), а создам небольшую учебную конфигурацию, в которой может возникнуть подобная задача. Конфигурация без изысков, учебная, призванная показать метод решения. В этой конфигурации имеется два справочника «Склады» и «Номенклатура», а также документ «Приход» с табличной частью «Список товаров» (с реквизитами «Склад», «Номенклатура» и «Количество» с соответствующими типами).

Метаданные для учебной конфигурации

Постановка задачи: реализуем контекстное меню для формы списка документа «Приход», в этом меню должны отображаться команды с названиями всех складов, которые имеются в табличной части выделенного документ (склады должны быть сгруппированы). При выполнении команды должна открываться форма соответствующего склада.

Создадим форму списка документа Приход, а на этой форме у таблицы Список создадим событие ПриАктивизацииЯчейки (в клиентском контексте).

Событие ПриАктивизацииЯчейки

В этом событии мы будем работать с текущей строкой таблицы формы Список, это свойство таблицы будет содержать ссылку на документ из выделенной строки. Чтобы у нас, не происходило лишний раз перерисовывание контекстного меню, когда выделана одна и та же строка, но происходит активация разных её ячеек, будем записывать данные текущей строки в глобальную переменную модуля формы, и в начале процедуры будем проверять, не равна ли эта переменная значению в текущей строке, и если равна, то завершим действие процедуры-обработчика.

Получится следующий код:

Проверим, не содержится ли в текущей строке значение Неопределено, и если всё нормально, то вызовем процедуру в серверном контексте, в которой уже будем непосредственно работать с контекстным меню. Параметром процедуры будет ссылка на выделенный документ в таблице формы.

В этой процедуре создадим запрос, в котором получим сгруппированный список складов с наименованиями из документа прихода.

Внутри цикла выборки создаем имена для команд, которые связаны со складами, команды, а также элементы формы с типом КнопкаФормы, которые разместим в группе Элементы.Список.КонтекстноеМеню.

Заметьте, все команды я привязал к одному действию, это будет процедура, которую мы создадим ниже, и в которой будет код на открытие формы того или иного склада.

Чтобы однозначно определить форму какого склада открывает та или иная команда, мы свяжем имя команды с ссылкой на склад. Для этого в реквизитах формы создадим таблицу значений, которую назовем СвязьКомандыИСклада, у этой таблицы будут две колонки: ИмяКоманды и Склад.

Таблица значений на форме

Будем заполнять эту таблицу в конце цикла.

Создадим обработчик события, который будет выполняться во время отработки команды из контекстного меню. Мы уже определили его имя, привязав к действию команды ранее. В этом обработчике нам надо получить ссылку на нужный склад, который связан с обрабатываемой командой. Для этого, используя параметр процедуры Элемент, получим имя отрабатываемой команды, по имени команды найдем из таблицы значений ссылку на нужный склад и откроем форму этого склада.

Нам осталось в начале процедуры ДобавитьСкладыВМенюСписка очищать команды и элементы формы, которые мы создали ранее.

Все теперь наше контекстное меню будет динамически изменяться в зависимости от того, какие склады имеются в табличной части документа.

Изменяющееся контекстное меню формы

Изменяющееся контекстное меню формы

А при выполнении команды, будет открываться форма того склада, который указан в названии этой команды.

Мой опыт преподавания показывает, что многие начинающие и не очень разработчики всё еще слабо программируют в управляемом приложении, теряются во многих вопросах.
Книга «Основы разработки в 1С: Такси» научила программировать под управляемым приложением 300+ начинающих программистов 1С.
И Вы обязательно освоите все тонкости разработки под управляемым приложением 1С 8.3.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Только для читателей моего блога,
промо-код на скидку в 150 рублей — blog

Для тех же, кто только начинает:
общие вопросы по разработке в 1С подробно и основательно даются в книге «Программировать в 1С за 11 шагов»

Стартуйте в изучении 1С программирования в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

Только для читателей моего блога, промо-код на скидку в 150 рублей — blog

Эти книги плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

3 thoughts on “ Динамически изменяющееся контекстное меню в 1С 8.3 ”

Что за бред и корявый код?
И разве не смущает, что:
В обработчике СписокПриАктивизацииЯчейки используется вызов контекстного серверного метода формы
т.е. по факту получаем бесконечный цикл, благо платформа об этой лаже знает и не зациклит, но будет постоянно спамить…

Читаем внимательно статью, прежде чем оставлять неграмотные комментарии.
Чтобы не было бесконечного цикла в самом начале осуществляется проверка.

В данном случае лучше использовать событие «ПриАктивизацииСтроки» вместо события «ПриАктивизацииЯчейки».

Источник

Эти все операции можно выполнять через контекстное меню таблиц

Лабораторная работа № 2

Тема:Текстовый процесссор Microsoft Word. Создание и редактирование таблиц

Цель работы: Изучение возможностей создания и вставки таблиц, в документ, работы с формулой, выполнения вычислений в таблицах, создания диаграммы по данным таблицы

Содержание работы:

ü Теоретические сведения

(Создание пустой таблицы, преобразование текста в таблицу, преобразование таблицы в текст, вычисляемые таблицы, создание диаграмм по данным таблицы)

ü Практические задания

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

ü Контрольные вопросы

Теоретические сведения

Создание и редактирование таблиц

Пункт основного меню процессора Таблица содержит список операций, предназначенных для работы с таблицей.

Читайте также:  Белки жиры углеводы таблица значение для организма

Команды в меню Таблица

Вставить \Удалить\Выделить(Строки\Столбцы\Ячейки)— предварительно следует выделить элементы таблицы, подлежащие обработке этими командами.

Объединить ячейки (перед этим нужно выделить ячейки, которые хотим объединить); Разбить таблицу (на независимые части).

Заголовок – позволяет повторять заголовок таблицы в начале каждой страницы.

Автоформатавтоматически задает вид рамки, оформление.

Сортировка (позволяет сортировать данные в столбцах и строках).

Эти все операции можно выполнять через контекстное меню таблиц

O Создание пустой таблицы. Несколько способов:

1. Меню Таблица→Вставить таблицу (указать количество столбцов и строк);

2. Через панель инструментов ;

После вставки таблицы можно включить или выключить изображение сетки: меню Таблица→Линии сетки.

Внутри каждой ячейки можно установить маркер конца ячейки: меню Сервис, Параметры, вкладка Вид, Символы абзаца.

O Изменить высоту строк и ширину столбцов таблицы

Осуществить выравнивание

Если при создании таблицы ширина столбцов задана опцией Auto, то Word будет сам вычислять ширину столбцов в зависимости от их числа.

Чтобы изменить ширину столбцов и расстояние между ними: меню Таблица→Высота→Ширина ячейки. Здесь же можно изменить высоту строк таблицы, осуществить выравнивание.

O Чтобы расширить таблицу вниз,

Нужно курсор поместить в последнюю ячейку и нажать клавишу Tab.

O Перетащить таблицу в другое место.

Выделить таблицу, выбрать меню Вставка→Кадр, вокруг таблицы появится позиционирующая рамка. Эту рамку можно захватить мышью и перетащить таблицу в другое место. Также можно перетаскивать отдельную ячейку или столбец

O Преобразование текста в таблицу

Порядок выполнения действий:

1. Выделить текст;

2.Меню Таблица→Преобразовать в таблицу;

Источник

Как вставить таблицу в ячейку Excel

Таблицы в редакторе Эксель являются рядом строк и столбцов со связанными сведениями, которые управляются отдельно друг от друга. При работе в Excel с таблицами возможно создать отчеты, проводить расчеты, выстраивать графики и диаграммы, осуществлять сортировку и фильтрацию данных. Те, кто достаточно регулярно работают с Микрософт Эксель, зачастую сталкиваются с задачей правильного копирования сведений таблицы с сохранением форматирования, формул либо их значений. В данной статье рассматриваются способы вставки таблицы в ячейку Эксель.

Как вставить таблицу в ячейку Excel

Использование таблиц в Эксель не представляет особой сложности даже для неопытных пользователей, однако для получения необходимого результата нужно соблюсти алгоритм действий. Вставка таблицы может быть произведена различными методами. Для конкретной цели каждый способ имеет свои достоинства и недостатки, которые будут рассмотрены ниже.

Как вставить таблицу в Excel

Когда у пользователя уже существует заполненный диапазон с данными, можно произвести его преобразование в таблицу:

  1. В этих целях курсор ставится в какую-либо из ячеек массива и выполняется «Вставка» – «Таблицы» – «Таблица».
  2. Открывается диалоговое окно в целях габаритов таблицы (данные возможно исправить, когда они выделены ненадлежащим образом).
  3. После нажатия «ОК» таблица будет готова.
  4. Возможно совершить это с помощью сочетания горячих клавиш «Ctrl+T».

Когда необходимо создать таблицу с начала, следует:

  1. Выделить определенный диапазон ячеек, где должен быть расположен элемент.
  2. Затем аналогичным способом выполняется команда «Вставка» – «Таблицы» – «Таблица» или используется комбинация клавиш «Ctrl+T».
  3. После этого пользователю останется лишь провести переименование столбцов и заполнение самой таблицы данными.

Для добавления новой строки внизу таблиц нужно начать вводить в нее сведения, редактор самостоятельно добавит элемент в структуру. То же относится и к вставке дополнительного столбца после крайнего с правой стороны.

Чтобы добавить строку либо столбец в середину таблицы, следует выделить ячейку в структуре и кликнуть правой клавишей мышки. Далее в контекстном меню нажать «Вставить» и выбрать один из способов:

kak-sravnit-tekst-v-yachejkah-tablicy-excel

  • Столбцы таблицы слева.
  • Строки таблицы выше.

1

Важно! На практике применение инструментов «Вставить» либо «Удалить» во время вставки либо удаления диапазонов без окна настроек не рекомендуется. Так как пользователь может запутаться в больших таблицах. Для экономии времени рекомендовано использовать горячие клавиши. Они помогут вызвать окно с настройками вставки и удаления, позволят скорее решить задачу.

Вставка таблицы из Word в ячейку Excel

Чтобы вставить таблицу из редактора Ворд в ячейку Эксель, необходимо:

  1. Выделить непосредственно таблицу в Ворд, кликнув на иконку слева вверху таблицы.

kak-sravnit-tekst-v-yachejkah-tablicy-excel2

  1. Сделать щелчок правой клавишей мыши в каком-либо месте выделенного диапазона и выбрать «Копировать». Для копирования в буфер обмена можно воспользоваться комбинацией кнопок «Ctrl» + «C».

kak-sravnit-tekst-v-yachejkah-tablicy-excel3

  1. Открывается новый файл редактора Эксель. На листе Эксель выделяется левый верхний угол диапазона, куда необходимо импортировать выделенную таблицу Ворд. В меню «Главная» в группе «Буфер обмена» нажимается «Вставить». Чтобы вставить таблицу, можно воспользоваться комбинацией кнопок «Ctrl» + «V».

kak-sravnit-tekst-v-yachejkah-tablicy-excel4

  1. Чтобы изменить форматирование выделенной таблицы, требуется кликнуть правой клавишей мыши на одну из ячеек. В меню «Параметры вставки» есть такие варианты действий:
  • чтобы сохранить форматирование, которое применяется к ячейкам страницы в Эксель, нажимается вариант «Использовать форматы конечных ячеек»;
  • чтобы сохранить форматирование таблицы Ворд, выбирается опция «Сохранить исходное форматирование».

kak-sravnit-tekst-v-yachejkah-tablicy-excel5

В Эксель данные любой из ячеек таблицы Ворд вставляются в отдельный элемент. По завершении вставки сведений необходимо в обязательном порядке осуществить проверку корректности копирования.

  1. Чтобы исправить форматирование, нажимается клавиша «Параметры вставки», а потом выполняются действия, которые описаны ниже:
  • Для использования форматирования, которое применяется к ячейкам страницы, выбирается опция «Использовать форматы конечных ячеек».
  • Для использования форматирования таблицы Ворд выбирается вариант «Сохранить исходное форматирование».

Эксель вставляет содержимое ячеек таблицы Ворд в отдельный элемент. По окончании вставки сведений их возможно распространить на остальные ячейки в столбце (к примеру, разделяя имя и фамилию, чтобы они показывались в разных ячейках) при помощи команды «Текст по столбцам».

Вставка таблицы в виде рисунка

Когда необходимо импортировать скопированную таблицу в качестве обыкновенной картинки, выполняется это таким способом:

kak-sravnit-tekst-v-yachejkah-tablicy-excel

  1. После копирования требуемой таблицы необходимо войти в контекстное меню выбранной для вставки ячейки. Затем выбрать пункт «Рисунок» в опциях «Специальной вставки».

6

  1. Благодаря этому можно получить продублированную в форме изображения таблицу, которая можно перемещать. Кроме того, допустимо переворачивать ее и изменять размеры. Однако редактировать сведения и менять их вид уже не удастся.

Важно! По завершении вставки сведений иногда требуется их очистка, чтобы использовать функции вычислений Эксель. К примеру, в ячейках бывают лишние пробелы, числа могут иметь вид текста, а не числовых значений, с которыми выполняются вычисления, а даты иногда отображаются ненадлежащим образом.

Заключение

Эксель предлагает пользователям достаточный выбор способов вставки таблицы в ячейку. Выделив небольшое количество времени на изучение разных методов осуществления такой задачи, можно сэкономить время при последующей работе в редакторе.

Источник

1С управляемые формы контекстное меню

В одной практической задаче мне пришлось разрабатывать контекстное меню таблицы управляемой формы, которое должно было меняться в зависимости от данных, находящихся в этой таблице. Ниже приведен мой способ решения этой задачи. Я не претендую на «правильность» этого способа, поэтому, если кто-то знает, как решить эту задачу более «красиво» или «правильно», просьба написать свой вариант в комментариях к этой статье.

Читайте также:  Гомологический ряд углеводов таблица

И так, я не буду приводить реальную конфигурацию, где возникла эта задача (она достаточно специфична), а создам небольшую учебную конфигурацию, в которой может возникнуть подобная задача. Конфигурация без изысков, учебная, призванная показать метод решения. В этой конфигурации имеется два справочника «Склады» и «Номенклатура», а также документ «Приход» с табличной частью «Список товаров» (с реквизитами «Склад», «Номенклатура» и «Количество» с соответствующими типами).

Постановка задачи: реализуем контекстное меню для формы списка документа «Приход», в этом меню должны отображаться команды с названиями всех складов, которые имеются в табличной части выделенного документ (склады должны быть сгруппированы). При выполнении команды должна открываться форма соответствующего склада.

Создадим форму списка документа Приход, а на этой форме у таблицы Список создадим событие ПриАктивизацииЯчейки (в клиентском контексте).

В этом событии мы будем работать с текущей строкой таблицы формы Список, это свойство таблицы будет содержать ссылку на документ из выделенной строки. Чтобы у нас, не происходило лишний раз перерисовывание контекстного меню, когда выделана одна и та же строка, но происходит активация разных её ячеек, будем записывать данные текущей строки в глобальную переменную модуля формы, и в начале процедуры будем проверять, не равна ли эта переменная значению в текущей строке, и если равна, то завершим действие процедуры-обработчика.

Получится следующий код:

Проверим, не содержится ли в текущей строке значение Неопределено, и если всё нормально, то вызовем процедуру в серверном контексте, в которой уже будем непосредственно работать с контекстным меню. Параметром процедуры будет ссылка на выделенный документ в таблице формы.

В этой процедуре создадим запрос, в котором получим сгруппированный список складов с наименованиями из документа прихода.

Внутри цикла выборки создаем имена для команд, которые связаны со складами, команды, а также элементы формы с типом КнопкаФормы, которые разместим в группе Элементы.Список.КонтекстноеМеню.

Заметьте, все команды я привязал к одному действию, это будет процедура, которую мы создадим ниже, и в которой будет код на открытие формы того или иного склада.

Чтобы однозначно определить форму какого склада открывает та или иная команда, мы свяжем имя команды с ссылкой на склад. Для этого в реквизитах формы создадим таблицу значений, которую назовем СвязьКомандыИСклада, у этой таблицы будут две колонки: ИмяКоманды и Склад.

Будем заполнять эту таблицу в конце цикла.

Создадим обработчик события, который будет выполняться во время отработки команды из контекстного меню. Мы уже определили его имя, привязав к действию команды ранее. В этом обработчике нам надо получить ссылку на нужный склад, который связан с обрабатываемой командой. Для этого, используя параметр процедуры Элемент, получим имя отрабатываемой команды, по имени команды найдем из таблицы значений ссылку на нужный склад и откроем форму этого склада.

Нам осталось в начале процедуры ДобавитьСкладыВМенюСписка очищать команды и элементы формы, которые мы создали ранее.

Все теперь наше контекстное меню будет динамически изменяться в зависимости от того, какие склады имеются в табличной части документа.

В одной практической задаче мне пришлось разрабатывать контекстное меню таблицы управляемой формы, которое должно было меняться в зависимости от данных, находящихся в этой таблице. Ниже приведен мой способ решения этой задачи. Я не претендую на «правильность» этого способа, поэтому, если кто-то знает, как решить эту задачу более «красиво» или «правильно», просьба написать свой вариант в комментариях к этой статье.

И так, я не буду приводить реальную конфигурацию, где возникла эта задача (она достаточно специфична), а создам небольшую учебную конфигурацию, в которой может возникнуть подобная задача. Конфигурация без изысков, учебная, призванная показать метод решения. В этой конфигурации имеется два справочника «Склады» и «Номенклатура», а также документ «Приход» с табличной частью «Список товаров» (с реквизитами «Склад», «Номенклатура» и «Количество» с соответствующими типами).

Постановка задачи: реализуем контекстное меню для формы списка документа «Приход», в этом меню должны отображаться команды с названиями всех складов, которые имеются в табличной части выделенного документ (склады должны быть сгруппированы). При выполнении команды должна открываться форма соответствующего склада.

Создадим форму списка документа Приход, а на этой форме у таблицы Список создадим событие ПриАктивизацииЯчейки (в клиентском контексте).

В этом событии мы будем работать с текущей строкой таблицы формы Список, это свойство таблицы будет содержать ссылку на документ из выделенной строки. Чтобы у нас, не происходило лишний раз перерисовывание контекстного меню, когда выделана одна и та же строка, но происходит активация разных её ячеек, будем записывать данные текущей строки в глобальную переменную модуля формы, и в начале процедуры будем проверять, не равна ли эта переменная значению в текущей строке, и если равна, то завершим действие процедуры-обработчика.

Получится следующий код:

Проверим, не содержится ли в текущей строке значение Неопределено, и если всё нормально, то вызовем процедуру в серверном контексте, в которой уже будем непосредственно работать с контекстным меню. Параметром процедуры будет ссылка на выделенный документ в таблице формы.

В этой процедуре создадим запрос, в котором получим сгруппированный список складов с наименованиями из документа прихода.

Внутри цикла выборки создаем имена для команд, которые связаны со складами, команды, а также элементы формы с типом КнопкаФормы, которые разместим в группе Элементы.Список.КонтекстноеМеню.

Заметьте, все команды я привязал к одному действию, это будет процедура, которую мы создадим ниже, и в которой будет код на открытие формы того или иного склада.

Чтобы однозначно определить форму какого склада открывает та или иная команда, мы свяжем имя команды с ссылкой на склад. Для этого в реквизитах формы создадим таблицу значений, которую назовем СвязьКомандыИСклада, у этой таблицы будут две колонки: ИмяКоманды и Склад.

Будем заполнять эту таблицу в конце цикла.

Создадим обработчик события, который будет выполняться во время отработки команды из контекстного меню. Мы уже определили его имя, привязав к действию команды ранее. В этом обработчике нам надо получить ссылку на нужный склад, который связан с обрабатываемой командой. Для этого, используя параметр процедуры Элемент, получим имя отрабатываемой команды, по имени команды найдем из таблицы значений ссылку на нужный склад и откроем форму этого склада.

Нам осталось в начале процедуры ДобавитьСкладыВМенюСписка очищать команды и элементы формы, которые мы создали ранее.

Все теперь наше контекстное меню будет динамически изменяться в зависимости от того, какие склады имеются в табличной части документа.

А при выполнении команды, будет открываться форма того склада, который указан в названии этой команды.

Мой опыт преподавания показывает, что многие начинающие и не очень разработчики всё еще слабо программируют в управляемом приложении, теряются во многих вопросах.
Книга «Основы разработки в 1С: Такси» научила программировать под управляемым приложением 300+ начинающих программистов 1С.
И Вы обязательно освоите все тонкости разработки под управляемым приложением 1С 8.3.

Читайте также:  Электронные таблицы логические функции презентация

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Только для читателей моего блога,
промо-код на скидку в 150 рублей — blog

Для тех же, кто только начинает:
общие вопросы по разработке в 1С подробно и основательно даются в книге «Программировать в 1С за 11 шагов»

Стартуйте в изучении 1С программирования в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

Только для читателей моего блога, промо-код на скидку в 150 рублей — blog

Эти книги плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

2 thoughts on “ Динамически изменяющееся контекстное меню в 1С 8.3 ”

Что за бред и корявый код?
И разве не смущает, что:
В обработчике СписокПриАктивизацииЯчейки используется вызов контекстного серверного метода формы
т.е. по факту получаем бесконечный цикл, благо платформа об этой лаже знает и не зациклит, но будет постоянно спамить…

Читаем внимательно статью, прежде чем оставлять неграмотные комментарии.
Чтобы не было бесконечного цикла в самом начале осуществляется проверка.

Как и в любом другом Windows приложении, в 1С контекстное меню вызывается щелчком правой кнопки мышки на элементе формы. Состав меню и наборы выполняемых команд могут редактироваться:

  1. Вручную, созданием соответствующего списка и определением набор процедур;
  2. Автоматически.

Принципам работы с контекстным меню и посвящена наша статья. Мы постараемся рассмотреть вопросы включения, отключения этого элемента на управляемых и обычных формах, а также принципы программного создания списка команд, вызываемых правой кнопкой мышки.

Автоматическое создание контекстного меню

Включение и отключение контекстного меню любого элемента формы происходит непосредственно в конфигураторе. При этом следует иметь ввиду, что для управляемых и для обычных форм возможность выполнения этого действия реализована по-разному.

Допустим, условие задачи предполагает наличие контекстного меню у элемента формы «ТабличныйДокумент». Решим эту задачу для обычной формы внешней обработки.

  1. Создадим обработку и добавим ей новую форму;
  2. На форме создадим элемент с типом «ТаблицаЗначений»;
  3. Откроем меню свойств этого элемента (Рис.1); Рис.1
  4. Здесь следует обратить внимание на пункты «АвтоКонтекстноеМеню» и «КонтекстноеМеню».

Выключение галочки «АвтоКонтекстноеМеню» позволяет разработчику создать меню, состоящее только из собственных пунктов. Если же флажок активирован, автоматически созданное меню будет располагаться под списком команд, сформированным пользователем.

В свойствах параметра «КонтекстноеМеню» можно определить типовой список команд, который существует на форме (Рис.2).

В нашем случае мы можем:

  • Связать контекстное меню с командной панелью формы обработки;
  • Вызвать те же действия, которые включены в выпадающий список команды «Действия»;
  • Определить тот же набор пунктов, который реализован в основных действиях формы.

Если мы хотим, чтобы в выпадающем по правому клику списке был реализован набор команд, характерный для табличного поля, мы должны:

  1. Создать командную панель, для которой источником действий будет выступать наше табличное поле;
  2. Снять видимость с этого элемента;
  3. Установить в параметре «КонтекстноеМеню» нашу командную панель.

Решим эту же задачу для управляемых форм. Процесс создания формы и добавление на нее нового реквизита мы отдельно рассматривать не будем. Обратим внимание на тот факт, что не в свойствах поля (Рис.3), не в свойствах реквизита формы, не в свойствах элемента параметра, связанного с контекстным меню нет.

Включить контекстное меню можно, если по элементу формы «Реквизит1» кликнуть правой кнопкой мыши (Рис.4). В выпавшем списке выберем пункт «Показать контекстное меню».

После этого дерево элементов формы получит новую ветку (Рис.5)

Теперь рассмотрим процесс заполнения контекстного меню.

Ручное заполнение пунктов меню

Реализацию ручного заполнения контекстного меню элемента обычной формы можно осуществить простым добавлением кнопок в командную панель, которая определена в соответствующем параметре.

Для управляемой формы набор команд, реализованных в выпадающем списке можно определить, перетаскиванием их с закладки «Команды» в соответствующую ветку дерева элементов (Рис.6).

При этом важно понимать, что в качестве пунктов меню могут выступать не только команды формы, но и стандартные и глобальные команды.

Программное добавление контекстного меню и списка команд в нем

Допустим, перед нами как разработчиками стоит задача в создании в контекстном меню команд, которые перемещают строки табличной части вверх и вниз по списку. Сами процедуры перемещения мы описывать не будем, рассмотрим только программное добавление соответствующих пунктов.

  1. У формы создадим обработчик события ПриОткрытии;
  2. Процедуры разместим на клиенте и на сервере, так как для работы нам понадобятся элементы формы, использование директив без контекста не имеет смысла;
  3. Важное замечание: сами команды должны быть определены и прописаны, иначе запуск обработки не состоится;
  4. Наша форма будет иметь вид, представленный на Рис.7; Рис.7
  5. Перейдем к программированию;
  6. В первую очередь добавим новые элементы код на Рис.8; Рис.8
  7. Определим представление новых элементов и соответствующие команды (Рис.9); Рис.9

После этих действий контекстное меню будет выглядеть как на Рис.10

Рис.10

Если нам не нужны остальные действия с таблицей, и мы хотим, чтобы меню состояло только из наших пунктов, нам придется добавить еще несколько строк кода.

Первая мысль, которая приходит в голову – отключить автозаполнение. Если бы наше контекстное меню не было создано программно, мы бы так и сделали, однако попытки обнаружить соответствующее свойство у созданного с помощью кода меню (у автора статьи) не увенчались успехом. И было принято решение сделать все предопределенные строки списка невидимыми.

Для этого, перед вышеприведенным кодом был вставлен следующий цикл (Рис.11):

Таким образом, все подчиненные элементы контекстного меню стали не видны, и оно приобрело вид, как на Рис.12

Рис.12

Источник

Adblock
detector