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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.12.2009, 13:05   #1  
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   #2  
Сисой is offline
Сисой
Участник
Аватар для Сисой
Злыдни
1C
 
938 / 339 (13) ++++++
Регистрация: 05.02.2003
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
Да. Но компоновка данных работает только в отчетах.
В модулях проведения, в периодических заданиях и в остальных местах программист доступа к СКД не имеет.
Нет, не так.
Вывод из СКД доступен и на сервере.
И есть класс ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.
Можно настроить СКД и вывести с ее помощью результат в таблицу или дерево значений.
Старый 07.12.2009, 13:32   #3  
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   #4  
Сисой 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   #5  
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   #6  
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   #7  
Сисой is offline
Сисой
Участник
Аватар для Сисой
Злыдни
1C
 
938 / 339 (13) ++++++
Регистрация: 05.02.2003
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
СКД - это построитель отчетов. Результат работы СКД - ячейки отчета(!) со свеми заголовками, промежуточными и окончательными итогами. Результат работы СКД практически невозможно использовать для работы с полученными записями... С результатами вообще непонятно что делать программисту.
Нет, не так.
СКД - это система, позволяющая на входе описать
а) Запросы
б) Таблицы значений
в) Внешние источники данных
,
применить к ним настройки компоновки, которые могут заранее формироваться визуально или программно и выгрузить полученный результат в макет отчета или структуру данных.
Утверждение Результат работы СКД - ячейки отчета(!) - неверно. Это лишь один из вариантов.
Точно так же и стандартный ПостроительОтчета может формировать отчет, а может использоваться как источник данных для последующей обработки.

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

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

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

Цитата:
Сообщение от Сисой Посмотреть сообщение
Пример кода:
Код:
  Если ВнешниеНаборыДанных = Неопределено Тогда
   ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
  Иначе
   ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина);
  КонецЕсли;
Офигеть конструкция!
А почему она не эквивалентна простой конструкции?
Код:
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина);
Пропущенный параметр и параметр со значением Неопределено - это не одно и то же?


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

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

Поэтому твой довод услышал. Но пока не сильно доверяю.
Хотелось бы проверить и убедиться самостоятельно.

И все-таки. Какие значения получаются в результирующей таблице/дереве значений? 1Сники говорят, что ячейки отчета. Можно где-нибудь на код обработки результата глянуть?

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

А как часто в 1С результаты работы СКД обрабатываются на сервере приложений 1С?
__________________
полезное на axForum, github, vk, coub.
Теги
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, время: 23:10.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.