В числовых полях, для которых назначено округление (и для которых оно не назначено тоже) в Creatio, и которые не заполнены (например, пользователь импортирует из excel свои данные заполняя карточку какую-нибудь, и там не все ячейки заполнены), отображается ЦИФРА, а не пустое поле. Сейчас обратила внимание на данную проблему, есть ли какое-либо решение?
 

Нравится

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

Это не проблема. Так работает система, так как для всех числовых полей системы на уровне ядра прямо в БД установлено значение по умолчанию - 0. Это происходит потому что в СУБД нет для числовых колонок такого понятия, как пустое значение. Если число, то обязательно 0. Так же если логическое, то FALSE.

Это не проблема. Так работает система, так как для всех числовых полей системы на уровне ядра прямо в БД установлено значение по умолчанию - 0. Это происходит потому что в СУБД нет для числовых колонок такого понятия, как пустое значение. Если число, то обязательно 0. Так же если логическое, то FALSE.

Владислав Литвинчук,

Спасибо! Для меня это стало проблемой, когда пользователь проводит расчеты, и видит 0 вместо пустой ячейки, как он вводил в excel. Сделать поля другого формата не получится, потому как позже это поле где-то используется как для математических операций

Добрый день!

Описанное Вами поведение не является ошибкой и соответствует базовой логике, которая присуща всем полям.
Если поле имеет тип - Число или Дробное число, то значение 0 или 0,00 - это пустое значение, то есть поле не заполнено.

Также, когда Вы пытаетесь сохранить карточку с 0,00 в числовом поле со свойством обязательности заполнения, система выдает сообщение, что в поле необходимо указать значение.

Значения 0 или 0,00 является пустым значением, они отображаются в пустых полях для того, чтобы визуально пользователи понимали формат поля.

 

В качестве обходного решения, можем предложить заменить данное числовое поле на текстовое. Но хотим заметить, что при данном типе поля не будет возможности, например, сравнивать значение данного поля с определенной константой (например, для построения фильтров) или выполнять арифметические операции. 

Жмурко Сергей,

Спасибо за объяснения) к сожалению, да, заменить на текстовое поле не получится..

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

Добрый день!

 

Подскажите, пожалуйста, есть ли возможность запретить перенос длинного значения в колонке детали? Мне нужно, чтобы поле поле обрезалось и заканчивалось многоточием (пример креплю).

 

Сейчас все длинные текстовые поля выводятся целиком, с переносом строки, если они не влезают в ширину колонки (пример креплю).

 

Нравится

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

Что интересно, если открыть настройку колонок детали, то там в предпросмотре так, как Вы хотите.

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

Сходу нашёл, как смена стандартного word-wrap: normal на word-wrap: break-word; у [class*='grid-cols-'] меняет перенос по словам на перенос по буквам, но как сделать чтобы вообще без переноса, пока не нашёл. Может, у Вас выйдет.

Уже заведена и принята идея:

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

1. реестр раздела
2. списки в итогах

Но пока в планах на новые версии её нет.

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

Спасибо за мысль! Подумаю, что делать с этим))  Было бы здорово, если бы такая функция  появилась

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

Доброго времени суток коллеги, я столкнулся с проблемой. Имею колонки и кнопку Мне нужно при нажатии на кнопку "Очистить"  очистить данные у всех полей. 
Прочитал пару ответов поэтому вопросу тут в Community,  и написал функцию: 
 

clearFileBalance: function() {
  var budgetSales = this.get("UsrBudgetSales");
      this.set(budgetSales, null);
  var facticallySum = this.get("UsrFacticallySum");
      this.set(facticallySum, null);
  var result = this.get("UsrEqualsBudget");
      this.set(result, null);
  }
},

Она вызывается тут по клику: 

clearFileBalanceClick: function(clearFileBalance) {
       this.clearFileBalance();
 }

Он почему-то она не работает. Что я делаю не так? Спасибо

Нравится

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

Доброе утро.

this.get("НазваниеПоля") - получает значение

 

this.set("НазваниеПоля", Значение) - устанавливает Значение в НазваниеПоля. Название поля в данном случае должно быть текстом

 

 

var budgetSales =  this.get("UsrBudgetSales"); //код запишет в переменную budgetSales ЗНАЧЕНИЕ поля UsrBudgetSales.

