Вопрос

После поиска не определено для источника данных

Добрый день!!!

Terrasoft 3.4.1.142. При открытии справочника "Документ" в разных разделах у меня стало появляется сообщение "После поиска не определено для источника данных 'Документ'.

После чего открывается справочник и всё работает. 

Что делать?

У меня такой же вопрос

11 комментариев

Добрый день!

В конфигурации нужно найти датасет 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 или аналогах, если другая БД.

Войдите или зарегистрируйтесь, чтобы комментировать