Стандартная команда выбрать 1с

Обновлено: 07.07.2024

Работа с полем выбора

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

Установка значения в поле выбора

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

Например, если список выбора имеет значениями числа 1, 2 и 3, тогда в поле выбора удастся установить любое из этих значений. При установке других значений, хотя ошибки времени выполнения и не произойдет, они сохранены не будут.

Представление значения, хранящегося в поле выбора

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

Поиск значения в поле выбора по введенному тексту

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

Связь поля выбора с данными

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

Особенности инициализации и использования списка выбора

Для правильного отображения в поле выбора данных, с которыми он связан, список выбора должен формироваться в теле модуля формы. Формировать список выбора для поля выбора в обработчике любого из событий формы – поздно. Это приведет к тому, что в поле выбора будет установлено значение "Неопределено", хотя в реквизите при этом может быть любое значение.

Такая ситуация возникает из-за того, что данные устанавливаются в элементы управления формы, связанные с ними, в процессе создания формы. А обработчики событий ПередОткрытием(), ПриОткрытии() вызываются после создания самой формы, в процессе инициализации ее визуальной части. Получается, что при создании формы полю выбора поставили некоторое значение в момент, когда его список выбора пустой. При этом, поскольку список выбора пустой, вместо устанавливаемого значения в поле выбора будет сохранено значение "Неопределено".

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

Использование поля выбора: пример 1

Пусть есть форма, в которой размещены поле выбора (ПолеВыбора1), поле ввода (ПолеВвода1) и создан реквизит (Реквизит1: число, длина = 10, точность = 0). В качестве данных для редактирования в ПолеВвода1 и ПолеВыбора1 стоит реквизит Реквизит1. В теле модуля формы написан следующий код:

Открыв такую форму в режиме 1С:Предприятие, можно видеть, как будут устанавливаться значения в поле выбора:

1. В начальном состоянии поле выбора - пустое, поле ввода содержит значение 0.

2. Выбираем в поле выбора в выпадающем списке строку с надписью "Один": в поле ввода помещается значение 1. Поскольку поле ввода и поле выбора связаны с одним и тем же реквизитом формы, при изменении значения в поле ввода оно устанавливается в поле выбора и наоборот. В данном случае в поле выбора выбрали строку "Один", значение для которой равно 1. Оно и отобразилось в поле ввода.

3. Выбираем в поле выбора в выпадающем списке строку с надписью "Два": в поле ввода помещается значение 2.

Перейдем в поле ввода и попробуем редактировать значения в нем:

1. Введем в поле ввода значение 3 и сойдем с поля ввода. В поле выбора запишется значение 3 и установится значение из соответствующей строки списка выбора поля выбора ("Три").

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

Использование поля выбора: пример 2

Пусть есть форма, в которой размещены поле выбора (ПолеВыбора1), поле ввода (ПолеВвода1) и создан реквизит (Реквизит1: СправочникСсылка.Номенклатура). В качестве данных для редактирования в ПолеВвода1 и ПолеВыбора1 стоит реквизит Реквизит1. В теле модуля формы написан следующий код:

Открыв такую форму в режиме 1С:Предприятие, можно видеть, как будут устанавливаться значения в поле выбора:

1. В начальном состоянии поле выбора и поле ввода - пустые:

2. Выбираем в поле выбора в выпадающем списке строку с надписью "Один": в поле ввода помещается значение. Поскольку поле ввода и поле выбора связаны с одним и тем же реквизитом формы, при изменении значения в поле ввода оно устанавливается в поле выбора и наоборот. В данном случае в поле выбора выбрали строку "Один", значение для которой равно ссылке на на элемент справочника Справочники.Номенклатура.Элемент1. Оно и отобразилось в поле ввода.

3. Выбираем в поле выбора в выпадающем списке строку с надписью "Два": в поле ввода помещается ссылка на элемент справочника Справочники.Номенклатура.Элемент2:

Перейдем в поле ввода и попробуем редактировать значения в нем:

1. Выберем в поле ввода значение Справочники.Номенклатура.Элемент1. В поле выбора запишется значение Справочники.Номенклатура.Элемент1 и установится значение из соответствующей строки списка выбора поля выбора ("Один").

2. Выберем в поле ввода значение Справочники.Номенклатура.Элемент2. В поле выбора запишется значение Справочники.Номенклатура.Элемент2 и установится значение из соответствующей строки списка выбора поля выбора ("Два").

3. Выберем в поле ввода значение Справочники.Номенклатура.Элемент3. В поле выбора значение Справочники.Номенклатура.Элемент3 записано не будет, поскольку оно не было добавлено в список выбора. Значением в поле ввода будет "Неопределено":

Использование поля выбора: пример 3

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

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

В правой колонке - внешний вид второй формы внешней обработки. В ней размещены поле выбора и поле ввода; они оба связаны с реквизитом внешней обработки Реквизит1 по данным. Приведем текст модуля формы:

Мы видим,. что в модуле формы инициализируется список выбора для поля выбора: поле выбора может принимать значения Справочники.Номенклатура.Элемент1, Справочники.Номенклатура.Элемент2, Неопределено. При этом для двух первых значений явно указаны их представления - "Один" и "Два".

Посмотрим, как будет выглядеть вторая форма в зависимости от того, какое значение сохранено предварительно в реквизите внешней обработки Реквизит1.

Значение реквизита - пустая ссылка:

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

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

В данном случае и в поле ввода, и в поле выбора значением будет ссылка на Элемент1 справочника. При этом для представления значения поле выбора воспользуется представлением установленного значения из списка выбора - строкой "Один".

Значение реквизита в списке выбора для поля выбора отсутствует:

В данном случае в открываемой форме в поле выбора и поле ввода будет произведена попытка установить в качестве значения ссылку на Элемент3 справочника. В поле ввода такое значение будет нормально установлено, а вот в поле выбора после его установки сохранится значение Неопределено , поскольку ссылка на Элемент3 справочника в значения из списка выбора не входит.

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

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

Для того, чтобы расположить на форме кнопку, раньше, в версии 8.1, нужно было:


В 1С версии 8.2 появились управляемые формы. Разработка управляемых форм отличается и на них нельзя «перетащить кнопку».

Как же тогда быть?

Итак ранее кнопка представляла собой отдельный элемент формы.

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

В новой версии 1С 8.2 появился новый объект 1С – команда. Он реализует как раз этот принцип.

Команда 1С – это набор действий, которые должна выполнить программа, сформулированных на языке 1С. Текст программы команды 1С хранится в собственном модуле команды 1С.

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

Например, если перетащить просто на форму – будет кнопка, если в группу командной панели – то кнопка командной панели (плоская), а можно перетащить в меню – тогда это будет пункт меню.


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

Стандартные команды 1С

Расширяем сознание дальше. Итак, суть команды 1С – это действие. Оно может быть запрограммировано на языке 1С.

Но мы знаем также действия, которые не нужно программировать на языке 1С, так как они уже доступны в платформе 1С. Например, для справочников стандартные действия – это возможность создания элемента. Для формы справочника – возможность записать, а для документа – провести. Это тоже действия?

Да, и теперь они называются – стандартные команды 1С. Свои стандартные команды 1С есть у справочников, документов, форм и прочих объектов 1С.


Стандартные команды 1С можно отключить у конкретного объекта 1С с помощью галочки «Использовать стандартные команды 1С» в конструкторе объекта 1С на закладке «Команды 1С».

Владелец команды 1С

Команды 1С находятся во вложенной ветке своего владельца. Например, Справочники/Контрагенты/Команды 1С.

Также есть команды 1С, которые не имеют владельца, так как они являются общими. Такие команды 1С не привязаны к объектам и находятся в ветке Общие/Общие команды 1С.


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


Параметры команды 1С

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

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

В свойствах команды 1С возможно указать:

  • Тип параметра команды 1С – тип объекта 1С, который будет использован в качестве параметра, например, справочник Контрагенты
  • Режим использования параметры – нужно одно значение или список (массив).


Чтобы разместить команду на форме, можно указать в свойствах команды 1С группу командного интерфейса, где она должна располагаться.

Редактор формы используется для создания и редактирования форм объектов прикладного решения. Формы объектов используются системой для визуального отображения данных в процессе работы пользователя.

