Добрый день!
 

Был ли у кого-то опыт отображения конструктора процесса в карточке объекта?

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

 

В стиле того, как это сделано в "кампаниях" продукта маркетинг

Нравится

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

Вадим, добрый день!

Чисто технически возможно реализовать что-то подобное на схему кампании, однако, для этого необходимо большое  количество трудозатрат. Наподоби вкладки "Обработка" в обращениях, "Схема кампании" является уникальным функционалом для раздела. Для его повторение необходимы навыки разработки, системой не предусмотрено повторение такого пользовательскими средствами. Если же вы всёже желаете это реализовать, то необходимо будет проанализировать содержимое пакетов Campaigns, CampaignDesigner, CampaignElements и тд.

Помимо этого, в разделе "Кампании" реализован не совсем бизнес-процесс, а немного другой элемент, в связи с этим, реализовать именно бп подобным образом может быть даже сложнее.

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

Добрый день!

Хотелось бы узнать, возможно ли отключить кеширование данных для конкретного раздела(схемы)?

Например: мне нужно сбрасывать сортировку всех столбцов после перезагрузки раздела, однако, в данный момент вся сортировка сохраняется в кеше, возможно ли как-то решить данный вопрос?

Вот пример сортировки которая должна сбрасываться при обновлении страницы:

MyFunc: function() {
	return {
              "ModifiedOn": {path: "ModifiedOn", 
                  orderPosition: 0, 
                  orderDirection: Terrasoft.OrderDirection.DESC 
              }
	};
}

Нравится

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

Это сохраняется не в кеше, а в профиле пользователя.
Сохраняет метод setColumnsProfile в GridUtilitiesV2:
 

setColumnsProfile: function(viewColumnsSettingsProfile, notSaveToProfile) {
			const profile = this.get("Profile");
			if (notSaveToProfile !== true) {
				const gridName = this.getDataGridName();
				if (profile[gridName]) {
					const profileKey = profile[gridName].key;
					Terrasoft.utils.saveUserProfile(profileKey, viewColumnsSettingsProfile, false);
				}
			}
			this.set("Profile", viewColumnsSettingsProfile);
		},

Нужно просто на схеме раздела заместить данный метод, чтобы он ничего не делал:

setColumnsProfile: Terrasoft.emptyFn

 

Это сохраняется не в кеше, а в профиле пользователя.
Сохраняет метод setColumnsProfile в GridUtilitiesV2:
 

setColumnsProfile: function(viewColumnsSettingsProfile, notSaveToProfile) {
			const profile = this.get("Profile");
			if (notSaveToProfile !== true) {
				const gridName = this.getDataGridName();
				if (profile[gridName]) {
					const profileKey = profile[gridName].key;
					Terrasoft.utils.saveUserProfile(profileKey, viewColumnsSettingsProfile, false);
				}
			}
			this.set("Profile", viewColumnsSettingsProfile);
		},

Нужно просто на схеме раздела заместить данный метод, чтобы он ничего не делал:

setColumnsProfile: Terrasoft.emptyFn

 

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

Благодарю Владислав, да, это то что нужно. Переопределил метод без логики сохранения и всё заработало. Спасибо ещё раз!

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

Доброго дня!

 

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

 

Есть предположение, что нужно как-то грамотно организовать колбэки с this.reloadGridData(), но никак не выходит. Может кто сталкивался с подобным кейсом

 

Исходный код прилагаю.

addRecord: function(typeColumnValue) {
    var config = {
	    recordId: Terrasoft.GUID_EMPTY,
		operation: Terrasoft.ConfigurationEnums.CardOperation.ADD,
		entitySchemaName: "Account",
		valuePairs: this.getAddMiniPageDefaultValues(),
		miniPageSchemaName: "AccountMiniPage",
	};
    this.openMiniPage(config);
},
 
getAddMiniPageDefaultValues: function() {
    var defaultValues = [];
    defaultValues.push({
        name: "Parent", 
        value: this.get("MasterRecordId")
    });
	defaultValues.push({
	    name: "Category",
		value: "dc199b6d-e948-4598-8a12-c38ca90428d8"
	});
	return defaultValues;
}

Благодарю за ваши ответы

Нравится

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

Вадим, добрый день

У вас деталь - это один модуль, а миникарточка - другой. Единственный вариант общения между модулями - это сообщения. И да, при  работе с этой миникарточкой вы всегда будете отправлять сообщение, а вот реагировать на него будет деталь только в том случае, если этот модуль сейчас загружен в системе (фактически, если он отображается на экране)

Вадим, добрый день.

 

Попробуйте реализовать нужный Вам функционал через обмен сообщениями песочницы. Более подробно об этом можно почитать в статье на Академии.

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

Спасибо за ответ! Однако реализация не совсем очевидна. Неужели для реализации этого кейса придется постоянно публиковать сообщение со стороны добавляемого объекта для обновления детали? Учитывая то, что добавляемый объект, помимо детали, может создаваться и из других мест