Чтобы очистить поле, нужно в UsrBudgetSales записать null:

this.set("UsrBudgetSales", null);

 

Есть еще вот такой вариант записи:

this.$UsrBudgetSales = null;

Доброе утро.

this.get("НазваниеПоля") - получает значение

 

this.set("НазваниеПоля", Значение) - устанавливает Значение в НазваниеПоля. Название поля в данном случае должно быть текстом

 

 

var budgetSales =  this.get("UsrBudgetSales"); //код запишет в переменную budgetSales ЗНАЧЕНИЕ поля UsrBudgetSales.

Чтобы очистить поле, нужно в UsrBudgetSales записать null:

this.set("UsrBudgetSales", null);

 

Есть еще вот такой вариант записи:

this.$UsrBudgetSales = null;

Дмитрий А., Я понял) Спасибо ) Заработало)

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

Добрый день! Бьюсь уже 2 неделю и никак не могу найти информацию о том, как можно динамические регулировать количество полей на модальном окне, либо мини-карточке.

 

Задача: открывать модальное окно с параметрами из объекта Specification (Характеристика), что бы просто показать информацию из него.

 

Но проблема в том, что для каждой сущности, которая привязана к Характеристике необходимо в зависимости от типа данных выставить тип поля, а от количества этих сущностей - вывести поля.

Нравится

1 комментарий

Тимофей, насколько понимаю, простых решений нет, слишком базовые схемы надо переопределять, которые являются модулями.

 

Как обходное решение, можно заранее создать несколько скрытых полей и программно показывать нужное их количество в зависимости от потребности. Но ведь Вам ещё нужно разных типов.

 

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

 

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

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

Задача: добавить на страницу пользовательское поле, значение которого рассчитывается по изменению значения другого поля. Значение должно только отображаться на странице, сохранять его в БД нет смысла (оно строго вычисляется исходя из значений двух других колонок).

Вроде бы все должно работать, и значение поля CalculatedValue должно вычисляться после загрузки страницы и после изменения значений в полях TurnoverF и TurnoverP. Но реально изменение случается только при загрузке страницы - т.е. метод, прописанный в dependencies, не срабатывает. Почему?

entitySchemaName: "UsrTenant",
attributes: {
 "CalculatedValue": {
     dataValueType: Terrasoft.DataValueType.FLOAT,
     dependencies: {
       columns: ["TurnoverF", "TurnoverP"], 
       methodName: "calculateValue"
     }
  }
},
methods: {
  onEntityInitialized: function() {
    this.callParent(arguments);				
    this.calculateValue();
  },
  calculateValue: function() {
    var turnoverF = this.get("TurnoverF");
    if (!turnoverF) {
      turnoverF = 0;
    }
    var turnoverP = this.get("TurnoverP");
     if (!turnoverP) {
       turnoverP = 0;
     }				
    var result = (turnoverP === 0) ? 0 : (turnoverF / turnoverP - 1);
    this.set("CalculatedValue", result);
  }
},
diff : {
//.....................
{
  "operation": "insert",
  "name": "INT_TurnoverF",
  "values": {
    "layout": {
      "colSpan": 12,
      "rowSpan": 1,
      "column": 0,
      "row": 0,
      "layoutName": "Tab7ec5c1bfTabLabelGridLayout4f9aa333"
    },
    "bindTo": "TurnoverF",
    "enabled": true
  },
  "parentName": "Tab7ec5c1bfTabLabelGridLayout4f9aa333",
  "propertyName": "items",
  "index": 0
},
{
  "operation": "insert",
  "name": "INT_TurnoverP",
  "values": {
    "layout": {
      "colSpan": 12,
      "rowSpan": 1,
      "column": 12,
      "row": 0,
      "layoutName": "Tab7ec5c1bfTabLabelGridLayout4f9aa333"
    },
    "bindTo": "TurnoverP",
    "enabled": true
  },
  "parentName": "Tab7ec5c1bfTabLabelGridLayout4f9aa333",
  "propertyName": "items",
  "index": 1
},
{
  "operation": "insert",
  "name": "INTCalculatedValue",
  "values": {
    "caption": "Вычисляемое поле",
    "bindTo": "CalculatedValue",
    "layout": {
      "column": 12, 
      "rowSpan": 1,
      "row": 4, 
      "layoutName": "Header",
      "colSpan": 9
    }
  },
  "parentName": "Header",
  "propertyName": "items",
  "enabled": true,
  "index": 9
},
//.....................
}

 

