1с скд не работает отбор по ресурсу
1) где отбдор? у не вижу. нафига мне ПАРМАЕТР. я просил запрос с отборами <>
а конкретно - если на форме расположен отбор компоновщика то в запрос ти отборы должны передаваться не параметрами, а конструкицей <> - Которая позволяет обрабатывать запрос только в случае если отбор был задан!
2) Конструкции отбора должны учитывать ВСЁ условия (виды сравнения) - в списке, в группе, в иерархии. не в писке и т.д. и т.п. ГДЕ ЭТО?
3) ГДЕ ВЫБОРКА ЗАПРОСА? в виде выборки по группировкам с иерархией и т.д. и т.п. УЧИТЫВАЯ что в любой группировке некоторого уровня может быть использовано обращение в другому запросу. или Конструкции ВСЕ записи (даже нулевые)
ГДЕ ТО ВСЁ?! (0) ты реально ступил со своим решением. которое не решает задачу которую я задал.
А) Запрос СКД не перенесется полным текстом в обычный запрос! А именно не перенусутся конструкции типа <>, которые исползуются в любом случае в обычном запрос. т.к. там есть участки запросов которые зависят от этих конструкций.
Б) В СКД - НЕТ ИТОГОВ. А это значит что в запросе не будет конструкции ИТОГИ ПО.
Ты не сможешь сделать выборку .
блаблабла
можно получить запрос из компоновки, если что
я просто кода не вижу, там откуда запрос, из СКД или из компоновки?
там параметры а не отборы. а мне не нужны параметры!
(34) в СКД нету конструкция типа ИТОГИ ПО а это очень важно!
и я так и не увидел решения с отборами. я увидел только параметры. а это вообще не в ту степь.
(38)нах те отборы, они уже все заданы, тебе только параметры задать и все
Решения не существует. вы никак не передадите из СКД в обычный запрос ОТБОРЫ (в консутркциях <> - учитывая виды сравнения) компоновщика.
И никак не построите запрос с конструкцией ИТОГИ ПО
т.к. в СКД этого нет и не может быть.
Т.к. текст запроса в СКД передает обрезанный текст который учавствовал.
(37) в СКД есть расчет итогов, все зависит от того, куда выводить
(42)окстись, Маня велик настолько что даже автора такого не знает
Поясните уже чуваку, что в наше время принято пользоваться не ручной пилой, а электропилой. Но даже если захочется попилить по-старинке, то электропила для этих целей малопригодна.
(39) ПОТОМУ ЧТО в заданных отборах юзер может задать ЛЮБОЙ ВИД сравнения. А параметр - фиксированное значение которое может быть установлено в запросе только одним конкретным условием!
Например юзер поставит в итнтерфейсе НЕ В ИЕРАРХИИ. А запрос ты какитм куем передашь параметр с этим условием? у тебя в запросе будет конкретно параметр с фиксированным условием сидеть.
Отборы могут быть универсальными. Т.е. реквизит реквизита измерения. как ты его передашь в текст запроса? ти все вещи в запросе могут быть заюзаны только при наличии <>
того что не надо этого делать, все уже сделано за тебя
(50) ты вообще не вникаешь в суть проблемы. то я тебе конкретно говорю.
Чего ты прицепился к посторителю в 8.2? Он умеет что-то особенное?
(55) в садике всегда дети пытаются передразнить. как раз ты это и делаешь.
(56) да. он умеет обрабатывать конструкции <> которые уникальный в том что если отбор был задан - то он учавствует в отборе, не был задан - не учавствует.
Также <> - позволяют делать отбор любой вложенности реквизитов переменных и обработки люыбх видов сравнения между левым и правм значением.
А тут идиоты какие то сидят советующие параметр без условий впихнуть в запрос. жесть просто.
(60) + Только настроить можно более гибко чем построитель , ну да ладно.
Построитель уникален также тем что получает результата запроса, который может быть программно выбран вмеми методами объекта Запрос. Выбрать() с иерархией, без, условие ВСЕ и т.д.
Обратится в любом момент к любой группировке и т.д.
Т.е. полное программное управление выборкой и вставкой каких то специфичных процедур, функций, расчетов, формирование конкретного макета как захочешь.
Можно резюме в двух словах? :))
Невозможность получить текст запроса, который выполняет СКД с учетом настроек пользователя?
Если да, то а зачем это нужно?
(62) Скажи, что не осилил к запросу итоги приклеить, да и все.
(62) Так вроде СКд еще гибче. Создаешь новую группировку и получаешь таблицу.
(60) думаешь я дурак? уже все пробовал.
ПРоблема выявилась в том что если в СКД условие было через конструкцию <> - она не переносится в тест запроса построителя.
Если условие было задано по реквизиту измерения (вложенному) то в тексте запроса это не отразится.
Виды условий ты никак не запешнешь в запрос. т.к. запрос просто их не увидит.
я уже вариант описанное в (0) вариантов 10 создал попыток с отчетами. вже все что только можно испробовал. везде какой то затык.
Вид условия СКД - в вид условия построитель не назначается.
Что то я не вдуплил . Нахрена конструкция <> для СКД. У него другая механика.
(63) нужно одно. Чтобы СКД выполнял рузельтат запроса который можно потом программно выбирать всеми методами синтакс-помощник объекта РезультатЗапроса.
(68) Возможность получить текст запроса СКД с учетом настроек пользователя? :))
(71) Для какой задачи ? У СКД другая структура. Настройки отдельно хранятся . Если тебе надо использовать результат в другой структуре , то там создай СКд и передай настрйки.
(71) 1. Выгрузи в дерево и юзай.
2. Перебирай результаты компоновки вручную.
Дело в том, что результат СКД шире, чем результат запроса, поэтому впихнуть результат СКД в результат запроса невозможно в принципе :))
Нет возможности обработся к результату запроса СКД чтобы программно самостоятельно выбрать его по группировкам и самостоятельно вывести в любой нарисованный самостоятельно макет с учетом своей выборки группировок и т.д.
Вся эта выборкаа нужна:
1) для специфически построенных макетов
2) в выборке самостоятельно крутить вертеть данными полученными запросом. И не только с тими данными..
Например:
есть отчет которые строится на базе нескольких запросов (вообще не связанных ничем) ни одним измерением и т.д.
Все эти запросы выбираются потом программно и выводится макет специально постронным по техническому заданию.
Где данные должны выводится как сам черт голову словит. Одни данные из одного запроса, другие из другого и т.д. и т.п.
(74) дерево не подходит и ТЗ тоже. По ним нельзя сделать выборку группировки которая может быть третьей. А выбираем мы её первой.
Есть запрос в котором идет выборка по первым двум группировкам, а на третьей идет обращение к другому запросу вообще не со связанными данными этого запроса.
Или может быть такое что при формировании макета мы получаем значения 4 группировки, а после этого идет рисование макета начиная с первой.
Вот пример того отчета который я хочу программно обработать. В нем 12 запросов которые ничем не связаны - совершенно разные регистры.
Все выводится в один отчет и макет. перечесния тих запросов итоги - которые по желанию заказчика должны быть в любом месте которое он захочет. ПРомежуточные итоги по каким то запросам и т.д. и т.п.
Вплоть до того что при выборке какой то подсчитанный итог должен быть посчитан по сложному алгоритму. который в СКД вообще не запихнуть.
Я в том году был в проекте по написанию упр бланса и бюджетирования, где мы командой - 5 человек писали отчетность специфичную под заказчика. был конкретный макет и его описание - как и что должно считаться. Вплоть тдо того что есть группировка например определенная из которой при выборке надо получить подсчет по конкртеным элементам и т.д.
все это прекрасно построителем обрабатывалось.
В УТ11 постронном на СКД - сложных отчетов нет.
а если еще добавить специфику которое может задать конкртеное предприятие то вообще.
От вас правильно заданный вопрос. Идеально - модельная база с тестовыми данными и отчет (обработка и т.п.).
Не обещаю, что смогу ответить прям на любой вопрос, но буду стараться :)
(0) Правильно заданный вопрос содержит половину ответа.
А ты попробуй на неверно заданный ответить!
Есть отчёт на СКД, куда вдруг стало необходимым добавить Должности и Подразделения физических лиц, если они когда-либо работали в компании.
Когда кто-то работал в компании, по физлицу НекаяПроцедура.КакоготоМодуля возвращает список всех мест работы (совместителей, уже уволенных, работающих), вертает это всё в виде ВТ_КадроваяЧтототам.
Как такое правильно сопрягать с отчётом на СКД?
(3) для меня простой и понятный вариант выгрузка в объект нужного набора (ВТ_КадроваяЧтототам) и подключение его в схеме СКД как набор Объект.
Вариант сложнее - модификация текста запроса.
И то и другое делается ПриКомпоновкеРезультата
Так выборка физлиц происходит в момент компоновки, т.е. нужно как-то использовать значения выборки отчёта и прикрутить доп соединение, выполняемое после, а результат дать в макет
Либо, ну это как я вижу - выполнить СКД, получить физлиц, модифицировать СКД - отдать результат.
Что-то мне подсказывается, что вариант в (6) всё же решается стандартными средствами СКД. По варианту (5), который вырождается в (7) - двойное выполнение отчёта, что излишне
(7) есть и такой подход. сейчас постараюсь найти ссылку, где отчет формируется через 2 схемы СКД. первая схема принимает запрос от юзера, далее идет программная обработка, затем данные помещаются во вторую схему.
(12) Реальный вопрос начинается с описания результата - какую проблему надо решить. Когда пишут, что надо в некий отчет добавить некие поля - это уже процесс решения.
Не понимая сути проблемы, и не разобравшись в предметной области, очень сложно дать правильный ответ - хотя в каких-то случаях и возможно.
Говорю это как человек, который сам регулярно пишет отчеты для ЗУП 3.
Бывают такие задачи, когда проще запилить свой отчет на СКД с использованием каких-то процедур ОМ или собственных запросов, чем модифицировать существующий.
(9) не понял где двойное выполнение отчета. функция формирует ВТ только по одному физ лицу? или туда можно передать список?
если можно передать список, то в схеме описываем набор Объект. в ПриКомпоновкеРезультата формируем этой функцией ТЗ (не ВТ), передаем ее в схему. Можно считать настройки отбора, чтобы функция отрабатывала с отборами. Ну и все - выполняем отчет.
(16)Есть вопрос. Самописный, простой отчет без использования всяких универсальных отчетов и общих форм.
В форме отчета, в процедуре ПриСозданииНаСервере в Отчет.КомпоновщикНастроек.ФиксированныеНастройки.Отбор добавляются некие отборы. Типа ограничение доступа к некоторым данным для пользователя.
На предыдущей платформе (8.3.10) этот отчет прекрасно работал.
На платформа 8.3.13.1644 вдруг перестало работать. Отчет выдает пустую таблицу. Помогло только в модуле объекта в процедуре ПриКомпоновкеРезультата отключить СтандартнуюОбработку и написать программное формирование отчета с получением настроек из компоновщика и загрузкой их в компоновщик макета.
Так вот вопрос, что нужно сделать чтобы фиксированные настройки компоновщика в форме применились сразу, без лишних телодвижений в модуле объекта?
Создавал отдельную тему по своему вопросу:
Два регистра "Продажи" и "ПродажиСебестоимость". В первом есть измерение "Менеджер", во втором нет. Надо отобрать данные Стоимости и Себестоимости продаж с детализацией по Менеджеру, но из-за отсутствия данного измерения во втором регистре записи в нем группируются, когда в продажах эти записи могут разбиваться на несколько строк, потому что для записей разные Менеджеры.
В результате следующего запроса данные в отчете по себестоимости неверные. Как получить корректную сумму по себестоимости с учетом того, что данные должны группироваться по Менеджеру?
Дано - СКД с объединением двух наборов данных, например вот такая (заведется в любой конфигурации, включая пустую). Если просто добавить поле "Ресурс" в отборы, то СКД воткнет отбор в предложение ГДЕ в каждом наборе по отдельности. А хочется, чтобы отбор на ресурсы накладывался уже после объединения. Итого, Есть ли у СКД возможность как-то так ее заставить, чтобы отбор на ресурс накладывался уже после объединения? То есть, например, если выполнить этот отчет без отборов, то будет две строчки (так и надо). Если наложить отбор "Ресурс >= 2", то будет только одна строчка - из второго набора. Данные первого набора будут отфильтрованы начисто, т.к. первый набор состоит из идентичных строчек, значение ресурса в которых по отдельности меньше 2. Хочется в этом случае тоже видеть две строчки потому, что итог по первому набору таки больше двух. Происходит это все на 8.3.6.2299 в любом режиме. Что пробовал: 1. Включить ограничение использования в наборе, но не включать в объединении - это все равно что вообще удалить ресурс из полей отбора. 2. Пользовательское поле - это все равно, что ни чего не делать, отбор накладывается перед объединением. 3. Вычисляемое поле - результат нулевой разного сорта. Чаще всего оно не компонуется, т.к. не может найти поле.
Можно, установить отбор через условное оформление. Так же можно сперва сформировать ТЗ, а потом поместить его в СКД, в качестве источника данных ;)
вероятно нужно вычисляемое поле с суммой по нужной группировке и уже на него отбор
отбор через условное оформление. это как? хочется оставить объединение наборов, т.к. в реальном отчете там их чуток поболе, чем два и объединение с одной стороны упрощает сопровождение отчета, в с другой - если пользователь исключит поля каких-то наборов, то этих наборов и в объединении не будет
ну, вот, либо у меня руки-крюки, либо так не бывает. Когда я так сделал, у меня отчет перестал формироваться с формулировкой "Поле не найдено". Можешь показать - как это делается на примере отчета из сабжа?
1. Имеем СКД с набором данных - запрос. 2. Далее пользователь настраивает компоновщик настроек, в котором имеется отбор, например по наименованию. 3. А Надо , что бы этот отбор применялся лишь к первой таблице. Можно снять флажок "Автозаполнение" и воспользоваться расширением языка запросов для компоновки данных (это то что в фигурных скобках). С фигурными скобками пробовал - не помогало. А вот снятие галочки - помогло. Спасибо большое.
это другой вопрос и, как сделать это, я знаю. ЭТо как раз делается путем добавления поля в отборы компоновки - в первой таблице надо добавить, во второй - не добавлять. Автора под вопроса подкосила галочка "Автозаполнение" - ее надо выключить для этого. Или назвать как-то поле отбора по-другому, но тогда пользователю кукушечку снесет. Вопрос в топике совсем другой.
вообще выглядит так, как будто можно просто отбор задать не на уровне отчета, а на уровне группировки, даже без вычисляемых полей
а почему бы не написать один запрос? компоновка к вложенным запросам не применяет свои отборы, даже с флажком автозаполнения.
например бывает так, что данные собираются из базы и внешнего источника, тогда не обойтись без нескольких наборов. кстати, пример не совсем корректный, я бы в первом наборе добавил "Б", а во втором - "а".
потому, что не хочу один запрос, см . В реальном отчете объединений гораздо больше двух, а такое в одном запросе сопровождать - морока. Да и в запросе таким образом будут все таблицы даже, если поля выбираются только из одной.
А вот это дельный совет - отбор на ресурс в группировке решил вопрос. Спасибо, !
Редко какой отчет в 1С не использует отборы, разве что печатные формы и какие-то специальные отчеты. В большинстве отчетов в 1С требуется возможность выборочного анализа. Поэтому в этой статье мы поговорим про настройку отборов в отчетах, построенных с помощью 1С СКД.
После того как вы добавили наборы, определили ресурсы, задали структуру отчета с помощью группировок , можно приступать к настройке фильтров. В СКД это делается на закладке «Отбор», которая доступна или для всего отчета или для определенной группировки.
Новый элемент в список отбора можно добавить несколькими способами – двойной клик по доступному полю, перетаскивание, клавиша в меню:
При этом только через клавишу в меню можно добавить группу в отбор, которая объединяет элементы внутри этой группы по заданному условию (И, ИЛИ).
По умолчанию если элементы отбора не включены ни в какую группу и объединяются с помощью оператора «И».
Вид сравнения в элементе отбора зависит от типа поля (левого значения):
Операции доступные для числа:
Операции доступные для строки:
Для строки добавлены операции – «содержит», «начинается с», «соответствует шаблону» и те же операции с оператором «Не» (Не содержит и т.д.).
Операции доступные для ссылки:
Далее разберем типовые ситуации при использовании отбора
Самый простой вариант использование отбора – добавить фиксированный отбор, который будет действовать всегда (если конечно пользователь не изменит его в варианте отчета):
Обычно такие отборы имеет смысл переносить в текст запроса. Особенно в том случае, если пользователь не должен его менять вообще ни при каком условии.
Иногда в отчете на 1С СКД возникает необходимость исключить в отчете значения некоторых группировок (колонок или строк). Причем сделать это в запросе не представляется возможным, потому что исключать такие строки возможно только после компоновки.
В этом случае используется возможность СКД накладывать отборы на заданную группировку. Рассмотрим, например, такой отчет:
Допустим нам нужно исключить из отчета все строки, в которых итоговое количество по номенклатуре меньше 15. В запросе мы такое условие применить не можем. Установим для этого отбора для группировки «Номенклатура»:
Получим такой отчет:
Отборы на группировках часто используются в отчетах вида «Ведомость по остаткам»:
При использовании группировки по периоду (регистратору) в таких отчетах появляются строки, отвечающие за начальный остаток при использовании даты начала периода отличной от самой ранней. Чтобы убрать такие строки, можно использовать отбор на группировке по регистратору:
Чтобы убрать отбор, выделенный на рисунке на закладке «Другие настройки» для этой же группировки отключим вывод отбора:
Обычно мы редко используем фиксированные отборы. Чаще нам нужны отборы, которые может изменять пользователь. Можно, чтобы пользователь изменял отборы через функционал 1С СКД «Изменить вариант», но это не совсем верный путь – вариант отчета это скорее постоянный «скелет», который настраивается один раз и потом используется многократно. Отборы же это что-то часто изменяемое, поэтому правильнее редактировать их через механизм пользовательских настроек.
Итак, вернемся к нашему отчету. Допустим нам необходимо добавить в отчет отбор по группе номенклатуры (или по элементу) и чтобы этот отбор был доступен для изменения пользователем.
Добавим для этого отбор на уровне отчета. Вид сравнения по умолчанию сделаем «В группе», отключим по умолчанию использование отбора и в диалоге редактирования пользовательских настроек включим наш отбор в пользовательские настройки.
Перейдем теперь в режим предприятия.
Наш отбор доступен для редактирования на форме. За доступность прямо в форме отчета отвечает «Режим редактирования». Значение «Быстрый доступ» означает, что отбор доступен прямо на форме отчета. Если значение равно «Обычный», отбор доступен через кнопку «Настройки». Как видно на рисунке пользователь может выбирать вариант сравнения, управлять действием (включен / отключен) отбора.
Если вам необходимо установить фиксированный отбор (вид сравнения и правое значение константы), но пользователь должен управлять включением / отключением отбора, тогда вам необходимо заполнить представление отбора в пользовательской настройке:
В этом случае в настройки добавляется только флаг использования отбора, которым может управлять пользователь:
Если вам в отборе нужно изменить представления поля, по которому делается отбор, то для этого есть еще одно представление:
Получается вот так:
Мы можем вывести все отборы для редактирования пользователем. Для этого на уровне отчета вызовем диалог редактирования пользовательских настроек:
То же самое можно сделать на уровне любой группировки, если нужно, чтобы была возможность редактирования отборов для заданной группировки. В режиме предприятия это выглядит следующим образом:
Как известно, в 1С СКД используется не только в отчетах, но и в формах, содержащих динамические списки. У динамического списка есть несколько свойств, которые относятся к СКД. Среди этих свойств имеется свойство «Отбор» с типом «ОтборКомпоновкиДанных». Чтобы установить отбор в динамическом списке есть два способа. Первый способ – передать отборы через параметр формы с одноименным названием – «Отбор». Этот параметр является структурой, в которой ключ ссылается на поле, для которого устанавливается отбор. Значение же содержит данные, с которыми производится сравнение. Можно также передать в качестве правого значения – массив, фиксированный массив, список значений. В этом случае вид сравнения равняется «ВСписке», для одиночного элемента вид сравнения устанавливается как «Равно». Этот способ ограничен в возможностях – с его помощью нельзя накладывать сложные условия с операторами «И» и «ИЛИ», нельзя использовать виды сравнения кроме двух указанных.
Отбор, установленный таким образом, передается в фиксированные настройки компоновщика настроек, связанного с динамическим списком. Он не виден пользователю и недоступен для изменения.
Второй способ – непосредственное редактирование отбора в динамическом списке или в компоновщике. Обычно в типовых конфигурация для этого есть ряд методов и функций для установки таких отборов.
Например, вызов основного метода для установки отбора выглядит так:
Данная функция производит поиск существующего элемента отбора, изменяет его если нашла, а если не нашла, то добавляет с помощью такой процедуры:
В форме содержащей динамический список также как в отчете на СКД, возможно настроить пользовательский отбор. Как это можно сделать показано на рисунке:
Также у элемента формы, с которым связан список нужно установить группу пользовательских настроек, в которой будут отображаться настройки для пользователя:
Читайте также: