Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Отличие отбора от параметра в СКД

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

Делаю отчет в упр.приложении на СКД. Отчет простой - обороты по регистру Продажи. В регистре Продажи есть измерение - Организация. Соответственно в отчете есть параметр для отбора - Организация.
В конфигурации есть функциональная опция "Учет по нескольким организациям".
Как привязать параметр Организация к этой функциональной опции?
Т.е. чтобы если эта опция отключена, параметр пользователь бы не видел.
Ответ: Еще одна засада обнаружилась с функц.опцией.
В той же конфигуре делаю отчет на СКД по таблице остатков и таблице оборотов регистра Бухгалтерии.
В регистре бухгалтерии есть измерение Организация. Включил его в ту же функц.опцию.
В отчете сделал отбор по организации.
Но в отличии от предыдущего отчета, этот отбор не пропадает, если отключить функц.опцию.
Что не так?
Вопрос: Открыть регистр сведений с отбором

Доброго всем дня!

Для создания документа "Отчет об исполнении мероприятий" хочу предоставить для выбора мероприятия из Регистра сведений с отбором по подразделению и со статусом не равно "выполнен".
Документ "Отчет..." с полями Подразделение и ТЧ "Нарушения"
Регистр Сведений "ХодИсполнения" независимый непериодический
Измерения: СсылкаНаПланМероприятий, Подразделение;
Ресурс: Статус (Перечисление).

Создала форму списка Регистра с названием ФормаВыбора.
Форма открывается, но без отбора
Код 1C
1
2
3
4
5
6
7
8
9
&НаКлиенте
Процедура ВыбратьНарушения(Команда)
    ПараметрыПодбора = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Ложь, Истина);
    Отбор = Новый Структура; 
    Отбор.Вставить("ОбъектСТУ", Объект.ЗонаОтветственности); 
    ПараметрыПодбора.Вставить("Отбор", Отбор); 
    ФормаПодбора =ОткрытьФорму("РегистрСведений.ХодИсполнения.Форма.ФормаВыбора", ПараметрыПодбора, ЭтаФорма);
    
КонецПроцедуры
Мои попытки побороть:
Как выяснила, значение отбора не передается в регистр.
Попробовала создать Параметр в форме выбора - не получилось передача\прием
В форме выбора создала реквизит ЗонаОтветственности с типом Справочник.Подразделения, чтобы передать в него значение из документа "Отчет..." и
Код 1C
1
2
3
4
5
6
7
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Фрм = РегистрыСведений.ХодИсполнения.СоздатьНаборЗаписей();
    Фрм.Отбор.ЗонаОтветственности.Установить(ЗонаОтветственности);
    Фрм.Прочитать();
КонецПроцедуры
 
Ошибок нет, отбора тоже. В отладчике
Сначала открывает форму регистра, затем - ПриСозданииНаСервере, только потом реквизиту формывыбора присваивается значение реквизита документа "отчет..", и конечно отбора не происходит.

Объясните, пожалуйста, мне на пальцах как должно быть, и я постараюсь понять и сделать)
Спасибо)

Прошу прощения. УФ, 8.3
Ответ: SHIFT_969, спасибо.
Именно так я и делала, создала на форме параметр с типом Справочник.Подразделения
И не получается. Если выбираю из ТЧ документа Мероприятия. С передачей и обработкой параметра не возникает проблемы, все отбирается по Подразделению.
А вот с регистром никак...

Можно конечно не заморачиваться с этим регистром и выбирать из ТЧ документа, но хотелось бы разобраться почему у меня не получается

Добавлено через 15 часов 53 минуты
Получилось с параметром, ошибка была в запросе.
Всем спасибо)
Вопрос: Отчет СКД упр.формы. Как программно добавить условие, чтобы появилось в Настройки-Отбор?

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

    Параметр = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("СчетаУчета"));
    Если Параметр <> Неопределено Тогда
        Параметр.Значение = МассивСчетов;
        Параметр.Использование = Истина;
    КонецЕсли;

В запросе в параметрах виртуальной таблицы есть условие:
 Счет В (&СчетаУчета)

А как сделать, чтобы этот список счетов пользователь мог увидеть нажав кнопку "Настройки" во вкладке "Отбор"?
И при необходимости изменить этот список.
Ответ: Нашел одну статейку. Оказывается настройка параметров виртуальных таблиц производится отдельно от отборов.
Т.е. параметр виртуальной таблицы нельзя засунуть в отбор.

Значит, при выполнении отчета, сначала сработает мое программно установленное условие в параметре виртуальной таблицы, а потом, если пользователь вручную установил отбор по  счету, сработает его условие.
Правильно понимаю?
Вопрос: Отбор в СКД

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

В отчете используется несколько отборов. Отбор по периоду и документу работает отлично, но при использовании отбора по ответственному (СправочникСсылка.Пользователи) выдает следующую ошибку: Ошибка в элементе отбора: глобальные элементы отбора обязательно должны использовать поля " Равно Иванов Иван Иванович"

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

Привет Всем
в 1С предприятие 8.2 есть "Отчет" универсальный список сотрудников , на форме(обычная форма) добавил реквизит Отдел(Справочник.ПодразделениеОрганизации), в СКД добавил Параметр Отдел что бы делал отбор только по одному подразделению, все работает, в отчете когда заходишь в "Редактировать Структуру Отчета" во вкладке Отбор можно добавить условия то есть в левом поле выбирается "Поле Компоновки Данных" --> "Подразделение" ВидСравнения --> Равно в правом поле "Поле Компоновки Данных" --> Параметр.Отдел, как прописать это условие программно? в Общем модуле(ТиповыеОтчеты)  есть готовая функция:

Функция ДобавитьОтбор(ЭлементСтруктуры, Знач Поле, Значение, ВидСравнения = Неопределено, Использование = Истина) Экспорт
    
    Если ТипЗнч(Поле) = Тип("Строка") Тогда
        Поле = Новый ПолеКомпоновкиДанных(Поле);
    КонецЕсли;
    
    Если ТипЗнч(ЭлементСтруктуры) = Тип("КомпоновщикНастроекКомпоновкиДанных") Тогда
        Отбор = ЭлементСтруктуры.Настройки.Отбор;
    Иначе
        Отбор = ЭлементСтруктуры;
    КонецЕсли;
    
    Если ВидСравнения = Неопределено Тогда
        ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    КонецЕсли;
    
    НовыйЭлемент = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    НовыйЭлемент.Использование  = Использование;
    НовыйЭлемент.ЛевоеЗначение  = Поле;
    НовыйЭлемент.ВидСравнения   = ВидСравнения;
    НовыйЭлемент.ПравоеЗначение = Значение;
    Возврат НовыйЭлемент;    
КонецФункции
      
в ЭлементСтруктуры я передаю КомпоновщикНастроек, а вот в "Поле" и в "Значение" как передать "Поле Компоновки Данных"?
Ответ: отбор и параметр!? нафейхоа
Вопрос: динамический список. параметры или отбор?

добрый день всем!

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

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

вариант 1 (юзать параметры):
ДС.Параметры.УстановитьЗначениеПараметра("Склад", Склад);

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


все время юзал вариант 1, и не думал, тупо красивее оно, но вот где-то наткнулся на использование варианта 2 и теперь вот меня МУЧАЮТ И РАЗРЫВАЮТ НА ЧАСТИ сомнения... как быть граждане?)))
Ответ: () Отбор работает с уже полученной из БД выборкой, т.е. все соединения и проч условия наложены и сформировано представление (нечто типа временной таблицы), дальше отборы работают с сим представлением. Объёмы работы по формированию списка меньше или сравним (при простом запросе) с запросом в БД.
Вопрос: Передача параметров в форму выбора.

Прошу подсказки.
Из документа "Реализация товаров и услуг" вызывается форма выбора по договору (ERP). Конфа правленая, сравниваю с типовой. В ОбработкеСозданияНаСервере формы выбора смотрю в отладчике Параметры.Отбор. Никак не могу понять как список отбора формируется - явного вызова этой формы с параметрами нет, в свойстве "СвязиПараметровВыбора" только один элемент отбора, а в Параметры.Отбор уже несколько. Может кто подскажет где искать.
Ответ: () Да, я понимаю что где-то они должны заполняться, но как они называются в реализации (то что есть "Параметры" в выборе)? Смотрю например выбор контрагента, там же должен измениться отбор по контрагенту.
Вопрос: Поле выбора отбора в отчёте СКД

Приветствую ребята, вопрос возник. Хочу вывести поле выбора отбора в отчёте, но что-то стопорится у меня это дело, нужен ваш совет...

Для поля контрагенты внёс код такой, он делает внутренний отбор, а как для поля слева отобразить ВидСравнения и привязать его к Пользователям?

1C
1
2
3
4
5
6
7
8
9
10
11
Процедура ПользователиПриИзменении(Элемент) Экспорт
    
    Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Пользователи"));
    Параметр.Значение = Пользователи;
    Параметр.Использование = Истина;
 
    ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтветственныйЗаОтветНаЗапрос");
    ЭлементОтбора.ПравоеЗначение = Пользователи;
КонецПроцедуры
Ответ: Dethmontt, убираю код, есть только СКД и поле отборов на форме - пустой отчёт...

Добавлено через 1 час 50 минут
Dethmontt, разобрался, почему пустой отчёт при отборе скд был, стояло условие в запросе скд по пользователям - удалил его и всё заработало. Благодарю за подсказки)
Вопрос: Псевднонимы в параметрах вирт.таблицы оборотов рег.накопления

Здравствуйте.

Столкнулся с задачкой доработки типового отчета, для решения задачи нужно было к типовому запросу сделать объединение с другим запросом по оборотному регистру накопления.
Запрос я написал, данные формировались, но при попытке установки отбора по контрагенту отбор устанавливался только на данные типового запроса, а на данные идущего после "ОБЪЕДИНИТЬ ВСЕ" без учета отбора. Парился несколько часов, искал причину, в конце концов более опытный коллега подсказал, что дело в псевдонимах, указываемых в параметрах вирт. таблицы оборотов в фигурных скобках, т.е.:

ВЫБРАТЬ ...

ИЗ
		РегистрНакопления.Выручка.Обороты({(&НачалоПериода)}, {(&ОкончаниеПериода)}, Авто, {(ВидЗапаса.Поставщик).* КАК Поставщик}) КАК Таб1
...


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

Так вот, я так и не понял, где эти параметры указываются в конструкторе или это можно установить только при ручной корректировке запроса?
Ответ:
автор
Скорее всего закладка в компоновке - таблица, а в ней маленькая кнопочка "параметры виртуальной таблицы".


Действительно, не заметил эту кнопочку, буду знать. Всем спасибо.