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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.03.2010, 20:02   #181  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от mazzy Посмотреть сообщение
Цитата:
Сообщение от asinus Посмотреть сообщение
А как с этим в DAX? В смысле, можно ли снаружи инcёрты в таблицы делать просто скульными запросами, или и там ещё какая-то служебная информация аксаптой генерируется?
Генерируется. RecID.
А как же CreatedBy/CreatedDateTime/CreatedTransactionId?
Старый 05.03.2010, 20:43   #182  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от gl00mie Посмотреть сообщение
А как же CreatedBy/CreatedDateTime/CreatedTransactionId?
Точно! И они тоже, если включены, и если хочется чтобы в них были хоть какие-то значения.
И DataAreaID. Хотя с DataAreaID обычно никаких проблем не возникает.
__________________
полезное на axForum, github, vk, coub.
Старый 05.03.2010, 22:38   #183  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
RecVersion
Старый 05.03.2010, 22:53   #184  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
RecVersion
Цитата:
Сообщение от mazzy Посмотреть сообщение
Оптимистическая конкуренция, если включена на уровне таблиц, также реализована стандартными СУБДшными средствами.
__________________
полезное на axForum, github, vk, coub.
Старый 09.03.2010, 13:42   #185  
asinus is offline
asinus
Участник
 
14 / 10 (1) +
Регистрация: 03.03.2010
Не уверен, что этот вопрос по платформе, но, возможно, с платформой есть какая-то связь.
С очень большими системами не работоал, но в DAX меня поразило очень большое количество полей в таблицах. И в базовой поставке есть нехилые таблицы, а то, что принесли нам партнеры MS меня вообще привело в замешательство: в одной таблице более 400 полей! С чем это связано? По первым ощущениям таблицы DAX скорее напоминают шиты в ексельной книге, чем таблицы в реляционной БД среднего уровня нормализации.
Старый 09.03.2010, 14:02   #186  
otkudao
Гость
 
n/a
Такое большое количество полей, скорее всего, связано как раз с тем, что решение приобреталось у партнера.

Наверняка целые группы полей связаны определенными конфигурационными ключами. Каждый ключ должен был быть включен на определенном клиенте.

Почему у вас они включены - либо вы купили все решения, либо концепция продаж решений у партнера поменялась
За это сообщение автора поблагодарили: asinus (1).
Старый 09.03.2010, 14:10   #187  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,275 / 3476 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от asinus Посмотреть сообщение
Не уверен, что этот вопрос по платформе, но, возможно, с платформой есть какая-то связь.
С очень большими системами не работоал, но в DAX меня поразило очень большое количество полей в таблицах. И в базовой поставке есть нехилые таблицы, а то, что принесли нам партнеры MS меня вообще привело в замешательство: в одной таблице более 400 полей! С чем это связано? По первым ощущениям таблицы DAX скорее напоминают шиты в ексельной книге, чем таблицы в реляционной БД среднего уровня нормализации.
Это не связано с платформой, а связано больше с методологией. Конечно 400 полей - это перебор, но код от партнера далеко не всегда является образцом для подражания. Все же надо понимать - что MS нацелен на качество кода как производитель и вкладывает в это большие деньги, в то время как партнеры в меньшей степени вкладывают деньги в качество кода.
С другой стороны - есть правило сохранения всех данных, выводящихся на печать в официальные документы.
Т.е. к примеру - в таблице накладных будет храниться вся информация (кроме данных о нашей компании), которая выводится на печать. Это необходимо для сохранения истории данных в случае возможного изменения справочников.
Также разработчики учитывают производительность. Если какая-то связка таблиц используется часто в запросах, то поля из одной таблицы добавляют в другую, чтобы выборка осуществлялась из одной таблицы для повышения производительности.
Например вся информация о банке копируется в банковский счет (фактически дублируются данные), чтобы при дальнейшей выборке не использовать таблицу банков.


UPD: Кстати верно подмечено - часть полей может просто не использоваться в готовом решении (будет удалено при отключении соотв. конфиг ключа) - и тогда в реальной БД будет гораздо меньше полей.
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: asinus (1).
Старый 07.04.2010, 11:35   #188  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от mazzy Посмотреть сообщение
1. Query
В платформе 1С нет объекта, который позволяет ПРОГРАММИСТУ строить query программно. Аксаповеды, вы не поверите, но программисты 1С до сих пор парсят и правят тексты строк запросов.
Мдя... Некоторые 1Сники задаются вопросом: v8: В чем смысл такого кода


Суть для тех, кто не знаком с 1С:
предыстория:
= в 1С нет объекта запрос, есть только текстовая строка (типа строки для работы с произвольными запросами Statement.executeQuery в Аксапте)
= 1Сники привыкли составлять запрос, складывая строки (как в ax3.0 \Classes\SysDataImport\recIdSimpleSqlSelect)
= в результате для генерации более-менее сложных запросов в 1С делаются многостраничные портянки кода, которые очень тяжело поддерживать.

