На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:

  • Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
  • Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
  • Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.

Высказать своё мнение о модераторах раздела можно здесь: evGenius
Страницы: (4) 1 [2] 3 4  все  ( Перейти к последнему сообщению )  
> Хранение временной информации в базе
    Цитата Rust @
    Можно компоновке данных указать что данные для отчета нужно брать из таблицы значений.

    Можно пример?

    Добавлено
    Под данными отчета имеется в виду запрос? Мне нужно через запрос, для гибкого построения отчетов
      Цитата ^D^ima @
      Под данными отчета имеется в виду запрос? Мне нужно через запрос, для гибкого построения отчетов

      ну я так понял что ты заполняешь табличную часть обработки (или таблицу значений в обработке) данными из битрикса, а потом строишь по ним отчет, при этом тебе не надо хранить данные в базе?
      во вложении простой пример как построить отчет по данным таблицы значений
      Прикреплённый файлПрикреплённый файл__________________________________________________________.zip (3,88 Кбайт, скачиваний: 423)
      Сообщение отредактировано: Rust -
        Rust
        Спасибо!

        Несколько вопросов:
        1 ВнешнийНаборДанных = Новый Структура("ПримерТаблицыЗначений", ТЗ); Это означает ли что ТЗ должна полностью повторять структуру данных ПримерТаблицыЗначений или наоборот? Т.е. если у моей ТЗ есть какой-то реквизит, должен ли он быть в ПримерТаблицыЗначений?
        2 Если у меня несколько ТЗ, я предположим их перенес в наборы данных компоновки, как построить SQL запрос в результирующий наборы данных? Или нужно Сделать SQL запросы напрямую из ТЗ в каую-то результирующую ТЗ, а потом ее переложить в набор данных компоновки для дальнейшей визуальной обработки?
          Цитата ^D^ima @
          Это означает ли что ТЗ должна полностью повторять структуру данных ПримерТаблицыЗначений или наоборот?


          1. Да. Таблицы должны быть идентичны. Данные в компоновку ты передаешь из таблицы значений, эту таблицу значений представляешь системе компоновки как "набор данных - объект", и в этом наборе данных описываешь что именно лежит в передаваемой таблице значений.

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

          По пункту 2 не могу точно что-то посоветовать, просто высказал свое имхо, т.к. не знаю какие данные у тебя есть и какие отчеты будешь формировать. Все зависит от входящих данных из битрикса.

          Добавлено
          Оффтоп.

          Уже много лет работаю с 1С, но с битриксом так ни разу и не сталкивался. Хоть и интегрировал кучу совершенно разных систем с 1С :)

          Добавлено
          Цитата ^D^ima @
          Если у меня несколько ТЗ, я предположим их перенес в наборы данных компоновки, как построить SQL запрос в результирующий наборы данных?

          В случае работы с набором данных - объект тебе не надо писать запросы. Ты просто описываешь поля таблицы на закладке Наборы данных, в модуле объекта отчета подсовываешь СКД свои данные в виде таблицы значений, на закладке Настройки формируешь внешний вид твоего отчета, и все. СКД дальше все сделает сама. Твоя задача только описать какую таблицу ты передашь СКД, передать ей таблицу и указать СКД как должен выглядеть твой отчет.
          Сообщение отредактировано: Rust -
            Rust
            1 Из битрикса REST API запросами не вытянуть итоговые данные, только по таблицам(т.к. это облачный портал, нет доступа к базе данных напрямую. есть ещё стандартная оьработка по синхронизации, но она далеко не все данные передает)
            2 Исходя из ограничений п.1. придется вначале дергать таблицы, потом в Результирующую ТЗ SQLэм формировать нужные данные и уже потом подставлять результирующую ТЗ в компоновку. Да и как понимаю так просто не поработать с ТЗ в запросе - нужно создавать временную таблицу там
              Цитата ^D^ima @
              потом в Результирующую ТЗ SQLэм формировать нужные данные и уже потом подставлять результирующую ТЗ в компоновку.

              А почему бы не сделать несколько "наборов данных - объект", по количеству таблиц, получаемых из битрикса, и работать в СКД сразу с этими наборами данных?
              Имхо, обрабатывать запросами таблицы значений, чтобы получить другую таблицу значений лишнее.
                Цитата Rust @
                "наборов данных - объект", по количеству таблиц, получаемых из битрикса, и работать в СКД сразу с этими наборами данных?

                А как к ним применить SQL запрос?

                Добавлено
                ExpandedWrap disabled
                      Запрос = новый Запрос;
                      Запрос.Текст= "ВЫБРАТЬ
                                    | Подразделение.ИД КАК ИД,
                                    | Подразделение.Наименование КАК Наименование
                                    |ПОМЕСТИТЬ Временная
                                    |ИЗ
                                    | &Подразделение КАК Подразделение ;
                                    |
                                    |////////////////////////////////////////////////////////////////////////////////
                                    |ВЫБРАТЬ
                                    | Временная.ИД КАК ИД,
                                    | Временная.Наименование КАК Наименование
                                    |ИЗ
                                    | Временная КАК Временная";
                      Запрос.УстановитьПараметр("Подразделение",ТаблицаПодразделения);
                      
                      Выборка = запрос.Выполнить().Выбрать();


                Что он хочет от меня?
                ExpandedWrap disabled
                  {Обработка.ОКГ_Битрикс24.Форма.Форма.Форма(155)}: Ошибка при вызове метода контекста (Выполнить)
                      Выборка = запрос.Выполнить().Выбрать();
                  по причине:
                  {(6, 2)}: Неверные параметры "Подразделение"
                  <<?>>&Подразделение КАК Подразделение
                   
                  по причине:
                  {(6, 2)}: Неверные параметры "Подразделение"
                  <<?>>&Подразделение КАК Подразделение


                ТаблицаПодразделения через вычислить выражение определяется
                  Цитата ^D^ima @
                  А как к ним применить SQL запрос?

                  а зачем?

                  в СКД есть несколько наборов данных - набор данных запрос, набор данных объект и набор данных объединение.
                  Запрос используется в наборе данных запрос. Набор данных объект - ты "рисуешь" и заполняешь или подсовываешь готовый объект сам. Объединение - для объединения нескольких наборов в один.
                  Пример выше с получением данных запросом из таблицы значений в твоей задаче можно не использовать, вместо него используй в СКД набор данных объект и подсовывай в объект нужную таблицу значений.
                  Можно конечно и с запросами заморочиться, но это уже наверное дело вкуса.

                  Добавлено
                  Цитата ^D^ima @
                  ТаблицаПодразделения через вычислить выражение определяется

                  видимо неверно формируется таблица значений.

                  у меня твой пример вот в таком виде работает
                  ExpandedWrap disabled
                    ТаблицаПодразделения = Новый ТаблицаЗначений;
                        ТаблицаПодразделения.Колонки.Добавить("ИД", Новый ОписаниеТипов("Строка"));
                        ТаблицаПодразделения.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
                            
                        НоваяСтрока              = ТаблицаПодразделения.Добавить();
                        НоваяСтрока.ИД           = "123";
                        НоваяСтрока.Наименование = "Наименование строки";
                        
                        Запрос = новый Запрос;
                        Запрос.Текст= "ВЫБРАТЬ
                         | Подразделение.ИД КАК ИД,
                         | Подразделение.Наименование КАК Наименование
                         |ПОМЕСТИТЬ Временная
                         |ИЗ
                         | &Подразделение КАК Подразделение ;
                         |
                         |////////////////////////////////////////////////////////////////////////////////
                         |ВЫБРАТЬ
                         | Временная.ИД КАК ИД,
                         | Временная.Наименование КАК Наименование
                         |ИЗ
                         | Временная КАК Временная";
                        Запрос.УстановитьПараметр("Подразделение",ТаблицаПодразделения);
                     
                        Выборка = Запрос.Выполнить().Выгрузить();


                  В переменной Выборка в итоге оказывается сформированная таблица значений

                  Добавлено
                  Посмотри в отладчике что у тебя вот в этой строке Запрос.УстановитьПараметр("Подразделение", ТаблицаПодразделения) в переменной ТаблицаПодразделения
                    Я ТЗ с реквизитами накидываю на форму,

                    Цитата Rust @
                    в переменной ТаблицаПодразделения

                    ДанныеФормыКоллекция
                      Цитата ^D^ima @
                      ДанныеФормыКоллекция


                      тогда поможет
                      ExpandedWrap disabled
                        ТаблицаПодразделения = РеквизитФормыВЗначение("ТутИмяТаблицыНаФорме");
                        А это что за х-ня?
                        ExpandedWrap disabled
                              Запрос.Текст= "ВЫБРАТЬ
                                            | Подразделение.ИД КАК ПодразделениеИД,
                                            | Подразделение.Наименование КАК ПодразделениеНаименование,
                                            | Сотрудники.ИД КАК СотрудникиИД,
                                            | Сотрудники.ФИО КАК ФИО,
                                            | Сотрудники.ИДПодразделения КАК ИДПодразделения
                                            |ПОМЕСТИТЬ Временная
                                            |ИЗ
                                            | &Подразделение КАК Подразделение,
                                            | &Сотрудники КАК Сотрудники
                                            |;
                                            |
                                            |////////////////////////////////////////////////////////////////////////////////
                                            |ВЫБРАТЬ
                                            | Временная.ПодразделениеИД КАК ПодразделениеИД,
                                            | Временная.ПодразделениеНаименование КАК ПодразделениеНаименование,
                                            | Временная.СотрудникиИД КАК СотрудникиИД,
                                            | Временная.ФИО КАК ФИО,
                                            | Временная.ИДПодразделения КАК ИДПодразделения
                                            |ИЗ
                                            | Временная КАК Временная";
                              Запрос.УстановитьПараметр("Подразделение",РеквизитФормыВЗначение("ТаблицаПодразделения"));
                              Запрос.УстановитьПараметр("Сотрудники",РеквизитФормыВЗначение("ТаблицаСотрудники"));


                        ExpandedWrap disabled
                          {Обработка.ОКГ_Битрикс24.Форма.Форма.Форма(166)}: Ошибка при вызове метода контекста (Выполнить)
                              Выборка = запрос.Выполнить().Выбрать();
                          по причине:
                          При выборе данных из объекта в запросе не могут присутствовать соединения и объединения
                           
                          по причине:
                          При выборе данных из объекта в запросе не могут присутствовать соединения и объединения


                        Я хочу все таблицы запихнуть во временную и следующим вложенным запросом брать оттуда данные

                        Добавлено
                        Или каждую ТЗ в отдельную временную таблицу засунуть? :wall: :wall: :wall: :wall:
                          Цитата ^D^ima @
                          Или каждую ТЗ в отдельную временную таблицу засунуть?

                          Да.

                          Кстати, временную таблицу тоже нельзя соединить с выборкой из таблицы значений. Получишь ошибку
                          ExpandedWrap disabled
                            по причине:
                            Содержимое объекта данных может быть выбрано только во временную таблицу


                          Поэтому каждую таблицу значений заносишь в отдельную временную таблицу и дальше манипулируешь данными как тебе надо.
                          Сообщение отредактировано: Rust -
                            Долбанный неразрывный пробел :wall: :wall: :wall: час потратил чтобы понять почему не работает
                              Цитата ^D^ima @
                              час потратил чтобы понять почему не работает

                              это ты еще быстро разобрался.
                                Как такой формат привести к формату даты 1С?
                                ExpandedWrap disabled
                                  2019-02-01T03:00:00+03:00
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (4) 1 [2] 3 4  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0486 ]   [ 18 queries used ]   [ Generated: 29.03.24, 01:46 GMT ]