Нравится

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

Добрый день.

Попробуйте добавить квадратные скобки после dependencies, как на примере ниже:

	"dependencies": [
		{
			"columns": ["Patient"],
			"methodName": "setPatientFieldsValue"
		}
	]

 

Добрый день.

Попробуйте добавить квадратные скобки после dependencies, как на примере ниже:

	"dependencies": [
		{
			"columns": ["Patient"],
			"methodName": "setPatientFieldsValue"
		}
	]

 

Алла Савельева,

как и предполагалось, ошибка была абсолютно дурацкой...
Спасибо!

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

Коллеги, добрый день. 

 

Столкнулся с проблемой. 

1) На форме обращения дублируется поле "Сервисный договор", несмотря на то, что в конструкторе раздела отображается только одно 

2) Порядок полей на форме не соответствует порядку полей в конструкторе

Бизнес-правила отключил. 

Конфигурацию перекомпилировал полностью. 

Скрины вложением

Помогите понять в чём проблема ? 

 

Нравится

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

Это может быть из-за того, что расположение полей задано в схеме кодом, слишком сложным для разбора мастером разделов. Откройте схему CasePageV2 и поищите упоминания этого поля в пакете Custom с Вашими изменениями и в других пакетах.

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

Предлагаете его переопределить?

Когда Вы меняете в мастере, оно и так переопределяется, в пакете Custom создаётся CasePageV2 с новым порядком полей. Но, видимо, в одном из пакетов выше по иерархии описано иначе и конфликтует.

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

По примеру "создать заказ из продажи" был создан "создать договор из продажи" и "создать проект из продажи". Проблема в том что при переносе продуктов в деталях этих нем текстового поля для названия что отображает название продукта, потому было создано текстовое поле для нормальной работы выбора продукта. Проблема в том что это поле выбирается при выборе продукта. Можно изменить его руками и поставить "Продкут.Название", но вот при сохранении настройки глобально она не сохраняется для всех пользователей

 

Нравится

1 комментарий

Дело может быть в том, что объект детали «Продукт в продаже» (OpportunityProductInterest) сделан на основе базового объекта, а другие подобные детали «Продукт в заказе» (OrderProduct) и «Продукт в счете» (InvoiceProduct) — на основе виртуального объекта «Базовое вхождение продукта» (BaseProductEntry). Соответственно, у объектов OrderProduct и InvoiceProduct есть поле «Название» и оно является первичным для отображения.

Сравните между собой детали и попробуйте сделать аналогично.

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

Здравствуйте.Очень хотелось бы получить возможность самостоятельно давать название, которое используется в коде для вкладок и групп полей. Также хотелось бы, чтобы мастер использовал какой-то единый стандарт для именования созданных разделов,деталей, вкладок, групп полей. От версии к версии продукта именование меняется и, к сожалению, не всегда в лучшую сторону. Например: 1. Не всегда используются ресурсы в карточках редактирования для свойства caption в diff. 2. Созданный раздел (и все относящиеся к нему схемы) в заголовке имеют название родительской схемы 3. К станицам деталей и самим схемам детали зачем-то приписывается 1. (UsrSchema1Detail, UsrAddIfro1Page) 4. Вкладки и группы полей именуются с добавлением id, хотя в одной из версий была возможность давать имя для вкладки. 5. В какой-то из версий можно было дать название вкладкам, в более поздних версиях данный функционал отсутствует. Прикреплю скриншет результата работы мастера раздела в версии 7.9

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

Ой, еще некоторые схемы после работы Мастера начинаются с UsrUsr (зачем-то повторяется)

И добавлю сюда пожелание при создании страниц раздела для разных типов использовать наследование (с возможностью редактирования родительской страницы). Так как чаще всего все страницы Контрагентов, например, на 80% должны иметь общий наследуемые функционал, а не повторяться в странице каждого типа

"Владимир Соколов" написал:при создании страниц раздела для разных типов использовать наследование (с возможностью редактирования родительской страницы)

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

"Пащенко Александр Сергеевич" написал:пришлось править таблицы в БД

Мы без правок БД наследовали, но
1) много ручной работы
2) родительскую схему после этого получается редактировать только руками

Но плюсы перевешивают эти минусы!

Александр, здравствуйте!

Ниже обратная связь по Вашим замечаниям:

"Пащенко Александр Сергеевич" написал:
Очень хотелось бы получить возможность самостоятельно давать название, которое используется в коде для вкладок и групп полей.
Также хотелось бы, чтобы мастер использовал какой-то единый стандарт для именования созданных разделов,деталей, вкладок, групп полей.

Зафиксировали и передали информацию в департамент разработки для рассмотрения реализации в будущих версиях приложения.

"Пащенко Александр Сергеевич" написал:
1. Не всегда используются ресурсы в карточках редактирования для свойства caption в diff.

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

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

Зафиксировали и передали информацию в департамент разработки для рассмотрения реализации в будущих версиях.

"Пащенко Александр Сергеевич" написал:
3. К станицам деталей и самим схемам детали зачем-то приписывается 1. (UsrSchema1Detail, UsrAddIfro1Page)

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

"Пащенко Александр Сергеевич" написал:
4. Вкладки и группы полей именуются с добавлением id, хотя в одной из версий была возможность давать имя для вкладки.

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

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


[/quote]

Такая возможность есть на текущий момент в мастере раздела (рис. 1).

"Владимир Соколов" написал:

И добавлю сюда пожелание при создании страниц раздела для разных типов использовать наследование (с возможностью редактирования родительской страницы). Так как чаще всего все страницы Контрагентов, например, на 80% должны иметь общий наследуемые функционал, а не повторяться в странице каждого типа

Пожелание зафиксировали. К сожалению, при создании нескольких страниц редактирования, созданные страницы наследуются от BasePageV2.
Для решения твоей задачи:
1) Типизируй страницы редактирования раздела
Предположим при типизации раздела была создана страница с названием OldPage
2) Перейди в конфигурацию
3) Создай свою схему в конфигурации, назвав ее нужным именем (например MyPage)
4) Унаследуй ее от нужной страницы редактирования
5) Сохрани изменения
6) Выполни запрос:
update SysModuleEdit
set CardSchemaUId = (select Uid from SysSchema where name = MyPage and ExtendParent = 0)
where CardSchemaUId = (select Uid from SysSchema where name = OldPage and ExtendParent = 0)

"Владимир Соколов" написал:

Ой, еще некоторые схемы после работы Мастера начинаются с UsrUsr (зачем-то повторяется)

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

Дмитрий, спасибо за быструю обратную связь.
В третьем пункте также было замечание, что детали называются UsrSchema1Detail. (вне зависимости от того, как называется объект).

"Вильшанский Дмитрий" написал:5. В какой-то из версий можно было дать название вкладкам, в более поздних версиях данный функционал отсутствует.

Такая возможность есть на текущий момент в мастере раздела (рис. 1).

Здесь речь идет не о том, какой заголовок вкладки будет видеть пользователь в интерфейсе, а именно о том, как она будет называться в коде в секции diff (свойство Name).

"Пащенко Александр Сергеевич" написал:Здесь речь идет не о том, какой заголовок вкладки будет видеть пользователь в интерфейсе, а именно о том, как она будет называться в коде в секции diff (свойство Name).

Да, потом сложно в коде ориентироваться

Добавлю, что при включенном svn мастер самостоятельно не ставит замки на схемы.

"Пащенко Александр Сергеевич" написал:

Добавлю, что при включенном svn мастер самостоятельно не ставит замки на схемы.

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

Отдел разработки работает над исправлением этой проблемы.

Добрый день. Вот еще новые "Фичи" работы мастера. Теперь если добавлять новое поле на страницу, то в названии у него никак не фигурирует название колонки, вместо этого написано, например "Float"+случайный Id.

Кроме того, все проблемы, которые описаны в данной теме все еще присутствуют, а уже прошло более года.

Александр, здравствуйте!

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

