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

Ситуация следующая:

Есть раздел "Исполнители", в котором необходимо сформировать файл word, содержащий поля объекта "Пункт отправления".

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

При настройке печатной формы добавляю объект как табличную часть. Колонку объекта описываю следующим образом:

Пункт погрузки.[Загрузки заявки:Загрузка].Исполнители (колонка "Исполнители": Id)

При формировании отчета - ошибки нет, но и данные не подтягиваются в word.

Вопрос: Что не так? И вообще корректно ли здесь таким образом прописывать путь к колонке?
Спасибо.

Нравится

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

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

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

Спасибо за отзыв!

Развязочная таблица есть. Это "Загрузки заявки".
В данной интерпретации проблема не решена, но мы решили задачу упрощением архитектуры.
Так что вопрос не актуален. Спасибо!

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

Добрый день.
Необходимо для нового раздела с тремя типами записей добавить для каждого типа мини-страницу.
Делаю по инструкции: https://academy.terrasoft.ru/documents/technic-sdk/7-8-0/sozdanie-mini-k...
Создал "Схему модели представления карточки". Унаследовался от BaseMiniPage.
Для каждой страницы редактирования раздела в SysModuleEdit добавил значение MiniPageSchemaUId
Добавил модуль со стилями.
В итоге при добавлении записи открывается стандартная страница редактирования.

Подскажите, что не так?

Нравится

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

[quote="Мария Ватулина"]Вот аналогичная тема - http://www.community.terrasoft.ru/forum/topic/16310[/quote]

Мария, спасибо, но в этой теме ответа на мой вопрос не получил.
Меня интересует именно вызов разных мини-страниц в зависимости от выбранного типа в списке при нажатии на кнопку "Добавить".
Кстати, раньше в разделе "Активности" был выбор типа новой записи (при нажатии на "Добавить" в реестре), сейчас этого выбора нет (только "Добавить задачу"). Но что делать, если содержание мини-страниц должно формироваться в зависимости от типа?

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

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

Игорь, статья в Академии
https://academy.terrasoft.ru/documents/technic-sdk/7-8-0/sozdanie-mini-…
описывает создание мини-карточки, которая появляется при наведении курсора на ссылку на запись раздела. В примере это запись раздела "База знаний".
Но это не тот тип миникарточки, который появляется при создании новой записи раздела

Встречный вопрос, как привязать к кнопке "Добавить" мини-карточку вместо обычной?
Смотрю ActivitySectionV2, но признаков открытия minPage кроме как вызова метода this.openAddMiniPage в методе onSelectionKeyPress не нашёл, однако при нажатии на Добавить задачу debugger в этот метод не заходит.

