Добрый день! При переименовании справочника начали возникать ошибки, и он был удален вместе с объектом для того, чтобы добавить его ещё раз с правильной структурой и именованием. Но таблицы в базе данных остались (BpDialogEventType, SysBpDialogEventTypeLcz), и при попытке назвать справочник таким образом, система выдает ошибку.

Подскажите, пожалуйста, как полностью удалить из системы справочник, со всеми связанными данными и таблицами?

Нравится

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

Попробуйте удалить таблицы напрямую из базы данных:

drop table <название таблицы>

И потом, на всякий случай, скомпилируйте приложение

Алла Савельева,

Спасибо, Алла! Я просто побаивался удалять таблицы, думал, вдруг что-то на них завязано.

Рекомендуется такие вещи сначала выполнять на копии приложения, а только потом, если не возникнет других проблем, на проде.

Куандык Акерке Кайратбеккызы,

Данная ошибка возникает из-за того, что справочник выведен в каких-то разделах. Для решения проблемы Вам необходимо:

- удалить поле в мастере раздела.

- перейти в раздел «Справочники» и удалить из него необходимый справочник.

- в дизайнере системы перейти в раздел «Управление конфигурацией», найти объект этого справочника и удалить его.

Посмотреть зависимости таблиц можно и в SQL Server Management Studio, пункт меню правой кнопки на имени таблиц. Там можно увидеть, какие другие таблицы ссылаются на этот справочник.

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

Есть простая возможность (без использования MultiMaskEdit) ограничить ввод в текстовое поле:

- чтобы вводились только цифры

- количество - не более 12ти

(например опциями в diff.values)

?

Нравится

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

Такой возможности вероятнее всего нет из коробки. Стандартными средствами JavaScript обрабатывая клавиатурные события, можно посмотреть, например по ссылке - https://learn.javascript.ru/keyboard-events

Можно, например, добавить обработчик на keypress/keydown, и если это не цифра или в поле ввода уже 12 симоволов просто игнорировать нажатия

Спасибо

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

Добрый день! Столкнулся со следующей проблемой:

У меня есть путь относительно корневой схемы к параметру, который нужно изменить. Вида:

mainEntity.entityA.(...).entityN.lookupName

Мне нужно изменить значение справочника в последней присоединенной схеме.

Пробовал делать следующим образом:

                var esqMainEntity = new EntitySchemaQuery(userConnection.EntitySchemaManager, "mainEntity");

                esqMessage.AddColumn(actionEntityPath);

                var mainEntity = esqMessage.GetEntity(userConnection, mainId);

                mainEntity.SetColumnValue("mainEntity_entityA_(...)_entityN_lookupNameId", newValue);

                mainEntity.Save();

В данном случае SetColumnValue проходит, но возникает ошибка на методе Save(). Видимо, таким образом нельзя изменить значение в присоединенной таблице, а не в основной.

Пробовал обновить через update:

                    var update = new Update(userConnection, "mainEntity")

                    .Set("mainEntity.entityA.(...).entityN.lookupNameId", Column.Const(newValue))

                    .Where("Id").IsEqual(Column.Const(mainId));

                    update.Execute();

Тоже выдает ошибку (с конструкцией "mainEntity_entityA_(...)_entityN_lookupNameId" та же история).

Подскажите, пожалуйста, как мне быть. Ещё думал получить Id entityN и обновить уже этот объект, но название самого объекта может отличаться от его названия относительно корневой схемы, и это не дает мне выполнить update этого объекта.

Нравится

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

Если у вас есть путь к колонке, соответственно вы знаете в какой именно объект надо зафиксировать изменения. Поэтому не выдумывая никакие пути пишем

var manager = UserConnection.EntitySchemaManager.GetInstanceByName("Department"); //своё название конечного объекта вместо Department
var entity = manager.CreateEntity(UserConnection);
entity.FetchFromDB(depId); //id элемента/записи в бд
entity.SetColumnValue("Name", "Новый отдел"); //1 параметром идёт именно колонка из объекта. никаких путей. для лукапных колонок добавляется Id (например CreatedById)
entity.Save(false);

Также не рекомендую делать entity.Save через esq. А если и делать, то предварительно выбрать все колонки (esq.AddAllSchemaColumns). И опять же, без путей.

Update - это простой конструктор sql комманд и пути он не понимает от слова "совсем". Чтобы составить сложную конструкцию для select надо напихать кучу leftJoin.

Варфоломеев Данила,

Проблема в том, что объект, который называется Department, в пути может называться как угодно:

WwfTask.WwfClient.WwfDepartment

В этом случае колонка WwfDepartment является ссылкой на объект Department. То есть в таком случае мне необходимо узнать имя конечной схемы, которую нужно обновить. А я не знаю как это сделать, к своему глубокому сожалению.

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