Приветствую всех!

Подскажите, почему вот так работает:

lookupListConfig: {
  filters: [{
    method: function(columnName){
      return this.getFilterByAccount(columnName);
    },
    argument: "Account"
  }]
}

а вот так 

lookupListConfig: {
  filters: [{
    method: this.getFilterByAccount,
    argument: "Account"
  }]
}

нет!

 

Нравится

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

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

Дело в том, что во втором случае view module (описывает поведение) еще не проинициализирован (секция methods в схеме относится к view module). 

При обращении к lookupListConfig загружается пока только window (https://developer.mozilla.org/ru/docs/Web/API/Window) в котором нет данного метода.

Если посмотрите в консоль при выполнении кода lookupListConfig, то увидите:

1. Ошибку, что метод не найден (будет написано undefined)

2. При написании в консоли "this." будет написано подсказка window.

Вильшанский Дмитрий,

понятно, спасибо.



В качестве пожелания для разработчиков, как вариант, можно было бы добавить в обработчик LookupQuickAddMixin.getLookupQueryFilters проверку не только method, но и methodName, тогда по this[methodName] можно было бы вызывать функцию фильтрации.

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

Добрый день.

Подскажите, правила в коде кастомных модулей применяются по порядку как и везде?

То есть, более специфические правила я напишу в начале модуля, сначала применятся они, потом более общие?

Например, мне нужно отображать некоторые колонки если значение колонки 1 = 1.

И отображать другие колонки, если значения колонки 1 = 1 И колонки 2 = 2.

Сопутствующий вопрос: перечисление условий нужно делать в блоке conditionalColumns?

 

Нравится

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

Константин, здравствуйте!

Вам необходимо реализовать одно пользовательское бизнес-правило с учетом всех условий (https://academy.terrasoft.ru/documents/technic-sdkmob/7-12/polzovatelsk…).

На порядок влияет:

- иерархия пакетов;

- в каком порядке было добавлено бизнес-правило в схему (читается сверху-вниз);

- positions (https://academy.terrasoft.ru/documents/technic-sdkmob/7-12/biznes-pravi…).

 

Также в бизнес-правилась срабатывает способ организации FIFO (https://ru.wikipedia.org/wiki/FIFO).

Что такое "conditionalColumns" описано на Академии - https://academy.terrasoft.ru/documents/technic-sdkmob/7-12/biznes-pravi…

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

Добрый день!

Перевел платформу в режим разработки в файловой системе, после авторизации отобразилось окно конфигурации с сообщением "Сборка конфигурации "Default" не инициализирована". Запустил компиляцию и получил ошибку: "Зависимость 'UsrGetProductPrice' пакета 'Custom' не найдена. Путь поиска: C:\inetpub\BPMdevelopment\Terrasoft.WebApp\Terrasoft.Configuration\Pkg\Custom\Schemas\UsrGetProductPrice\UsrGetProductPrice.cs". Посмотрел что это, оказался конфигурационный сервис. Почему появляется эта ошибка? Как это повлияет в дальнейшем на разработку в файловом режиме? Можно ли что то сделать, кроме удаления этого сервиса, чтобы ошибка пропала?

Спасибо.

Нравится

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

Здравствуйте, Руслан.

Приложению требуется перекомпиляция конфигурации.

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

По результату ошибка пропадет,  и вход в приложение будет работать корректно. После можете ее импортировать назад в пакет Custom и исправить ошибки, которые были допущены при предыдущем ее редактировании.

Спасибо, Илья, за консультацию. Не дождавшись ответа, я уже успел выгрузить пакеты в файл. И теперь у меня появился другой вопрос: "Компилировать приложение я могу и в Visual Studio и через Конфигуратор, или только в одном из них? 

Руслан, ограничения при включении режима разработки в файловой ситеме описаны в красных  блоках в статьях  "Разработка в файловой системе" и " Настройка Visual Studio для разработки в файловой системе".

В общем, попробовал скомпилировать проект из Visual Studio -  вышла ошибка: "Error: System login error. Error has been recorded in system log of the server. Please contact your system administrator. Utility finished working." Затем попробовал скомпилировать из приложения - все хорошо (даже ошибка, которая указана в инициирующем сообщении данного обсуждения исчезла). Затем опять в студии - та же ошибка. Опять вопросы:

1. Не нашел логи, на которые указывает компиляция из студии, чтобы изучить ошибку более детально. Где искать логи?

2. Почему из студии компиляция не проходит?

Видимо, что-то не было настроено согласно этим статьям.

Похоже на то, что неправильно прописали строку подключения к базе для WorkspaceConsole, либо вовсе не прописали.

На самом деле я забыл про настройку соединение с базой данных для WorkspaceConsole. Точнее не обратил внимание на то что их нужно выполнить. Исправил, компиляция запустилась. Буду ждать окончания процесса. Спасибо, Илья, за помощь! 

Все таки остался один вопрос: Где искать логи к утилите WorkspaceConsole? По пути "C:\inetpub\BPMdevelopment\Terrasoft.WebApp\DesktopBin\WorkspaceConsole\Log\ " нет свежих логов, только старые месячной давности. В будущем может пригодится.

В сообщении может быть речь о логах на стороне сервера.

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

Добрый день! 

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

При попытке открыть конфигурацию штатным способом открывается страница с ошибкой:

Exception Message: Данный ключ отсутствует в словаре.
Exception Type: System.Collections.Generic.KeyNotFoundException
Exception Source: mscorlib

Exception Stack Trace:
   в System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.CreateItemTabHeader(Dictionary`2 node, Boolean isSysModuleFolder)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.BuildWorkspaces(Dictionary`2 node, TabHeaderCollection tabHeaders)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.BuildWorkspaces(Dictionary`2 node, TabHeaderCollection tabHeaders)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.InitScriptTaskExecute(ProcessExecutingContext context)
   в Terrasoft.Core.Process.ProcessScriptTask.InternalExecute(ProcessExecutingContext context)
   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
   в Terrasoft.Core.Process.ProcessScriptTask.Execute(ProcessExecutingContext context, Func`2 internalExecute)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_UIv2_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_MarketingCampaign_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPageEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.OnExecuted(Object sender, ProcessActivityAfterEventArgs e)
   в Terrasoft.Core.Process.ProcessFlowElement.OnExecuted(ProcessActivityAfterEventArgs e)
   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_UIv2_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_MarketingCampaign_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPageEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Base_Entity_TerrasoftEventsProcess`1.ThrowEvent(ProcessExecutingContext context, String message)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_MarketingCampaign_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPageEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.OnExecuted(Object sender, ProcessActivityAfterEventArgs e)
   в Terrasoft.Core.Process.ProcessFlowElement.OnExecuted(ProcessActivityAfterEventArgs e)
   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
   в Terrasoft.Core.Process.ProcessScriptTask.Execute(ProcessExecutingContext context, Func`2 internalExecute)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_MarketingCampaign_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPageEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.OnExecuted(Object sender, ProcessActivityAfterEventArgs e)
   в Terrasoft.Core.Process.ProcessFlowElement.OnExecuted(ProcessActivityAfterEventArgs e)
   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_MarketingCampaign_Entity_TerrasoftEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPageEventsProcess`1.ProcessQueue(ProcessExecutingContext context)
   в Terrasoft.WebApp.MainPage_Case_Entity_TerrasoftEventsProcess`1.ThrowEvent(ProcessExecutingContext context, String message)
   в Terrasoft.WebApp.MainPageEventsProcess`1.ThrowEvent(ProcessExecutingContext context, String message)
   в Terrasoft.UI.WebControls.PageSchemaUserControl.ThrowEvent(String message)
   в Terrasoft.UI.WebControls.Controls.PageContainer.LoadFromAssembly()
   в Terrasoft.UI.WebControls.Controls.PageContainer.LoadUserControl()
   в Terrasoft.UI.WebControls.Controls.PageContainer.OnInit(EventArgs e)
   в System.Web.UI.Control.InitRecursive(Control namingContainer)
   в System.Web.UI.Control.InitRecursive(Control namingContainer)
   в System.Web.UI.Control.InitRecursive(Control namingContainer)
   в System.Web.UI.Control.InitRecursive(Control namingContainer)
   в System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

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

Нравится

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

Интересно то, что после перезапуска пула и приложения при входе на платформу открывается окно конфигурации с сообщением "Сборка конфигурации "Default" не инициализирована". Хотя непосредственно до перезапуска пула и приложения я выполнял генерацию и компиляцию. Последую совету приведенному в этом обсуждении - https://community.terrasoft.ru/questions/sborka-konfiguracii-default-ne-inicializirovana. Выполненные действия не решили проблему. Ошибка так и возникает.

Руслан Хасанов,

Касаемо ошибки, скопируйте sessionId и найдите его в папке логов, там будет подробное описание ошибки, где сразу все станет понятно)

На самом деле в логах я нашел то же самое что и было выведено на страницу:

2018-12-20 15:54:08
Exception Message: Данный ключ отсутствует в словаре.
Exception Type: System.Collections.Generic.KeyNotFoundException
Exception Source: mscorlib

Есть еще одна ошибка, которая возникает ранее, но я не уверен что она связана с той которую я вижу на странице (так как возникла она на 15 минут раньше). Вот предыдущая ошибка:

2018-12-20 15:39:07,732 [BPMonlineQuartzScheduler_Worker-1] ERROR IIS APPPOOL\BPMdevelopment Terrasoft.Core.Scheduler.RunAppJob RunJobExecutor - JobFail [className:Terrasoft.Configuration.RemindingJob, Terrasoft.Configuration, Version=7.12.4.924, Culture=neutral, PublicKeyToken=null, Exception:Terrasoft.Core.InstanceActivationException: Ошибка создания экземпляра класса "Terrasoft.Core.IJobExecutor" ---> System.ArgumentNullException: Значение не может быть неопределенным.
Имя параметра: type
   в System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   в System.Activator.CreateInstance(Type type, Object[] args)
   в Terrasoft.Core.Factories.ClassFactory.GetInstance[T](String fullClassName, ConstructorArgument[] constructorArguments)
   --- Конец трассировки внутреннего стека исключений ---
   в Terrasoft.Core.Factories.ClassFactory.GetInstance[T](String fullClassName, ConstructorArgument[] constructorArguments)
   в Terrasoft.Core.Factories.ClassFactory.ForceGet[T](String fullClassName, ConstructorArgument[] constructorArguments)
   в Terrasoft.Core.Scheduler.RunAppJob.RunJobExecutor(UserConnection userConnection, String className, JobDataMap dataMap, Dictionary`2 predefinedEntries)]]