Точной последовательности создания миникарточки, к сожалению, Вам сказать не могу пока.
Однако, укажу откуда начать
посмотрите следующий метод в BaseSectionV2
addRecord: function(typeColumnValue) {
...
if (this.hasAddMiniPage(typeColumnValue)) {
this.openAddMiniPage({
entitySchemaName: this.entitySchemaName,
valuePairs: this.getAddMiniPageDefaultValues(typeColumnValue)
});
} else {
this.openCardInChain({...
}
При создании записи в разделе, если к нему привязана миникарточка, то отладчик останавливается на точке останова, установленной в this.openAddMiniPage
А далее надо смотреть

В BaseSectionV2 в методе addRecord происходит проверка наличия мини-карточки по типу

this.hasAddMiniPage(typeColumnValue)

, где в свою очередь проверяется miniPage.hasAddMiniPage. Это свойство на данный момент у меня undefind.
Вопрос: Где устанавливается это свойство для той или иной страницы редактирования?

p.s.: Я докопал до BaseSchemaViewModel.initEditPages, где формируется конфигурация мини-страницы:

MiniPage: {
  schemaName: editPage.miniPageSchema,
  hasAddMiniPage: editPage.hasAddMiniPage
},

, но где присваивается значение editPage.hasAddMiniPage так и не нашёл.

hasAddMiniPage - всего лишь атрибут который отображает есть ли для данного раздела мини-карточка добавления записи
При глобальном поиске по приложению (F12 затем Ctrl+Shift+F) по слову miniPageSchema или hasAddMiniPage
в первых трех строках отображаются объекты Terrasoft.Configuration с идентификаторами схем миникарточек, привязанных к разным разделам. Скорее всего информация об этом занесена непосредственно в БД. Можно покопать в эту сторону

"Симута Роман Русланович" написал:hasAddMiniPage - всего лишь атрибут который отображает есть ли для данного раздела мини-карточка добавления записи
При глобальном поиске по приложению (F12 затем Ctrl+Shift+F) по слову miniPageSchema или hasAddMiniPage
в первых трех строках отображаются объекты Terrasoft.Configuration с идентификаторами схем миникарточек, привязанных к разным разделам. Скорее всего информация об этом занесена непосредственно в БД. Можно покопать в эту сторону

Тоже искал глобальным поиском + режим отладки раздела Активности (здесь MiniPage.hasAddMiniPage = true)
Но у меня MiniPage.hasAddMiniPage передаётся Undefined, хотя название схемы мини-карточки передаётся и для соответствующих записей в таблице SysModuleEdit заполнено поле MiniPageSchemaUId.

В какой таблице искать hasAddMiniPage?

В таблицах SysModuleEdit, SysModule, SysModuleEntity, SysSchema такого поля нет.
P.S.: Вообще было бы прекрасно, если бы в академии появилась статья по добавлению мини-карточки в раздел к кнопке "Добавить".

Игорь, свойство hasAddMiniPage определено в миксине MiniPageUtilities.

Миксин подключается к модели представления в классе BaseSchemaViewModel реализованном в одноименном модуле. В этом же классе есть метод initEditPages, в котором заполняется коллекция моделей представления для каждой entitySchema и там же заполняютя значениями свойства hasAddMiniPage (поищите глобальным поиском)

Поскольку вы создали новый раздел, то возможно, что это свойство у вас не инициализируется
посмотрите в глобальном объекте Terrasoft.configuration.EntityStructure (просто наберите в консоли)
пример для объекта Account - во вложении
посмотрите в объекте вашего раздела

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

Да Роман, это я уже находил и писал выше.
Но как всё же проинициализировать свойство editPage.hasAddMiniPage (НЕ miniPage.hasAddMiniPage)?

Узнал. Нужно добавить системную настройку с кодом Has[ИмяСущностиРаздела]MiniPageAddMode, например, как для раздела HasAccountMiniPageAddMode
Это системная настройка булевского типа, из нее и прилетает значение свойства hasAddMiniPage в Terrasoft.configuration.EntityStructure

Да, Роман! То, что надо. Спасибо.

В продолжении темы, страница выводится, НО одна для всех типов.
Смотрю по коду и вижу, что в

 this.openAddMiniPage({
   entitySchemaName: this.entitySchemaName,
   valuePairs: this.getAddMiniPageDefaultValues(typeColumnValue)
});

необходимо передать ещё один параметр miniPageSchemaName, передаю.

Далее в MiniPageContainerViewModel.setSchemaParametersInfo
в строке

var schemaName = this.getSchemaName(entitySchemaName) || config.miniPageSchemaName;

Т.о. в конфигурацию мини-карточки попадает название схемы первой зарегистрированной мини-карточки, хранящаяся в Terrasoft.ModuleUtils.moduleStructure[entitySchemaName].miniPageSchema, а не переданное в параметре miniPageSchemaName значение. И как следствие выводится не та мини-карточка.
Вопрос: Не было ли целесообразней поменять местами this.getSchemaName(entitySchemaName) и config.miniPageSchemaName в строке

var schemaName = this.getSchemaName(entitySchemaName) || config.miniPageSchemaName;

или передавать в this.getSchemaName(entitySchemaName) вторым аргументом тип создаваемой записи?

Решил эту проблему подменой значения Terrasoft.ModuleUtils.moduleStructure[entitySchemaName].miniPageSchema на нужное мне.
Но как-то это костыльно...
Если у кого есть другие варианты реализации, буду благодарен за подсказку

И ещё проблема, после сохранения и закрытия мини-карточки не происходит обновление реестра раздела, подскажите, что пропустил.

Добавьте в схеме раздела

        // Обновление данных реестра.
        this.reloadGridData();

Пример можно глянуть здесь
https://academy.terrasoft.ru/documents/technic-sdk/7-8/dataservice-sozd…

А какой механизм реализован в р. Активности и р. Лиды? Ведь там реестр обновляется.

Честно говоря, не знаю. Надо смотреть :)

А зачем тогда изобретать велосипед с reloadGridData?
Тоже, к сожалению, концов не нашёл в р. Активности и р. Лиды.

Вопрос решил. В sectionV2 подписался на сообщение ReloadDashboardItems.

 subscribeSandboxEvents: function() {
                this.callParent(arguments);
                this.sandbox.subscribe("ReloadDashboardItems", function(){
                    this.reloadGridData()
                }, this);
            }
Показать все комментарии

Создали делать2 в детали1.
Деталь2 самописная.

в Карточки схемы детали1

details: /**SCHEMA_DETAILS*/{
                        "UsrContragentOperation": {
                                "schemaName": "UsrContragentOperationDetailV2",
                                "entitySchemaName": "UsrContragentOperation",
                                filter: {
                                                masterColumn: "Id",
                                                detailColumn: "UsrTranspPlanLine"   //деталь2
                                                }
                        }

Но при добавлении записи в деталь2 Id пуст.
Т.е. получается что мы передаем id.
Что не так?
Как отловить в отладчике это значение?

Нравится

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

Здравствуйте,
При объявлении второй детали в детали, пишите "useRelationship": true

"UsrDetail2": {
				"schemaName": "UsrSchema2Detail",
				"entitySchemaName": "UsrDetail2",
				"filter": {
					"detailColumn": "UsrDetail1",
					"masterColumn": "Id"
				},
				"useRelationship": true
			}

В колонку связи второй детали, ту которая указана в «detailColumn», установится значение из карточки родителя (первой детали), из колонки что указана в «masterColumn», именно поэтому типы этих колонок должны совпадать.
И да, не забудьте во второй детали настроить колонки, по умолчанию в детали в детали, не будет выведена ни одна колонка.

Пример всей реализации, деталь в контрагентах. А в ней вторая деталь:

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

define("UsrUsrDetail11Page", [], function() {
	return {
		entitySchemaName: "UsrDetail1",
		details: /**SCHEMA_DETAILS*/{
			"UsrDetail2": {
				"schemaName": "UsrSchema2Detail",
				"entitySchemaName": "UsrDetail2",
				"filter": {
					"detailColumn": "UsrDetail1",
					"masterColumn": "Id"
				},
				"useRelationship": true
			}
		}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"name": "UsrString",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 0,
						"layoutName": "Header"
					},
					"bindTo": "UsrString"
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 0
			},
			{
				"operation": "insert",
				"name": "UsrAccount",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 12,
						"row": 0,
						"layoutName": "Header"
					},
					"bindTo": "UsrAccount"
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 1
			},
			{
				"operation": "insert",
				"name": "Detail1GeneralTabContainer",
				"parentName": "Tabs",
				"propertyName": "tabs",
				"values": {
					"caption": "Tab",
					"items": []
				}
			},
			{
				"operation": "insert",
				"name": "UsrDetail2",
				"values": {
					"itemType": Terrasoft.ViewItemType.DETAIL
				},
				"parentName": "Detail1GeneralTabContainer",
				"propertyName": "items"
			}
		]/**SCHEMA_DIFF*/,
		methods: {},
		rules: {}
	};
});

