Есть кейс, на первой стадии пользователю надо заполнить несколько полей, для полей созданы бизнес-правила по типу Если Стадия = Стадия 1, то Поле 1 обязательно к заполнению. Если не заполнить поле и попробовать сохранить кейс - правило сработает, покажет ошибку и не позволит сохранить кейс. Но пользователь может просто нажать на следующую стадию, тогда появится ошибка о незполненном поле, но кейс всё равно перейдёт на вторую стадию и будет сохранён.

Задача в том, чтобы не позволять так обходить требование заполнять поля. Пока вижу это так: в момент перехода по стадиям (может, в методе OnSaved) проверять заполнены ли поля, и если не заполнены - не позволять менять стадию.

Какой лучший(или рекомендуемый) способ выполнения этой задачи ? Описанный вариант с методом OnSaved подойдёт ?

Нравится

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

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

Для этого:

  • создать атрибуты для обязательности полей
  • использовать в бизнес-правилах сравнение не поля Стадия, а атрибутов
  • создать метод вычисления атрибутов в зависимости от стадии
  • в onDiscardChangesClick (если пользователь нажмёт Cancel) снова вызываем метод обновления атрибутов
Показать все комментарии

Доброго времени суток!

Как изменить стартовую стадию лида? То есть: сейчас при создании нового лида, стадия =  "Квалификация", а нужно "Новый лид". Где находится реализация данного функционала и как это изменить?

Нравится

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

Нравится

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

Насколько помню эти настройки автоматом пишутся в пакет. В разделе схемы будет схема типа DcmSchemaManager с заголовком у вас "Продажи", в разделе данные пишутся данных двух таблиц SysDcmSettings, SysDcmSchemaInSettings. Выгружаем и переносим пакет. Все просто, по крайней мере у меня не было ни разу сложностей с переносом кейсов. Пакет берется из настройки CurrentPackageId или изменения пишутся сразу в этот кейс, если он уже кастомный. Начиная 7.17 есть возможность сохранять отдельно новую версию кейса, но пока сам не тестировал.

Насколько помню эти настройки автоматом пишутся в пакет. В разделе схемы будет схема типа DcmSchemaManager с заголовком у вас "Продажи", в разделе данные пишутся данных двух таблиц SysDcmSettings, SysDcmSchemaInSettings. Выгружаем и переносим пакет. Все просто, по крайней мере у меня не было ни разу сложностей с переносом кейсов. Пакет берется из настройки CurrentPackageId или изменения пишутся сразу в этот кейс, если он уже кастомный. Начиная 7.17 есть возможность сохранять отдельно новую версию кейса, но пока сам не тестировал.

Александр, конкретно интересующая информация о связях стадий хранится не в тех таблицах, в метаданных схемы, в параметре ParentStageUId. Например, для стадий продажи в схеме OpportunityCase:

\n        {\r
\n          \"BL1\": \"Terrasoft.Core.DcmProcess.DcmSchemaStage\",\r
\n          \"UId\": \"a5bf6b99-4c8c-4922-8f78-743d2b94b5da\",\r
\n          \"A2\": \"Stage5\",\r
\n          \"A3\": \"296e261b-5dae-4102-b030-ac84ae63fe2a\",\r
\n          \"A4\": \"296e261b-5dae-4102-b030-ac84ae63fe2a\",\r
\n          \"A5\": \"b89bc79a-381e-4e10-9661-05e0e85cb739\",\r
\n          \"Color\": \"#8ecb60\",\r
\n          \"StageRecordId\": \"60d5310c-5be6-df11-971b-001d60e938c6\",\r
\n          \"Elements\": []\r
\n        },\r
\n        {\r
\n          \"BL1\": \"Terrasoft.Core.DcmProcess.DcmSchemaStage\",\r
\n          \"UId\": \"b223ff36-a772-4903-9c1e-b31e88b32526\",\r
\n          \"A2\": \"Stage4\",\r
\n          \"A3\": \"296e261b-5dae-4102-b030-ac84ae63fe2a\",\r
\n          \"A4\": \"296e261b-5dae-4102-b030-ac84ae63fe2a\",\r
\n          \"A5\": \"b89bc79a-381e-4e10-9661-05e0e85cb739\",\r
\n          \"ParentStageUId\": \"a5bf6b99-4c8c-4922-8f78-743d2b94b5da\",\r
\n          \"Color\": \"#ef7e63\",\r
\n          \"StageRecordId\": \"a9aafdfe-2242-4f42-8cd5-2ae3b9556d79\",\r
\n          \"Elements\": [],\r
\n          \"IsSuccessful\": false\r
\n        }\r

А узнать, что за стадии, можно там же ниже:

    {
      "Culture": "ru-RU",
      "ResourceType": "String",
      "Key": "Stages.Stage4.Caption",
      "Value": "Завершена с проигрышем",
      "ImageData": ""
    },
    {
      "Culture": "ru-RU",
      "ResourceType": "String",
      "Key": "Stages.Stage5.Caption",
      "Value": "Завершена с победой",
      "ImageData": ""
    },

 

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

Как можно отключить добавление детали, если это не проект?
То есть, чтобы данная деталь добавлялась только для проектов.

Нравится

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

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

Суть я понял. А конкретно на какое событие?
На onSelection DataGrid wnd_ProjectGridArea?
А из этого окна есть доступ к свойствам закладок деталей?

в разделе на событие dlProjectOnDatasetAfterPositionChange

Есть, например, pgXDetail.IsVisible = (TypeID == ProjectTypeID).

Спасибо разобрался.

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