Хотя в последней строчке предыдущей ошибки в параметре тоже упоминается словарь -Terrasoft.Core.Scheduler.RunAppJob.RunJobExecutor(UserConnection userConnection, String className, JobDataMap dataMap, Dictionary`2 predefinedEntries).

Я в тупике. В чем проблема понять не могу. Кто нибудь сталкивался с подобным?

Проблема решается перезапуском сервера и очисткой redis'а с помощью команды flushall (подойдет если на сервере запущено одно приложение), а лучше flashdb (для конкретной базы, не забудьте предварительно выбрать базу). Полный перечень команд приведен здесь - https://redis.io/commands. Спасибо команде поддержки Террасофт за оказанную помощь.

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

Дорогие, сертифицированные коллеги!

Вопрос по вопросам сертификации:

В чем разница между массовыми и триггерными рассылками?

  1. Массовая рассылка отправляется всем получателям без исключения, триггерная рассылка отправляется только получателям, ответившим на письма массовой рассылки.
  2. Массовые рассылки могут рассылаться в bpm’online независимо от кампаний, тогда как триггерные письма - только в рамках кампаний.
  3. Массовая рассылка генерируется автоматически, триггерная рассылка может отправляться получателям индивидуально.

Немного двоякие ответы получаются:

  1. Массовая - не всем, а только выбранной группе; триггерная - может быть отправлена ответившим на массовую, а может и как-то еще;
  2. Массовые - могут независимо, а триггерный не только в рамках кампаний, но еще и в рамках процессов;
  3. массовая - ну в каком-то роде автоматически, пользователь только шаблон указывает и список участников задает; триггерная - конечно получателям индивидуально, но вроде и массовая тоже получателям индивидуально отправляется

А какие галки ставили вы, отвечая на данный вопрос?

 

Нравится

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

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

В чем суть вопроса?

На Community не представляются ответы по сертификации и подобным тестам, которые проходят в компании. Рекомендуем рассчитывать на свои знания и внимательно читать инструкцию на Академии. Также можете для тестов использовать trial сайты.

Вильшанский Дмитрий пишет: В чем суть вопроса?

Дмитрий, спасибо за ответ!

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

Поэтому хочется так же немного рассчитывать и на сертифицированное сообщество знатоков!

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

Добрый день!

"Ошибка на транспортном уровне при получении результатов с сервера. (provider: Session Provider, error: 19 - Физическое подключение не используется)"

Так же в логах отображается следующая ошибка:

System.Web.HttpUnhandledException (0x80004005): Выдано исключение типа "System.Web.HttpUnhandledException". ---> System.InvalidOperationException: Недопустимая попытка вызвать IsDBNull при закрытом устройстве чтения.
   в System.Data.SqlClient.SqlDataReader.CheckHeaderIsReady(Int32 columnIndex, Boolean permitAsync, String methodName)
   в System.Data.SqlClient.SqlDataReader.IsDBNull(Int32 i)
   в Terrasoft.Common.DBUtilities.GetColumnValue[T](IDataReader source, String columnName)

Кто нибудь сталкивался с данной ошибкой? Как ее решить?

Нравится

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

Такие ошибки часто связаны с подключением к SQL серверу.

Для решения проверьте:

1) запущена ли служба SQL Server. Если запущена, то можно её перестартовать;

2) перестартовать IIS;

3) перезагрузить компьютер, на котором находится сервер.

Если после описанных выше действий проблема не будет решена, то посмотрите в сторону запросов, которые уходят на SQL сервер, когда возникает такая ошибка. Возможно, слишком долго выполняется какой-то запрос и потребуется его оптимизация.

И ещё посмотрите статью.

Такие ошибки часто связаны с подключением к SQL серверу.

Для решения проверьте:

1) запущена ли служба SQL Server. Если запущена, то можно её перестартовать;

2) перестартовать IIS;

3) перезагрузить компьютер, на котором находится сервер.

Если после описанных выше действий проблема не будет решена, то посмотрите в сторону запросов, которые уходят на SQL сервер, когда возникает такая ошибка. Возможно, слишком долго выполняется какой-то запрос и потребуется его оптимизация.

И ещё посмотрите статью.

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

Всем доброго времени суток. Версия 7.12.

Ситуация в целом следующая - нужно добавить кнопку в стандартное окно lookup. Примерно сюда:

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

Где добавляется нашёл, всё в целом понятно - схема LookupPageViewGenerator, функция getSelectionControlsConfig.

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

Нравится

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

Здесь на сайте данный вопрос уже многократно обсуждался. Например, вот этот пост.

Идеально, это реализация собственного окна (наследника от LookupPageViewGenerator) и потом вызовом его в тех местах, где требуется.

Здесь на сайте данный вопрос уже многократно обсуждался. Например, вот этот пост.

Идеально, это реализация собственного окна (наследника от LookupPageViewGenerator) и потом вызовом его в тех местах, где требуется.

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

Добрый день!

Подскажите, пожалуйста, как можно просмотреть идет ли процесс генерации исходного кода. До увеличения таймаута процесс вылетал с ошибкой через 30 минут. После увеличения таймаута, процесс "выполняется" уже более 2-х часов. Боюсь что генерация так же может отвалится по истечении таймаута, но все же есть надежда. Так вот как же посмотреть что генерация исходных кодов все же выполняется. 

Нравится

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

Компиляция не является процессом в понимании BPMN и по ней активности не создаются. Она реализована на уровне ядра. Если у Вас on site и не может скомпилироваться или компилируется слишком долго, то сервер может не вполне соответствовать минимальным системным требованиям.

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

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

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

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

Александр, подскажите, пожалуйста, какие таблицы подразумеваются? Или имеется ввиду одна таблица - SysSchema?

SysSchema, а ещё SysSchemaSource с исходниками схем на C#.

Спасибо большое, Александр!

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

Генерация выполняемого кода по C#-исходникам идёт сторонним компилятором, который запущен в отдельном процессе (в Windows) и может быть виден в «Диспетчере задач». Он может успешно доработать, даже если интерфейс в браузере уже заменился на окно логина из-за неактивности пользователя.

Хорошая новость. IIS у меня развернуто на локальном компьютере. Вижу процесс w3wp.exe. Отдельный найти не могу. Подскажите, пожалуйста, как он может называться.

Это процесс IIS. Запустите компиляцию, может, ещё что-то появится.

Используется стандартный класс CSharpCodeProvider.

Да, и хотел добавить (может кому то тоже пригодится). Информацию о генерации исходного кода можно получить из таблицы SysSchemaSource по полю ModifiedOn. Можно по разнице минимального/максимального значения поля узнать общее время генерации (в моем случае 43 минуты). Таблица SysSchema в моем случае не изменилась, т.е. ее можно не смотреть.

Спасибо, Александр, вы очень выручили.

Да, это процесс VBCSCompiler.exe. Он появляется при компиляции приложения (во время генерации исходного кода его не было). И заметил что процесс уже завершился, а на клиентской части приложения индикатор хода загрузки все еще вертится.

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

Согласен. Пишу свои наблюдения чтобы кому-нибудь пригодилось. Спасибо!

К счастью/сожалению история не закончилась. Скорее всего причиной того что процесс VBCSCompiler.exe завершился а на стороне клиента ход загрузки все еще вертелся было то что у меня вышло предупреждение:

Есть вероятность что при отсутствии ошибок и предупреждений загрузка страницы будет проходить быстрее.

Компиляция судя по логам завершилась:

2018-12-20 14:02:45,173 [59] INFO  IIS APPPOOL\BPMdevelopment Build ExecuteBuildStep - Компиляция сборки запущена
2018-12-20 14:02:47,911 [59] INFO  IIS APPPOOL\BPMdevelopment Build ExecuteBuildStep - Компиляция сборки завершена
2018-12-20 14:02:47,911 [59] WARN  IIS APPPOOL\BPMdevelopment Build Build - Компиляция завершена
2018-12-20 14:02:47,912 [59] INFO  IIS APPPOOL\BPMdevelopment Build LogConsoleMessage - workspaceCompiler.Build finished at 00:01:08.6220681
2018-12-20 14:02:47,912 [59] INFO  IIS APPPOOL\BPMdevelopment Build BuildInternal - Сохранение модулей в базу данных
2018-12-20 14:02:49,096 [59] INFO  IIS APPPOOL\BPMdevelopment Build BuildInternal - Сохранение модулей в базу данных завершено
2018-12-20 14:02:49,096 [59] INFO  IIS APPPOOL\BPMdevelopment Build BuildInternal - Время компиляции: 00:01:09.8072646

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

Вопрос уже не по топику: Что значат эти предупреждения и как они влияют на работу CRM?

 

Предупреждения говорят о «шероховатостях» в коде, которые не мешают его компиляции. На время компиляции они не влияют. Названия схем и номера строк в них, к коду которых возникли претензии у компилятора, есть на скриншоте.

На тестовой среде предупреждения повторились, что очень странно. Я надеялся что предупреждения появляются только в среде для разработки из-за неверной ее настройки. К тому же при обновлении версии с 7.12.3 на 7.12.4, точнее после, я делал генерацию+компиляцию и предупреждения не выводились. А теперь появляются. Хм. Вспомнил, я устанавливал утилиту для загрузки курсов валют. Значит с этим связано (других версий нет). Приходится делать столько изменений что все и не запомнишь. Считаю что обсуждение можно закрыть. Надеюсь кому-нибудь принесет пользу. Александру отдельное огромное спасибо за участие!

Судя по названию схемы «TSC_CB_RF_Entity», дело именно в коде утилиты с курсом валют.

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

Ошибка в Базовой функциональности:

В методе restoreActiveRow в клиентской схеме BaseGridDetailV2 (пакет Nui) происходит попытка записать объект в атрибут ActiveRow, который должен содержать строку идентификатора.

this.set(
 "ActiveRow", 
 {
  value: lastActiveRow,
  scrollPageToActiveRow: true
 }
);



В итоге получаем ошибку "Элемент с ключом [object Object] Не существует "

Воспроизведено на 7.12.4

Нравится

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

Коновалов Игорь,

Коновалов Игорь пишет:

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

Я рекомендую, исходя из своего опыта - насколько подробно бы ты не описывал воспроизведение ошибки, сотрудникам службы поддержки не удается ее воспроизвести.

Поэтому сейчас уже взяла за правило, воспроизведение любой баги платформы нужно снять на видео, ибо, если этого не сделать сразу, то все равно потом нужно будет потратить ещё время и таки снять(((

Коновалов Игорь пишет:

P.s.: Когда же уже появится конкурс "Найди баг в базовой функциональности и получи IPhone."

Такого конкурса не будет - IPhono'в на все баги не хватит wink  

На версии 7.13.1 данный код аналогичен.

А как Вы воспроизводите данную ошибку?

В версии 7.12.4 при сохранении карточки детали карьеры контакта никаких ошибок нет. В коде схемы BaseGridDetailV2 для LastActiveRow указан верный тип:

/**
 * Last active record primary column value.
 */
"LastActiveRow": {
	dataValueType: Terrasoft.DataValueType.GUID
},

 

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

Я открываю на редактирование звонок из детали звонки, потом закрываю. 

Метод restoreActiveRow отрабатывает 2 раза. В перывый раз и происходит ошибка

В том то и дело, что и у LastActiveRow и у ActiveRow  тип Guid, в методе в ActiveRow пытаются записать объект

В методе берётся значение из LastActiveRow:

var lastActiveRow = this.get("LastActiveRow");

 

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

И в ActiveRow записывается значение 

{
  value: lastActiveRow,
  scrollPageToActiveRow: true
 }

Да, так должен записаться Guid. Может, в разделе звонков эту функцию переопределяют.

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

Как я написал в самом начале метод restoreActiveRow определён в клиентской схеме BaseGridDetailV2 (пакет Nui), а не в замещённой схеме

Игорь,

снимите видео с воспроизведением ошибки и отправьте в саппорт.

Пусть разработчики данной функциональности предоставят свои комментарии.

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

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

P.s.: Когда же уже появится конкурс "Найди баг в базовой функциональности и получи IPhone."laugh

Коновалов Игорь,

Коновалов Игорь пишет:

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

Я рекомендую, исходя из своего опыта - насколько подробно бы ты не описывал воспроизведение ошибки, сотрудникам службы поддержки не удается ее воспроизвести.

Поэтому сейчас уже взяла за правило, воспроизведение любой баги платформы нужно снять на видео, ибо, если этого не сделать сразу, то все равно потом нужно будет потратить ещё время и таки снять(((

Коновалов Игорь пишет:

P.s.: Когда же уже появится конкурс "Найди баг в базовой функциональности и получи IPhone."

Такого конкурса не будет - IPhono'в на все баги не хватит wink  

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

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

Всем доброго времени суток. Версия 7.12.

Поля, детали или группы полей на странице можно скрыть - для этого надо указать значение параметра visible в values (к примеру, указать через bindTo привязку к логической колонке).

А можно ли то же самое сделать с вкладкой? Т.е. показывать вкладку на странице Обращения целиком только при определённом значении, к примеру, Сервисной колонки?

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

Информации на странице много, поля разделяются на несколько групп, нужные по сути только для определённых сервисов. Возникла идея вынести их на вкладку.

Нравится

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

См. комментарии тут.

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

Ещё можно попробовать наоборот, изначально сделать без неё, а в коде добавлять.

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