1с ошибка в элементе отбора глобальные элементы отбора обязательно должны использовать поля

Обновлено: 07.07.2024

При разработке отчета на СКД часто требуется указать связь между параметрами этого отчета. Например если в отчете имеется параметры "Номенклатура" и "Серия", при выборе серии показывать только серии данной номенклатуры. Или нужно отображать в списке выбора элементов справочника "ЗначенияСвойствОбъектов" только значения, принадлежащие определенному элементу плана видов характеристик "ДополнительныеРеквизитыИСведения". Несмотря на то, что в полях и параметрах СКД есть возможность указать параметры выбора и связи параметров выбора, этот механизм не работает (по крайней мере, так обстоит дело в ERP 2.4.9.98).

Можно написать свою форму отчета, разместить на ней элементы отбора и сделать в ней все, что угодно. Но не хотелось бы терять мощные механизмы общей формы "ФормаОтчета" или копипастить их в свой отчет.

Можно модифицировать общую форму "ФормаОтчета" под свои задачи. Но не хотелось бы это делать каждый раз при разработке нового отчетов.

Предлагаю пример решения этой задачи для двух вариантов:

1. Фиксированный параметр выбора для поля "Отбор". В отчете сделан отбор по полю с типом "Справочник.ЗначенияСвойствОбъектов". При выборе значения отбора требуется показать пользователю только элементы с заданным владельцем.

2. Связи параметров выбора для поля "Параметр". В отчете имеется 2 параметра: Номенклатура и Серия. При выборе серии, показывать пользователю только серии выбранной номенклатуры

1. Фиксированный параметр выбора

Создаем отчет (файл ВнешнийОтчет_ФиксированныеПараметрыОтбора.erf).

Если отчет встроен в расширение, то необходимо:

1. Добавить в расширение подсистему ПодключаемыеОтчетыИОбработки

2. Добавить отчет в эту подсистему

3. В модуле менеджера отчета написать код:

В 1С добавить дополнительный реквизит справочника Номенклатура "Раздел комплектации" с типом значений "Дополнительное значение". Указать или сгенерировать имя реквизита, в моем случае это "РазделКомплектации_c7a03c267bb64e0eb58489873f24c25e"

В отчете составляем текст запроса:

Для поля "РазделКомплектации" нужно указать тип значения СправочникСсылка.ЗначенияСвойствОбъектов

На вкладке "Параметры" укажем выражение для параметра "Свойство": ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "РазделКомплектации_c7a03c267bb64e0eb58489873f24c25e", Истина)

Включим отбор по полю "РазделКомплектации" в пользовательские настройки: на вкладке "Настройки", "Отбор" добавими отбор "РазделКомплектации", щелкнем на нем правой кнопкой мыши, "Свойства элементов пользовательских настроек", установим флажок "Включать в пользовательские настройки".

В модуле отчета указываем, что мы перехватываем событие "ПослеЗаполненияПанелиБыстрыхНастроек":
В обработчике этого события нужно найти элемент формы в панели быстрого отбора, в котором пользователь указывает значение отбора "Раздел комплектации". В параметрах выбора этого элемента задаем отбор по владельцу - плану видов характеристик "Раздел комплектации":

2. Связи параметров выбора

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

Создаем отчет (файл ВнешнийОтчет_СвязиПараметровВыбора.erf).

Как и в предыдущем примере, если отчет встроен в расширение, то необходимо:

1. Добавить в расширение подсистему ПодключаемыеОтчетыИОбработки

2. Добавить отчет в эту подсистему

3. В модуле менеджера отчета написать:

В отчете составляем текст запроса:

Параметры "Номенклатура" и "Серия" включим в пользовательские настройки (см. выше).

В модуле отчета указываем, что мы перехватываем событие "ПослеЗаполненияПанелиБыстрыхНастроек":
В обработчике этого события:

1. Находим элементы формы - значения параметров "Номенклатура" и "Серия"

2. Добавляем в форму новый реквизит "МойРеквизит_Номенклатура". Добавить элемент формы для этого реквизита.
Элементу формы указать обработчик события "ПриИзменении" (обработчик этого события и будет то единственным изменением общей формы "ФормаОтчета").

3. Скрываем старый элемент формы "Номенклатура".

4. Для элемента формы "Серия" задаем связи параметров выбора.

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

