|
07.12.2009, 13:19 | #1 |
Участник
|
Цитата:
Вывод из СКД доступен и на сервере. И есть класс ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений. Можно настроить СКД и вывести с ее помощью результат в таблицу или дерево значений. |
|
07.12.2009, 13:32 | #2 |
Участник
|
Цитата:
И черт с ним, что в последних версиях Аксапты появились композитные Query, dataSet и специализированные Query для веба... Что ж, пусть приближается. Вручную править текст запроса - это редкостный отстой. Ура, товариащи! Можно только уточнить? объект называется "...В коллекцию значений", а ты говоришь в "таблицу". Давай уточним для Аксаптоведов, которые не знают разницы - ты говоришь о таблице значений? которая хранится на клиенте? (по Аксаптовски - recordSortedList, map, но не временной таблице) или ты говоришь о настоящей таблице? Последний раз редактировалось mazzy; 07.12.2009 в 14:02. Причина: Ура, товарищи! |
|
07.12.2009, 14:21 | #3 |
Участник
|
Цитата:
Сообщение от mazzy
Можно только уточнить? объект называется "...В коллекцию значений", а ты говоришь в "таблицу". Давай уточним для Аксаптоведов, которые не знают разницы - ты говоришь о таблице значений? которая хранится на клиенте? (по Аксаптовски - recordSortedList, map, но не временной таблице) или ты говоришь о настоящей таблице?
Ее можно проиндексировать, выгрузить в temptable, но это не таблица СУБД. В 1С вообще нет аналогов SQL Update и SQL Insert. Это большой минус, но реализовать их в рамках объектной идеологии 1С:Предприятия (когда запись объекта на самом деле формирует транзакционную запись в десятки таблиц) невозможно. Единственное исключение - работа с регистрами 1С. Там поддерживается техника группового манипулирования записями по ключу (НаборЗаписей). |
|
07.12.2009, 14:33 | #4 |
Участник
|
Ок. Спасибо.
Тогда прямой аналог ListView, TreeView. Но эти объекты в Аксапте связаны с системными контролами и сильно утяжелены функциональностью для визуального отображения. Для понимания, в Аксапте лучше думать о RecordSortedList или о map... ...со свеми вытекающими последствиями для производительности, памяти и использования системного свопа. |
|
09.12.2009, 12:59 | #5 |
Участник
|
Цитата:
Я сейчас похож на Кота Базилио, а наш разговор на разговор Лисы Алисы с Котом Базилио на поле чудес... Лиса Алиса: 5 золотых на 2 не делится.Погоди, погоди. СКД - это построитель отчетов. Результат работы СКД - ячейки отчета(!) со свеми заголовками, промежуточными и окончательными итогами. Результат работы СКД практически невозможно использовать для работы с полученными записями... С результатами вообще непонятно что делать программисту. http://v8.1c.ru/overview/datacomposition.htm http://www.kb.mista.ru/article.php?id=668 http://coder1cv8.narod.ru/Publication6.html и т.д. А результат работы Query - записи таблиц. С этими записями программист может работать как угодно именно как с записями таблиц. Типичные примеры работы с Query Проблема с CustTrans Помогите с Query DAX 4.2 Фильтры, возникающие в диалоге автоматически Статистика по каждому коду номенклатуры. Как правильно построить Query? и т.д. поиском по ключевому слову Query или QueryRun на этом форуме. Итого: В 1С нет аналога Query. Запросы задаются текстовой строкой. Модифицировать запрос можно только путем изменения самого текста запроса. Простейший и типичнейший пример из 1С: Код: Процедура ДействияФормыЗагрузитьВнешниеДанные(Кнопка) ВнешниеДанные.Очистить(); Попытка КОМ=Новый COMОбъект("V81.COMConnector"); База=КОМ.Connect("Srvr=server;Ref=Base;Usr=user;Pwd=password"); ТекстЗапроса=" |ВЫБРАТЬ | Склад.Код КАК КодСклада, | СУММА(КоличествоОстаток) КАК ОстатокВнешняяБаза |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки |СГРУППИРОВАТЬ ПО | Склад"; Запрос=База.NewObject("Запрос"); Запрос.Текст=ТекстЗапроса; Выборка=Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл НовСтр=ВнешниеДанные.Добавить(); ЗаполнитьЗначенияСвойств(НовСтр,Выборка); КонецЦикла; Исключение Сообщить(ОписаниеОшибки(),СтатусСообщения.Внимание); КонецПопытки; База=Неопределено; КонецПроцедуры |
|
09.12.2009, 13:06 | #6 |
Участник
|
Цитата:
Сообщение от mazzy
СКД - это построитель отчетов. Результат работы СКД - ячейки отчета(!) со свеми заголовками, промежуточными и окончательными итогами. Результат работы СКД практически невозможно использовать для работы с полученными записями... С результатами вообще непонятно что делать программисту.
СКД - это система, позволяющая на входе описать а) Запросы б) Таблицы значений в) Внешние источники данных , применить к ним настройки компоновки, которые могут заранее формироваться визуально или программно и выгрузить полученный результат в макет отчета или структуру данных. Утверждение Результат работы СКД - ячейки отчета(!) - неверно. Это лишь один из вариантов. Точно так же и стандартный ПостроительОтчета может формировать отчет, а может использоваться как источник данных для последующей обработки. Пример кода: X++: = .(, .., ); (, .); //Создадим и инициализируем процессор компоновки = ; = .(, , , ); .(, , , ); ; = .(, .., , , ("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); //Создадим и инициализируем процессор компоновки = ; = .(, , , ); .(, , , ); ; ; // = ; = ; .(); .(); Последний раз редактировалось Сисой; 09.12.2009 в 13:18. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
09.12.2009, 13:09 | #7 |
Участник
|
Спасибо. А можно ссылки куда-нибудь, где можно посмотреть описания и/или доку других вариантов?
|
|
09.12.2009, 13:28 | #8 |
Участник
|
Надо смотреть документацию по 1С.
Приведенный выше пример я взял с партнерского форума. Вообще-то 1Сники редко пользуются подобным приемом (привычка парсить запросы вручную велика). И ПостроительОтчета и СКД в режиме получения таблицы-результата чаще всего юзаются из-за интерфейсных возможностей (mini-OLAP). Тут надо честно признаться, что скорость работы СКД все равно будет ниже, чем Query. Т.к. часть обработки результатов запроса выполняется на сервере приложений 1С. Впрочем, здесь есть и плюс. Например, в СКД можно применить к реквизиту выборки произвольную функцию на языке 1С. |
|
09.12.2009, 14:08 | #9 |
Участник
|
Спасибо!
Цитата:
А почему она не эквивалентна простой конструкции? Код: ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина); А в новых конфах это где-нибудь используется? Может укажешь где, а я посмотрю? Цитата:
Поэтому твой довод услышал. Но пока не сильно доверяю. Хотелось бы проверить и убедиться самостоятельно. И все-таки. Какие значения получаются в результирующей таблице/дереве значений? 1Сники говорят, что ячейки отчета. Можно где-нибудь на код обработки результата глянуть? Цитата:
А как часто в 1С результаты работы СКД обрабатываются на сервере приложений 1С? |
|
09.12.2009, 14:27 | #10 |
Участник
|
Цитата:
Если параметр пропущен, он заменяется значением по умолчанию, определенным при описании процедуры/функции. Передача Неопределено (в языке 1С это пустое значение неопределенного типа) в качестве параметра отрубает эту подстановку. Цитата:
Цитата:
Тут другая проблема есть - стандартный интерфейс настройки СКД непонятен рядовому юзеру. Он "для программиста". Поэтому многие рисуют свои формы-надстройки. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
09.12.2009, 14:43 | #11 |
Участник
|
Цитата:
Сообщение от mazzy
Справедливости ради, надо отметить, что если в Query задействованы таблицы с переопределенным методом postLoad, то он также будет выполняться не на SQL'е. Но в Аксапте это сильное исключение из правил. И оно во всех документациях оговаривается. postLoad - устаревший метод, которые используется в последних версиях Аксапты вряд ли больше десятка раз...
Выборка этих таблиц дополнительно обрабатывается AOS'ом. Напомню, что всего в этой версии определено 3220 таблиц. Обычно около 1500 реально используется. Сисой, а на этот вопрос? |
|
09.12.2009, 14:47 | #12 |
Участник
|
Цитата:
В итоге - таблица значений |
|
|
За это сообщение автора поблагодарили: mazzy (5). |
09.12.2009, 14:51 | #13 |
Участник
|
|
|
09.12.2009, 16:43 | #14 |
Участник
|
Ну...
Цитата:
При каких условиях в 1С результаты работы СКД обрабатываются на сервере приложений 1С? Если в методичках для отличников рекомендаций нет, то насколько верно предположение, что результаты работы СКД почти всегда обрабатываются на сервере приложений 1С? |
|
Теги |
1c, платформа, сравнение систем |
|
|