Результат:

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

Добрый день. Редакция real-estate 7.7
Интересует следующий момент - можно ли каким нибудь образом на стороне клиента подписаться на события добавления/удаления фотографий?

Цель нашей работы следующая: требуется, что бы фото, которые прикреплены к объектам были видны из сети интернет безо всякой авторизации + для интернет аудитории требуется наложение watermark. Соответственно идея в том, что после того, как фото загружалось / удалялось штатным механизмом запускать свой сервис, который будет например выдирать фото из БД и копировать их к примеру на удаленное хранилище.

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

Про вариант в Odata я знаю, но если все же это делать на стороне terrasoft?

Нравится

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

Петр, в схеме GalleryDetail есть метод onDataLoaded, который вызывается когда мы добавляем картинку в галерею.
В схеме GalleryImageViewModel есть метод onImageDeleteClick, который вызывается при клике на кнопку удаления.
В этих методах можно добавить вызов своего сервиса, который будет расшаривать картинки.

Мария, спасибо, будем пробовать!

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

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

Нравится

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

Олег, это скорее частный случай, который требует индивидуального рассмотрения и лучше с ним обратится в техническую поддержку, если не хотите светить сайтом и доступом к нему здесь. Их адрес support@terrasoft.ru

Почему то при обновлении удалилась колонка TypeColumnValue...

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

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

Используется bpm'online comerce 7.6

Я нашел метод обработки события выбора валюты onCurrencyMenuItemClick, но я думаю он мне не поможет. Подскажите пожалуйста что мне делать или в каком направлении "копать"???

Нравится

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

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

А почему не реализовать логику расчета значения после добавления/изменения/удаления записи на детали?

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

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

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

Здравствуйте, возвращаюсь к данному вопросу.

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

По поводу значения по умолчанию - это системная настройка. Можно ее изменять и как это отразиться на работе всех полей???

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

Честно говоря, я не совсем понимаю, почему возник данный вопрос - в статье нет упоминаний системных настроек.
Системные настройки хранятся в объекте SysSettingsValue. Вы можете изменить системную настройку запросом ESQ. В системе для некоторых объектов, например, счет и заказ используются системные настройки. В результате добавления новой записи значение системной настройки увеличивается.

По поводу системной настройки - https://academy.terrasoft.ru/documents/sales-commerce/7-6-0/spravochnik… (на всякий случай сделал снимок)

Я зашел в описание системных настроек - было упоминание о этой настройке, сейчас она почему то пропала.
В объекте SysSettingsValue нету такой настройки, настройка базовой валюты находиться в объекте SysSettings.

Сергей, не совсем так.

Есть две таблицы:
1) SysSettings
2) SysSettingsValue

Выполните запрос для получения значения системной настройки:

select * from SysSettingsValue where SysSettingsId = (select Id from SysSettings where Code = "PrimaryCurrency")

Спасибо большое за подсказку. Стало ясно как работать с SysSettingsValue. А в клиентских схемах еще проще.

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

Возможно вам поможет
https://academy.terrasoft.ru/documents/technic-sdk/7-8-0/dobavlenie-mul…
Статья написана еще для 7.7, не знаю как применимо к 7.6

Насчет версии в 7.6 реализованы модули MoneyModule, MultiCurrencyEdit, MultiCurrencyEditUtilities.

Немножко обманул
пример есть и в 7.6
https://academy.terrasoft.ru/documents/technic-sdk/7-6-0/kak-dobavit-mu…

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

Необходимо из клиентского модуля выполнить процесс и чтоб он вернул, например, коллекцию значений.
Серверный процесс, должен сделать select к сторонней базе, и вернуть то что попало в select.
Задание-сценарий - это функция типа bool. То есть она не сможет возвратить коллекцию.

Как быть?
Спасибо!

Нравится

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

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

Пользователь находится в интерфейсе bpm'online и запускает действием процесс. В результате процесс должен:
1) Обратиться к стороннему ресурсу
2) Получить ответ в виде параметра bool
3) Обработать его в процессе
4) Вернуть на клиент.

Правильно я понял Вашу задачу?

Все верно, кроме:
Процесс делает select к сторонней БД(находящейся в нашей сети). И получившийся "resultset" надо отправить на клиента.

Здравствуйте,
Вам не нужен бизнес-процесс для выполнения задуманного, вы можете написать свой конфигурационный сервис, и на языке c# написать все что угодно что позволяет язык c#, а делать запросы к БД он явно позволяет.
https://academy.terrasoft.ru/documents/technic-sdk/7-8-0/kak-sozdat-svo…
Функция, написанная в сервисе может вернуть как простой тип, так и сложный, массивы, списки, что угодно, сериализуя это в JSON.
На клиенте вы получите результат:
https://academy.terrasoft.ru/documents/technic-sdk/7-8-0/kak-programmno…
И делаете с ним что хотите.
Все это можно сделать если сервис и вызов сервиса написан в рамках одной Bpmonline. Если вы хотите сервис иметь на одном сайте, а вызов на другом, то можно даже написать сервис доступный для вызова без авторизации, с другого сайта (CORS) но вроде бы для вашей задачи вам это не нужно. Если нужно то на форуме уже где-то была инструкция как это сделать.

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

Здравствуйте, коллеги.

