AXForum  
Вернуться   AXForum > Рынок > Сравнение ERP-систем
NAV
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.12.2009, 12:48   #1  
Сисой is offline
Сисой
Участник
Аватар для Сисой
Злыдни
1C
 
938 / 339 (13) ++++++
Регистрация: 05.02.2003
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
1. Query
В платформе 1С нет объекта, который позволяет ПРОГРАММИСТУ строить query программно. Аксаповеды, вы не поверите, но программисты 1С до сих пор парсят и правят тексты строк запросов.
А я считаю, что это в Аксапте наоборот неудобный механизм запросов. Потому что пришел в 1С с PL/SQL и не понимаю, почему я не могу набрать SQL-код и моментально его исполнить. Вопрос вкуса.
По существу. В 1С есть Система компоновки данных (что-то типа Построитель отчета v.2). В ней можно описать базовый запрос, а затем программно или мануально добавлять/удалять любые уточняющие конструкции (отборы, группировки, сортировки и т.п.). В 8.2 практически все отчеты базируются на СКД.

Цитата:
Сообщение от mazzy Посмотреть сообщение
2. Кэширование таблиц
В Аксапте очень большое значение уделяется кэшированию таблиц. См. книжку Dynamics Inside.
В результате треть запросов (и больше) Аксапта просто не отправляется на SQL-сервер.
И что, Аксапта умеет строить планы запросов по своим временным таблицам эффективнее SQL-сервера?
Впрочем, механизм, безусловно, полезный (если он управляем разработчиком).
Кстати, 1С умеет кэшировать объекты (для работы форм и объектного доступа "через точку"). Но конструкции класса Запрос всегда транслируются в SQL-команды СУБД, насколько мне известно.

Ничего не сказано об объектной технике 1С. Мне гораздо приятнее работать с Документом, нежели россыпью таблиц. Ничего не сказано о том, что Аксапта застряла в своей идеологии на полпути - многие известные мне конструкторы учетных систем с поддержкой ООП умеют наследовать таблицы в составе контейнеров классов, описывающих объект предметной области. Да, признаю - DAX позволяет программисту строить куда более масштабируемые системы, нежели 1С:Предприятие (и все равно не на порядок, отличие по моим оценкам в 3-4 раза).
Старый 07.12.2009, 13:05   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Сисой Посмотреть сообщение
А я считаю, что это в Аксапте наоборот неудобный механизм запросов. Потому что пришел в 1С с PL/SQL и не понимаю, почему я не могу набрать SQL-код и моментально его исполнить. Вопрос вкуса.
Проверочный вопрос: а кому неудобно?
Пользователю? Пользователь не наберет SQL запрос. Особенно если в конфигурации есть несколько тысяч объектов (сотни справочников, сотни документов, сотни регистров).

Программисту? программисту нужен удобный механизм модификации запроса на основании галочек, которые выставил пользователь. А как раз такого механизма то и нет.

Поэтому конечно же это не вопрос вкуса
А вопрос - на кого ориентирована платформа.
1С предоставляет возможность ПРОГРАММИСТУ набрать запрос вручную.
Но 1С не предоставляет пользователю никаких инструментов на пользовательском уровне (просто я кучу бла-бла-бла пропустил вокруг query). А программисту не предоставляет возможность удобно взаимодействовать с пользователем и удобно выполнять хотелки пользователей.

Цитата:
Сообщение от Сисой Посмотреть сообщение
По существу. В 1С есть Система компоновки данных (что-то типа Построитель отчета v.2). В ней можно описать базовый запрос, а затем программно или мануально добавлять/удалять любые уточняющие конструкции (отборы, группировки, сортировки и т.п.). В 8.2 практически все отчеты базируются на СКД.
Да. Но компоновка данных работает только в отчетах.
В модулях проведения, в периодических заданиях и в остальных местах программист доступа к СКД не имеет.

Цитата:
Сообщение от Сисой Посмотреть сообщение
И что, Аксапта умеет строить планы запросов по своим временным таблицам эффективнее SQL-сервера?
Тут не надо путать.
Временные таблицы в Аксапте тоже есть.
А вот записи обычных таблиц, которые попали в кэш, возращаются из кэша значительно быстрее, нежели с SQL

Тут я вынужден, либо снова бла-бла-бла теорию... Либо отослать к книжке Inside Dynamics.


Цитата:
Сообщение от Сисой Посмотреть сообщение
Впрочем, механизм, безусловно, полезный (если он управляем разработчиком).
Кстати, 1С умеет кэшировать объекты (для работы форм и объектного доступа "через точку"). Но конструкции класса Запрос всегда транслируются в SQL-команды СУБД, насколько мне известно.
Объекты - Аксапта давно умеет.
Речь идет о данных.

Как один из глобальных следствий того, что 1С не кэширует данные - это почти полное отсутствие настроечных таблиц, таблиц с правилами разноски на счета и т.п.

