Запрет выбора групп 1с 8

Обновлено: 08.07.2024

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

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

В случае если нужно скрыть некоторые строки списка с определенным значением нужно работать через отбор.

Первый способ работает при открытии формы.

У формы есть параметр Отбор, который является структурой, где:

Если нужно открыть форму без отбора, но скрыть несколько элементов можно это реализовать следующим образом:

Второй способ заключается в добавлении кода в обработчике события формы списка оплата счетов ПриСозданииНаСервере

Для этого в нужной процедуре открываем форму

и уже в модуле открываемой формы

Данный метод имеет больше возможностей для отбора по сравнению с предыдущим, потому, что ВидСравнения у отбора можно задавать не только Равно, но и Больше, Меньше и т.п.

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

РежимОтображенияЭлементаНастройкиКомпоновкиДанных определяет режим отображения.

Используется при отображении списка в зависимости от режима отображения табличного поля.

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

РежимОтображенияЭлементаНастройкиКомпоновкиДанных содержит режимы отображения элемента настройки компоновки данных:

Для этого в форме списка создадим команду и соответствующую ей кнопку Оплата счетов.

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

В обработчике команды пишем следующее:

Затем создадим форму списка оплаченных счетов и создадим реквизит формы ФильтрПоНДС, который мы будем использовать в качестве параметра формы при ее открытии. Теперь откроем палитру свойств основного реквизита формы Счета. Установим флаг ПроизвольныйЗапрос и в строке Настройка списка нажмем Открыть.

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

Создаем запрос со следующим текстом запроса, где указываем передаваемый параметр, по которому делаем отбор:

Имя параметра в запросе может отличаться, так как сама передача данных будет в процедуре ПриОткрытии().
В этом обработчике событий формы списка внесем код установки значения параметра запроса ФильтрПоНДС,

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

Настройка отбора в режиме 1С:Предприятие

В режиме Предприятия также можно настроить отбор. Пользователь может самостоятельно настроить состав и расположение колонок в списке, отборы документов и цвет фона строк и шрифта по определенным условиям.

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

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

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

Коллеги, добрый вечер! Сориентируйте пожалуйста новичка, подскажите куда копать?

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

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

Надеюсь описал понятно. Спасибо!

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

Как раз мой вариант в форме выбора справочника и позволяет из любых форм запретить выбор определённых элементов.
Но повторюсь, работает только при вызове формы выбора. Если есть быстрый выбор из выпадающего списка, не поможет. Для Справочника нужно создать предопределенные группы по которым устанавливаться будет запрет, например: "Группа1", "Группа2", "Группа3". Нужно создать для каждой группы соотв. константу: "ЗапретитьГруппу1", "ЗапретитьГруппу2", "ЗапретитьГруппу3".
В форме где будет происходить выбор, для реквизита определить событие Реквизит1ОбработкаВыбора(
(2) Мне кажется автор немного не то имеет в виду. Ему не хочется повторять один и тот же код на каждой форме константы. Ему необходимо в нескольких формах запретить выбрать определенную группу.
Проще всего в форме выбора в событии "ОбработкаВыбора" сделать проверку, что-то типа этого:

Единственное, что это не сработает, если не будет вызываться стандартная форма выбора. Ну или будет выбран элемент из выпадающего списка. о имеет в виду. Ему не хочется повторять один и тот же код на каждой форме константы. Ему необходимо в нескольких формах запретит
Ну просто если это выбор элемента из справочника - тогда будет открываться форма выбора?
Весь код по фильтрации будет только в этой форме в одном месте. Вместо повтора кода в форме констант.
Если конечно это не быстрый выбор.. Хотя справочник ирерархический вроде.. (5) Да, иерархический, именно так. И к запрету будет одна из групп. (4) Соверешенно верно! А ещё лучше бы запретить на уровне самого справочника, элементы которого по типу привязаны к константе. Может быть есть возмжность какая-то? (4) Так точно, своей формой выбора, в рамках её модуля это и решил. Решение приложил. Если есть какие-то нарекания, прошу озвучить :) Может прописать условие с фильтром в форме списка и форме выбора этого справочника?
Тогда везде будет это использоваться

Вариант I
RLS не подойдёт?
Добавить в справочник реквизит: "СправочныйЭлемент" и роль, которая "видит" только не справочные.

Вариант II
Забодяжить подписку на событие "ОбработкаПолученияДанныхВыбора" для источника "СправочникМенеджер.МойЛюбимыйСправочник"

Вариант II
Забодяжить подписку на событие "ОбработкаПолученияДанныхВыбора" для источника "СправочникМенеджер.МойЛюбимыйСправочник"

А как это можно реализовать? Чуть-чуть бы подробнее. Мне намекали на менеджер справочника, но я не разобрался. Что-то такое мне и видится, чтобы на уровне справочника решить, а дальше уже бы не волноваться о том, как и где мы будем выбирать из него элементы. Если это так работает.

(12) Конфигуратора рядом нет. Но там легко разобраться:
1. Добавляете новую подписку.
2. Источник СправочникМенеджер.ВашСправочник
3. Событие ОбработкаПолученияДанныхВыбора

Создаёте процедуру нажав лупу в палитре свойств (ну как обычно). Процедура создаётся с параметрами.
Далее с ИТС:

ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)

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

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

Таким образом, у нас есть следующие возможности:

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

