Добрый день!!!
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 или аналогах, если другая БД.