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

Нечто типа:

"Document": {
	"dataValueType": Terrasoft.DataValueType.LOOKUP,
	"defaultValues": {
		"Account": {
			"masterColumn": "Account"
			},
		"Contact": {
			"masterColumn": "Contact"
			}
		}
	}

Таким образом значительно упростится такая разработка (не надо писать message и прочее). И, наконец-то, создавая город из карточки адреса, пользователю не надо будет повторно выбирать страну, уже выбранную в адресе



Навеяно вопросом: https://community.terrasoft.ua/questions/zapolnit-znacheniya-pri-sozdan…

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

Удобно было бы.

Когда-то реализовывал такую задачу как-то костылями через HistoryState.

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

Всем здравствуйте.

 

Вдруг кому-то будет полезно.

Стояла аналогичная задача для нажатии на кнопку "Добавить" в окне справочника при добавлении записи на деталь с выбором из справочника. Требовалось предзаполнять Контрагента на карточке Контакта.

Решается добавлением свойства valuePairs в config, который в дальнейшем передаётся в метод openLookup.

Пример:

const accountId = this.get("MasterRecordId");
let valuePairs = [];
valuePairs.push({
	name: "Account",
	value: accountId
});
let config = {
	entitySchemaName: "Contact",
	multiSelect: true,
	columns: ["Name", "Type", "Account"],
	valuePairs: valuePairs
};
this.openLookup(config, this.addCallBack, this);

 

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

Добрый день. Есть необходимость создать объект, где есть справочное поле ссылающееся на "Библиотека процессов (Представление)". Когда добавляем это поле и нажимаем публикацию падает такая ошибка. Не подскажете как решить эту проблему?

Изображение удалено.

Нравится

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

Дмитрий, поскольку Ваша колонка ссылается не на физическую таблицу в БД, а на представление, то при установленных галочках «индексируемая» и при контроле целостности, система пыталась добавить внешний ключ в представление после чего и последовала  ошибка. Если перед публикацией снять галочку индексации и установить галочку «Не контролировать целостность», как показано на скриншоте ниже, публикация такого объекта пройдет без проблем. Для отображения всех свойств колонки, необходимо выбрать «все» в следующем меню. Наглядные скриншоты прикрепил.

Добрый день.

 

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

 

Вариантом решения может быть создание своего представления, в котором одно из полей будет ссылаться на представление 'Библиотека процессов'.

 

 

Алла Савельева пишет:

Добрый день.

Вам нужно в свойствах данного объекта установить признак 'Представление в базе данных', как на скриншоте ниже:

Нет. Это совет, как создать представление, на не в объекте ссылку на представление. 

Эта ошибка происходит из-за того, что система пытается создать внешний ключ (foreign key) на представление, а СУБД такой возможности не дает.



Нужно в свойствах справочной колонки, которая ссылается на представление указать признак "Не контролировать целосность". Это не будет создавать внешний ключ в БД.

 

Дмитрий, поскольку Ваша колонка ссылается не на физическую таблицу в БД, а на представление, то при установленных галочках «индексируемая» и при контроле целостности, система пыталась добавить внешний ключ в представление после чего и последовала  ошибка. Если перед публикацией снять галочку индексации и установить галочку «Не контролировать целостность», как показано на скриншоте ниже, публикация такого объекта пройдет без проблем. Для отображения всех свойств колонки, необходимо выбрать «все» в следующем меню. Наглядные скриншоты прикрепил.

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

Это то что нужно, спасибо!

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

На карточке контакта добавили справочное поле. При открытии выбора записи из справочника настроили отображение колонок. Сохранили для всех ролей.

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

Нравится

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

SysProfileData, в ней по коду и роли находите необходимые записи

SysProfileData, в ней по коду и роли находите необходимые записи

Роль - это SysProfileData.ContactId?

А код - это SysProfileData.Key?

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

Уважаемые форумчане!
На странице продажи OpportunityPageV2 создал справочное поле "Статус оплаты" со значениями "Не выставлен" и "Ожидание оплаты". В объекте Opportunity создал колонку "WaitForPay" типа дата/время.
Как мне сделать так, чтобы после сохранения продажи в WaitForPay заносилось значение даты и времени только, если выбрано значения "Ожидание оплаты"?

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

Нравится

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

Добрый день!
Можно добавить проверку на моименте сохранения, каким значением заполнено справочное поле "Статус оплаты". В случае, если указано состояние "Ожидание оплаты", записывать дату в поле "WaitForPay". Для проверки соответствующих значений, лучше использовать константы, чтобы не сравнивать два значения типа GUID, потому что через некторое время Вы сами забудете, что Вы тут сравниваете и код станет не читаемым и не сопросождаемым.
Можно переопределить метод onSaved: function() {...} на странице OpportunityPageV2 и написать что-нибудь подобное:

onSaved: function() {
this.callParent(arguments);
this.checkIfWaitForPayStatus();
if (!this.isNewMode() && !this.get("IsProcessMode")) {
this.calculateCompleteness();
}
this.updateDetail({detail: "OpportunityTacticHistory"});
//... продолжение тела метода onSaved ... //
}

checkIfWaitForPayStatus: function () {
var payStatus = this.get("PayStatusLookup");
var waitForPayStatus = UserConstants.WaitForPayStatus.value;
var currentDate = this.getSysDefaultValue(Terrasoft.SystemValueType.CURRENT_DATE_TIME);
if (payStatus && payStatus.value === "waitForPayStatus") {
this.set("WaitForPay", currentDate);
}
}

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

Вы можете создать бизнес-процесс, который будет запускаться по событию изменения записи в объекте "Продажа", должна быть изменено значение в поле "Статус оплаты", фильтр "Статус оплаты" = "Ожидание оплаты".

Далее элементом "Изменить данные" Вы можете установить нужное значение в поле WaitForPay.

Спасибо, помогло

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

Доброго времени суток!
Есть развязочная таблица товаров и статей. Справочное поле "Статья" фильтруется по выбранному товару, на основе развязочной таблицы. Каким образом можно вывести все статьи, если в развязочной таблице отсутствуют записи по выбранному товару?

Нравится

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

Олег, здравствуйте!

Пример фильтрации можете посмотреть в схеме «ActivityPageV2» фильтр по колонке «Result».

Спасибо!

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