Просто постоянные запросы к этим таблицам приведут к ступору SQL.
Убедится в этом можно отключив кэширование в таблицах Аксапты (у меня были такие клиенты, которые жаловались на то, что "Аксапта неправильно работает с SQL". А потом выяснилось, что какие-то "деятели" переключили во всех таблицах режим кэширования с EntireTable и Found на NotInTTS)...

Цитата:
Сообщение от Сисой Посмотреть сообщение
Ничего не сказано об объектной технике 1С. Мне гораздо приятнее работать с Документом, нежели россыпью таблиц.
Работай с классами. Зачем тебе россыпть таблиц?
Пример того, как получать данные http://axapta.mazzy.ru/lib/inventsumdate/
Такие же примеры есть и для ввода данных http://axapta.mazzy.ru/lib/journaltrans_insert/

Просто у 1С нет выбора на каком уровне работать

Цитата:
Сообщение от Сисой Посмотреть сообщение
Ничего не сказано о том, что Аксапта застряла в своей идеологии на полпути - многие известные мне конструкторы учетных систем с поддержкой ООП умеют наследовать таблицы в составе контейнеров классов, описывающих объект предметной области. Да, признаю - DAX позволяет программисту строить куда более масштабируемые системы, нежели 1С:Предприятие (и все равно не на порядок, отличие по моим оценкам в 3-4 раза).
Да, но и 1С не приблизилась... Застряв даже не "на полпути", а гораздо ближе к началу
В Аксапте хотя бы пытались приблизиться при помощи map...
__________________
полезное на axForum, github, vk, coub.
Старый 07.12.2009, 13:19   #3  
Сисой is offline
Сисой
Участник
Аватар для Сисой
Злыдни
1C
 
938 / 339 (13) ++++++
Регистрация: 05.02.2003
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
Да. Но компоновка данных работает только в отчетах.
В модулях проведения, в периодических заданиях и в остальных местах программист доступа к СКД не имеет.
Нет, не так.
Вывод из СКД доступен и на сервере.
И есть класс ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.
Можно настроить СКД и вывести с ее помощью результат в таблицу или дерево значений.
Старый 07.12.2009, 13:32   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Сисой Посмотреть сообщение
Нет, не так.
Вывод из СКД доступен и на сервере.
И есть класс ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.
Можно настроить СКД и вывести с ее помощью результат в таблицу или дерево значений.
О! Спасибо. Круто. В последних версиях 1С появился аналог тривиального Query Аксапты 2.0.
И черт с ним, что в последних версиях Аксапты появились композитные Query, dataSet и специализированные Query для веба...
Что ж, пусть приближается. Вручную править текст запроса - это редкостный отстой. Ура, товариащи!


Можно только уточнить? объект называется "...В коллекцию значений", а ты говоришь в "таблицу". Давай уточним для Аксаптоведов, которые не знают разницы - ты говоришь о таблице значений? которая хранится на клиенте? (по Аксаптовски - recordSortedList, map, но не временной таблице) или ты говоришь о настоящей таблице?
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 07.12.2009 в 14:02. Причина: Ура, товарищи!
Старый 07.12.2009, 14:21   #5  
Сисой is offline
Сисой
Участник
Аватар для Сисой
Злыдни
1C
 
938 / 339 (13) ++++++
Регистрация: 05.02.2003
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
Можно только уточнить? объект называется "...В коллекцию значений", а ты говоришь в "таблицу". Давай уточним для Аксаптоведов, которые не знают разницы - ты говоришь о таблице значений? которая хранится на клиенте? (по Аксаптовски - recordSortedList, map, но не временной таблице) или ты говоришь о настоящей таблице?
Да, это таблица (дерево) значений на клиенте или сервере приложений.
Ее можно проиндексировать, выгрузить в temptable, но это не таблица СУБД. В 1С вообще нет аналогов SQL Update и SQL Insert. Это большой минус, но реализовать их в рамках объектной идеологии 1С:Предприятия (когда запись объекта на самом деле формирует транзакционную запись в десятки таблиц) невозможно.
Единственное исключение - работа с регистрами 1С. Там поддерживается техника группового манипулирования записями по ключу (НаборЗаписей).
Старый 07.12.2009, 14:33   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Сисой Посмотреть сообщение
Да, это таблица (дерево) значений на клиенте или сервере приложений.
Ок. Спасибо.
Тогда прямой аналог ListView, TreeView. Но эти объекты в Аксапте связаны с системными контролами и сильно утяжелены функциональностью для визуального отображения.