что предлагается в типовой конфигурации:
= конструктором создавать непрерывный текст-болванку, который содержит "какие-нибудь" документы/объекты
= а потом заменять подстроки в получившейся строке, чтобы получить правильное название документа/объекта
= ...без статического синтаксического контроля.
= ...без учета наличия кавычек-апострофов внутри строки запроса

Цитата:
Такую методологию во всю пропагандируют приближённые к 1С. Скоро сама 1С в стандарт это запишет.

Технология!
Угу, приблизилась... А как же

==============
Привычный 1Сникам стиль создания запросов на примере \Classes\SysDataImport\recIdSimpleSqlSelect
(так реально делается почти по всему коду во всех конфигурациях 1С. в ax3.0 всего 115 методов в которых используется класс Statement для работы с произвольным текстом запроса. В основном это системные классы)
X++:
void recIdSimpleSqlSelect(
    Connection      con,
    Common          common,
    SysDictTable    dictTable,
    recId           recId
    )
{
    str             sql;
    int             i, conLength;
    fieldId         tmpFieldId;
    Statement       stmt;
    SqlSystem       sqlSystem = new SqlSystem();
    ResultSet       set;

    sql = 'SELECT ';
    conlength   = conLen(recordRefs[dictTable.id()]);
    for (i=1; i<=conlength; i++)
    {
        tmpFieldId  = conPeek(recordRefs[dictTable.id()], i);
        if (i>1)
            sql += ', ';
        sql         += dictTable.fieldName(tmpFieldId,DbBackend::Sql,0,FieldNameGenerationMode::FieldList);
    }
    sql+=' FROM ' + dictTable.name(DbBackend::Sql);
    sql+=' WHERE ';
    if (dictTable.dataPrCompany())
        sql += SysDictTable::dataareaIdNameSQL(FieldNameGenerationMode::WhereClause)+' = '+sqlSystem.sqlLiteral(curExt())+' AND ';
    sql += SysDictTable::recIdNameSQL()+' = '+int2str(recId);

    try
    {
        stmt    = con.createStatement();
        set     = stmt.executeQuery(sql);
...
Вот как выглядит технология, предлагаемая для ввода в стандарт 1С
(даже не могу найти аналогов в Аксапте)
X++:
sqlString =  strfmt(@"SELECT TABLE_NAME FROM SomeRealObjectName WHERE ....");
sqlString = strReplace('SomeRealObjectName','RealObjectName');
как подобная техника используется в Аксапте (SQLbuilderView.dropViewLike):
X++:
sqlString =  strfmt(@"SELECT TABLE_NAME FROM %1 WHERE ...");
sqlSystem.sqlLiteral(strfmt('%1',RealObjectName), false, true));
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Сисой (4).
Старый 07.04.2010, 16:51   #189  
Сисой is offline
Сисой
Участник
Аватар для Сисой
Злыдни
1C
 
938 / 339 (13) ++++++
Регистрация: 05.02.2003
Адрес: Москва
Спасибо за ссылку. И впрямь бред от 1С.
Старый 13.04.2010, 11:22   #190  
ibc is offline
ibc
Участник
Аватар для ibc
 
472 / 30 (2) +++
Регистрация: 12.05.2003
Адрес: Москва
Цитата:
Такую методологию во всю пропагандируют приближённые к 1С. Скоро сама 1С в стандарт это запишет.
Это была издевка, для тех, кто не понял
Действительно в 1С визуально можно увидеть только "статические запросы", которые пишутся конструктором и не меняются в процессе выполнения программы, а те, запросы, которые содержат программные вставки конструктором открыть нельзя!
А как в аксапте можно визуально открыть такой запрос?

ИменаКолонок = "ф1,ф2,ф6";
ИмяТаблицы = "Таб1"
select ИменаКолонок from ИмяТаблицы;

Последний раз редактировалось ibc; 13.04.2010 в 11:35.
Старый 13.04.2010, 12:43   #191  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,486 / 408 (16) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Что значит "открыть визуально"?
Если в форме вывести - то достаточно на датасоурсной таблице сделать нужный FieldGroup и поставить его в свойства грида
За это сообщение автора поблагодарили: mazzy (2).
Старый 13.04.2010, 13:04   #192  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от ibc Посмотреть сообщение
А как в аксапте можно визуально открыть такой запрос?

ИменаКолонок = "ф1,ф2,ф6";
ИмяТаблицы = "Таб1"
select ИменаКолонок from ИмяТаблицы;
и задать, и открыть, и настроить, и использовать потом его в коде, и менять из кода.

сортировка в запросе
сортировка в запросе
сортировка в запросе

вот еще Отображение AOT_Query на форме часть 2
и так далее по ключевым словам querystr и findOrCreateRange*
__________________
полезное на axForum, github, vk, coub.
Старый 13.04.2010, 15:00   #193  
ibc is offline
ibc
Участник
Аватар для ibc
 
472 / 30 (2) +++
Регистрация: 12.05.2003
Адрес: Москва
Цитата:
Что значит "открыть визуально"?
Это значит, что если запрос не содержит текстовых вставок, то его можно с помощью правого щелчка мыши представить визуально! Думаю во всех средах есть похожие инструменты!
А вот если часть запроса переменная величина, то как быть?
Например, состав полей, названия таблиц, структура соединений!

Цитата:
и задать, и открыть, и настроить, и использовать потом его в коде, и менять из кода.
Как этот запрос
Цитата:
ИменаКолонок = "ф1,ф2,ф6";
ИмяТаблицы = "Таб1"
select ИменаКолонок from ИмяТаблицы;
записывается в аксапте так и не понял!
По ссылке совершенно другой пример с сортировкой и джойном!

В 1С можно

Последний раз редактировалось ibc; 13.04.2010 в 15:03.
Старый 13.04.2010, 15:15   #194  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от ibc Посмотреть сообщение
Как этот запрос

записывается в аксапте так и не понял!
По ссылке совершенно другой пример с сортировкой и джойном!

В 1С можно
X++:
Query                   query;
    QueryRun                queryRun;
    QueryBuildDataSource    qbds;
    TableId                 tableIdQuery = 175;
    FieldId                 fieldId1    = 1;
    FieldId                 fieldId2    = 2;
    FieldId                 fieldId3    = 3;
    ;

    query = new Query();

    qbds = query.addDataSource(tableIdQuery);
    qbds.addSelectionField(fieldId1, SelectionField::Database);
    qbds.addSelectionField(fieldId2, SelectionField::Database);
    qbds.addSelectionField(fieldId3, SelectionField::Database);

    queryRun = new QueryRun(query);
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 13.04.2010, 15:22   #195  
ibc is offline
ibc
Участник
Аватар для ibc
 
472 / 30 (2) +++
Регистрация: 12.05.2003
Адрес: Москва
X++:
  query = new Query();
А потом этот query можно визуально открыть и доработать конструктором?
Или только из кода поменять что-то можно?
Старый 13.04.2010, 15:22   #196  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
если ИД-шники не известны, а известны названия, то вот так:
X++:
Query                   query;
    QueryRun                queryRun;
    QueryBuildDataSource    qbds;
    TableId                 tableIdSelect;
    FieldId                 fieldId1;
    FieldId                 fieldId2;
    FieldId                 fieldId3;
    #define.TableName('InventTable')
    #define.ItemId('ItemId')
    #define.ItemName('ItemName')
    #define.ItemGroupId('ItemGroupId')


    tableIdSelect   = tablename2id(#TableName);
    fieldId1        = fieldname2id(tableIdSelect, #ItemId);
    fieldId2        = fieldname2id(tableIdSelect, #ItemName);
    fieldId3        = fieldname2id(tableIdSelect, #ItemGroupId);

    query = new Query();

    qbds = query.addDataSource(tableIdSelect);
    qbds.addSelectionField(fieldId1, SelectionField::Database);
    qbds.addSelectionField(fieldId2, SelectionField::Database);
    qbds.addSelectionField(fieldId3, SelectionField::Database);

    queryRun = new QueryRun(query);
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 13.04.2010, 15:23   #197  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от ibc Посмотреть сообщение
X++:
  query = new Query();
А потом этот query можно визуально открыть и доработать конструктором?
Или только из кода поменять что-то можно?
самой последней строкой пишем:
X++:
queryRun.prompt();
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем

Последний раз редактировалось lev; 13.04.2010 в 15:28.
Старый 13.04.2010, 15:31   #198  
ibc is offline
ibc
Участник
Аватар для ibc
 
472 / 30 (2) +++
Регистрация: 12.05.2003
Адрес: Москва
А любые запросы в т. ч. вложенные запросы таким же образом можно сделать?

(select b1,b2 from (select * from Tab1))
Старый 13.04.2010, 15:33   #199  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от ibc Посмотреть сообщение
А любые запросы в т. ч. вложенные запросы таким же образом можно сделать?

(select b1,b2 from (select * from Tab1))
любые запросы, любой сложности
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
За это сообщение автора поблагодарили: ibc (1).
Старый 14.04.2010, 10:41   #200  
Reaper is offline
Reaper
Участник
1C
 
92 / 59 (2) ++++
Регистрация: 13.04.2010
Не утерпел господа, зарегистрировался. Больно жарко у вас тут, чуть-чуть ясности: аналог класса Query() в 1С - это пресловутый УниверсальныйОтчет из типовых конфигураций (прикладных решений) 1С: передаем ему объект - источник данных и описываем структуру выбираемых полей, условий и прочих радостей. Правда исполнение этого отчета конечно-же куда как топорнее представленного примера.

А в 195-м посте вопрос был о средствах визуального конструирования запроса. Т.е. написания запроса в DAX при помощи мыши, без использования клавиатуры . И ответ непосвщенному 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, время: 12:52.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.