[Расширения] Отборы в динамических списках

21.05.16

Разработка - Механизмы платформы 1С

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

* В дополнение к механизму http://infostart.ru/public/437760/ "Динамическое управление видимостью и доступностью элементов форм"

Скачать файлы

Наименование Файл Версия Размер
Отборы в динамических списках с использованием механизма расширений
.zip 130,28Kb
13
.zip v.1 130,28Kb 13 Скачать

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

Для каждого из двух "видов" динамических списков отборы устанавливаются по-разному:

1. Для обычного динамического списка: добавить условие с параметром отбора;

Пример: в списке товаров показывать только позиции с остатком больше 10

ТекстУсловия = " ГдеТоварыНаСкладеОстаток.КоличествоОстаток > 10";
Список.ТекстЗапроса= Список.ТекстЗапроса + ТекстУсловия;

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

Для простых условий используется тип данных ЭлементОтбораКомпоновкиДанных:

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

Для сложных условий используется тип данных ГруппаЭлементовОтбораКомпоновкиДанных:

ГруппаОтбора = Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;

ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Родитель = ГруппаОтбора;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Поле1");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = Значение1;
	
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Родитель = ГруппаОтбора;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Поле2");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = Значение2;

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

Одно расширение (Расширение1.cfe) демонстрирует отбор для обычного динамического списка (форма списка номенклатуры - фильтр по остаткам), второе (Расширение2.cfe) - отбор для динамического списка с произвольным запросом (форма списка документов Поступление товаров - фильтр по контрагенту).

В архив входят: дамп демо-базы 1С (закрытой от изменений) и два расширения.

Динамические списки Отборы в динамических списках

См. также

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

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

06.10.2023    14790    SeiOkami    46    

112

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    9000    human_new    27    

68

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    5623    YA_418728146    6    

119

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    5118    sebekerga    54    

88

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    11259    SeiOkami    24    

91

Методы работы с универсальным отчетом в подсистеме "Варианты отчетов" на БСП

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

30.05.2023    4032    quazare    4    

85

Расширение глобального поиска 1С, или Глобальный поиск "на максималках"

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Мало кто знает, что поле "Глобального поиска" в 1С можно доработать. Добавить свои варианты поиска, кнопочки в результатах и даже целые пользовательские меню.

27.03.2023    6085    SeiOkami    10    

133

Версионирование объектов VS История данных

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Давайте разберемся в механизме «История данных» и поэкспериментируем для наглядности. Сравним «Версионирование объектов» и «Историю данных».

06.03.2023    13513    dsdred    48    

157
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Alex_E 2345 25.05.16 08:33 Сейчас в теме
Ещё - Настроить список наверное не катит? Пошто расширение непонятно, но...)))
2. OlegK 53 25.05.16 16:59 Сейчас в теме
Если нужно запретить саму возможность настраивать пользователю доступность и видимость колонок, то - не катит
3. Alex_E 2345 25.05.16 17:02 Сейчас в теме
(2) Прикольно, но настроить любой список в любой конфигурации разрешено по умолчанию, для чего нужна Ваша разработка маненько непонятно...
4. OlegK 53 25.05.16 17:21 Сейчас в теме
Ок, для тех, кто не понял идею, откорректирую описание. Но ещё раз поясню - часто на практике нужно так настроить доступ, чтобы пользователь видел только то, что ему разрешено. Т. е. настроить для кого-то определенным способом набор колонок (полей). И, чтобы пользователь не имел возможности изменить эти настройки.
5. Alex_E 2345 25.05.16 18:16 Сейчас в теме
упс, это настройка доступа...не внял...пусть будет так)))))
6. German_Tagil 42 09.04.20 09:51 Сейчас в теме
мда скачал
Оставьте свое сообщение