Вопрос

Добрый день!

В коробке в карточке "Сотрудник" есть поле "Подразделение" типа Справочник.
При его использовании открывается древовидная структура, которая у удобном формате позволяет выбирать нужную запись.
Есть ли возможность в отдельном поле типа Справочник создать аналогичный формат поиска записи?
Пробовал это сделать, обращаясь к тому же справочнику, но такого же отображения получить не удалось.

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

4 комментария
Лучший ответ

Добрый день!
Нужно на странице объявить атрибут:

"OrgStructureUnit": {
	"lookupConfig": {
		"hierarchical": true
	},
	"lookupListConfig": {
		"columns": ["FullName", "Head", "Parent.Head"]
	}
},

И ваш справочник должен поддерживать иерархичность: иметь ссылку Parent на себя.
Подробнее можно посмотреть на странице EmployeePage

Добрый день!
Нужно на странице объявить атрибут:

"OrgStructureUnit": {
	"lookupConfig": {
		"hierarchical": true
	},
	"lookupListConfig": {
		"columns": ["FullName", "Head", "Parent.Head"]
	}
},

И ваш справочник должен поддерживать иерархичность: иметь ссылку Parent на себя.
Подробнее можно посмотреть на странице EmployeePage

Сидоров Александр В.,

Попробовал в карточке "Сотрудник" сделать кастомное поле, которое ссылается туда же, что и поле "Подразделение".
Выбор система предлагает делать в виде дерева. Это заработало. 
Только в результате в поле указывается не "FullName", а "Name".
Требуется ли прописывать дополнительный код или FullName должно заполняться сразу?

Вот пример кода (по сути тут указаны все те же настройки, что и для коробочного поля):
"UsrDep": {
                    "lookupConfig": {
                        "hierarchical": true
                    },
                    "lookupListConfig": {
                        "columns": ["FullName", "Head", "Parent.Head"]
                    }
                }

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

Коллеги, спасибо!

Вопрос решен. Ранее уже про правку кода нашел примеры в логике, на которую Сидоров Александр ссылался.

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

Добрый день.

По нажатию кнопки должно изменяться справочное.

Как это реализовать.  Простой this.set("UsrStatusSchools",'f7afb09b-83bc-4c44-a2cc-d3ce69d695eb');

Не проходит.

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

3 комментария
Лучший ответ

this.set("Based", {value: "6f5a3e78-d653-4448-9c36-c73993a84668", displayValue: "Устава"});

this.set("Based", {value: "6f5a3e78-d653-4448-9c36-c73993a84668", displayValue: "Устава"});

Спасибо!

this.loadLookupDisplayValue("lookupname", id);

 

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

Добрый день!

Столкнулся с проблемой, поле справочника Состояние на детали графика оплат и поставок на вкладке Паспорт в заказе, в справочнике два значения (Выполнер/Не выполнен) и более не предвидится.

Хотелось бы переделать в выпадающий список, но у поля State замещающего объекта SupplyPaymentElement в пакете с моими доработками галка "Cписок" снята и задизейблена.

Как теперь это обойти?

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

11 комментариев
Лучший ответ

Добрый день, можете в замещающей схеме добавить метаданные, сохранить их и опубликовать:
+ MetaData.Schema.D2.["0a3324bb-55c8-4791-b51f-409cfedc6fe2"].E20 true
это добавит признак список к колонке UID которой указан в квадратных скобках

Добавьте нужные Вам значения в справочник 'Состояния элемента графика поставок и оплат'.

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

нет, мне нужно, что бы это поле на детали отображалось выпадающим списком. Значения в этот справочник добавлять не надо.

Борис Леонов,

Вы можете реализовать эту функциональность на уровне карточки редактирования:

                {
                    "operation": "insert",
                    "parentName": "Header",
                    "propertyName": "items",
                    "name": "State",
                    "values": {
                        "bindTo": "State",
                        "contentType": Terrasoft.ContentType.ENUM,
                        "layout": {"column": 12, "row": 3, "colSpan": 12}
                    }
                },

