Каким образом заполняется поле справочника на странице редактирования объекта
На клиенте получил экземпляр обекта поля справочника поменял ему id и name, но значения не сохраняются, и значения возвращается прежднее
Нравится
Здравствуйте, для изменения записи в бд, необходимо использовать Terrasoft.UpdateQuery, множество примеров можете найти в конфигурации, к примеру метод updateContactCareer в AccountPageV2 в пакете UIv2
var update = Ext.create("Terrasoft.UpdateQuery", { rootSchemaName: "ContactCareer" }); var filters = update.filters; var contactIdFilter = update.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Contact", data.contactId); var isCurrentFilter = update.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Current", true); var isPrimaryFilter = update.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Primary", true); filters.add("contactIdFilter", contactIdFilter); filters.add("isCurrentFilter", isCurrentFilter); filters.add("isPrimaryFilter", isPrimaryFilter); if (data.hasOwnProperty("isPrimary")) { update.setParameterValue("Primary", data.isPrimary, Terrasoft.DataValueType.BOOLEAN); } if (data.hasOwnProperty("isCurrent")) { update.setParameterValue("Current", data.isPrimary, Terrasoft.DataValueType.BOOLEAN); } if (data.hasOwnProperty("dueDate")) { update.setParameterValue("DueDate", data.dueDate, Terrasoft.DataValueType.DATE); } update.execute(function(result) { callback.call(this, result); }, this);
а также на комьюнити, к примеру тут:
http://www.community.terrasoft.ru/forum/topic/24995#comment-66505
Не совсем то,
Например у Контрагента есть поле Город, который является справочником
Пользователь отредактировал какое-то поле по которому я определил, что город указаный в форме не соответсвует городу контрагента в жизни
Мне нужно изменить значения поля Город в текущей странице редактирования
Редактирование значения в БД не подходит т.к. пользователь может отменить все изменения, и информация в таком случае должна остаться нетронутой
"Хусаинов Булат" написал:Мне нужно изменить значения поля Город в текущей странице редактирования
Т.е вам нужно просто установить значение для переменной? В таком случае:
var myCityObj = { value: ...,//сюда ид города из базы displayValue: ...//сюда название города }; this.set("City", myCityObj);
Работает, если поле "Город" - лукапное(справочное). Для строк, Guid-ов, дат и т.п просто this.set("Parameter", value)
Булат,
попробуйте реализовать с помощью бизнес-правил: https://academy.terrasoft.ru/documents/technic-sdk/7-9/biznes-pravila-i…
присоединяюсь к Даниле
Вставлю лишь свои 5-ть копеек, что лучше бы пойти в отладчик установить в справочное поле значение, а потом получить его в отладчике, таким образом вы получите представление полной структуры объекта, для сохранения в БД не играет роли никакие поля кроме "value" (иногда "id")
но остальные значения могут быть задействованы в побочной логике, как это часто бывает с displayValue
так же зачастую можно встретить и другие поля/значения
вот пример того как выглядят объекты в типовых Активностях, для полей "Состояние" и "Результат"
обратите внимание что для объекта поля "Состояние" есть еще отдельное свойство "Finish" от его значения может зависеть какая либо логика на странице, например сокрытие/демонстрация полей или запуск каких-либо БП.
Так что устанавливая значение в справочное поле самостоятельно, желательно воспроизводить структуру объекта целиком, и разбираться с дополнительными свойствами - зачем они нужны и как их воспроизвести.
вот...
PS: (на всякий случай объясню)
если Вы хотите поработать с контекстом карточки из отладчика, не расставляя точек останова по ходу инициализации, например повызывать методы на исполнение, "пощупать" значения аттрибутов и полей, то вам необходимо предварительно "обернуть" контекст.
Для этого подойдет универсальный метод "onEntityInitialized", где вы сможете транслировать ссылку на текущий контекст в свойство глобального объекта, н/п document.ActivityPageScope
methods: ... "onEntityInitialized": function() { this.callParent(arguments); document.ActivityPageScope = this; }, ...
Ваши пять копеек, Илья, оказались золотыми. Ни как не мог понять как обратиться к контексту страницы и прощупать состояние его объектов. Интересно, существует ли способ обращения к странице напрямую не передавая его в document?
Стандартно для обмена сообщениями между разными страницами используется «песочница». То, что выше описал Илья, относится только к отладке в браузере.