Любая форма представляет совокупность нескольких составляющих:
  • элементов — объектов, определяющих визуальное представление формы и осуществляющих взаимодействие с пользователем,
  • командного интерфейса — совокупности команд, отображаемых в форме;
  • реквизитов — объектов, данные которых форма использует в своей работе.
  • команд — действий, которые определены в данной конкретной форме,
  • параметров — объектов, значения которых характеризуют саму форму, используются при ее создании и остаются постоянными в процессе «жизни» формы,
  • модуля — программы на встроенном языке, отвечающей за работу с элементами и за обработку событий;

Редактор формы

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

В отдельном окне, в нижней части редактора, отображается внешний вид формы в режиме 1С:Предприятие.

Редактирование элементов

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

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

Редактор формы

Тогда в режиме 1С:Предприятие она будет выглядеть следующим образом:

Редактор формы

Заголовок каждой группы — страницы отображается на отдельной закладке. Разработчик имеет возможность задать режим отображения закладок: снизу или сверху:

Редактор формы

Например, закладки можно расположить снизу:

Редактор формы

Элементы

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

Редактор формы

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

Редактор формы

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

Разделители

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

Редактор формы

При перемещении разделителя, все элементы, связанные с разделителем, будут изменять свои размеры или перемещаться.

Модуль формы

Для редактирования модуля формы конфигуратор вызывает редактор текстов и модулей. Этот редактор предоставляет разработчику большое разнообразие возможностей для создания и изменения текста модуля. Подробнее…

Реквизиты формы

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

Редактор формы

Если у формы существует основной реквизит, определяющий поведение формы, отличное от типового, — он выделяется жирным шрифтом.

Командный интерфейс формы

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

Редактор формы

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

Команды формы

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

Редактор формы

На закладках Стандартные команды и Глобальные команды разработчику предоставляются списки команд, генерируемых платформой и доступных для использования в данной форме. Их свойства изменять нельзя, можно только добавлять их в форму.

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

Параметры формы

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

В данной статье будет описана процедура множественного выбора в 1С. Мы подробно рассмотрим метод с множественным выбором на данной платформе и проиллюстрируем его на конкретном примере, а также проведём анализ множественного подбора как функции, от которой произошла модель множественного выбора.

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

Множественный подбор – это инструмент, который работает в системе 1С 8.3 с формами справочника и делает различные подборки в них. Данная форма будет запущена до тех пор, пока не завершат её работу при помощи метода «Закрыть()».

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



Рис. 1 Работа с множественным подбором в форме справочника в 1С 8.3

Чтобы открыть форму, обращаемся к её параметрам, они регулируют состояние, в котором данная форма будет открыта. Параметры открытия формы имеют вид структуры, в которой один элемент соответствует одному состоянию. И, соответственно, код элемента – это наименование параметра открытия формы.

Данную структуру далее выводим в метод «ОткрытьФорму()». Перед этим также стоит сделать формировку структуры. Видим, что там находится единственный элемент, код которого – «ЗакрыватьПриВыборе».

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

2. Подбор при помощи множественного выбора в 1С

Дальше рассмотрим, как осуществить множественный выбор – по сути, это такой же подбор, только с условием, что можно выбирать несколько строк в списке.

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

Так что следует запустить возможность выделения нескольких элементов. Для этого нужно задействовать параметр по расширению формы в динамическом списке – «МножественныйВыбор».

Для использования модели множественного выбора необходимо в форме в документе «ПриходнаяНакладная» поменять содержимое в команде «Подбор», как демонстрируется на скриншоте с примером кода ниже:



Рис. 2 Подключение возможности выделения нескольких элементов

После вышеуказанного действия форма с выборами сможет отдавать не по одному элементу, а сразу массив из элементов. Далее следует в обработчике для события «ОбработкаВыбора» сделать обход массива из элементов, которые были им получены. Это можно сделать, как показано на скриншоте с программным кодом ниже:



Рис. 3 Форма с выборами – множественный выбор

Таким образом стандартный множественный выбор в форме выбора был полностью реализован в системе 1С.

Читайте также: