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

Вопрос такой: а существует ли коннектор к MS SCOM и SCCM ?

Кое-где по комьюнити и академии информация про это проскакивает. Но ничего конкретного. 

Нравится

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

Павел, здравствуйте!

В базовой версии такой возможности нет.

Мы зафиксируем пожелание для рассмотрения департаментом разработки.

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

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

Подскажите может я не так делаю что.

При изменении значения получаю ошибку в консоли:

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

 

define("ContactPageV2", [], function() {
	return {
		entitySchemaName: "Contact",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		attributes: {
			"UsrContactLoyality": {
				"dataValueType": Terrasoft.DataValueType.LOOKUP,
				"dependencies": [
					{
						"columns": ["UsrIsKeyContact"],
						"methodName": "IsKeyContact"
					}
				]
			}
		},
		modules: /**SCHEMA_MODULES*/{
			IsKeyContact: function() {
				var isKeyContact = this.get("UsrIsKeyContact");
				this.log(isKeyContact);
			}
 
		}/**SCHEMA_MODULES*/,
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "merge",
				"name": "PhotoTimeZoneContainer",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 0
					}
				}
			},
			{
				"operation": "merge",
				"name": "AccountName",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 1
					}
				}
			},
			{
				"operation": "merge",
				"name": "JobTitleProfile",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 2
					}
				}
			},
			{
				"operation": "merge",
				"name": "AccountMobilePhone",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 3
					}
				}
			},
			{
				"operation": "merge",
				"name": "AccountPhone",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 4
					}
				}
			},
			{
				"operation": "merge",
				"name": "AccountEmail",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 5
					}
				}
			},
			{
				"operation": "merge",
				"name": "Type",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 0
					}
				}
			},
			{
				"operation": "merge",
				"name": "Owner",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 12,
						"row": 0
					}
				}
			},
			{
				"operation": "merge",
				"name": "SalutationType",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 1
					}
				}
			},
			{
				"operation": "merge",
				"name": "Gender",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 12,
						"row": 1
					}
				}
			},
			{
				"operation": "merge",
				"name": "Language",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 12,
						"row": 2
					}
				}
			},
			{
				"operation": "insert",
				"name": "GeneralInfoTabGroup226c48fc",
				"values": {
					"caption": {
						"bindTo": "Resources.Strings.GeneralInfoTabGroup226c48fcGroupCaption"
					},
					"itemType": 15,
					"markerValue": "added-group",
					"items": []
				},
				"parentName": "GeneralInfoTab",
				"propertyName": "items",
				"index": 5
			},
			{
				"operation": "insert",
				"name": "GeneralInfoTabGridLayout1e39f378",
				"values": {
					"itemType": 0,
					"items": []
				},
				"parentName": "GeneralInfoTabGroup226c48fc",
				"propertyName": "items",
				"index": 0
			},
			{
				"operation": "insert",
				"name": "UsrIsKeyContactb6f672ab-d08b-41ef-9f88-33af0ac7f901",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 0,
						"layoutName": "GeneralInfoTabGridLayout1e39f378"
					},
					"bindTo": "UsrIsKeyContact"
				},
				"parentName": "GeneralInfoTabGridLayout1e39f378",
				"propertyName": "items",
				"index": 0
			},
			{
				"operation": "insert",
				"name": "UsrContactLoyalityd61aa5f3-dda2-413b-8e76-ea6a0cc95c03",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 12,
						"row": 0,
						"layoutName": "GeneralInfoTabGridLayout1e39f378"
					},
					"bindTo": "UsrContactLoyality"
				},
				"parentName": "GeneralInfoTabGridLayout1e39f378",
				"propertyName": "items",
				"index": 1
			},
			{
				"operation": "merge",
				"name": "Job",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 0
					}
				}
			},
			{
				"operation": "merge",
				"name": "JobTitle",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 12,
						"row": 0
					}
				}
			},
			{
				"operation": "merge",
				"name": "Department",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 1
					}
				}
			},
			{
				"operation": "merge",
				"name": "DecisionRole",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 12,
						"row": 1
					}
				}
			}
		]/**SCHEMA_DIFF*/,
		methods: {},
		rules: {},
		businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/
	};
});

 

Нравится

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

Добрый день

У вас метод IsKeyContact находится в секции modules, а должен в methods

Артем Гура,

И правда, спасибо большое.

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

Друзья, а как изменить название AccountProfile в Лиде с "Контрагент" на "Компания", например?

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

Нравится

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

Это можно сделать в переводах! Находите в переводах значение "контрагент" и меняете на "компания"

Дарина,

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

Lead:Columns.QualifiedAccount.Caption. Еще раз спасибо.

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

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

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

После этого необходимо Опубликовать объект, сохранить и выполнить очистку кеша браузера.

Более детально об этом можно прочитать на академии Террасофт -

https://academy.terrasoft.ru/documents/technic-sdk/7-11/razdel-konfigur…

https://academy.terrasoft.ru/documents/technic-sdk/7-11/sozdanie-shemy-…

https://academy.terrasoft.ru/documents/technic-sdk/7-11/sozdanie-shemy-…

 

Благодарю за совет.

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

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

Нравится

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

В базе эта информация хранится в таблице SysUserSession. Можно написать Select по датам начала и конца. Id пользователя — в колонке SysUserId.

Через интерфейс получается нельзя? 

Т.е отчет просто так не построить?

Если в настройке отчёта можно выбрать эту таблицу, то можно, скорее всего.

А ещё в системе есть Журнал аудита, там можно записывать в том числе и заходы, неуспешные попытки захода и завершение сессий.

Журнал аудита пуст, так и должно быть? Фильтры отключены

Да, его нужно включить. В статье описано, как.

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

Добрый день, ситуация такова: в разделе "лиды" есть 2 страницы для редактирования. На одной из них присутствуют AccountProfile и ContactProfile. Нужно добавить их и на другую страницу, скажите пожалуйста можно ли это сделать и как?

Нравится

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

Добрый день, Вячеслав!

Когда в мастере разделов вы добавили еще одну страницу редактирования, она была сгенерирована и добавленна в конфигурацию.

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

Пример добавления AccountProfile на страницу ContactPageV2.

define("ContactPageV2", ["BaseFiltersGenerateModule", "BusinessRuleModule", "ContactPageV2Resources",           
"ConfigurationConstants", "ContactCareer", "DuplicatesSearchUtilitiesV2"], 
function (BaseFiltersGenerateModule, BusinessRuleModule, resources, ConfigurationConstants, ContactCareer) {    
	return {        
		entitySchemaName: "Contact",        
		// Используемые модули.          
		modules: /**SCHEMA_MODULES*/{            
			// Модуль профиля контрагента.            
			"AccountProfile": {                
				// Конфигурация профиля.                
				"config": {                    
					// Название схемы.                    
					"schemaName": "AccountProfileSchema",                    
					// Признак, сообщающий о том, что конфигурация схемы проинициализирована.                    
					"isSchemaConfigInitialized": true,                   
					// Признак, сообщающий о том, что не используется HistoryState.                    
					"useHistoryState": false,                    
					// Параметры профиля.                    
					"parameters": {                       
						// Конфигурация модели представления.                        
						"viewModelConfig": {                            
							// Название колонки связанной сущности.                            
							masterColumnName: "Account"                        
 
						}                    
 
					}                
 
				}            
 
			}        
 
		}/**SCHEMA_MODULES*/,
		// Массив модификаций.        
		diff: /**SCHEMA_DIFF*/[            
			{                
				"operation": "insert",                
				"parentName": "LeftModulesContainer",                
				"propertyName": "items",               
				// Название профиля.                
				"name": "AccountProfile",                
				// Значения.                
				"values": {                  
					// Тип элемента — модуль.                    
					"itemType": Terrasoft.ViewItemType.MODULE              
					}           
					}    
					]/**SCHEMA_DIFF*/    
 
	}; 
 
});

 

Также Вы можете открыть в конфигурации LeadPageV2 и ознакомиться с реализацией добавления AccountProfile и ContactProfile.

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

Как открыть карточку? например существующей записи из раздела или детали? Если это новая запись и некоторые поля нужно предзаполнить?

Я нашел только такой пример:

var defaultValues = [];

                defaultValues.push({

                    name: "UsrTotalAmountLotRR",

                    value: 0

                });

                this.sandbox.publish("OpenCard", {

                    moduleId: "SectionModuleV2_edit_Usrtenders1Section_CardModuleV2_detail_UsrSchema15Detaild4b8" +

                        "30e8UsrCommercialPartInTenderUsrUsrCommercialPartInTender1Page00000000-0000-0000-0000-000000000000",

                    schemaName: "UsrUsrCommercialPartInTender1Page",

                    operation: enums.CardStateV2.ADD,

                    id: recordId,

                    defaultValues: defaultValues

                }, [this.sandbox.id]);

Но поле UsrTotalAmountLotRR - пустое

Нравится

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

Добрый день

Попробуйте отладить this.sandbox.publish и посмореть как используется defaultValues. Можете сразу посмотреть в BaseSchemaViewModule в методе openCardInChain, проследив цепочку

Если просто открыть то так:

this.openCardInChain({

                        id: message2,

                        schemaName: "InvoicePageV2",

                        operation: enums.CardStateV2.EDIT,

                        moduleId: "SectionModuleV2_edit_OrderSectionV2_CardModuleV2_detail_InvoiceInvoiceInvoicePageV200000000-0000-0000-0000-000000000000"

                    });

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

Мною была создана деталь по это инструкции: https://academy.terrasoft.ru/documents/technic-sdk/7-10/sozdanie-detali-s-redaktiruemym-reestrom

 

С помощью SQL запроса деталь была зарегистрирована. И затем добавлена на вкладку [Доставка] страницы заказа, через мастер.  По полям Колонка детали: запрос и колонка объекта: id.

В схему детали был добавлен код:

        attributes: {            
            "UsrOrder": {
                dependencies: [
                    {
                        columns: ["UsrOrder"],
                        methodName: "calculateBalance"
                    }
                ]
            }
        },
 
        methods: {
            calculateBalance: function() {
                var param1 = this.get("UsrOrder");
console.log(param1);
            }
        },

 

