Подсмотрел реализацию onLookupResult в базовом коде

	onLookupResult: function(args) {
		var selectedRows = args.selectedRows;
		if (!selectedRows.isEmpty()) {

всё работает, кроме случая, когда в окне выбора я нажал "Добавить".

В этом случае selectedRows.isEmpty() всегда true. 

Как получить созданную запись?

Нравится

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

Добрый день, при нажатии кнопки "Добавить" из всплывающего окна (допустим при изменении поля с типом "Контакт") нас пересылает на страницу создания контакта. В этом случае мы не выбираем значение из списка и логично, что selectedRows.isEmpty() окажется true. Можете уточнить, для чего вам нужно получать созданную запись?

Дима Вовченко,

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

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

Алексей-Карягин,

Я немного ошибся в прошлом сообщении, 

selectedRows.isEmpty() окажется true в некоторых случаях. Например, поле "Ответственный", в которое можно записать только тот контакт, по которому существует пользователь системы. В этом случае после нажатия "Добавить" создастся новый контакт, но поскольку под него нет пользователя, то selectedRows окажется пустым и значение в поле не изменится. Если добавить новое поле справочник и уже в него добавлять запись, то selectedRows будет иметь значение созданного объекта.

Дима Вовченко, это, к сожалению, не ответ на мой вопрос.

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

Похоже у меня не правильная постановка вопроса. 

selectedRows.isEmpty() == true из-за фильтра, но фильтр надо как-то обойти.

Привожу пример для поля "Ответственный". Сам фильтр находится в схеме BaseFiltersGenerateModule, и вы можете попробовать его переопределить. Фильтр привязывается через атрибут на схема ContactPageV2:
 

"Owner": {
				dataValueType: Terrasoft.DataValueType.LOOKUP,
				lookupListConfig: {filter: BaseFiltersGenerateModule.OwnerFilter}
			},

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

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