Или же создать не замещающий объект, а унаследованный от SupplyPaymentElement, тогда признак 'Список' у поля 'State' будет доступен.

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

У вас первый вариант прям получилось осуществить? Я сразу так сделал, только "operation" не "insert", а "merge", не работает на детали, действует только на карточку.

А второй как провернуть, что бы остальную логику не переделывать или обойтись минимальными доработками?

Борис Леонов,

Верно, первый вариант работает только для карточки редактирования - я так и написала.

А для отображения в виде списка в редактируемом реестре подойдет только второй вариант.

Как добавить унаследованный объект описано в статье, смотрите 'Создание пользовательской схемы объекта' и 'Указание родительского объекта'.

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

завтра попробую

Добрый день, можете в замещающей схеме добавить метаданные, сохранить их и опубликовать:
+ MetaData.Schema.D2.["0a3324bb-55c8-4791-b51f-409cfedc6fe2"].E20 true
это добавит признак список к колонке UID которой указан в квадратных скобках

Колодяжный Владислав Эдуардович,

добавление метаданных работает, спасибо!

Интересно, а в методе getCellControlsConfig это можно как то провернуть?

См. тут.

Зверев Александр,

Благодарю!

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

Всем привет. Такой вопрос.

В разделе выведено справочное поле (lookup), к примеру ссылка на организацию. Через get я могу получить id-шник выбранной записи (value) и имя записи (displayValue).

Стоит задача прочитать другие поля записи этого справочника через js код, например ИНН организации. Подскажите есть ли какая-то функция, передав в которую guid записи справочка, названия схемы и названия поля она возврвщала значение этого поля. Как это сделать через EntitySchemaQuery я представляю, но может есть вариант попроще?

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

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

через attributes подтягиваете нужные вам колонки. пример

Account: {
   lookupListConfig: {
      columns: ["UsrINN"]
   }
}
 
//где-то в коде
var acc = this.get("Account");
var inn = acc ? acc.UsrINN : null;

 

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

Спасибо, попробую.

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

Как программно задать необходимое значение в поле справочника(список).

Например, при количестве продаж больше 10 нужно устновить значение в поле справочника Приоритет активности - Высокий.

Я так предполагаю необходимо иметь дело с GUID, но код типа

this.set("MyFieldDictionary", "{GUID}") приводит к результату отображения в html undefined.

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

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

Вам нужно использовать метод loadLookupDisplayValue, например:
 

this.loadLookupDisplayValue("Type", constants.ContractType.Standard);

 

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

Вы получите объект... вот именно объект аналогичной структуры туда и надо сетапить.
как правило требуется объект минимум с 2-мя полями

{
   displayValue: "Текст который будет демонстрировать в поле",
   value: "уникальный идентификатор значения"
}

 

Севостьянов Илья Сергеевич,

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

Т.е. например:

this.set("Country", {value: "a570b005-e8bb-df11-b00f-001d60e938c6", displayValue: "РОССИЯ"});

У атрибута Country добавлены дополнительные поля из таблицы Country, например ["Capital"].

Если вызвать this.get("Country).Capital, будет ли получено значение "Москва"?

Если так не получится, можно получить Id страны, а затем отдельным запросом к таблице стран получить значение интересующего поля в этой записи. Как работать с ESQ из JS-кода, есть в этой и соседних статьях.

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

Небходимо на редактируемом окне создать поле (LookupDataControl).Т.е нужен выпадающий список названий. Данные находятся в таблице на связанном сервере (linked server). Поэтому создала источник данных со строкой соединения(ADODataset).

Но, в ADODataset нет поля типа "поле справочника", чтобы указать конкретную колонку из таблицы как колонку для отображения. Версия 3.2.0.90

Как можно иначе реализовать?

Спасибо.

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

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

"Марина Карапетян" написал:Как можно иначе реализовать?

Можно сделать в основной базе view, которая тянет данные из linked server.
А затем к этой view создать обычные сервисы таблицы (название должно совпадать, в базе не сохранять), запроса и датасета.

Здравствуйте Александр. Спасибо.

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

Посоветуйте, как ускорить выбор справочника при создании нового поля в объекте? Ждать почти минуту - это расточительство

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

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

это скорее в идеи)
"почти минута" это как-то очень медленно, у меня первая загрузка занимает секунд 25 на он-деманд (на он-сайт 5сек)