У меня вопрос: в печатной форме есть макрос, например, который форматирует текст. Как его исполнить, в коде сервиса? Это необходимо сделать до конвертации в PDF.

Нравится

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

Вот нашел пример запуска макроса:

using System;
using Word = Microsoft.Office.Interop.Word;
using VBIDE = Microsoft.Vbe.Interop;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var wordApp = new Word.Application();
            wordApp.Documents.Add("C:\\1.docm");
            var doc = wordApp.Documents[1];
            VBIDE.VBComponent oModule = doc.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule);
 
            string sCode =
                "public sub VBAMacro()\r\n" +
                "   msgbox \"VBA Macro called\""\r\n"" +

Добрый день!

Ознакомьтесь с этой статьей:
https://academy.terrasoft.ru/documents/technic-sdk/7-6-0/kak-sozdat-svo…

Добрый день, Юрий.

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

По умолчанию в bpm'online нет библиотек, которые используются в предоставленном коде. Их необходимо загрузить дополнительно.

Спасибо, буду пробовать.
По результатам - отпишусь.

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

Здравствуйте.
Стоит задача сохранить карточку Лида при нажатии на кнопку "Завершить" активности в LeadSectionActionsDashboard.
При нажатии кнопки вызывается метод onExecuteButtonClick схемы ActivityDashboardItemViewModel.
Но как отследить нажатие кнопки Завершить из карточки Лида непонятно.
Заранее спасибо за ответ.

Нравится

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

Здравствуйте!
Отследить нажатие кнопки "Завершить" можно попробовать с помощью пробрасывания события.

В методе onExecuteButtonClick добавить публикацию события "SomeEvent" в ActivityDashboardItemViewModel:
this.sandbox.publish("SomeEvent", []);

На странице LeadPageV2 в messages добавить подписку на событие "SomeEvent" :
"SomeEvent": {
mode: Terrasoft.MessageMode.PTP,
direction: Terrasoft.MessageDirectionType.SUBSCRIBE
}

На странице LeadPageV2 в методе subscribeSandboxEvents добавить вызов метода "someMethod" по событию "SomeEvent":
this.sandbox.subscribe("SomeEvent", this.someMethod, this, ...);

На странице LeadPageV2 написать метод "someMethod" , в котором вызывать сохранение Лида.

"Demchenko Olha" написал:В методе onExecuteButtonClick добавить публикацию события "SomeEvent" в ActivityDashboardItemViewModel:
this.sandbox.publish("SomeEvent", []);

Придётся полностью заместить схему ActivityDashboardItemViewModel? Есть ли возможность наследования от неё как от родителя?

Заместил ActivityDashboardItemViewModel. Добавил в метод onExecuteButtonClick публикацию события. В свойствах ActivityDashboardItemViewModel в Messages добавил своё сообщение (Публикация, Адресное). В LeadPageV2 в блок messages добавил сообщение, в метод subscribeSandboxEvents добавил subscriber.
При публикации сообщения возникает ошибка: Message UsrOnExecuteButtonClick is not defined in BaseSchemaModuleV2.
Нужно замещать ещё BaseSchemaModuleV2?

И ещё вопрос, существует ли подробная инструкция по использованию сообщений в BPMOnline7.x?

Добрый день!
Вот поправки в решение:
В схеме ActivityDashboardItemViewModel:
1. Добавить блок messages
messages: {
/**
* @message ReloadDashboardItems
* Reloads dashboard items.
*/
"SomeEvent": {
mode: this.Terrasoft.MessageMode.PTP,
direction: this.Terrasoft.MessageDirectionType.PUBLISH
}
}

2. В методе execute:
execute: function(options) {
this.sandbox.publish(“SomeEvent”, {});
var elementUId = this.get("ProcessElementId");
var recordId = this.get("Id");
var schemaName = this.get("EntitySchemaName");
if (this.isActivity() && this.hasMiniPage(schemaName)) {
this.showMiniPage(options);
} else {
if (elementUId) {
ProcessModuleUtilities.tryShowProcessCard.call(this, elementUId, recordId);
} else {
this.callParent(arguments);
}
}
},

В схеме SectionActionsDashboard:
3. Блок messages:
messages: {
/**
* @message ReloadDashboardItems
* Reloads dashboard items.
*/
"SomeEvent": {
mode: this.Terrasoft.MessageMode.PTP,
direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE
}
}