Касательно замечания "Теперь если добавлять новое поле на страницу, то в названии у него никак не фигурирует название колонки, вместо этого написано, например "Float"+случайный Id.". Название колонки прописано в атрибуте "bindTo" в "values" поля. Данное поведение реализовано намеренно и скорее необходимо для того, чтоб если поля добавлять несколько раз в карточку, они в схеме были уникальными, и не было потом свалов в Мастере, например. Пожелание на доработку мы, конечно же, передали.

Одеяненко Юлия,

Безусловно, мастер стал более функциональным и удобным.

Ранее он брал название поля, а не его тип и добавлял к нему Id. Это было понятно. Сейчас же почему-то это изменили. Это влечет за собой дополнительную работу по исправлению названий для разработчиков, чтобы это хоть как-то было читаемо в дальнейшем. 

Аналогично с названием схем, созданных мастером деталей. Префикс в названии страницы дублируется дважды, детали называются по схема "Schema{0}Detail", их тоже приходится переименовывать.

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

 

Для пользователя, который не заходит в конфигурацию, никакой разницы нет, а для разработчика - это двойная работа, которая отнимает время.

Хотелось бы узнать предполагаемые сроки для данных правок и планируются ли они вообще?

Александр, здравствуйте!
К сожалению, точных сроков по реализации улучшению форматирования кода схем и названий схем, которые создаются Мастером, мы предоставить не можем. Проблем в данном посте озвучено достаточно много, они все находятся на рассмотрении у аналитиков продукта. Возможно, улучшения будут внедряться в будущих релизах, постепенно.

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

Здравствуйте подскажите пожалуйста каким образом можно заблокировать все элементы на карточке редактирования активности (поля, определенные кнопки, детали) т.е. что-бы пользователь мог посмотреть но не мог вносить изменения. Сделать это нужно именно кодом.! какой метод за это отвечает, ? т.е наверное при загрузке страницы есть какая то коллекция элементов , которую можно заблокировать?

Нравится

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

Добрый день Андрей!!!

я предлагаю вам ничего не кодировать, а выполнить вашу задачу путем разграничения прав "по колонкам". Для выполнения данной задачи прошу ознакомиться с документацией по Администрированию и настройки прав. Ссылка на Академию террасофт: Раздел [Доступ к объектам] Прошу обратить внимание "Администрирование по колонкам", "Администрирование по записям". именно данный метод вам подойдет для решения вашей задачи. Будут вопросы пишите.

Михаил спасибо за ответ, но так наверное, решить задачу не получиться, т.к поля должны блокироваться и разблокироваться по условию :
(поля должны быть заблокированы если с момента даты завершения Активности прошло более 10 дней и соответственно поля должны быть доступны если прошло менее 10 дней )

Тогда вам Андрей требуется доработка и переработка всей карточки редактирования. Но здесь возникает вопрос и определенная сложность. А если Задача (Активность) участвует в бизнес-процессе, тогда как вы будете использовать данную карточку? Ведь тогда Бизнес-процесс просто будет зависший. Это один момент. Второй момент во время исполнения Бизнес-процесса на карточки редактирования могут появляться Генерируемые поля. С ними что вы будите делать. Я думаю вы слишком замудреную поставили задачу. Ее решить можно но нужно будет предусмотреть все. А это переписать и заместить придется не только карточку редактирования Активности. Может вы как-то упростите задачу. И тогда я вам подскажу как правильно ее решить.

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

Намагаюся розібратися зі скриптом [PageLoadCompleteScriptTask].
В ньому використовуються значення полів, взяті наступним чином:

Page.ProductCategoryEdit.Value;
Page.HasAnalogsCheckBox.Checked;
Page.IsAdditionalHandlingRequiredCheckBox.Checked;
...

Значення отримую нульові, або інакше - в них ще не відобразилися значення з DataSource.
Якщо зчитати відповідні значення з DataSource, то все гаразд, є значення.
Але таке застосування не буде коректним.

Коли значення описаних полів ([Page...]) використовую у відповідному обробнику, що був описаний в [InitScriptTaskExecute], то на цьому етапі значення вже присутні.

Запитання: в який момент прописуються значення описаних полів ?
Куди потрібно прописувати логіку, яка спирається на вказані значення ?
Чи, що треба зробити, щоб поля гарантовано отримали свої значення ?

Нравится

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

Игорь, здравствуйте!

