🔥 Горящие вакансии
Все статьи

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

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

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Элементы.ГруппаСчета.Видимость = Ложь;
КонецПроцедуры

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

Открыть форму с отбором можно для любых объектов и несколькими способами в режиме 1С:Конфигуратор, рассмотрим на примере регистра накопления «Оплата счетов»:

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

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

Ключ структуры — имя параметра,

Значение — значение параметра формы или как в данном случае предопределенное значение, как в данном случае. Если отбор берется со значением элемента формы, то имя элемента должно совпадать с именем параметра структуры.

ЗначениеОтбора = Новый Структура("СтавкаНДС", ПредопределенноеЗначение("Перечисление.СтавкиНДС.НДС20"));
ПараметрыВыбора = Новый Структура("Отбор", ЗначениеОтбора);
ОткрытьФорму("РегистрНакопления.ОплатаСчетов.ФормаСписка", ПараметрыВыбора);

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

Форма = ОткрытьФорму("РегистрНакопления.ОплатаСчетов.Форма");
Форма.Элементы.СтавкаНДС.Видимость = Ложь;

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

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

ОткрытьФорму("РегистрНакопления.ОплатаСчетов.ФормаСписка");

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СтавкаНДС");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.РедимОтображения = РежимОтображенияЭлементаНастройкиКомпановкиДанных.Недоступный;
    ЭлементОтбора.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.СтавкиНДС.НДС20");
КонецПроцедуры

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

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

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

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

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

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

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

Авто — значение режима нужно получать из основных настроек,

БыстрыйДоступ — этот элемент настройки предназначен для режима быстрого доступа. Он будет доступен в табличном поле, если у расширения табличного поля отбора свойство РежимОтображения будет установлено в значение Все или БыстрыйДоступ,

Недоступный — этот элемент настройки не предназначен для изменения в составе пользовательской настройки,

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

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

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

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

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

&НаКлиенте
Процедура ОплатаСчетов(Команда)
    
    ФормаСписка = ПолучитьФорму("РегистрНакопления.ОплатаСчетов.ФормаСписка");
    ФормаСписка.ФильтрПоНДС = Элементы.Список.ТекущаяСтрока;
    ФормаСписка.Открыть();
КонецПроцедуры

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

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

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

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

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

ВЫБРАТЬ
    ОплатаСчетов.СчетНаОплату,
    ОплатаСчетов.Организация,
    ОплатаСчетов.СтавкаНДС,
    ОплатаСчетов.Сумма,
    ОплатаСчетов.СуммаНДС
ИЗ
    РегистрНакопления.ОплатаСчетов КАК ОплатаСчетов
ГДЕ
    ОплатаСчетов.СтавкаНДС = &ФильтрПоНДС  

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

В этом обработчике событий формы списка внесем код установки значения параметра запроса ФильтрПоНДС,

&НаКлиенте
Процедура ПриОткрытии(Отказ)

    Список.Параметры.УстановитьЗначениеПараметра("ФильтрПоТовару", ФильтрПоТовару);
КонецПроцедуры

где

«ФильтрПоТовару» — параметр из запроса динамического списка,

ФильтрПоТовару — ссылка на текущую строку в списке оплата счетов,

Список.Параметры — это список параметров запроса динамического списка для реквизита Счета,

УстановитьЗначениеПараметра — устанавливает значение параметра и включает свойство Использование. Если параметр с указанным именем не найден, будет вызвано исключение.

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

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

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

Рассмотрим настройку списка документов на примере регистра накопления «Книга продаж».

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

В окне «Настройка формы»  по кнопке «Еще» можно изменить расположение колонок по кнопкам с синими стрелочками «вверх-вниз» («вверх» – колонка сдвинется вверх, «вниз» – колонка сдвинется вправо), удалить колонку (по кнопке с красным крестиком), скрыть или установить видимость колонки.

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

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

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

Если нет нужного фильтра, можно настроить свой: по кнопке «Еще» на форме списка выберите «Настроить список», на закладке «Отбор» настройте отбор по нужному полю

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

Отправить резюме

    Я согласен на обработку персональных данных в соответствии
    со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

    Pекомендовать друга

      Выбрать вакансию
      • Программист 1С
      • Консультант-аналитик 1С
      • Разработчик Android
      • Разработчик iOS
      • Разработчик React JS (middle)
      • Разработчик React Native (middle)
      • UX/UI дизайнер
      • Аналитик
      • QA engineer (тестировщик)
      • Разработчик PHP (senior)
      • Разработчик React JS
      • Разработчик Flutter
      • Разработчик React Native
      • Проекты для команды специалистов 1С
      • Вакансия для специалистов 1С: ИП, СЗ и юрлиц
      • Ведущий консультант Microsoft Dynamics 365 Sales
      • Консультант по финансам Microsoft Dynamics AX
      • Руководитель проектов Microsoft Dynamics 365 FO и AX 2012
      • Консультант Microsoft Dynamics AX на зарубежные проекты
      • Ведущий консультант Microsoft Dynamics 365 Finance and Operation
      • Разработчик Microsoft Dynamics 365 for Finance and Operations
      • Разработчик Microsoft Dynamics Axapta
      • Разработчик PHP (фреймворк Yii2 или Laravel)
      • Разработчик Bitrix
      • Ведущий разработчик Microsoft Dynamics AX на зарубежные проекты
      • Разработчик PHP
      Я согласен на обработку персональных данных в соответствии
      со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

      Спасибо!

      Мы получили ваше резюме. Менеджер свяжется с вами в течение трех дней

      Горящие вакансии