Добрый день.
Подскажите пожалуйста, где можно посмотреть как создать запрос SelectQuery программно? Особенно интересует полностью программное создание join-ов по нескольким полям.
TerrasoftCRM 3.3.2
Спасибо.
Нравится
Здравствуйте, Петр.
Динамически запрос SelectQuery создается приблизительно следующим образом:
var sq = CreateSelectQuery("Common\\" , 'sq_MySelect'); var FromTable = Services.GetNewItemByUSI('tbl_MyTable'); var Select = CreateSelectQuerySelect(sq, FromTable, 'MySelect'); var Join = CreateJoin(Select, LeftField, RightField, ParentJoin); Join.JoinType = 0; /* jtInner = 0x00000000; jtLeftOuter = 0x00000001; jtRightOuter = 0x00000002; jtFullOuter = 0x00000003; */ AddColumn(Select, FromTable.Fields('ID')); AddColumn(Select, FromTable.Fields('Namus'));
Ознакомиться с программным создание join'ов по нескольким полям можно по ссылке: http://www.community.terrasoft.ua/blogs/5494
Спасибо, Дмитрий, очень помогло.
И еще вопрос. У меня на одном экземпляре MS SQL Server работаю две базы: Terrasoft(TS_Original) и база от другой системы (Warehouse). Есть ли возможность из скрипта базы TS_Original делать запросы на вставку и удаление в базу Warehouse?
Здравствуйте Петр!
Такая возможность существует. Вам нужно создать ADOCommand:
добавление компонента происходит (как и для других сервисов)при щелчке правой кнопкой мыши и выборе его из списка.
Компоненту присваивается осмысленное название, например adc_ExportData.
В окне редактирования сервиса есть такие значения, как Строка соединения(можно создать строку соединения без использования существующих
соединений, созданных в компонентах ADOConnection) и Соединение(можно выбрать созданное ранее посредством сервиса ADOConnection соединение).
В поле Текс SQL прописывается команда, например exec ExportData :GroupID, :GroupID - параметр, добавленный в список параметров сервиса.
В скрипте
//получение сервиса var Command = GetSingleItemByCode('adc_ExportData'); //где 'adc_ExportData' - название сервиса ADOCommand // установка параметров SetParameterValue(Command.Parameters, 'GroupID', GroupID); //запуск на исполнение Command.Execute();
Подробнее с детальной инструкцией и примерами, Вы можете ознакомиться по ссылке:
http://www.community.terrasoft.ua/forum/topic/2576