4. В методе subscribePublisher:
subscribePublisher: function(moduleId) {
this.sandbox.subscribe("GetPropertiesByName", this.onGetPropertiesByName, this, [moduleId]);
this.sandbox.subscribe("SomeEvent", this.someEventExecuted, this);
},

5. Добавить метод someEventExecuted:
someEventExecuted: function() {
this.saveMasterEntity();
}

Мне нужно отслеживать сообщение в карточке Лида, а не в SectionActionsDashboard

Т.к. активность можно Завершить не только по нажатию на кнопку "Завершить", но и при переходе по ссылке активности, поэтому Вам было предложено сделать через SectionActionsDashboard.
Если делать через LeadPageV2 то можно сделать только по клику на кнопку.

Выполнил эти пункты:

"Demchenko Olha" написал:В схеме ActivityDashboardItemViewModel:
1. Добавить блок messages
messages: {
/**
* @message ReloadDashboardItems
* Reloads dashboard items.
*/
"SomeEvent": {
mode: this.Terrasoft.MessageMode.PTP,
direction: this.Terrasoft.MessageDirectionType.PUBLISH
}
}

2. В методе execute:
execute: function(options) {
this.sandbox.publish(“SomeEvent”, {});
var elementUId = this.get("ProcessElementId");
var recordId = this.get("Id");
var schemaName = this.get("EntitySchemaName");
if (this.isActivity() && this.hasMiniPage(schemaName)) {
this.showMiniPage(options);
} else {
if (elementUId) {
ProcessModuleUtilities.tryShowProcessCard.call(this, elementUId, recordId);
} else {
this.callParent(arguments);
}
}
},


По идее после этих настроек ошибка при публикации должна была уйти, но при публикации сообщения ошибка " Message UsrOnExecuteButtonClick is not defined in BaseSchemaModuleV2." опять появляется.

вот мой ActivityDashboardItemViewModel: activitydashboarditemviewmodel.js_.txt

В связи с особенностями реализации ActivityDashboardItemViewModel, вариант с событиями всё-таки не получится.
Поэтому, в качестве обходного решения, можно сделать вот так:

define("SectionActionsDashboard", function() {
return {
methods: {
createDashboardItemViewModel: function() {
var viewModel = this.callParent(arguments);
var baseExecute = viewModel.execute;
viewModel.execute = this.someEventExecuted.bind(this, baseExecute, viewModel);
},

someEventExecuted: function(callback, scope) {
this.Ext.callback(callback, scope);
this.saveMasterEntity();
}
},
diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
};
}
);

Заместить необходимо только SectionActionsDashboard

В моём случае, наверно правильнее будет наследовать LeadSectionActionDashboard?
При замещении столкнулся с проблемой, заголовок для LeadSectionActionDashboard как и для SectionActionDashbord равен BaseActionDashboard и не понятно какую из схем наследовать

"Demchenko Olha" написал:В связи с особенностями реализации ActivityDashboardItemViewModel, вариант с событиями всё-таки не получится.
Поэтому, в качестве обходного решения, можно сделать вот так:

define("SectionActionsDashboard", function() {
return {
methods: {
createDashboardItemViewModel: function() {
var viewModel = this.callParent(arguments);
var baseExecute = viewModel.execute;
viewModel.execute = this.someEventExecuted.bind(this, baseExecute, viewModel);
},

someEventExecuted: function(callback, scope) {
this.Ext.callback(callback, scope);
this.saveMasterEntity();
}
},
diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
};
}
);

Заместить необходимо только SectionActionsDashboard

Спасибо!!! То, что надо!

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

Друзья, подскажите, как в справочнике "Типы средств связи" создать новый "Тип коммуникации". Например есть необходимость создать вложенный список Email (рабочий, личный), как это реализовано в списке "Телефон"

Нравится

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

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

Для создания данного вложенного списка Вам необходимо произвести замещение в базовой схеме детали средств связи [BaseCommunicationDetail].

Зарегистрируйте справочник от объекта "тип коммуникации". Добавьте свой тип. Перепишите метод "getToolsMenuItems" детали ContactCommunicationDetailV2 по аналогии с тем как в этом же методе создаются группы для телефонов и соц. сетей.

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