Часто возникает необходимость в частичном ограничении доступа к данным. Например, когда пользователь должен видеть документы только своей организации. В таких случаях в 1С используется механизм ограничения доступа на уровне записей (так называемый, RLS – Record Level Securiy).

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

Для решения задачи будем использовать платформу “1С:Предприятие 8.2″. Создадим новую конфигурацию в свойствах которой в качестве основного режима запуска будет выбран вариант “Управляемое приложение”.


Далее создадим справочник “Организации” и ещё два справочника – “Контрагенты” и “Пользователи” с реквизитом “Организация”. Кроме справочников нам понадобятся два параметра сеанса – “Организация” и “Пользователь” (соответствующих типов). Значения этих параметров устанавливаются при запуске сеанса работы с конфигурацией и хранятся до его завершения. Именно значения этих параметров мы и будем использовать при добавлении условий ограничения доступа на уровне записей.

Установка параметров сеанса выполняется в специальном модуле – “Модуль сеанса”


В этом модуле опишем предопределенную процедуру “УстановкаПараметровСеанса” в которой вызовем функцию заранее подготовленного общего модуля “ПолныеПрава”. Это необходимо в силу особенностей работы базы данных в режиме управляемого приложения, когда часть программного кода может выполняться только на стороне сервера (подробно на объяснении этих принципов в данной статье я останавливаться не буду).

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

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


Перейдем на закладку “Права” роли “Пользователь” и откроем список прав справочника “Контрагенты”. Будем использовать шаблон ограничений “КонтрагентыЧтениеИзменеие” для прав “Чтение”, “Изменение” и “Доблавление”.


Для права “Чтение” будем использовать шаблон с параметром “ИЛИ ЭтоГруппа”. При этом пользователям данной роли будет разрешено чтение не только элементов справочника “Контрагенты” своей организации, но и всех групп этого справочника.

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

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

Как сделать в выпадающем списке отбор по набраному тексту
Есть выпадающий список, как сделать чтоб при наборе текста в нем предлагало варианты которые.

Отбор по владельцу в выпадающем списке (8.3)
Раньше как-то делал, после перерыва в практике забыл начисто. Потыкался наугад, не помогло. Есть.

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

Как разместить кнопку в выпадающем списке
Подскажите требуется сделать кнопочку добавить при выборе из выподающего списка (<select><option>).

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

Tklwegsd, не представляю как это сделать, нашел в инете похожий пример, но по моему там лишнего

gabd_marat, Выборкой или получением каждого нужного счета через

и т.д., но это увеличит количество обращений к базе, что в принципе считается не очень хорошим тоном.
К тому же во втором случае если будет в план счетов добавлен новый субсчет - придется дописывать код. нашел в инете похожий пример, но по моему там лишнего Если вы хотите писать под 1С и не умеете делать запросы к базе - то самое время научиться =)
Код в примере то что нужно, только в условие иерархии нужно вставить список значений в вашем случае. renat_dmitriev, Запрос не написал. но если даже создаю функцию на сервере и вставляю код выше, все равно не работает (выдает полный список плана счетов). В чем причина ? (Читал что в 1с 8.3 нужно правильно настроить свойства поля, были какие то изменения, никто не в курсе)

gabd_marat, Может причина в том, что эта процедура у вас на сервере, а на клиенте ничего не вызывается? Вы смотрели в отладчике? В процедуру заходит? Отбор устанавливает? В форме выбора при открытии отбор установлен?

Добавлено через 23 минуты
Если счетов немного, то 100% работающий вариант через ДанныеВыбора:

В обработчике на клиенте пишете

где ПолучитьСписокСчетов - серверная функция, возвращающая список значений из вашего запроса.

По поводу этого кода - мне вообще непонятно как на сервер можно в управляемом приложении передать Элемент. Я пытаюсь - выдает ошибку. Похоже нужно открывать прямо с клиента через открытьФорму. Сейчас посмотрю как это делается.

Добавлено через 9 минут
Рабочий код:

Через окно свойств элемента формы, а не просто в коде, создаете обработчик на клиенте

На сервере создаете серверную процедуру ПолучитьСписокСчетов, которая возвращает список счетов отбора.
И все должно прекрасно работать.

Спасибо , сейчас попробую

gabd_marat, Почитайте пожалуйста в синтакс-помощнике событие Автоввод, думаю по аналогии разберетесь. Там нас интересует параметр ДанныеВыбора, который опять же можно заполнить нашим списком, добавив в запрос дополнительное условие

а в параметры запроса добавив

где переменная Текст является параметром обработчка.


Как отфильтровать значения в выпадающем списке?
Здравствуйте! Суть вопроса вот в чем: есть таблица "Table1" с набором различных полей, одно из.


Как посчитать сумму значений в выпадающем списке?
Подскажите, пожалуйста. Есть выпадающий список в той же ячейке. Каждому элементу списка присвоено.


Как убрать повторяющиеся записи в выпадающем списке
Всем привет! Столкнулся со следующей проблемой: Ни с того, ни с сего, в моём выпадающем списке по.

Как установить font bold в выпадающем списке?
В тэге <select> внутри тэгов <option> хочу чтобы был текст жирным шрифтом. Но успеха не добился.

Как в webbrowser'е выбрать пункт в выпадающем списке
Доброго времени суток, подскажите как в webbrowser'е выбрать пункт в выпадающем списке ? .


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

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