Вадим, добрый день

У вас деталь - это один модуль, а миникарточка - другой. Единственный вариант общения между модулями - это сообщения. И да, при  работе с этой миникарточкой вы всегда будете отправлять сообщение, а вот реагировать на него будет деталь только в том случае, если этот модуль сейчас загружен в системе (фактически, если он отображается на экране)

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

Исходные данные:
1. Страница редактирования продукта ( ProductBase )
2. Схема страницы "Продукты" (Пакет 1)
3. Схема страницы "Продукты" (Пакет 2)
"Пакет 2" зависит от "Пакет 1".
Вопросы:
1. Как правильно создать "3. Схема страницы "Продукты" (Пакет 2)", чтобы видеть все изменения из "2. Схема страницы "Продукты" (Пакет 1)" и из "1. Страница редактирования продукта ( ProductBase )"?
2. Как корректно изменить родителя в "3. Схема страницы "Продукты" (Пакет 2)"?
Изменение поля "Parent.UId" файла "ProductPageV2\descriptor.json" не дало нужный результат.

Нравится

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

Если у Вас зависимости " 1. Страница редактирования продукта ( ProductBase ) " -> " 2. Схема страницы "Продукты" (Пакет 1) " -> " 3. Схема страницы "Продукты" (Пакет 2) ", тогда в " 3. Схема страницы "Продукты" (Пакет 2) " будете видеть все изменения пакетов выше.

2. Изменить родителя лучше через графический интерфейс конфигуратотра, зайдите в модуль и там измените родительский модуль.

Если у Вас зависимости " 1. Страница редактирования продукта ( ProductBase ) " -> " 2. Схема страницы "Продукты" (Пакет 1) " -> " 3. Схема страницы "Продукты" (Пакет 2) ", тогда в " 3. Схема страницы "Продукты" (Пакет 2) " будете видеть все изменения пакетов выше.

2. Изменить родителя лучше через графический интерфейс конфигуратотра, зайдите в модуль и там измените родительский модуль.

Александр Тыра,

Нет доступа к редактированию поля "Родительский объект".

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

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

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

Версия 7.11.3

Суть проблемы:

1) Подключили SVN.

2) Создали свой пакет. Пакет привязан к SVN

3) Создали раздел через мастер раздела. Создались автоматически схемы

https://www.screencast.com/t/Q5QGRbjj

4) Зафиксировали пакет в SVN - успешно

 

Проблема:

После фиксации в SVN схема на скриншоте

https://www.screencast.com/t/B8UYl1aZg

оказалась заблокированной

 

Что пробовали сделать:

1) Компиляция всего

2) Обновление БД

3) Генерация исходных кодов всего

4) Удаление Схемы и обновление пакета из SVN

5) Восстановление конфигурации из хранилища

6) Разблокировка пакета SQL сценарием 

https://www.screencast.com/t/AJjjnyf8C

https://www.screencast.com/t/0dWvpqJsod

7) Повторная и фиксация и обновление из SVN

8) Очистка кеша Redis

 

Все перечисленные выше действия не помогли

Другие схемы и объекты пакета не заблокированы. Проблема возникает только с конкретной схемой

Подскажите, пожалуйста, в чём может быть проблема и как это вылечить?

Нравится

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

Если дело именно в блокировке схемы, то можете попробовать через TortoiseSVN снять блокировку. А так судя по ошибке на скрине это не похоже на блокировку. 

Миннекаев Айдар,

Айдар, Если бы был лок в SVN, он не давал бы закоммитить повторно =)

На всякий случай проверили 

https://www.screencast.com/t/IpuwnUUa 

Блокировки нет

Если это не блокировка, то в чём может быть проблема? Буду благодарен за идеи!

В SysSchema вроде тоже всё в порядке.. 

 

Разблокировка пакета SQL сценарием 

2019-07-02_1705.png (195×91)

В поле Maintainer должно быть указано то значение, которое стоит в системной настройке «Издатель» (Maintainer). Проверьте, точно ли у Вас там сейчас «Customer».

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

Ситуация следующая: есть бизнес-процесс, который срабатывает при создании обращений или изменении любого поля. Я создал на его основе новую версию и сделал ее актуальной, чуть позже удалил ее за ненадобностью через конфигурацию.

Теперь, как я понимаю, при изменении обращения система пытается запустить новую версию процесса.

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

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

Пытался скомпилировать все объекты в конфигурации, что-бы обновились схемы - не помогло.

Ближайшая подобная тема: https://community.terrasoft.ru/articles/v-processe-polucenia-sistemnyh-… (sql запрос не дал результатов);

 

UPD. Решение оказалось проще, чем я думал - нужно еще раз создать бизнес-процесс, заменить актуальную версию на базовый процесс и потом удалить дочерний.

