07.12.2009, 14:33 | #61 |
Участник
|
Ок. Спасибо.
Тогда прямой аналог ListView, TreeView. Но эти объекты в Аксапте связаны с системными контролами и сильно утяжелены функциональностью для визуального отображения. Для понимания, в Аксапте лучше думать о RecordSortedList или о map... ...со свеми вытекающими последствиями для производительности, памяти и использования системного свопа. |
|
09.12.2009, 12:59 | #62 |
Участник
|
Цитата:
Я сейчас похож на Кота Базилио, а наш разговор на разговор Лисы Алисы с Котом Базилио на поле чудес... Лиса Алиса: 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 | #63 |
Участник
|
Цитата:
Сообщение от mazzy
СКД - это построитель отчетов. Результат работы СКД - ячейки отчета(!) со свеми заголовками, промежуточными и окончательными итогами. Результат работы СКД практически невозможно использовать для работы с полученными записями... С результатами вообще непонятно что делать программисту.
СКД - это система, позволяющая на входе описать а) Запросы б) Таблицы значений в) Внешние источники данных , применить к ним настройки компоновки, которые могут заранее формироваться визуально или программно и выгрузить полученный результат в макет отчета или структуру данных. Утверждение Результат работы СКД - ячейки отчета(!) - неверно. Это лишь один из вариантов. Точно так же и стандартный ПостроительОтчета может формировать отчет, а может использоваться как источник данных для последующей обработки. Пример кода: X++: = .(, .., ); (, .); //Создадим и инициализируем процессор компоновки = ; = .(, , , ); .(, , , ); ; = .(, .., , , ("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); //Создадим и инициализируем процессор компоновки = ; = .(, , , ); .(, , , ); ; ; // = ; = ; .(); .(); Последний раз редактировалось Сисой; 09.12.2009 в 13:18. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
09.12.2009, 13:09 | #64 |
Участник
|
Спасибо. А можно ссылки куда-нибудь, где можно посмотреть описания и/или доку других вариантов?
|
|
09.12.2009, 13:28 | #65 |
Участник
|
Надо смотреть документацию по 1С.
Приведенный выше пример я взял с партнерского форума. Вообще-то 1Сники редко пользуются подобным приемом (привычка парсить запросы вручную велика). И ПостроительОтчета и СКД в режиме получения таблицы-результата чаще всего юзаются из-за интерфейсных возможностей (mini-OLAP). Тут надо честно признаться, что скорость работы СКД все равно будет ниже, чем Query. Т.к. часть обработки результатов запроса выполняется на сервере приложений 1С. Впрочем, здесь есть и плюс. Например, в СКД можно применить к реквизиту выборки произвольную функцию на языке 1С. |
|
09.12.2009, 14:08 | #66 |
Участник
|
Спасибо!
Цитата:
А почему она не эквивалентна простой конструкции? Код: ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина); А в новых конфах это где-нибудь используется? Может укажешь где, а я посмотрю? Цитата:
Поэтому твой довод услышал. Но пока не сильно доверяю. Хотелось бы проверить и убедиться самостоятельно. И все-таки. Какие значения получаются в результирующей таблице/дереве значений? 1Сники говорят, что ячейки отчета. Можно где-нибудь на код обработки результата глянуть? Цитата:
А как часто в 1С результаты работы СКД обрабатываются на сервере приложений 1С? |
|
09.12.2009, 14:27 | #67 |
Участник
|
Цитата:
Если параметр пропущен, он заменяется значением по умолчанию, определенным при описании процедуры/функции. Передача Неопределено (в языке 1С это пустое значение неопределенного типа) в качестве параметра отрубает эту подстановку. Цитата:
Цитата:
Тут другая проблема есть - стандартный интерфейс настройки СКД непонятен рядовому юзеру. Он "для программиста". Поэтому многие рисуют свои формы-надстройки. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
09.12.2009, 14:43 | #68 |
Участник
|
Цитата:
Сообщение от mazzy
Справедливости ради, надо отметить, что если в Query задействованы таблицы с переопределенным методом postLoad, то он также будет выполняться не на SQL'е. Но в Аксапте это сильное исключение из правил. И оно во всех документациях оговаривается. postLoad - устаревший метод, которые используется в последних версиях Аксапты вряд ли больше десятка раз...
Выборка этих таблиц дополнительно обрабатывается AOS'ом. Напомню, что всего в этой версии определено 3220 таблиц. Обычно около 1500 реально используется. Сисой, а на этот вопрос? |
|
09.12.2009, 14:47 | #69 |
Участник
|
Цитата:
В итоге - таблица значений |
|
|
За это сообщение автора поблагодарили: mazzy (5). |
09.12.2009, 14:49 | #70 |
Участник
|
|
|
09.12.2009, 14:51 | #71 |
Участник
|
|
|
09.12.2009, 16:43 | #72 |
Участник
|
Ну...
Цитата:
При каких условиях в 1С результаты работы СКД обрабатываются на сервере приложений 1С? Если в методичках для отличников рекомендаций нет, то насколько верно предположение, что результаты работы СКД почти всегда обрабатываются на сервере приложений 1С? |
|
09.12.2009, 17:12 | #73 |
Участник
|
Думаю, почти всегда.
Кратко работу СКД можно представить так. 1 шаг: Компоновщик макета считывает настройки СКД и готовит необходимые запросы к исполнению. 2 шаг: Процессор компоновки исполняет необходимые запросы и получает результат. Он же заполняет при необходимости массив расшифровок для drill-down. На этом этапе идет тесное взаимодействие с сервером БД. Поскольку в СКД можно определять несколько разных запросов (а их результаты вязать в СКД), а также использовать вложенные СКД (типа левого соединения), ясно, что итоговый результат все равно обрабатывается на сервере приложений. 3 шаг: Процессор вывода формирует согласно макетам и настройкам оформления табличный документ или выгружает значения в коллекцию значений. Любопытно, что 1С реализовала для СКД избыточную функциональность управления. Каждый шаг настраивается или визуально, или программно или при помощи пакета XML (т.е. можно не только управлять объектом при помощи его свойств и методов, но и парсить XML-файлы, а затем заново инициализировать настройки). |
|
10.12.2009, 15:45 | #74 |
Участник
|
Коллеги, разрешите тоже поделюсь впечатлениями. Я уже 3 года программирую в Аксапте до этого 6 лет программировал в 1С из них 3 года работал с 1С 8.0.
Плюсы 1С на мой взгляд. 1) Очень удобный табличный документ для вывода отчетов и печатных форм. Он гораздо удобнее аналогичного ReportDesign в Аксапте. 2) При проектировании прикладных объектов в 1С (справочники, документы и т.д.) все объекты (формы, таблицы, макеты) собраны в одном месте. Т.е. нет необходимости собирать формы,таблицы, классы разным веткам, если понадобилось сделать модификацию. 3) 1С гораздо лучше задокументирована, чем аксапта. Сейчас этот недостаток аксапты уже не чувствуется, т.к. то что используется каждый день уже разобрано, но когда только учился, было очень тяжело из-за недостатка информации. Теперь о плюсах аксапты 1) Нет, проблем с тем, что нужно выгнать пользователей, чтобы внести изменения. Да и вообще удобнее, когда в одном окне можно и кодировать и смотреть результаты кодирования. 2) Удобно, что программа сама размещает элементы на форме. 3) Больше возможностей для оптимизации и улучшения производительности алгоритмов. |
|
|
За это сообщение автора поблагодарили: ibc (1). |
10.12.2009, 16:39 | #75 |
Участник
|
|
|
10.12.2009, 17:27 | #76 |
Участник
|
Цитата:
Сообщение от mazzy
В 1С просто нет такой штуки. Разработчики платформы 1С об этом не думали.
Они вообще не думали, как SQL будет выполнять такие запросы. Они похоже не думали, что MS SQL прекращает всякую оптимизацию запроса, если в нем присутствует больше 8 таблиц. См. также разыменование. можно указать где это написано? а то кросспостинг на свои же сообщения (нет оптимизации запросов, когда таблиц больше 8) это конечно замечательно, но не убедительно. или ктото в аксапте сказал что так, и все как заводные повторяют? Последний раз редактировалось Vezunchik; 10.12.2009 в 17:30. |
|
10.12.2009, 17:35 | #77 |
Участник
|
ок. я понял, что вопрос задел за живое.
хм... помню, что Vadik давал ссылку на msdn. а вот здесь я говорил о 16 таблицах... еще нарыл SQL в Аксапте ищу дальше. |
|
10.12.2009, 17:41 | #78 |
Участник
|
Цитата:
Сообщение от PSerg
Теперь о плюсах аксапты
1) Нет, проблем с тем, что нужно выгнать пользователей, чтобы внести изменения. Да и вообще удобнее, когда в одном окне можно и кодировать и смотреть результаты кодирования. 2) Удобно, что программа сама размещает элементы на форме. 3) Больше возможностей для оптимизации и улучшения производительности алгоритмов. 2. в 8.2 это появилось. 3. и какие же это большие возможности оптимизации и улучшения производительности алгоритмов? не устраивает работа стандартного 1с интерпретатора, используй прямые запросы к скулю.. |
|
10.12.2009, 17:43 | #79 |
Участник
|
Цитата:
Сообщение от mazzy
ок. я понял, что вопрос задел за живое.
хм... помню, что Vadik давал ссылку на msdn. а вот здесь я говорил о 16 таблицах... еще нарыл SQL в Аксапте ищу дальше. |
|
10.12.2009, 18:01 | #80 |
Участник
|
ну и чтобы развеять читающих сей топик про SQL в аксапте:
forcePlaceholders forceSelectOrder forceNestedLoop этих команд у SQL никогда не было. это чисто аксаптовская замануха и если для forceSelectOrder есть аналог forceorder, назначение которого никоим образом не коррелирует с тем что я нашел в книге какойто. так что подозреваю что это ядро аксаптовское, но оно ни как не может влиять на запрос, отправленный к серверу. он выполнится полностью, а уж потом ядро аксапты может приделывать свои действия, которые "оптимизируют" выборку. жду с нетерпением про оптимизацию запросов |
|
Теги |
1c, платформа, сравнение систем |
|
|