"Ігор Андрусенко" написал:в який момент прописуються значення описаних полів ?

Значение интерфейсных полей изначально прописываются на клиентской части при помощи DataSource. Определение значений на сервере происходит, когда страница вернется с клиентской части.

"Ігор Андрусенко" написал:Куди потрібно прописувати логіку, яка спирається на вказані значення ?

Логику можно прописывать, например, на событиях изменений значений полей, на подготовку фильтров Lookup полей.
Не могли бы Вы описать логику применения значений полей и почему Вас не устраивает использование DataSource?
Спасибо

"y.perevjazko" написал:Не могли бы Вы описать логику применения значений полей и почему Вас не устраивает использование DataSource?

Мабуть справа в організації процесу оновлення полів.

На карточці заявки на внесення змін є пара полів типу дата.
Значення дат розраховуються в методі SetDeadlineDate().

Якщо метод запускається з якого-небудь обробника, то значення в полях фіксуються, в разі якщо обробник відпрацьовує.

А якщо метод запускається в скрипті PageLoadCompleteScriptTaskExecute,
то значення залишаються не зафіксованими.

Я так розумію, що обробник відпрацьовує по AJAX і дає миттєвий результат, а результат відпрацювання по скрипту фіксується після ситуативного надсилання даних на сервер.

Тому зараз запитання я б сформулював наступним чином:
Як заставити здійснити відправку даних на сервер не через обробник зміни значення якогось поля, а в примусовому порядку, у скрипті PageLoadCompleteScriptTaskExecute ?

Сделайте методу булевский параметр, на PageLoadComplete запускаете SetDeadlineDate(true), из других мест — SetDeadlineDate(false). Внутри метода в зависимости от параметра пишите или в поле датасорса (на PageLoadComplete), или в контрол на карточке.

Дещо "косим" способом запускаю метод:
вставив метод SetDeadlineDate() у скрипт обробки повідомлення SetTaskOwnerButtonClick (натиснення кнопки "Установить Content-менеджера").
При натисненні кнопки метод відпрацьовує, візуально значення змінюється.

Але далі отримав наступну мороку:
коли при першому натисненні кнопки вичитую його обома способами:

Page.DeadlineDateEdit.Value
Page.DataSource.ActiveRow.GetTypedColumnValue("DeadlineDate");

то отримую незмінене значення, не те, що в цей момент видно в полі карточки.
Вже коли вікно вибору менеджерів закриваю і потім повторно натискаю кнопку, тоді вичитується значення, яке було підставлене при попередньому натисненні-відпрацюванні SetDeadlineDate().

Це я вже з огляду на даний факт писав про AJAX.
Тому й питання щодо примусової відправки даних на сервер залишається актуальним, бо необхідність двічі розкривати вікно вибору Content-менеджерів навряд чи порадує виконавців.

Что это за окно выбора менеджеров? Оно открывается по кнопке? Как оно связано с полем?
Какой это продукт?

Так по кнопці відкривається вікно OwnerSelectionGridPage
З полем воно пов"язане таким чином:

UserConnection.SessionData["customDeadLine"] = Page.DeadlineDateEdit.Value;

Продукт: ServiceDesk
Я так розумію, що це додаткова розробка.

Але зважаючи на те, що при першому натисненні кнопки значення поля DeadlineDateEdit залишається неоновленим, то й у вікно передається неактуальне значення.
При другому - актуальне.

Возможно, проблема в том, что это поле некорректно заполнилось в другом месте на карточке, где ему присваивалось значение.

Рекомендуется всюду присваивать через

Page.DataSource.ActiveRow.SetColumnValue("DeadlineDate", DeadlineDate);

а не

Page.DeadlineDateEdit.Value = DeadlineDate;

Значення прописується ось так:

Page.DeadlineDateEdit.SetValue(deadlineDate);

Я так собі уявляю процес:
Значення прописується на боці клієнта, без відправки на сервер.
Тому не обновляється DataSource і, відповідно, зчитується не оновлене значення.
А при відкритті/закритті вікна по кнопці відбувається відправка даних, тому при наступному відпрацюванні SetDeadlineDate() показує, що значення вже оновлені.

А если заменить на Page.DataSource.ActiveRow.SetColumnValue ?

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