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

Например, при количестве продаж больше 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-кода, есть в этой и соседних статьях.

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

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

Нравится

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

Добрый день!

Добавьте его в атрибуты страницы:

attributes: {
			"ProductType": {
				dataValueType: Terrasoft.DataValueType.LOOKUP,
				referenceSchemaName: "ProductType"
			}
}

После этого можете с ним работать методами set и get

Я конечно догадываюсь, что, скорее всего, вас интересует возможность записи в объекты посредством esq. Почитайте подробнее тут: https://academy.terrasoft.ua/documents/technic-sdk/7-6-0/ispolzovanie-r…
И если возникнут точечные вопросы, задавайте, либо более подробно объясните что вам нужно, желательно с примерами, названиями полей, и.т.д. А то вопрос звучит слишком абстрактно.
Если же вас интересует глобальная "переменная", для переиспользования её далее в рамках схемы, то ответ выше.

"Дмитрий Степанов" написал:

Добрый день!

Добавьте его в атрибуты страницы:

attributes: {

                        "ProductType": {

                                dataValueType: Terrasoft.DataValueType.LOOKUP,

                                referenceSchemaName: "ProductType"

                        }

}

После этого можете с ним работать методами set и get


Добавил. Вот только в базе изменения не отображаются.

.Погодите, не понял. То, что вы спросили относится в атрибуту, который живет на страничке. Только на страничке. Если хотите, чтобы оно писалось в БД, создайте одноименное поле в объекте с аналогичным типом. Потом на страничке его объявите так, как я написал. Теоретически должно работать и сохранение.

"Сурмачевский Евгений Александрович" написал:Добавил. Вот только в базе изменения не отображаются

Естественно, атрибут это не физическая колонка в БД. Физическую колонку в бд вам необходимо добавить в объект, и\или если она там есть, использовать esq для установки её значения:
https://academy.terrasoft.ua/documents/technic-sdk/7-6-0/ispolzovanie-r…

Либо так как описано выше, создать атрибут, одноименнный колонке, и через this.set устанавливать её значение, не вы водя её на карточку.

"Дмитрий Степанов" написал:

.Погодите, не понял. То, что вы спросили относится в атрибуту, который живет на страничке. Только на страничке. Если хотите, чтобы оно писалось в БД, создайте одноименное поле в объекте с аналогичным типом. Потом на страничке его объявите так, как я написал. Теоретически должно работать и сохранение.


Не до конца выразил мысль. Есть поле в объекте ("IncomeSpare") и тип его справочник. Я запросом получаю Guid и хочу это значение внести в базу в колонку "IncomeSpareID".
На самой странице редактирования я не хочу размещать данный справочник.
Использовать esq ? Описанный вами способ к сожалению не работает.

"Сурмачевский Евгений Александрович" написал:я не хочу размещать данный справочник.

Не прописывайте данное поле в diff
"Сурмачевский Евгений Александрович" написал: хочу это значение внести в базу в колонку "IncomeSpareID".

Делайте Insert в бд после получения Guid'а или

this.set(/*название поля*/, {value: /*id*/, displayValue: /*name поля из справочника*/})

1. Создаете в структуре объекта поле IncomeSpare, тип справочник
2. на странице объекта объявляете атрибут

attributes: {
"IncomeSpare": {
         dataValueType: Terrasoft.DataValueType.LOOKUP,
         referenceSchemaName: "IncomeSpareLOOKUP"  //ваше наименование справочника
                        }
}

3. В коде страницы перед сохранением присваиваете ему значение:

this.set("IncomeSpare", value)

Сделал как описал Дмитрий.
Вот только установил значение таким способом: this.set(/*название поля*/, {value: /*id*/, displayValue: /*name поля из справочника*/})
Все получилось.
Всем спасибо.

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