Нравится

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

Добрый день.

для того чтобы вам Отследить какой Бизнес-процесс запускается и что с ним происходит советую вам Воспользоваться "Журналом бизнес-процессов" по времени Сохранения Обращения найти все БП что исполнялись в данный период времени, найти БП что отработал с ошибкой, и посмотреть на каком Элементе БП остановился процесс и посмотреть ошибку. 

Журнал бизнес-процессов это позволяет сделать.

Добрый день.

для того чтобы вам Отследить какой Бизнес-процесс запускается и что с ним происходит советую вам Воспользоваться "Журналом бизнес-процессов" по времени Сохранения Обращения найти все БП что исполнялись в данный период времени, найти БП что отработал с ошибкой, и посмотреть на каком Элементе БП остановился процесс и посмотреть ошибку. 

Журнал бизнес-процессов это позволяет сделать.

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

Здравствуйте,
Всплывает ошибка при загрузке мастера редактирования карточки:

file: undefined
line: undefined
column: undefined
message: Элемент с ключом 33e46153-d870-42af-a250-8d8a9ecae940 Не существует 
 date: Thu Nov 15 2018 16:02:43 GMT+0500 (Екатеринбург, стандартное время)
moduleId: undefined
moduleName: undefined

Пишет что id не найден, смотрел в БД, таблицу SysSchema там реально этого UId нету, но зато есть эта карточка но с другим Id
Почему так могло произойти ? И как это можно исправить ?

Нравится

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

Уточните, возникают ли какие-то ошибки в консоли просто при открытии этой карточки редактирования?

Возможно, что-то не перенеслось, если эти карточки переносили на основной сайт с базы разработки. 

Попробуйте сравнивать наполнение системных таблиц, связанных с разделами (вроде SysModule, SysModuleEdit и т.д.) для этого и для нормально работающего разделов. Либо произведите автоматический поиск по всем полям всех таблиц базы, чтобы найти, где именно записан этот ID 33e46153-d870-42af-a250-8d8a9ecae940.

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

Привет всем !
Возник такой вопрос, как сделать модальное окно с нужными полями и чекбоксами ?
нужно что то вроде:
Ответственному - (Логический тип), Время - (Дата/Время) 

Нашёл различные статьи, но там написано как сделать просто окно или вообще что то другое или вообще не чего, вообщем всё не то.
Я так понимаю нужно сделать что то вроде ModalBox после чего передать параметры поля размер и т.д . Но как это сделать не знаю.
Если кто знает подскажите.

Нравится

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

Тут расписано как создать окно, в нем добавляете нужные вам атрибуты (столбцы) и задаете в diff их прорисовку.

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

Тут расписано как создать окно, в нем добавляете нужные вам атрибуты (столбцы) и задаете в diff их прорисовку.

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

Григорий Чех,

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

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

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

Добрый день, коллеги! Я думаю, что начинающим разработчикам этот пост пригодится.

По мотивам поста 2013 года, который нашелся в поиске по тексту ошибки.

https://community.terrasoft.ua/questions/osibka-pri-publikacii

Возникла проблема не точно такая же, но с аналогичным текстом ошибки: после изменения схемы, а именно небезопасного изменения\удаления поля из схемы, возникла ошибка: "У действия по проверке наличия в колонке Имя_колонки в схеме Имя_схемы условия обязательности не выбрано действие для исправления". Возврат к предыдущему состоянию схемы и выполнение требований изменить условие обязательности не помогли. Такая ошибка возникла на колонке, в котором уже были значения.

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

1) Скопировать через update в другое поле значение проблемной колонки. Или выгрузить в excel пары Отображаемое значение-значение проблемной колонки для последующего импорта.

2) Очистить значения колонки во всех строках через update. Удалить из схемы проблемную колонку. Сохранить схему. Опубликовать схему.

3)  Добавить в схему идентичную колонку (лучше с другим кодом колонки)

4) Опубликовать схему

5) Скопировать через update\импортировать сохраненные данные колонки.

Как не допустить такую ситуацию?

1) Если не обходимо изменить поле на уровне БД, в котором уже есть значения, то:

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

б) Воспользоваться алгоритмом выше не дожидаясь появления ошибок. 

Если есть дополнения\возражения, прошу в комментарии. Спасибо.

Нравится

Поделиться

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

Добрый день, Подскажите пожалуйста как сделать страницу где можно настроить фильтры для отчета как на скриншотах ?
Мне нужно сделать отчет с отфильтрованными данными

 

 

Нравится

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

Такие отчёты привязываются к разделу записями в SysModuleAnalyticsReport, где в полях указаны Id схемы отчёта и схемы его параметров. Для этого отчёта окно параметров задаётся в ContactAnniversariesReportFilter.

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

Спасибо, я разобрался и сделал такую же страницу в разделе котором мне нужно.

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