После поиска не определено для источника данных
Добрый день!!!
Terrasoft 3.4.1.142. При открытии справочника "Документ" в разных разделах у меня стало появляется сообщение "После поиска не определено для источника данных 'Документ'.
После чего открывается справочник и всё работает.
Что делать?
Нравится
Добрый день!
В конфигурации нужно найти датасет ds_Document и для него установить поле для поиска.
Алла Савельева,
Алла, спасибо, что ответили! В ds_Document везде установлены галочки в поле для поиска. Первичные поля для отображения тоже везде указаны. А при выборе Документа (рис.1)
нет списка выбора, как например в выборе Договора (рис.2)
Судя по разноцветным кнопкам, карточка выбора доработана, её скрипт тоже может быть изменённым. Как и скрипт карточки, из которой открыто окно выбора.
Стандартная логика в scr_SelectData,показывающая это предупреждение, такая:
function AddSearchFields() {
InitSearchFieldsEnum();
var SearchFieldNamesArray = SelectData.SearchFieldNames.split(
SelectData.SplitDivider);
var CurrentEnumItem = null;
for (var i = 0; i < SearchFieldNamesArray.length; i++) {
var FieldName = SearchFieldNamesArray[i];
if (IsEmptyStr(FieldName)) {
ShowWarningDialog(FormatStr(SearchFieldNameNotSpecified,
SelectData.Dataset.Caption));
return
}
var EnumItem = SelectData.SearchFieldsEnum.CreateItem();
var SearchField = SelectData.Dataset.DataFields.ItemsByName(FieldName);
EnumItem.Caption = SearchField.Caption;
EnumItem.ID = i;
EnumItem.Code = FieldName;
SelectData.SearchFieldsEnum.Add(EnumItem);
if (SelectData.CurrentSearchFieldName == FieldName) {
CurrentEnumItem = EnumItem;
}
}
enmSearchBy.Enum = SelectData.SearchFieldsEnum;
enmSearchBy.Value = CurrentEnumItem;
}
...
function ReadAttributes(Window) {
SelectData.SearchFieldNames =
GetAttribute(Window, SearchFieldNamesAttrName);
...То есть перечень не всегда берётся из ds_, а иногда формируется программно. Например, в wnd_QueriesDetailScript программно открывается окно выбора:
var SelectWindow = Services.GetNewItemByUSI('wnd_SelectData');
SetAttribute(SelectWindow, NotifyObjectAttrName, Self);
SetAttribute(SelectWindow, DatasetAttrName, Dataset);
SetAttribute(SelectWindow, SearchFieldNamesAttrName, 'Name');
SetAttribute(SelectWindow, DisplayFieldNamesAttrName, 'Name');
SetAttribute(SelectWindow, KeyFieldNameAttrName, IDFieldName);
SetAttribute(SelectWindow, KeyValueAttrName, GUID_NULL);
SetAttribute(SelectWindow, SearchFieldNameAttrName, 'Name');
SetAttribute(SelectWindow, SearchValueAttrName, '');
SelectWindow.Prepare();
SelectWindow.Show();Или, как в scr_TasksWorkspace, этот набор полей передаётся одним из параметров в функцию ShowSelectDataWindow:
var Dataset = Services.GetNewItemByUSI('ds_Owner');
var SearchFieldNames = 'Name';
var DisplayFieldNames = 'Name';
var KeyFieldName = 'ID';
var KeyValue = null;
var SearchFieldName = 'Name';
var SearchValue = null;
var NotifyObject = Self;
var Tag = TasksWorkspace.ChangeOwnerTag;
var IsReadOnly = true;
ShowSelectDataWindow(Dataset, SearchFieldNames, DisplayFieldNames,
KeyFieldName, KeyValue, SearchFieldName, SearchValue, NotifyObject,
Tag, IsReadOnly);То есть для выяснения всех причин нужно проанализировать код или отладить скрипт scr_SelectData, выяснить, откуда туда попадают поля для поиска при выборе документа и какой их набор.
Зверев Александр
Добрый день, Александр! Как сказал Дмитрий Олейников, я сделал новый вектор Terrasoft. Полностью поменял все карточки во всех разделах с добавлением новых функционалов (причем я в этом чайник и вообще не программист. Просто копирую, вставляю, анализирую, пробую).
В данном случае работал в Администраторе, раздел Документы и что-то пошло не так. Вчера пробовал работать с Вашими скриптами. Оказалось всё проще. Из недельного Бака восстановил ds_Document и sq_Document - сейчас всё появилось.
Но была ещё одна проблема, которую сейчас решаю: из детали Продукты раздела Документы исчезли все записи!
Вот это беда. Видимо нужно будет опять восстанавливать недельные Баки. Только какие???????????
Если не сложно, подскажите в каких скриптах хранится информация о Продуктах (это касается только раздела Документы, в остальных всё видно).
Деталь продуктов в документе хранится в сервисе tbl_OfferingInDocument, а также соответствующих sq, ds и её скрипте.
Зверев Александр,
Я вчера пробовал подгружать из рабочего Бака tbl_OfferingInDocument, sq_OfferingInDocument, ds_OfferingInDocument , ds_OfferingInDocumentScript и uf_OfferingInDocument - не появились. Видимо информация где-то ещё сидит
Нужно смотреть в TSAdmin, как устроена эта деталь. Кроме специфических сервисов именно этой детали, дело может быть в доработке общей для всех деталей продуктов в разных разделах wnd_OfferingsDetailTreeArea и её скрипта wnd_OfferingsDetailTreeAreaScript. Но у Вас эта страница реестра выглядит значительно иначе, для детали может использоваться другой сервис. Нужно смотреть в сервисе страницы раздела wnd_DocumentsWorkspace, какая страница вставлена в эту деталь.
Зверев Александр
... попробовал, не помогло. Я в данных разделах на этой неделе не работал. Началось после изменения карточки "Счета": создание счёта через действие из раздела Документы. Тут по моему связи нет
Не видя всех доработок, сложно сказать, где меняли. Через базу можно посмотреть список сервисов с датой изменения, начиная с самых недавних:
select top 100 * from tbl_Service order by ModifiedOn desc
Зверев Александр,
это где нужно написать такой запрос? в SQL&
Да, в SQL Server Management Studio или аналогах, если другая БД.