Скд отбор по группе

Вопрос-ответ Отзывов (4) В закладки

Подскажите, пожалуйста, как программно в СКД в отборе создать группу ИЛИ?

Нет похожих статей

Свойство родитель доступно только для чтения! Есть какие нибудь ещё варианты для создания отбора с признаком ИЛИ программно?

Вдруг кому пригодится

Элементы = КомпоновщикНастроек.Настройки.Отбор.Элементы;

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

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

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

1. Пользовательские настройки СКД

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

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

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

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

1.1. Установка пользовательских параметров СКД

Для установки значения параметра обычно используется такая конструкция:

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

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

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

1.2. Установка пользовательских отборов СКД

1.2.1. Пример открытия отчета с фиксированным отбором

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

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

В данном случае форма откроется с отбором, но отбор не будет доступен для редактирования.

1.2.2. Пример открытия отчета с пользовательским отбором

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

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

После чего добавить отбор в пользовательские настройки. Он появится на форме, в быстрых настройках СКД, и на вкладке "Отборы".

Если пользовательские отборы нужно объединить в группу отборов ("И", "Или", "Не"), тогда нужно сначала добавить группу пользовательского отбора:

У группы отборов есть свойство "Элементы", чтобы элемент отбора был подчинен данной группе (находился в этой группе) Отбор нужно добавлять именно в эту группу.

Специальные предложения

по-моему, в СП и любой типовой в общем модуле по СКД примеров гораздо больше.

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

(1) Вы не поверите. Нету там ничего. В своё время решал похожую задачу, отладчик замучал (но решил).

(7) откройте общий модуль ОбщегоНазначенияКлиентСервер изучайте примеры, а если проискать по общим модулям "Отбор", то можно еще найти примеры.

А в примерах автора топика я не увидел, что есть хоть намек на иерархии, а в настойках иерархия сплошь и рядом.

Опять ИТС и БСП перепечатывают.

(4)Я не претендовал на то, что это статья уникальна в своем роде. На ИТС по вашей ссылке описан один из методов БСП, если хотите, то в данной статье просто показано, как это работает внутри.

Читайте также:  Признак дирихле для функциональных рядов

П.С. Если не интересно, то можно всегда пройти мимо =)

Спасибо большое за подсказку – тоже потерял кучу времени на этом.

Это про какую конфу, вид клиента? Где этот код расположен? в форме / в модуле, сервер / клиент, обычное приложение / управляемое? Конфа с БСП / без БСП?

где можно применить эти советы?

(5) В самом начале есть пример кода, который открывает отчет СКД с параметрами.

Все чего там не хватает это

Отчет = Отчеты.муОтчет.СоздатьОбъект();
КомпоновщикНастроек = Отчет.КомпоновщикНастроек;

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

Вернемся к вашим вопросам.
1. "Это про какую конфу". Это про любую конфу, т.к. речь идет о механизмах платформы 1с 8.3
2. "Вид клиента". Естественно, что объект вы создаете на сервере, а открываете отчет на клиенте (у данной статьи нет цели рассказывать про клиент серверную архитектуру)
3. "Где этот код расположен". В месте, где вам нужно открыть отчет =)
4. "обычное приложение / управляемое?". Управляемое приложение
5. "Конфа с БСП / без БСП". Без разницы, это не функционал БСП.

П.С. По-моему часть ваших вопросов только ради вопросов.

неее, просто мне задача такая часто попадается, и поэтому очень интересно, т.к. каждый раз как в первый раз трачу кучу времени в отладчике, чтобы понять, куда программно вставить значение, чтобы все красиво было. С nой попытки я нахожу куда сунуть настройки, чтобы работало, а с nХ2 – чтобы и отображалось корректно. И везде все решается по разному.

Например сейчас я ковыряюсь в старушке УПП, в которой кучка отчетов на СКД. И надо открывать эти отчеты с уже установленными настройками. Это обычные формы и там пользовательские настройки храняться и отображаются совсем другими механизмами, там для каждого варианта есть элемент справочника, где в хранилище значений лежат настройки и не только СКДшные. Там пользовательские настройки реализованы отдельно от того, что есть в платформе.

Читайте также:  Сбербанк система работает в режиме ограниченной функциональности

Ранее еб***ся с УТ 11.4. Там вроде СКД и УФ, но не совсем, т.к. есть БСП и общая формаОтчета с кучей кода в своем модуле и мне было очень грустно его читать, чтобы открыть отчет в котором на форме все красиво.

Из Вашего ответа я понял, что в УТ 11 я смогу протестить этот код и если все получиться "намотать на ус"

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

В новом поле выберем значение Группа Или. Выделив эту группу и используя контекстное меню, добавим в эту группу условия «Количество конечный остаток больше 3» и «Сумма конечный остаток больше 5000». Далее в корень отбора добавим условие «Количество приход больше 0». Панель отбора в результате будет выглядеть примерно так:

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>