1) При создание нового раздела мастером поле [ItemInGroupDatasetID] таблицы [tbl_Workspace] неправильно заполняется(ссылка на tbl сервис, а нужно на ds). Прошу подтвердить. Версия 3.4.0.141
2) При создание двух разделов, если один сошлеться на другой, то падает здесь, когда в интерфейсе создаешь ссылку в карточке:

FUNCTION AddFilterAndParameter(JOIN, SelectQuery) {
        var Filters = SelectQuery.Items(0).Filters;
        var TableAlias = JOIN.LeftTableAlias;
        var Parameters = SelectQuery.Parameters;
        var Parameter = Parameters.ItemsByName('GroupID');
        IF (!Assigned(Parameter)) {
            Parameter = AddParameter(Parameters, pdtGUID, NULL);
            Parameter.Name = 'GroupID';
        }
        var TableFileds = JOIN.LeftField.ParentFields;

Это уже после исправления ItemInGroupDatasetID. Причем, если новый раздел ссылаеться на что то уже существующее, то все хорошо.
3) Попытка создать два раздела с одинаковым началом имени ни к чему хорошему не приведет. При создание доп таблиц, индексов идет какое то отсечение букв(7 что ли) от названия, уникальность теряеться.

Нравится

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

Михаил, добрый день!

По первому пункту - проверил на 3.4.0. Проблема не воспроизвелась:

По второму пункту - после создания первого раздела необходимо нажать "ОК", и на ответ "Продолжить работу с мастером" ответить "Да". После чего создать второй раздел со ссылкой на первый.

По третьему пункту: ситуацию также не воспроизвел. Создал два раздела с именами TestWorkspace, TestWorkspace2 соответственно:

С индексами все в порядке:

ITestWorkspace2CreatedByID
ITestWorkspaceCreatedByID

3)
2) Все создаеться, но когда открываешь интерфейс и создаешь новую запись, стоит нажать лупу для выбора ссылки на вторую сущность, все падает. А если ссылку не трогать, все работает.

Михаил, сравните, пожалуйста, Araxis'ом Вам скрипт и скрипт во вложении. Если есть отличия - попробуйте загрузить с заменой и проверить, предварительно запросите через письмо на support@terrasoft.ru последние бинарные файлы 3.4.0.

Если после этого хотя бы один из пунктов у Вас воспроизведется - напишите, пожалуйста, когда к Вам можно будет удаленно подключиться для анализа и исправления проблем.

Заранее спасибо и хорошего вечера!

Собственно скрипт:

wnd_createnewworkspacescript.rar


Логично -), ошибка 1 исправлена.
Все остальные на месте. Может есть свежие файлы:
scr_GenTable - Имя объекта 'FLEscalationzzRightAdminUnitID' превышает 30 знаков, а в тексте ошибки "nzz" - уже срезано, ошибка 3
scr_GenSelectQuery - просто грешу на этот модуль
scr_SelectDataWithGroupUtils - падает из-за отсуствие объекта, ошибка 2

Для меня сейчас очень критична ошибка 2. С ошибкой 1 все понятно, обойти 3 ничего не стоит.

Новая версия бинарников ничего не изменила.

проверьте текст функции, особенно if (Caption.length > MaxDBObjectSqlNameLength) {

function AddRelationToTable(Table, FieldName, RelationDatasetCode) {
	var Relation = Table.Relations.CreateItem();
	var ChildField = Table.Fields.ItemsByName(FieldName);
	Relation.ChildField = ChildField;
	var TableSQLName = Table.SQLName;
	if (TableSQLName.substr(0,4) == 'tbl_') {
		TableSQLName = TableSQLName.substr(4);
	}
	var Caption = 'F' + TableSQLName + FieldName;
	if (Caption.length > MaxDBObjectSqlNameLength) {
	    TableSQLName = TableSQLName.substr(0, 10);
	    FieldName = FieldName.substr(0, 17);
	    Caption = 'F' + TableSQLName + FieldName;
	}
	Relation.SQLName = Caption;
    var RelationDataset = GetSingleItemByCode(RelationDatasetCode, 'Wizard');
    var ParentField = RelationDataset.SelectQuery.Items(0).FromTable.Fields.
		ItemsByName('ID');
	var RelationDatasetTable = RelationDataset.SelectQuery.Items(0).FromTable;
	Relation.ParentField = ParentField;
	Table.Relations.Add(Relation);
	if (RelationDatasetTable.ParentTableGroup != DictionaryTableGroup) {
		AddIndexToTable(Table, ChildField, TableSQLName);
	}
	return Relation;
}

"Андросов Дмитрий" написал:проверьте текст функции, особенно if (Caption.length > MaxDBObjectSqlNameLength) {

Есть отличая:

    var ParentField = RelationTable.Fields.ItemsByName('ID');
	Relation.ParentField = ParentField;
	Table.Relations.Add(Relation);
	if (IsCascade) {
		Relation.IsCascade = IsCascade;	
	}
                if (RelationDatasetTable.ParentTableGroup != DictionaryTableGroup)

Версия моего файла: Service AppVersion="3.4.0.54" Запрос в поддержку с просьбой выслать мне последнии версии трех сервисов, включая scr_GenTable уже послал.

Можете предоставить скриншот отладчика, на какой строке система падает, и call-stack?
У себя на 3.4.0 не воспроизвел.

пс: идеальный вариант - предоставьте базу, с указанием в каком разделе по нажатию на какой лукап система падает.

Вот архив с запрошенными Вами сервисами

downloads.rar

"Олейник Дмитрий" написал:

Можете предоставить скриншот отладчика, на какой строке система падает, и call-stack?
У себя на 3.4.0 не воспроизвел.

пс: идеальный вариант - предоставьте базу, с указанием в каком разделе по нажатию на какой лукап система падает.

С уважением,
Олейник Дмитрий
Эксперт 3-й линии поддержки


Это у меня:
var ParentField = RelationTable.Fields.ItemsByName('ID');
Это у Дмитрия:
var ParentField = RelationDataset.SelectQuery.Items(0).FromTable.Fields.ItemsByName('ID');
На скришоте видно, что падает на join.leftfield.ParentFields. В ParentFields оказываеться null. Просто нужен файл где исправлена ошибка, функцию менять не хочу, скорей всего все заработает, но что если там еще много чего исправленно.

"Олейник Дмитрий" написал:

Вот архив с запрошенными Вами сервисами

downloads.rar

С уважением,
Олейник Дмитрий
Эксперт 3-й линии поддержки


Спасибо!

Критическая ошибка исчезла. Ошибка с именами осталась, буду ее обходить стороной.

Михаил, не за что.
Если возникнут дополнительные вопросы/проблемы - обращайтесь.

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