• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

8.1 отбор

unknown181538

НеГуру
28.12.2008
1 417
0
#1
Нужно, чтобы в форме отчета можно было выбрать вид отбора - по контрагенту, в группе, в списке, в группе из списка... Обязательно нужно динамически формировать текст запроса, или запрос умеет сам определять, что делать в зависимости от параметра, или можно использовать какую-нибудь общую форму типовой конфы для формирования текста?
 
M

mialord

#2
Здраствуйте. Прочитал ваш вопрос, не совсем понятно зачем динамически менять текст запроса. Насколько я сталкивался с данными проблемами, всегда и безболезненно выкручивался с использованием компоновщика. Ну, уж, если у вас действительно трёхступенчатый запрос, и вы не хотите создавать себе проблем с отборами я бы рекомендовал следующее.
Весь код писать не буду, лень, я простывший и мне, писать даже тяжело.
1. Создаем текст запроса.
2. Генерируем форму отчета с ТЗ "Результат".
3. Меняем обработчик кнопки сформировать, пишем текст запроса, и определяем компоновщик, и просессорВывода.
4. Вызываем из этой же процедуры макет компоновки данных.
5. Создаем новый макет компоновки данный, набор - данных - объект, определяем данные макета и макет.
6. Готовим начальные настройки отчета.
7. Переименовываем кнопку "Настройка" - "Настройка для экспертов".
8. Создаем кнопку "Настройка" и копируем форму настройки универсального отчета (либо из другого отчета по вашему вкусу). Переопределяем данные объектов.
9. Всё это закидываем во внешний отчет, дабы не болтался в конфигураторе.
10. Вставляем в меню вызов данного отчета при выборе (предварительно подключив отчет к ИБ)
Отчет будет выглядеть примерно так:
http://codeby.net/style_images/1/fol.../attach_add.png
Вот в принципе и все.
+ Отчет не является частью конфигурации и не мешается при обновлении конфигураций релизами от поставщика.
+ Отчет позволяет устанавливать настройки любой сложности, без лишнего программирования, и внесение изменений в него займет 2-3 минуты в зависимости от сложности изменения
+ При необходимости убрать отчет конфигурации просто сохраняем в файл, в папку "Старые отчеты" не трогая конфигурацию, и при необходимости загружаем его обратно с изычканной легкостью.
+ И, я считаю, это самый существенный плюс. Мы получаем дружественный пользовательский интерфейс, затратив на отчет в среднем 10 мин (при первой разработке от 30 мин до 3 часов в зависимости от квалификации программиста), с определенными расшифровками. Позволяющий выводить данные в виде списка, таблицы, сводной таблицы и диаграммы, используя пользовательские настройки в режиме 1С с легким и беспринцыпным сохранением настроек пользователя, без использования языка программироания и фхода в режим конфигурирования 1С.
- Набор - данных - объект является самым сложным набором данных, используемым компоновщиком данных, и для его формирования в первый раз придется потдудиться. Если вы ранее не пользовались компоновщиком данных советую начать с чего - нибудь попроще, либо не формировать текст запроса динамически и тогда создать набор - данных - запрос, легко и удобно.
Удачи в познании!!! Если есть вопросы пиши, постараюсь разъяснить.
 

Вложения

  • 95.2 КБ Просмотры: 22

unknown181538

НеГуру
28.12.2008
1 417
0
#3
Спасибо за подробынй ответ. Часть текста даже лишняя) С компоновщиком почти не работал, хотя думал, что можно его использовать. Но можно ли его использовать для заполнения табличной части обработки? Дело в том, что я пишу не отчет, а обработку. Текст запроса как раз довольно простой. Собственно, не сложно написать и динамическое формирование текста. Интересно все-таки есть ли более рациональное решение.
 
M

mialord

#4
И еще раз здраствуйте. Пройдемся по гвоздям.
Спасибо за подробынй ответ. Часть текста даже лишняя)
Всегда пожалуйста. А лишнего текста я не вижу. Старался описать подробно дабы дать максимально точное решение.
С компоновщиком почти не работал, хотя думал, что можно его использовать
Не понял я, в данном случае, оборота этого предложения.
Но можно ли его использовать для заполнения табличной части обработки?
Система компоновки данных предназначена для создания сложных аналитических ​отчетов в программах 1С:Предприятия 8, и ничего более. Вопрос, если честно, очень странный. Может быть вы хотели спросить можно ли результат выгрузить в табличную часть?. Тогда ответ мой, ДА, и не только можно, а нужно. Объекты выгрузки данных могут быть самые разнообразные. Для выгрузки данных используется ПроцессорВывода.
Приведу пример ко всему вышесказанному:
Код:
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
ДокументРезультат = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных;
ДокументРезультат.ОтображатьСетку = Ложь;
ДокументРезультат.ОтображатьЗаголовки = Ложь;
ДокументРезультат.Показать(); ...)
Дело в том, что я пишу не отчет, а обработку
И что? СхемаКомпоновкиДанных На уровне метаданных, хранится в макетах. Сначала создайте отчет и схему, для проверки вывода данных. Потом перетащите Схему в макеты обработки, и, скопируйте код.
Текст запроса как раз довольно простой.
Это хорошо. Скорость выбора данных из ИБ зависит не только от объема выбираемых данных, но и от сложности текста запроса.
Собственно, не сложно написать и динамическое формирование текста
Это я думаю вы пишите про запрос. Эт дело хозяйское, формируйте так, как вам удобней.
Интересно все-таки есть ли более рациональное решение.
Рациональных решений как таковых в нашей жизни, к сожалению, вообще нет :) Более рациональное в каком плане? Не понятно, что вы имели ввиду? Есть разнообразные механизмы для выполнения одной и той же задачи. Какой из механизмов выберите вы, дело ваше, так как вы программист своей конфиги. Вы и принимаете решение, что с ней делать. Я выбрал именно этот метод для написания большинства отчетностей (помимо исключений, где не компоновщик, не построитель не вживались), по одной простой причине. А именно, у запроса остается одна задача выбрать данные, без условий, без группировок, далее компоновщик загружает в себя настройки пользователя и реструктуризирует данные согласно настройкам. Так что дерзайте, и делайте выбор.
Все что я могу - показать Вам в каком направлении двигаться. А сделаете ли вы шаг, в указанном мной напрвлении, дело ваше. Удачи в познании!!!

Кстати. Если вас не устраивает компоновщик, Можете вполне успешно использовать ПостроительОтчета
 

unknown181538

НеГуру
28.12.2008
1 417
0
#5
Всегда пожалуйста. А лишнего текста я не вижу. Старался описать подробно дабы дать максимально точное решение.
Еще раз спасибо, просто часть из приведнного я и так знаю. Например, преимущества внешнего отчета перед встроенным.
Не понял я, в данном случае, оборота этого предложения.
Имел ввиду, что плохо знаком с СКД.
Система компоновки данных предназначена для создания сложных аналитических ​отчетов в программах 1С:Предприятия 8, и ничего более.
Повторюсь, пишу как раз не отчет. Запрос нужен для заполнения таб части документами, на основании которых должны создаваться документы другого вида.

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

Это я думаю вы пишите про запрос. Эт дело хозяйское, формируйте так, как вам удобней.
Нет, ну все-таки хочется "познать")
 

unknown181538

НеГуру
28.12.2008
1 417
0
#6
В итоге добавил реквизит "СписокЗначений" на форму. В запросе поставил условие Контрагент В ИЕРАРХИИ &сзКонтрагенты.
 
M

mialord

#7
Еще один день добрый, :unsure:.
Нужно, чтобы в форме отчета можно было выбрать вид отбора - по контрагенту, в группе, в списке, в группе из списка...
&
Запрос нужен для заполнения таб части документами, на основании которых должны создаваться документы другого вида.
Бррррррррррррррррр. Какие сложности ;).
Кажется я всё таки понял что вам нужно :) давайте пройдемся.
Нужно, чтобы в форме отчета можно было выбрать вид отбора - по контрагенту, в группе, в списке, в группе из списка...
1. Создайте табличную часть(имеется в виду в метаданных объекта "Табличные части")
2. Добавте реквизиты табличной части
3. Назначте типы реквизитов = типам, возвращемым из запроса
4. Вставте табоичную часть в форму, предварительно нажав флажок "Вставит командную панель" (Вставляет все допустимые команды для табличной части. Набор кнопок и их поведение определяются автоматически (Зависит от платформы), действие кнопок можно изменить)
5. Установите "Данные" табличной части, созданную табличную часть метаданных. В результате у вас автоматически будут добавлены колонки ТаблЧасти.
Проверяем. Запускаем в 1С. ПКМ кликаем, появляется контекстное меню. Выбираем "Установить Отбор", появляется окно с установленными реквизитами. Взависимости от типа реквизита будут доступны соответствующие отборы.
Из последних сообщений мне показалось что вам нужно именно это. Если нет, постарайтесь более подробно описать задачу и выложить код, ибо, иначе я вас не понимаю :)
 

unknown181538

НеГуру
28.12.2008
1 417
0
#8
В общем-то, я уже удовлетворен результатом. Последний пост не очень понял.
А все-таки, построитель или компоновщик сюда бы удалось прикрутить?
 
M

mialord

#10
Последний пост не очень понял.
Последний пост указывает, как включить команды отборов, если вы загружаете данные в таблицу значений, и хотите включить стандартно-реализованные в платформе механизмы отбора. Пример, ЗаказПокупателя. Отсюда следует, что вам, например, можно не использовать механизмы построителя отчета или компоновщика данных, можно заполнить ТЗ из запроса и включить команду отбор. Попробуйте прежде чем ответить, оч удобный механизм.
А все-таки, построитель или компоновщик сюда бы удалось прикрутить?
КУДА? :rolleyes: