Добрый день!
В карточке документов было создано поле "Вендор", которое подтягивает контрагентов с типом "Вендор". Т.е. получилось 2 поля с контрагентами Контрагенты(стандартное) и Вендор.
В разделе "Контрагенты" -> деталь "Документы". В стандартном функционале данные о документах подтягиваются у тех контрагентов, которые были указаны в карточке документов в поле "Контрагенты". Нужно реализовать точно такой же функционал(что бы подтягивалась информация о документах) и для тех контрагентов, что были указаны в поле "Вендор"(карточка документов) на этой же детали "Документы".
Подскажите как это можно сделать?
Заранее спасибо!!
Нравится
в sq_Document создайте новы набор фильтров с логическим оператором OR:
в нем создайте два фильтра сравнения:
tbl_Document.AccountID = AccountID2 (parameter) с названием AccountID2 (главное чтобы не AccountID, т.к. такой уже существует)
tbl_Document.VendorID = VendorID (parameter) с названием VendorID
и соответствующие параметры
сделайте активным оба или только VendorID - главное не сам набор.
в scr_AccountsWorkspace
найдите место
/* MODULE DOCUMENTS */ if (pcDetails.ActivePage.Name == pgDocumentsDetail.Name) {
и после него поменяйте второй AccountID на AccountID2
должно получиться:
/* MODULE DOCUMENTS */ if (pcDetails.ActivePage.Name == pgDocumentsDetail.Name) { RefreshCommonDetail(BaseWorkspace, wndDocumentsDetail, 'AccountID', 'AccountID2'); } else /* ENDMODULE DOCUMENTS */
все, должно работать
но обратите внимание, что при создании документа с детали в него просталяется AccountID от записи контрагента
Добрый день Николай!!!
для решения вашего вопроса вам требуется сделать следующее:
1. в скрипте wnd_DocumentsGridArea, в DataGrid "grdData" добавить новый "DataGridView". к примеру назвать его "gvDocumentsVendor". Определить поля. На закладке Свойства, установить курсор FilterSetCode и присвоить Имя к примеру "DocumentsVendor"
2. открыть запрос sq_Document и добавить "Compare Filter" c именем "DocumentsVendor" и условием к примеру tbl_Document.VendorID = :VendorID
3. в скрипте scr_AccountsWorkspace добавить следующий код
изменить функцию RefreshDetails() и добавить следующий код:
function RefreshDetails() { ... /* MODULE DOCUMENTS */ if (pcDetails.ActivePage.Name == pgDocumentsDetail.Name) { SetAttribute(wndDocumentsDetail.Window, 'ParentDataset', BaseWorkspace.GridDataset); SetAttribute(wndDocumentsDetail.Window, 'ParentItemID', BaseWorkspace.GridDataset.ValAsStr('ID')); RefreshCommonDetail(BaseWorkspace, wndDocumentsDetail, 'AccountID', 'AccountID'); } else /* ENDMODULE DOCUMENTS */ ...
4. в скрипте scr_DocumentsGridArea добавить следующий код
в самом начале скрипта
var DocumentsGridArea = new Object();
изменить функцию Initialize(Window) и добавить в начало функции следующий код:
function Initialize(Window) { DocumentsGridArea.ParentItemID = GetAttribute(Window, 'ParentItemID'); ... }
изменить функцию dlDataOnDatasetBeforeOpen(Dataset, DoOpen) и добавить следующий код:
function dlDataOnDatasetBeforeOpen(Dataset, DoOpen) { ... if (grdData.ActiveView.Name == gvDocumentsVendor.Name) { Dataset.Close(); ApplyDatasetFilter(Dataset, 'DocumentsVendor', DocumentsGridArea.ParentItemID, true); Dataset.Open(); } else { EnableDatasetFilters(Dataset, false, 'DocumentsVendor'); } if (grdData.ActiveView.Name == dgvData.Name) { Dataset.Close(); ApplyDatasetFilter(Dataset, 'AccountID', DocumentsGridArea.ParentItemID, true); Dataset.Open(); } else { EnableDatasetFilters(Dataset, false, 'AccountID'); } ... }
вот и все и ваша задача будет решена.
Добрый день
Первое решение не дало результатов, контрагенты подтягиваются, а те кто стоят в вендорах нет.
Второе решение выдаёт ошибку что стек переполнен. Debugger прошёл, не входит в
if (grdData.ActiveView.Name == gvDocumentsVendor.Name) {
Может я что не так сделал в wnd_DocumentsGridArea. скрин прилагаю
"Арефьев Николай Николаевич" написал:Первое решение не дало результатов
действительно)
надо было tbl_Document.VendorID = AccountID :redface:
"Андросов Дмитрий" написал:
Арефьев Николай Николаевич пишет:
Первое решение не дало результатов
действительно)
надо было tbl_Document.VendorID = AccountID
Поменял, всё равно ничего.... скрин в аттаче
блин, простите :exclaim:
tbl_Document.VendorID = AccountID2
"Андросов Дмитрий" написал:блин, простите
tbl_Document.VendorID = AccountID2
Огромное спасибо!!!) Получилось!)
Только теперь не показывает документы у контрагентов(((
не совсем понятно, я проверил у себя - все работает.
попробуйте очистить кеш, сначала удалить, а потом опять создать заново набор фильтров, фильтры и параметр AccountID2, попробуйте не включать фильтр AccountID2
"Андросов Дмитрий" написал:не совсем понятно, я проверил у себя - все работает.
попробуйте очистить кеш, сначала удалить, а потом опять создать заново набор фильтров, фильтры и параметр AccountID2, попробуйте не включать фильтр AccountID2
Всё) понял в чём проблема была, надо было везде AccountID2 выставить как параметр!) Всё ещё раз спасибо!)