8.1 отбор

Тема в разделе "1C и всё что с ней связано", создана пользователем unknown181538, 25 мар 2009.

  1. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Нужно, чтобы в форме отчета можно было выбрать вид отбора - по контрагенту, в группе, в списке, в группе из списка... Обязательно нужно динамически формировать текст запроса, или запрос умеет сам определять, что делать в зависимости от параметра, или можно использовать какую-нибудь общую форму типовой конфы для формирования текста?
     
  2. mialord

    mialord Гость

    Здраствуйте. Прочитал ваш вопрос, не совсем понятно зачем динамически менять текст запроса. Насколько я сталкивался с данными проблемами, всегда и безболезненно выкручивался с использованием компоновщика. Ну, уж, если у вас действительно трёхступенчатый запрос, и вы не хотите создавать себе проблем с отборами я бы рекомендовал следующее.
    Весь код писать не буду, лень, я простывший и мне, писать даже тяжело.
    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С.
    - Набор - данных - объект является самым сложным набором данных, используемым компоновщиком данных, и для его формирования в первый раз придется потдудиться. Если вы ранее не пользовались компоновщиком данных советую начать с чего - нибудь попроще, либо не формировать текст запроса динамически и тогда создать набор - данных - запрос, легко и удобно.
    Удачи в познании!!! Если есть вопросы пиши, постараюсь разъяснить.
     

    Вложения:

    • 1.JPG
      1.JPG
      Размер файла:
      95,2 КБ
      Просмотров:
      22
  3. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Спасибо за подробынй ответ. Часть текста даже лишняя) С компоновщиком почти не работал, хотя думал, что можно его использовать. Но можно ли его использовать для заполнения табличной части обработки? Дело в том, что я пишу не отчет, а обработку. Текст запроса как раз довольно простой. Собственно, не сложно написать и динамическое формирование текста. Интересно все-таки есть ли более рациональное решение.
     
  4. mialord

    mialord Гость

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

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Еще раз спасибо, просто часть из приведнного я и так знаю. Например, преимущества внешнего отчета перед встроенным.
    Имел ввиду, что плохо знаком с СКД.
    Повторюсь, пишу как раз не отчет. Запрос нужен для заполнения таб части документами, на основании которых должны создаваться документы другого вида.

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

    Нет, ну все-таки хочется "познать")
     
  6. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    В итоге добавил реквизит "СписокЗначений" на форму. В запросе поставил условие Контрагент В ИЕРАРХИИ &сзКонтрагенты.
     
  7. mialord

    mialord Гость

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    В общем-то, я уже удовлетворен результатом. Последний пост не очень понял.
    А все-таки, построитель или компоновщик сюда бы удалось прикрутить?
     
  9. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Что-то "знаток русского языка" совсем уж отличился :rolleyes:
     
  10. mialord

    mialord Гость

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

Поделиться этой страницей