Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.164.139] |
|
Страницы: (4) 1 [2] 3 4 все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Цитата Rust @ Можно компоновке данных указать что данные для отчета нужно брать из таблицы значений. Можно пример? Добавлено Под данными отчета имеется в виду запрос? Мне нужно через запрос, для гибкого построения отчетов |
Сообщ.
#17
,
|
|
|
Цитата ^D^ima @ Под данными отчета имеется в виду запрос? Мне нужно через запрос, для гибкого построения отчетов ну я так понял что ты заполняешь табличную часть обработки (или таблицу значений в обработке) данными из битрикса, а потом строишь по ним отчет, при этом тебе не надо хранить данные в базе? во вложении простой пример как построить отчет по данным таблицы значений Прикреплённый файл__________________________________________________________.zip (3,88 Кбайт, скачиваний: 435) |
Сообщ.
#18
,
|
|
|
Rust
Спасибо! Несколько вопросов: 1 ВнешнийНаборДанных = Новый Структура("ПримерТаблицыЗначений", ТЗ); Это означает ли что ТЗ должна полностью повторять структуру данных ПримерТаблицыЗначений или наоборот? Т.е. если у моей ТЗ есть какой-то реквизит, должен ли он быть в ПримерТаблицыЗначений? 2 Если у меня несколько ТЗ, я предположим их перенес в наборы данных компоновки, как построить SQL запрос в результирующий наборы данных? Или нужно Сделать SQL запросы напрямую из ТЗ в каую-то результирующую ТЗ, а потом ее переложить в набор данных компоновки для дальнейшей визуальной обработки? |
Сообщ.
#19
,
|
|
|
Цитата ^D^ima @ Это означает ли что ТЗ должна полностью повторять структуру данных ПримерТаблицыЗначений или наоборот? 1. Да. Таблицы должны быть идентичны. Данные в компоновку ты передаешь из таблицы значений, эту таблицу значений представляешь системе компоновки как "набор данных - объект", и в этом наборе данных описываешь что именно лежит в передаваемой таблице значений. 2. Здесь как тебе удобнее. Можешь получить из битрикса сразу результирующую таблицу и в системе компоновки работать именно с одной большой таблицей. Но это может быть затратно. Например может быть вариант отчета где нужны данные только одной таблицы и тебе незачем тянуть еще данные из остальных таблиц (тут я про битрикс). Я бы разбил получаемые данные на несколько наборов, связал их через Связи наборов данных, а потом через настройки вариантов отчетов формировал нужные отчеты. При этом СКД сама будет строить запросы исходя из настроек варианта отчета. По пункту 2 не могу точно что-то посоветовать, просто высказал свое имхо, т.к. не знаю какие данные у тебя есть и какие отчеты будешь формировать. Все зависит от входящих данных из битрикса. Добавлено Оффтоп. Уже много лет работаю с 1С, но с битриксом так ни разу и не сталкивался. Хоть и интегрировал кучу совершенно разных систем с 1С Добавлено Цитата ^D^ima @ Если у меня несколько ТЗ, я предположим их перенес в наборы данных компоновки, как построить SQL запрос в результирующий наборы данных? В случае работы с набором данных - объект тебе не надо писать запросы. Ты просто описываешь поля таблицы на закладке Наборы данных, в модуле объекта отчета подсовываешь СКД свои данные в виде таблицы значений, на закладке Настройки формируешь внешний вид твоего отчета, и все. СКД дальше все сделает сама. Твоя задача только описать какую таблицу ты передашь СКД, передать ей таблицу и указать СКД как должен выглядеть твой отчет. |
Сообщ.
#20
,
|
|
|
Rust
1 Из битрикса REST API запросами не вытянуть итоговые данные, только по таблицам(т.к. это облачный портал, нет доступа к базе данных напрямую. есть ещё стандартная оьработка по синхронизации, но она далеко не все данные передает) 2 Исходя из ограничений п.1. придется вначале дергать таблицы, потом в Результирующую ТЗ SQLэм формировать нужные данные и уже потом подставлять результирующую ТЗ в компоновку. Да и как понимаю так просто не поработать с ТЗ в запросе - нужно создавать временную таблицу там |
Сообщ.
#21
,
|
|
|
Цитата ^D^ima @ потом в Результирующую ТЗ SQLэм формировать нужные данные и уже потом подставлять результирующую ТЗ в компоновку. А почему бы не сделать несколько "наборов данных - объект", по количеству таблиц, получаемых из битрикса, и работать в СКД сразу с этими наборами данных? Имхо, обрабатывать запросами таблицы значений, чтобы получить другую таблицу значений лишнее. |
Сообщ.
#22
,
|
|
|
Цитата Rust @ "наборов данных - объект", по количеству таблиц, получаемых из битрикса, и работать в СКД сразу с этими наборами данных? А как к ним применить SQL запрос? Добавлено Запрос = новый Запрос; Запрос.Текст= "ВЫБРАТЬ | Подразделение.ИД КАК ИД, | Подразделение.Наименование КАК Наименование |ПОМЕСТИТЬ Временная |ИЗ | &Подразделение КАК Подразделение ; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Временная.ИД КАК ИД, | Временная.Наименование КАК Наименование |ИЗ | Временная КАК Временная"; Запрос.УстановитьПараметр("Подразделение",ТаблицаПодразделения); Выборка = запрос.Выполнить().Выбрать(); Что он хочет от меня? {Обработка.ОКГ_Битрикс24.Форма.Форма.Форма(155)}: Ошибка при вызове метода контекста (Выполнить) Выборка = запрос.Выполнить().Выбрать(); по причине: {(6, 2)}: Неверные параметры "Подразделение" <<?>>&Подразделение КАК Подразделение по причине: {(6, 2)}: Неверные параметры "Подразделение" <<?>>&Подразделение КАК Подразделение ТаблицаПодразделения через вычислить выражение определяется |
Сообщ.
#23
,
|
|
|
Цитата ^D^ima @ А как к ним применить SQL запрос? а зачем? в СКД есть несколько наборов данных - набор данных запрос, набор данных объект и набор данных объединение. Запрос используется в наборе данных запрос. Набор данных объект - ты "рисуешь" и заполняешь или подсовываешь готовый объект сам. Объединение - для объединения нескольких наборов в один. Пример выше с получением данных запросом из таблицы значений в твоей задаче можно не использовать, вместо него используй в СКД набор данных объект и подсовывай в объект нужную таблицу значений. Можно конечно и с запросами заморочиться, но это уже наверное дело вкуса. Добавлено Цитата ^D^ima @ ТаблицаПодразделения через вычислить выражение определяется видимо неверно формируется таблица значений. у меня твой пример вот в таком виде работает ТаблицаПодразделения = Новый ТаблицаЗначений; ТаблицаПодразделения.Колонки.Добавить("ИД", Новый ОписаниеТипов("Строка")); ТаблицаПодразделения.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка")); НоваяСтрока = ТаблицаПодразделения.Добавить(); НоваяСтрока.ИД = "123"; НоваяСтрока.Наименование = "Наименование строки"; Запрос = новый Запрос; Запрос.Текст= "ВЫБРАТЬ | Подразделение.ИД КАК ИД, | Подразделение.Наименование КАК Наименование |ПОМЕСТИТЬ Временная |ИЗ | &Подразделение КАК Подразделение ; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Временная.ИД КАК ИД, | Временная.Наименование КАК Наименование |ИЗ | Временная КАК Временная"; Запрос.УстановитьПараметр("Подразделение",ТаблицаПодразделения); Выборка = Запрос.Выполнить().Выгрузить(); В переменной Выборка в итоге оказывается сформированная таблица значений Добавлено Посмотри в отладчике что у тебя вот в этой строке Запрос.УстановитьПараметр("Подразделение", ТаблицаПодразделения) в переменной ТаблицаПодразделения |
Сообщ.
#24
,
|
|
|
Я ТЗ с реквизитами накидываю на форму,
Цитата Rust @ в переменной ТаблицаПодразделения ДанныеФормыКоллекция |
Сообщ.
#25
,
|
|
|
Цитата ^D^ima @ ДанныеФормыКоллекция тогда поможет ТаблицаПодразделения = РеквизитФормыВЗначение("ТутИмяТаблицыНаФорме"); |
Сообщ.
#26
,
|
|
|
А это что за х-ня?
Запрос.Текст= "ВЫБРАТЬ | Подразделение.ИД КАК ПодразделениеИД, | Подразделение.Наименование КАК ПодразделениеНаименование, | Сотрудники.ИД КАК СотрудникиИД, | Сотрудники.ФИО КАК ФИО, | Сотрудники.ИДПодразделения КАК ИДПодразделения |ПОМЕСТИТЬ Временная |ИЗ | &Подразделение КАК Подразделение, | &Сотрудники КАК Сотрудники |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Временная.ПодразделениеИД КАК ПодразделениеИД, | Временная.ПодразделениеНаименование КАК ПодразделениеНаименование, | Временная.СотрудникиИД КАК СотрудникиИД, | Временная.ФИО КАК ФИО, | Временная.ИДПодразделения КАК ИДПодразделения |ИЗ | Временная КАК Временная"; Запрос.УстановитьПараметр("Подразделение",РеквизитФормыВЗначение("ТаблицаПодразделения")); Запрос.УстановитьПараметр("Сотрудники",РеквизитФормыВЗначение("ТаблицаСотрудники")); {Обработка.ОКГ_Битрикс24.Форма.Форма.Форма(166)}: Ошибка при вызове метода контекста (Выполнить) Выборка = запрос.Выполнить().Выбрать(); по причине: При выборе данных из объекта в запросе не могут присутствовать соединения и объединения по причине: При выборе данных из объекта в запросе не могут присутствовать соединения и объединения Я хочу все таблицы запихнуть во временную и следующим вложенным запросом брать оттуда данные Добавлено Или каждую ТЗ в отдельную временную таблицу засунуть? |
Сообщ.
#27
,
|
|
|
Цитата ^D^ima @ Или каждую ТЗ в отдельную временную таблицу засунуть? Да. Кстати, временную таблицу тоже нельзя соединить с выборкой из таблицы значений. Получишь ошибку по причине: Содержимое объекта данных может быть выбрано только во временную таблицу Поэтому каждую таблицу значений заносишь в отдельную временную таблицу и дальше манипулируешь данными как тебе надо. |
Сообщ.
#28
,
|
|
|
Долбанный неразрывный пробел час потратил чтобы понять почему не работает
|
Сообщ.
#29
,
|
|
|
Цитата ^D^ima @ час потратил чтобы понять почему не работает это ты еще быстро разобрался. |
Сообщ.
#30
,
|
|
|
Как такой формат привести к формату даты 1С?
2019-02-01T03:00:00+03:00 |