видимо, "он-деманд" "он-деманду" рознь.

Но в мастере список справочников открывается быстро

Действительно, есть такая проблема. Решение в разработке.

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

1
2
3
4
5
6
7

Поделиться

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

Извините, а зачем изобретать велосипед, это все давно описано!?
Документация по BPMOnline есть в открытом доступе на сайте
Конкретно для администрирования и переделки BPM вот это
В пункте 5.6 на 117 странице все описано, как создать стандартный и нестандартный справочники.

Александр, там документация к версии 5.1, которая во многих местах уже устарела. В инструкциях же к 5.4 рекомендуется пользовательское создание полей другим способом, а процесс создания справочника описан частями и в разных разделах книги.

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

Добрый день.
Попробую описать проблему с которой я столкнулась.
Есть некий справочник "Продукт" с полями ID (ключевое поле) и Name (ключевое поле для отображения).
И есть деталь "Продукт в счете", где есть поле справочника OfferingID (ключевое поле для отображения), где этот некий справочник "Продукт" является источником данных.
А вот дальше самое интересное, есть еще одна деталь, где есть поле справочника OfferingInvoiceID, где источником данных является деталь "Продукт в счете". Проблема заключается в следующем, нужно чтобы полем для отображения было название продукта (Name) из справочника "Продукты", а него его ID. Подскажите, как правильно сделать запрос для отображения названия продукта при выборе значения из детали "Продукт в счете" в поле справочника?

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

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

Делать справочник первичным полем для отображения - плохая примета. Можно создать в датасете "Продукт в счете" скрытое текстовое поле Offering и заполнять его названием продукта при изменении OfferingID (на датасете или на триггере). И это текстовое поле сделать первичным для отображения.

Об этом варианте я тоже думала, видимо так и придется сделать.

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

Добрый день!

ТС 3.3.2.211, Оракл

Решил настроить журнал изменений для созданного раздела. И вот что обнаружил: создалась таблица логов, но некоторые поля-справочники в ней создались нормально (ид+имя), а некоторые нет - только ид. Соответственно в журнале изменений поля справочника для которых нет строковых полей не отображаются вообще, хотя записи в самой таблице логов появляются при изменении данных полей-справочников (то есть тригеры созданы правильно). С чем может быть связано то, что не для всех полей справочников, которые я хочу логировать, создаются поля с именами? Как решить данную проблему?

ЗЫ. В сервисе таблицы галочки появляются правильно. И еще, заметил, что в таблицу логов попали те поля, изменения по которым я не просил логировать.

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

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

Добрый день!
Попробуем оттестировать у себя. Сообщим в ближайшее время результат.

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

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

Добрый день, Анна!

Я уж и не надеялся получить ответа. Спасибо что откликнулись.

Только что еще раз проверил, что все внешние ключи как в таблице, так и в сервисе таблицы присутствуют. С вероятностью 99% скажу что на момент установки галочки <Отслеживать изменения> они тоже присутствовали. Можно, конечно, попробовать пересоздать эти журналы еще раз. Но как это можно сделать безболезненно, не потеряв того, что накопилось в логах?

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

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

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

Здравствуйте. Сделайте, пожалуйста, запрос с корпоративного e-mail в поддержку (support@terrasoft.ru) для получения последней сборки.

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