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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.04.2010, 11:35   #1  
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).
Теги
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, время: 05:10.