|
|
|
|
#1 |
|
Участник
|
Цитата:
По существу. В 1С есть Система компоновки данных (что-то типа Построитель отчета v.2). В ней можно описать базовый запрос, а затем программно или мануально добавлять/удалять любые уточняющие конструкции (отборы, группировки, сортировки и т.п.). В 8.2 практически все отчеты базируются на СКД. Цитата:
![]() Впрочем, механизм, безусловно, полезный (если он управляем разработчиком). Кстати, 1С умеет кэшировать объекты (для работы форм и объектного доступа "через точку"). Но конструкции класса Запрос всегда транслируются в SQL-команды СУБД, насколько мне известно. Ничего не сказано об объектной технике 1С. Мне гораздо приятнее работать с Документом, нежели россыпью таблиц. Ничего не сказано о том, что Аксапта застряла в своей идеологии на полпути - многие известные мне конструкторы учетных систем с поддержкой ООП умеют наследовать таблицы в составе контейнеров классов, описывающих объект предметной области. Да, признаю - DAX позволяет программисту строить куда более масштабируемые системы, нежели 1С:Предприятие (и все равно не на порядок, отличие по моим оценкам в 3-4 раза). |
|
|
|
|
#2 |
|
Участник
|
Цитата:
Пользователю? Пользователь не наберет SQL запрос. Особенно если в конфигурации есть несколько тысяч объектов (сотни справочников, сотни документов, сотни регистров). Программисту? программисту нужен удобный механизм модификации запроса на основании галочек, которые выставил пользователь. А как раз такого механизма то и нет. Поэтому конечно же это не вопрос вкуса ![]() А вопрос - на кого ориентирована платформа. 1С предоставляет возможность ПРОГРАММИСТУ набрать запрос вручную. Но 1С не предоставляет пользователю никаких инструментов на пользовательском уровне (просто я кучу бла-бла-бла пропустил вокруг query). А программисту не предоставляет возможность удобно взаимодействовать с пользователем и удобно выполнять хотелки пользователей. Цитата:
Сообщение от Сисой
По существу. В 1С есть Система компоновки данных (что-то типа Построитель отчета v.2). В ней можно описать базовый запрос, а затем программно или мануально добавлять/удалять любые уточняющие конструкции (отборы, группировки, сортировки и т.п.). В 8.2 практически все отчеты базируются на СКД.
В модулях проведения, в периодических заданиях и в остальных местах программист доступа к СКД не имеет. ![]() Цитата:
Временные таблицы в Аксапте тоже есть. А вот записи обычных таблиц, которые попали в кэш, возращаются из кэша значительно быстрее, нежели с SQL ![]() Тут я вынужден, либо снова бла-бла-бла теорию... Либо отослать к книжке Inside Dynamics. Цитата:
Речь идет о данных. Как один из глобальных следствий того, что 1С не кэширует данные - это почти полное отсутствие настроечных таблиц, таблиц с правилами разноски на счета и т.п. Просто постоянные запросы к этим таблицам приведут к ступору SQL. Убедится в этом можно отключив кэширование в таблицах Аксапты (у меня были такие клиенты, которые жаловались на то, что "Аксапта неправильно работает с SQL". А потом выяснилось, что какие-то "деятели" переключили во всех таблицах режим кэширования с EntireTable и Found на NotInTTS)... Цитата:
Пример того, как получать данные http://axapta.mazzy.ru/lib/inventsumdate/ Такие же примеры есть и для ввода данных http://axapta.mazzy.ru/lib/journaltrans_insert/ Просто у 1С нет выбора на каком уровне работать ![]() Цитата:
Сообщение от Сисой
Ничего не сказано о том, что Аксапта застряла в своей идеологии на полпути - многие известные мне конструкторы учетных систем с поддержкой ООП умеют наследовать таблицы в составе контейнеров классов, описывающих объект предметной области. Да, признаю - DAX позволяет программисту строить куда более масштабируемые системы, нежели 1С:Предприятие (и все равно не на порядок, отличие по моим оценкам в 3-4 раза).
![]() В Аксапте хотя бы пытались приблизиться при помощи map... |
|
|
|
|
#3 |
|
Участник
|
Цитата:
Вывод из СКД доступен и на сервере. И есть класс ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений. Можно настроить СКД и вывести с ее помощью результат в таблицу или дерево значений. |
|
|
|
|
#4 |
|
Участник
|
Цитата:
И черт с ним, что в последних версиях Аксапты появились композитные Query, dataSet и специализированные Query для веба... Что ж, пусть приближается. Вручную править текст запроса - это редкостный отстой. Ура, товариащи! Можно только уточнить? объект называется "...В коллекцию значений", а ты говоришь в "таблицу". Давай уточним для Аксаптоведов, которые не знают разницы - ты говоришь о таблице значений? которая хранится на клиенте? (по Аксаптовски - recordSortedList, map, но не временной таблице) или ты говоришь о настоящей таблице? Последний раз редактировалось mazzy; 07.12.2009 в 14:02. Причина: Ура, товарищи! |
|
|
|
|
#5 |
|
Участник
|
Цитата:
Сообщение от mazzy
Можно только уточнить? объект называется "...В коллекцию значений", а ты говоришь в "таблицу". Давай уточним для Аксаптоведов, которые не знают разницы - ты говоришь о таблице значений? которая хранится на клиенте? (по Аксаптовски - recordSortedList, map, но не временной таблице) или ты говоришь о настоящей таблице?
Ее можно проиндексировать, выгрузить в temptable, но это не таблица СУБД. В 1С вообще нет аналогов SQL Update и SQL Insert. Это большой минус, но реализовать их в рамках объектной идеологии 1С:Предприятия (когда запись объекта на самом деле формирует транзакционную запись в десятки таблиц) невозможно. Единственное исключение - работа с регистрами 1С. Там поддерживается техника группового манипулирования записями по ключу (НаборЗаписей). |
|
|
|
|
#6 |
|
Участник
|
Ок. Спасибо.
Тогда прямой аналог ListView, TreeView. Но эти объекты в Аксапте связаны с системными контролами и сильно утяжелены функциональностью для визуального отображения. Для понимания, в Аксапте лучше думать о RecordSortedList или о map... ...со свеми вытекающими последствиями для производительности, памяти и использования системного свопа. |
|
|
|
|
#7 |
|
Участник
|
Цитата:
Я сейчас похож на Кота Базилио, а наш разговор на разговор Лисы Алисы с Котом Базилио на поле чудес... ![]() Лиса Алиса: 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("Запрос");
Запрос.Текст=ТекстЗапроса;
Выборка=Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НовСтр=ВнешниеДанные.Добавить();
ЗаполнитьЗначенияСвойств(НовСтр,Выборка);
КонецЦикла;
Исключение
Сообщить(ОписаниеОшибки(),СтатусСообщения.Внимание);
КонецПопытки;
База=Неопределено;
КонецПроцедуры |
|
|
|
|
#8 |
|
Участник
|
Цитата:
Сообщение от mazzy
СКД - это построитель отчетов. Результат работы СКД - ячейки отчета(!) со свеми заголовками, промежуточными и окончательными итогами. Результат работы СКД практически невозможно использовать для работы с полученными записями... С результатами вообще непонятно что делать программисту.
СКД - это система, позволяющая на входе описать а) Запросы б) Таблицы значений в) Внешние источники данных , применить к ним настройки компоновки, которые могут заранее формироваться визуально или программно и выгрузить полученный результат в макет отчета или структуру данных. Утверждение Результат работы СКД - ячейки отчета(!) - неверно. Это лишь один из вариантов. Точно так же и стандартный ПостроительОтчета может формировать отчет, а может использоваться как источник данных для последующей обработки. Пример кода: X++: = .(, .., ); (, .); //Создадим и инициализируем процессор компоновки = ; = .(, , , ); .(, , , ); ; = .(, .., , , ("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); //Создадим и инициализируем процессор компоновки = ; = .(, , , ); .(, , , ); ; ; // = ; = ; .(); .(); Последний раз редактировалось Сисой; 09.12.2009 в 13:18. |
|
|
|
| За это сообщение автора поблагодарили: mazzy (2). | |
|
|
#9 |
|
Участник
|
Спасибо. А можно ссылки куда-нибудь, где можно посмотреть описания и/или доку других вариантов?
|
|
|
|
|
#10 |
|
Участник
|
Надо смотреть документацию по 1С.
Приведенный выше пример я взял с партнерского форума. Вообще-то 1Сники редко пользуются подобным приемом (привычка парсить запросы вручную велика). И ПостроительОтчета и СКД в режиме получения таблицы-результата чаще всего юзаются из-за интерфейсных возможностей (mini-OLAP). Тут надо честно признаться, что скорость работы СКД все равно будет ниже, чем Query. Т.к. часть обработки результатов запроса выполняется на сервере приложений 1С. Впрочем, здесь есть и плюс. Например, в СКД можно применить к реквизиту выборки произвольную функцию на языке 1С. |
|
|
| Теги |
| 1c, платформа, сравнение систем |
|
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|