Лишняя таблица цепляется к датасету

В окне выбора контрагента при первом нажатии на лупу пусто. При повторном появляются нужные строки. Происходит это из-за того, что в запрос дописываются строки
LEFT OUTER JOIN
[dbo].[tbl_AccountInGroup] AS [tbl_AccountInGroupAccountID] ON [tbl_AccountInGroupAccountID].[AccountID] = [tbl_Account].[ID]

[tbl_AccountInGroupAccountID].[GroupID] = @P4

Нам эта таблица вообще не нужна, мы ею не пользуемся. Во вьюшке vw_Account ее нет. Почему она цепляется к запросу и как от нее избавиться?

Детали в прикрепленном файле

Нравится

4 комментария

Либо эта связь прописана в sq, на основе которой построен датасет, либо накладывается программно в карточке на событии открытия лукапа.

В sq этой связи нет. В коде не нашел. Код ниже. Может быть, подскажете, где конкретно это может быть?

function edtAccountOnPrepareSelectWindow(LookupDataControl, SelectWindow) {
if (System.GetLocalComputerName() == 'PEUWUD14431') {
debugger;
}
var LookupDataset = LookupDataControl.DataField.LookupDataset;
var CallContactID = dlData.Dataset('ContactID');
var CallDeliveryPointID = dlData.Dataset('DeliveryPointID');
EnableDatasetFilters(LookupDataset, false);
EnableDatasetFilters(LookupDataset, true, ['LawOrPersonType']);
EnableDatasetFilters(LookupDataset, true, ['IsTurnedOff']);
ApplyDatasetFilter(LookupDataset, 'CallDeliveryPointID', CallDeliveryPointID,
!IsEmptyValue(CallDeliveryPointID));
if (IsEmptyValue(CallDeliveryPointID)) {
ApplyDatasetFilter(LookupDataset, 'CallContactID', CallContactID,
!IsEmptyValue(CallContactID));
}
}

function Initialize(Window) { // if (System.GetLocalComputerName() == 'PEUWUD14431') { debugger; }
InitializeGlobalVariables();
InitializeDataset(Window);
InitializeButtons(SelectData.Dataset);
InitializeGlobalDatalinks();
InitializeGroups(SelectData.Dataset, Window);
InitializeGridArea(Window);
SetWindowCaption(Window);
ReadAttributes(Window);
InitalizeImages(Window);
edtSearchFor.Value = SelectData.SearchValue;
if (SelectData.IsInitialized != true) {
AddDisplayFields();
SelectData.IsInitialized = true;
}
AddSearchFields();
}

function SimpleWindowOnPrepare(Window) {
if (Window.Attributes('EventsLogTag') == 2) {
return;
}
if (Main.ToLogGridWindow && (Window.TemplateWindowUSI == 'wnd_BaseGridArea')) {
EventLog_ParseObjectInfo(Window);
} else if (Main.ToLogEditWindow &&
((Window.TemplateWindowUSI == 'wnd_BaseDBEdit') ||
(Window.TemplateWindowUSI == 'wnd_BaseDBEditEx'))) {
EventLog_ParseObjectInfo(Window);
}
Window.Attributes('EventsLogTag') = 2;
}

В sq этой связи нет. В коде не нашел. Код ниже. Может быть, подскажете, где конкретно это может быть?

function edtAccountOnPrepareSelectWindow(LookupDataControl, SelectWindow) {
if (System.GetLocalComputerName() == 'PEUWUD14431') {
debugger;
}
var LookupDataset = LookupDataControl.DataField.LookupDataset;
var CallContactID = dlData.Dataset('ContactID');
var CallDeliveryPointID = dlData.Dataset('DeliveryPointID');
EnableDatasetFilters(LookupDataset, false);
EnableDatasetFilters(LookupDataset, true, ['LawOrPersonType']);
EnableDatasetFilters(LookupDataset, true, ['IsTurnedOff']);
ApplyDatasetFilter(LookupDataset, 'CallDeliveryPointID', CallDeliveryPointID,
!IsEmptyValue(CallDeliveryPointID));
if (IsEmptyValue(CallDeliveryPointID)) {
ApplyDatasetFilter(LookupDataset, 'CallContactID', CallContactID,
!IsEmptyValue(CallContactID));
}
}

function Initialize(Window) { // if (System.GetLocalComputerName() == 'PEUWUD14431') { debugger; }
InitializeGlobalVariables();
InitializeDataset(Window);
InitializeButtons(SelectData.Dataset);
InitializeGlobalDatalinks();
InitializeGroups(SelectData.Dataset, Window);
InitializeGridArea(Window);
SetWindowCaption(Window);
ReadAttributes(Window);
InitalizeImages(Window);
edtSearchFor.Value = SelectData.SearchValue;
if (SelectData.IsInitialized != true) {
AddDisplayFields();
SelectData.IsInitialized = true;
}
AddSearchFields();
}

function SimpleWindowOnPrepare(Window) {
if (Window.Attributes('EventsLogTag') == 2) {
return;
}
if (Main.ToLogGridWindow && (Window.TemplateWindowUSI == 'wnd_BaseGridArea')) {
EventLog_ParseObjectInfo(Window);
} else if (Main.ToLogEditWindow &&
((Window.TemplateWindowUSI == 'wnd_BaseDBEdit') ||
(Window.TemplateWindowUSI == 'wnd_BaseDBEditEx'))) {
EventLog_ParseObjectInfo(Window);
}
Window.Attributes('EventsLogTag') = 2;
}

На скриншоте окна выбора включено много колонок. Возможно, некоторые тянут данные из этой связанной таблицы.

Показать все комментарии