Для понимания, в Аксапте лучше думать о RecordSortedList или о map...
...со свеми вытекающими последствиями для производительности, памяти и использования системного свопа.
__________________
полезное на axForum, github, vk, coub.
Старый 09.12.2009, 12:59   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Сисой Посмотреть сообщение
Нет, не так.
Вывод из СКД доступен и на сервере.
И есть класс ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.
Можно настроить СКД и вывести с ее помощью результат в таблицу или дерево значений.
Погоди...
Я сейчас похож на Кота Базилио, а наш разговор на разговор Лисы Алисы с Котом Базилио на поле чудес...
Лиса Алиса: 5 золотых на 2 не делится.
Лиса Алиса: Попробуем разделить на 5.
Лиса Алиса: Получай свой золотой.
Кот Базилио: ?!?!
Погоди, погоди.

СКД - это построитель отчетов. Результат работы СКД - ячейки отчета(!) со свеми заголовками, промежуточными и окончательными итогами. Результат работы СКД практически невозможно использовать для работы с полученными записями... С результатами вообще непонятно что делать программисту.
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("Запрос");
       Запрос.Текст=ТекстЗапроса;
       Выборка=Запрос.Выполнить().Выбрать();
       Пока Выборка.Следующий() Цикл
          НовСтр=ВнешниеДанные.Добавить();
          ЗаполнитьЗначенияСвойств(НовСтр,Выборка);
       КонецЦикла;
    Исключение
       Сообщить(ОписаниеОшибки(),СтатусСообщения.Внимание);
    КонецПопытки;
    База=Неопределено;
 КонецПроцедуры
См. также http://kb.mista.ru/article.php?id=41
__________________
полезное на axForum, github, vk, coub.
Старый 09.12.2009, 13:06   #8  
Сисой is offline
Сисой
Участник
Аватар для Сисой
Злыдни
1C
 
938 / 339 (13) ++++++
Регистрация: 05.02.2003
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
СКД - это построитель отчетов. Результат работы СКД - ячейки отчета(!) со свеми заголовками, промежуточными и окончательными итогами. Результат работы СКД практически невозможно использовать для работы с полученными записями... С результатами вообще непонятно что делать программисту.
Нет, не так.
СКД - это система, позволяющая на входе описать
а) Запросы
б) Таблицы значений
в) Внешние источники данных
,
применить к ним настройки компоновки, которые могут заранее формироваться визуально или программно и выгрузить полученный результат в макет отчета или структуру данных.
Утверждение Результат работы СКД - ячейки отчета(!) - неверно. Это лишь один из вариантов.
Точно так же и стандартный ПостроительОтчета может формировать отчет, а может использоваться как источник данных для последующей обработки.

Пример кода:
X++:
   = .(, .., );
  (, .);
  //Создадим и инициализируем процессор компоновки
   =  ;
    =  
   .(, , , );
  
   .(, , , );
  ;
 
  = .(, .., , , ("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

//Создадим и инициализируем процессор компоновки
   =  ;
    =  
   .(, , , );
  
   .(, , , );
  ;
 ;
 
 //
 =  ;
  =  ;
 .();
 .();

Последний раз редактировалось Сисой; 09.12.2009 в 13:18.
За это сообщение автора поблагодарили: mazzy (2).
Старый 09.12.2009, 13:09   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Сисой Посмотреть сообщение
Нет, не так.
...
Утверждение Результат работы СКД - ячейки отчета(!) - неверно. Это лишь один из вариантов.
Спасибо. А можно ссылки куда-нибудь, где можно посмотреть описания и/или доку других вариантов?
__________________
полезное на axForum, github, vk, coub.
Старый 09.12.2009, 13:28   #10  
Сисой is offline
Сисой
Участник
Аватар для Сисой
Злыдни
1C
 
938 / 339 (13) ++++++
Регистрация: 05.02.2003
Адрес: Москва
Надо смотреть документацию по 1С.
Приведенный выше пример я взял с партнерского форума.
Вообще-то 1Сники редко пользуются подобным приемом (привычка парсить запросы вручную велика). И ПостроительОтчета и СКД в режиме получения таблицы-результата чаще всего юзаются из-за интерфейсных возможностей (mini-OLAP).
Тут надо честно признаться, что скорость работы СКД все равно будет ниже, чем Query. Т.к. часть обработки результатов запроса выполняется на сервере приложений 1С. Впрочем, здесь есть и плюс. Например, в СКД можно применить к реквизиту выборки произвольную функцию на языке 1С.
Теги
1c, платформа, сравнение систем

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
1С: Франчайзи - есть ли будущее? miklenew Другие системы на рынке 13 03.10.2009 12:22
Изменения ассортимента, цен, условий поставки и сопровождения ряда продуктов «1С:Предприятия 7.7» mazzy Другие системы на рынке 40 30.04.2008 23:31
Обсуждение документа "Сравнение 1С и AX" Кузнецов Александр Сравнение ERP-систем 44 20.02.2008 13:56
Платформа «1С:Предприятие» как средство разработки бизнес-приложений Morpheus Другие системы на рынке 1 26.12.2006 13:10
1С ищет стратегического инвестора Роман Кошелев Другие системы на рынке 1 16.04.2003 23:02

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:10.