Добрий день,

Существует ли функционал создания древовидного раздела в новом Freedom UI?

В старом интерфейсе это делается так:

https://community.terrasoft.ua/questions/drevovidnyy-reestr-0

Нравится

1 комментарий

Здравствуйте,

 

К сожалению, в базовой версии приложения пока что не предусмотрен вывод реестра\справочника в виде иерархии.

Мы зарегистрировали соответствующее пожелание на доработку даного функционала на ответственную команду разработки.



Для решения проблемы можем предложить воспользоваться дополнением с Marketplace "Tree view for Creatio".



С уважением, 

Анастасия

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

Добрый день,

В версии CRM 3.1.1.65 используя компонент «DataTreeGrid» у пользователей часто выскакивает ошибка «exception (E)» без дополнительной информации. Проверяя в отладчике, ошибка происходит на вызове «Dataset.Close()», отладчик возвращает ошибку «unknown exception».

При продолжение выполнения программы на строке «Dataset.Open()» появляется ошибка: «Invalid pointer operation»

Возможна сбой уже происходит до «Dataset.Close()», ибо в окне используются несколько компонентов «DataTreeGrid» в которых используется метод «grdDataOnDragDrop» для реализации перетаскивание елементов из одного «DataTreeGrid» в другой.

Возможно, кто то из пользователей форума встречал такую проблему и может помочь советом?

Заранее благодарю!

Нравится

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

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу

Здравствуйте!
Похоже, что в какой-то момент теряется ссылка на COM-объект DataSet'a. Возможно, он уже закрыт или удален к моменту, когда вызывается Dataset.Close().

Спасибо за ответ. Есть ли способ определить, что может вызвать преждевременное закрытие или удаление СOM объекта Dataset’a ? И, возможно ли какими то способами обойти эту проблему ?

Artūrs, возможно, датасет закрывается до этого. Пройдитесь дебаггером, может быть, есть место, где Вы ожидаете в переменной ссылку на один датасет, а там на самом деле другой. Перед выполнением Dataset.Close посмотрите на свойства и состояние датасета.
Попробуйте опустить вызов Dataset.Close(), воспроизведется ли ошибка?

Спасибо. Убрал строку Dataset.Close из метода grdDataOnDragDrop ошибка не поевляетса. Но так как ето использовалось для автоматическова обновление DataTreeGrid’a, то больше не происходит «Refresh» DataTreeGrid’a.

Artūrs, попробуйте перенести обновление грида в другое место, возможно, по событию делать.

Если есть Dataset.Close(); но нет Dataset.Open() то со временем CollectGarbage() удалит ваш экземпляр датасета. Рефшер же всегда делает Datset.Close(); ->> Dataset.Open()

Изначально использовалось Dataset.Close -> Dataset.Open, Dataset.Close убрали пока по совету Андрея, чтобы проверить воспроизведется ли ошибка. Убрав строку Dataset.Close из метода grdDataOnDragDrop ошибка не появляется.

Хотел спросить по поводу данной ошибки, если при Dataset.Close происходить ошибка Catastrophic failure, и мы её перехватываем в блоке catch, возможно ли как то восстановить состояние системы, какой она была до ошибки ? После этой ошибки, после каждого действие происходит дальнейшие ошибки, которые не позволяют пользователю работать дальше

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.

Артур, необходимо разбираться с причиной ошибки и устранять её, простым try {} catch {} не обойтись.

Хотел уточнить, что код ошибки (number), который появляется при ошибки на закрытие датасет (Dataset.Close()): -2147418113.
Поискал в форуме по номеру ошибки -2147418113, нашел несколько записей людей о обработке этой ошибки.

http://www.community.terrasoft.ru/blogs/6647
http://www.community.terrasoft.ru/forum/topic/5601

Может, кто то знает причину этой ошибки ?

Добрый день.
В ядре информации об ошибке не нашли.
Прошу уточнить, в чем именно заключается проблема в обработке данной ошибки.

Добрый день

Ошибка происходит при Dataset.Close(), я хотел узнать, может, кто то знает причину этой -2147418113 ошибки ?
У некоторых людей сделана обработка именно на эту ошибку:

http://www.community.terrasoft.ru/blogs/6647
http://www.community.terrasoft.ru/forum/topic/5601

почему именно на эту ошибку ?

Добрый день.
В ядре информации об ошибке не нашли.
В чем именно проблема?

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

Здравствуйте,
есть такая проблема: я создал окно с DataTreeGrid. в запросе выбрал поля, установил признак "Всегда выбирать в запросе". В датасете указал и ключевое поле и первичное поле для отображения. В окне тоже указал и KeyDataFieldName и ParentDatFieldName. Но при открытии окна не видно надписей: наименования столбцов и строк. В чем может быть проблема?

Нравится

1 комментарий

Roman, скорее всего не заполнили свойство ActiveView у DataTreeGrid:

/system/files/_1_1_1.png

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

Возникла такая ситуация. Для DataTreeGrid назначено значение параметра CheckBoxDataFieldName, соответственно добавлен обработчик на событие OnChecking - соответственно есть возможность проставлять "галочки" в дереве...
Необходимо по некоторому условию отключить возможность ставить/снимать эти галочки, просто сохранив их отображение в дереве (пример - деталь с таким деревом в разделе документы, для определенного типа документов грид нужно только отображать без возможности какого-либо редактирования).
Подскажите, как можно запрещать возможность изменения этих галочек?
В SDK нашлось такое: Для того, чтобы запретить пользователю изменять значение флажка, параметру CanChange.Value необходимо установить значение "False". осталось разобраться как бы это применить, в какой момент присвоить параметру это значение:)

Нравится

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

Александр, думаю, Вашу задачу вполне можно решить в этом же обработчике OnChecking. Например, так:

function grdDataOnChecking(DataGrid, Checked, CanChange) {
	if (DataGrid.ParentWindow.ParentContainer.ParentWindow.ComponentsByName('dlDocuments').Dataset.Values('DocumentTypeID') == SomeDocumentTypeID) {
		CanChange.Value = false;
	} else {
		.... // текст Вашего обработчика
	}
}

Что интересно, я так и делал:) но видимо пятница сказалась, не работало (наверное в условиях намудрил) - а вот теперь получилось, спасибо!

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

К сожалению, в стандартном DataGrid нет возможности отключить сортировку грида опционально. Поэтому в случае, если необходимо реализовать подобную функциональность, то могу предложить альтернативное решение.
Как известно, при включении сортировки грида - датасет сперва закрывается, затем открывается уже с сортировкой. Следовательно, для того, чтобы отключить возможность сортировки необходимо просто "не дать" датасету закрыть себя (это происходит при нажатии на названии колонки).

Для этого, в событии датасета "OnDatasetBeforeClose" прописываем следующее:

function mds_rtsOnDatasetBeforeClose(Dataset, DoClose) {
    DoClose.Value = false;
}

Таким образом он просто не закроется. Но, когда это необходимо сделать (для того, чтобы очистить датасет и следовательно наполнить иными данными), то следует просто передать соответствующий параметр. К примеру:
....

//Здесь нужно дать датасету себя закрыть
Dataset.Attributes('AllowClose') = true;
Dataset.Close();
Dataset.Append();
.....
и метод "OnDatasetBeforeClose" будет выглядеть так:
function mds_rtsOnDatasetBeforeClose(Dataset, DoClose) {
    if (Dataset.Attributes('AllowClose')) {
        DoClose.Value = true;
        Dataset.Attributes('AllowClose') = null;
        return;
    }
    DoClose.Value = false;
}

Таким образом, датасет будет закрываться только при помощи пользователя (а не грида или дерева).

Желаю удачи!

С уважением,
Мельникова Екатерина

Нравится

Поделиться

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

Добрый день!
Хочу задать вопрос относительно компоненты DataTreeGrid. Возможно ли получить из данного компонента список множества выбранных записей?
Для компоненты DataGrid получить список выбранных записей у меня удалось, а при использовании DataTreeGrid возникли сложности, описанные в примере кода ниже. Данный код применяется мной для создания собственного обработчика в разделе "Планирование" в тексте скрипта wnd_ForecastWorkspaceScript. Нижеприведённый код корректно отработал для компоненты DataGrid в другом разделе, но отказался работать для DataTreeGrid. В свойстве Style для DataTreeGrid указано dtgsGrid.

function amiSetCurrentItemsOnExecute(ActionMenuItem) {
debugger;
var DataGrid = BaseWorkspace.GridWindow.ComponentsByName('grdData');
var SelectedIDs = DataGrid.SelectedIDs.CreateCopy();
var Count = SelectedIDs.Count;
/*В случае с компонентом DataGrid в переменную Count попадает корректное значение количества выбранных в гриде записей. В случае же с элементом DataTreeGrid в переменную Count попадает значение 0 вне зависимости от количества выбранных элементов в дереве.*/
for (var i = 0; i Count; i++) {
var ID = SelectedIDs.Items(i);
/*Здесь выполняются действия для каждой отдельной записи*/
}
}

Надеюсь на вашу помощь. Заранее спасибо!

Нравится

1 комментарий

Добрый день, Рустам!

Прошу прощения за задержку с ответом.
Свойство DataTreeGrid.SelectedIDs работает исправно. Для правильной работы этого свойства необходимо, чтобы в наборе данных было установлено свойство KeyDataField.
Думаю, именно по этой причине не удается считать ID выделенный записей в разделе Планирование.
Для нормальной работы Вашего действия придется определить, какое поле набора данных реестра можно считать ключевым, установить его как ключевое, и тогда SelectedIDs будет работать правильно.

Желаю успехов!

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