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

Нечто типа:

"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);

 

Показать все комментарии
бизнес-процесс
ошибка
Справочное поле
настройка объекта
7.15
Service_Creatio

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

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

Нравится

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

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

Добрый день.

 

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

 

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

 

 

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

Добрый день.

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

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

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



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

 

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

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

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

Показать все комментарии
Перенос_пакета
Привязать_настройку_колонок
Настройка колонок
Справочное поле
7.14_()
Marketing_Creatio_()

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

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

Нравится

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

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

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

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

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

Показать все комментарии
выбор из справочного поля
запись в таблицу
Справочное поле
Технические вопросы
7.x

Уважаемые форумчане!
На странице продажи 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.

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

Показать все комментарии
7.6
Справочное поле
фильтрация
Технические вопросы
7.x

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

Нравится

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

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

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

Спасибо!

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