Всем привет! Подскажите, куда копать? СКД только начал осваивать, текст ошибки следующий: "Ошибка в элементе отбора: глобальные элементы отбора обязательно должны использовать поля "ПараметрыДанных.НачалоПериода Равно 01.01.2013 0:00:00" Делаю отчет в СКД "РасчетыСПокупателями". По регистру накопления. Есть поля Магазин, Покупатель, ДокументДвижения. Добавляю в пользовательские настройки отбор по НачалоПериода, КонецПериода. При формировании отчета выходит вышеприведенная ошибка. Помогите, пожалуйста!

В СКД создаю в конструкторе запроса запрос. Таблицы: РасчетыСПокупателямиОстаткиИОбороты, группировка: РасчетыСПокупателямиОстаткиИОбороты.Магазин РасчетыСПокупателямиОстаткиИОбороты.Покупатель РасчетыСПокупателямиОстаткиИОбороты.ДокументРасчета, суммируемые поля: РасчетыСПокупателямиОстаткиИОбороты.СуммаНачальныйОстаток РасчетыСПокупателямиОстаткиИОбороты.СуммаПриход РасчетыСПокупателямиОстаткиИОбороты.СуммаРасход РасчетыСПокупателямиОстаткиИОбороты.СуммаКонечныйОстаток Как теперь в СКД визуально указать датуНачала и датуОкончания.

попробуй на закладке параметры указать, если в пользовательских настройках нет

ну да, параметры появились в пользовательских настройках. Но вот незадача - указываю датуНачала=01.04.13, а в отчет все равно выходят доки за все даты. в поле "ДокументРасчета". С группировками напутал? Не нужна группировка "ДокументРасчета"? Может я в регистре накопления зря создал измерение "ДокументРасчета"? Он же по идее всегда равен регистратору. Как тогда сделать? Надо так: если указываешь датуНачала 01.04.13, то тогда не выводить строки с доками расчета, дата которых меньше.

закинь куданить обработку, так сложно понять, че у тя там

а ты случаем не определял в запросе параметры &ДатаНачала и &ДатаОкончания? Просто сама скд эти параметрыф под таблицу ОстаткиИОбороты юзает

если 5 верно, то тебе скорее всего вообще нет смысла указывать принудительно параметры, за тебя это сделает скд

просто как задать условие на дату регистратора. В виртуальной таблице ОстаткиОбороты нет такого поля.

черд, розницы под рукой нет. Так вроде нормально, только группировку и сортировку в тексте запроса мог бы не делать. 1) а зачем тебе дата регистратора, когда параметрами отберешь по периоду в регистре? 2) ты можешь добавить в виртуальную таблицу регистратор, тебе нужно в параметре вирт. таблице периодичность "авто" поставить

можешь тим вьювер сказать, посмотрю. Розницы нет под рукой

дата регистратора мне затем, чтобы руками задать в тексте запроса условие. регистратор.дата между &ДатаНачала И &ДатаОкончания. Т.к. я не могу сообразить, как визуальными средствами СКД это условие задать

хочешь сказать у тя в движениях период - это одна дата, а дата регистратора - другая?

о, точно. что-то я запутался. во временной таблице же есть период

если прям на дату регистратора, то в параметры вирт. таблицы задавай периодичность авто. Вытаскивай регистратор. Убирай свою группировку (зачем она вообще?) А потом ставь отбор. Но это изврат :)

1С:Документооборот

Юлия Буздырева запись закреплена

Александр Докучаев

Тут главное - что конкретно сохранили - настройки или вариант отчета. С настройками в до все печально.

Александр Докучаев

Юлия, через "Изменить вариант" добавьте отбор к варианту отчета. Затем ЕЩЕ - Установить стандартные настройки. Сформируйте, проверьте. И если все ок: Еще - Сохранить вариант для всех пользователей.

Александр, не получилось(. Через "изменить вариант" добавила отбор к варианту отчёта, сделала "Еще-установить стандартные настройки". При нажатии на " сформировать " выпала ошибка "Ошибка в элементе отбора:глобальные элементы отбора обязательно должны использовать поля " Равно". а у меня отбор что один реквизит заполнен (

Александр Докучаев

Юлия, тут уже, к сожалению, вряд ли чем "вслепую" смогу помочь. У меня формирует даже с отбором по Наименование Содержит.

Александр, спасибо большое, в итоге таким образом получилось. Очень благодарна

Александр Докучаев

Александр, здравствуйте). А можете ещё, пожалуйста, подсказать по отчетам?. Как создать и разместить отчёт в конкретной категории отчётов? Например в отчётах по задачам? Я пробовала существующие там менять и сохранять с новым именем, но опять же настройки не переносятся. Можно ли откуда-то создавать отчёт и прописывать, где он должен отображаться?

Александр Докучаев

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