В результате метод  calculateBalance не срабатывает.

Как реализовать отлов события изменения значения колонки и изменение соседних колонок в методе сработавшим на изменение.

Нравится

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

У меня абсолютно такой же способ срабатывает. Вы компилировали конфигурацию после регистрации страницы через sql?

Варфоломеев Данила,  полностью перекомпилировал конфигурацию, не помогло. А так же не знаю, плохо ли, такая ошибка после нажатия на кнопку обновить выбранные в базе данных: Не удалось обновить структуру для схем: UsrCourierServiceDetail ....   

Такой вопрос, нужно ли, где-либо прописывать bindTo на атрибут, может поэтому событие не происходит?

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

Привет

Внимательно разберитесь с примером https://academy.terrasoft.ru/documents/technic-sdk/7-10/dobavlenie-vych…

Вы пытаетесь использовать вычисляемый атрибут, который пересчитывается с помощью метода calculateBalance при изменении колонки UsrOrder. А так как колонка детали UsrOrder никогда  не меняется после создания, то и метод не вызывается :)

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

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

Коллеги, очень прошу помочь. 

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

Прочитала очень много материала на сайте академии. Прошу не рекомендовать ссылки, так как ссылок у меня много :). Все аккуратно прочитаны и проработаны. Что получается.

1. В управлении конфигурацией выбираем область "Пакеты" и создаем новый пакет.

затем в карточке пакета прописываем зависимости(зависимые пакеты), не забывая пакету Custom прописать "зависит от пакета" наш новый пакет.

 

Затем нам необходимо изменить значения в системных настройках

1) Настройка  "Префикс названия объекта" - пишем новые три латинские буквы. 

2) Настройка "Идентификатор пользовательского пакета". Тут я не уверена, надо ли прописывать наш новый пакет

3) и, наконец, "Текущий пакет" - вписываем название нашего нового пакета.

Спасибо всем тем, кто ответит.

Версионность не отслеживаем. SVN не используем. Изменения вносит один Пользователь, чтобы создать gz-архив.

Нравится

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

Добрый день!

Идентификатор пользовательского пакета для этого и предназначен!

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

Если доработка ведется с помощью пользовательского функционала в системе (мастер раздела/деталей), то все изменения будут сохраняться в пакет, который указан в системной настройке "Текущий пакет".

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

Алгоритм создания пользовательского пакета Вы написали правильный.

Если у Вас возникнут сложности/система будет некорректно сохранять доработки/другие вопросы, напишите нам на support@terrasoft.ru и опишите, пожалуйста, конкретный кейс, который у Вас возникнет.

Дополнение. Информация касательно системной настройки [Идентификатор пользовательского пакета] есть на Академии:

"Технически пользовательский пакет можно сделать корневым при помощи системной настройки [Идентификатор пользовательского пакета] (CustomPackageUId). Однако добавить в его зависимости предустановленные пакеты (в том числе и пакет [Custom]) можно только в том случае, если разработка ведется без использования SVN.

Устанавливать вместо пакета [Custom] любой другой пакет в качестве корневого крайне не рекомендуется!"

https://academy.terrasoft.ru/documents/technic-sdk/7-10/paket-custom

Юлия, спасибо большое. Т.е. технически я могу  при помощи системной настройки [Идентификатор пользовательского пакета] сделать свой новый пакет корневым. Но Террасофт это крайне не рекомендует?

Одеяненко Юлия пишет:

Устанавливать вместо пакета [Custom] любой другой пакет в качестве корневого крайне не рекомендуется!"

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

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

Добрый день.

Хотел задать вопрос по поводу создания нового рабочего пространства. В документации написано, что для создания нового рабочего пространства необходимо в настройках IIS добавить в веб-сайт новое приложение WebApp указав в качестве псевдонима следующий порядковый номер, оставив при этом все остальные настройки такими же как и для рабочего пространства 0. Правильно ли я понимаю, что физически на диске будет одна папка Terrasoft.WebApp, и с этой одной папкой, в случае нескольких рабочих пространств, будет работать несколько приложений IIS? Или же надо делать на диске копии папки Terrasoft.WebApp и создавать в IIS приложения, каждое из которых работает со своей папкой?

Заранее спасибо за ответ.  

Нравится

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

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

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

Это функционал является устаревшим и постепенно выводится из приложения.

Большое спасибо за ответ.

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

Всем привет, буду признателен за помощь

Имеем :AccountSection, задача модифицировать записи и обновить их отображение на странице

Вопрос:

1)Как получить доступ к результатирующей коллекции, которая формирует записи в реестре? (синтаксис)

2) Как удалить(коллекция.clear?)

3) Как обновить реестр?

Нравится

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

1) перехватывать на этапе загрузки можно в методе updateLoadedGridData. this.getGridData() вернёт коллекцию, если всё уже загружено

2) this.getGridData().clear()

3) this.reloadGridData()

Если прям совсем интересно, загляните в GridUtilitiesV2, там куча других полезных(и не очень) методов

Варфоломеев Данила,

Спасибо огромное!!!

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