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

У нас записи звонков выкладываются на ftp сервер с авторизацией. Нам нужно чтобы эти аудиозаписи можно было прослушать из bpm. Мы пробовали добавить в адрес логин и пароль, но при первом прослушивании браузер всё равно выводит форму авторизации. Возможно есть способ авторизоваться в фоне при входе пользователя?

Нравится

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

Здравствуйте, Богдан!

Насколько знаю стандартные интеграции работают не через FTP, но для такого кейса можно рассмотреть написание дополнительного модуля авторизации с использованием возможностей bpm, например такого: http://www.csharpcoderr.com/2012/08/autorized-ftp-server.html

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

Версия 7.9.2.2410
Нужно сделать несколько похожих запросов выбора контакта и если какой то вернет ID запустить БП.
Как я понял запросы можно сделать и в БП.
Вот пример запроса:
Выбрать контакта у которого поле1 > значение1
и есть активности где активность.поле1 = значение2
Много запросов я не строил но документации есть полно.
Решил строить и выполнять запрос при нажатии на кнопку,

var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "Contact"});
esq.addAggregationSchemaColumn("Id", Terrasoft.AggregationType.COUNT, "Id");

var exists = this.Terrasoft.createExistsFilter("[Activity:Contact].Name");
                                       
esq.filters.addItem(exists);

для проверки Запроса должна работать функция esq.GetSelectQuery(), но выдает - esq.getSelectQuery is not a function
будет 4-8 запросов, меняться будет только значение1 и значение2

Нравится

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

Добрый день, Виталий!

К сожалению, GetSelectQuery - это серверная функция, вызвать ее можно только в C# коде. На клиентской стороне получить текст запроса в данный момент нельзя.

Используйте метод executeQuery.

"Мотков Илья" написал:К сожалению, GetSelectQuery - это серверная функция, вызвать ее можно только в C# коде.

Подозревал это, а как продебажить код С# в БП?
"Мотков Илья" написал:Используйте метод executeQuery.

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

Делаю через БП, будет 1 запрос, остальное кодом переберу, проблема в добавлении дополнительных фильтров, вот что сейчас есть:

UserConnection userConnection = Get<UserConnection>("UserConnection");
var esqContact = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Contact");
esqContact.AddColumn("Name");
var exists = esqContact.CreateExistsFilter("[Activity:Contact:Id].Id");
var subQueryFilters = new EntitySchemaQueryFilterCollection(esqContact, LogicalOperationStrict.Or);
subQueryFilters.Add(esqContact.CreateFilterWithParameters(FilterComparisonType.Equal, "Result", "b85afbbc-8c0b-472a-8808-680911ceec75"));
exists.SubFilters.AddItem(subQueryFilters);
 
esqContact.Filters.Add(exists);
 
var esqOptions = new EntitySchemaQueryOptions()
{
    PageableDirection = PageableSelectDirection.First,
    PageableRowCount = 1,
    PageableConditionValues = new Dictionary<string, object>()
};
 
var Contact = esqContact.GetEntityCollection(userConnection, esqOptions);
Terrasoft.Configuration.MsgChannelUtilities.PostMessage(userConnection, "CreateActivityForContact", esqContact.GetSelectQuery(userConnection).GetSqlText());
return true;

ошибку выбивает на .SubFilters.AddItem, но я видел примеры таких решений на комюнити и в академии

Решил, если написать так:

UserConnection userConnection = Get<UserConnection>("UserConnection");
var esqContact = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Contact");
esqContact.AddColumn("Name");
 
var GroupFilters = new EntitySchemaQueryFilterCollection(esqContact, LogicalOperationStrict.Or);
GroupFilters.Add(esqContact.CreateFilterWithParameters(FilterComparisonType.Equal,
 "[Activity:Contact:Id].Result", "b85afbbc-8c0b-472a-8808-680911ceec75"));
GroupFilters.Add(esqContact.CreateFilterWithParameters(FilterComparisonType.Equal,
 "[Activity:Contact:Id].Result",  "6e6b0240-dd96-4db7-b549-2d4c468ae035"));
GroupFilters.Add(esqContact.CreateFilterWithParameters(FilterComparisonType.Equal,
 "[Activity:Contact:Id].Result",  "2394c81b-cad7-4bd0-9404-4b72772a8f83"));
GroupFilters.Add(esqContact.CreateFilterWithParameters(FilterComparisonType.Equal,
 "[Activity:Contact:Id].Result",  "608a810c-396d-49fd-851b-9e7f39b9dbf7"));
 GroupFilters.Add(esqContact.CreateFilterWithParameters(FilterComparisonType.Equal,
 "[Activity:Contact:Id].Result",  "c73d5e1f-978c-4f62-9a3f-80d24a5d389d"));
esqContact.Filters.Add(GroupFilters);
 
var Contact = esqContact.GetEntityCollection(userConnection);
Terrasoft.Configuration.MsgChannelUtilities.PostMessage(userConnection, "CreateActivityForContact", esqContact.GetSelectQuery(userConnection).GetSqlText());
return true;

то получится это:

SELECT
	[Contact].[Name] [Name]
FROM
	[dbo].[Contact] [Contact] WITH(NOLOCK)
WHERE
	EXISTS (
SELECT
	[Activity].[Id] [Id]
FROM
	[dbo].[Activity] [Activity] WITH(NOLOCK)
WHERE
	[Contact].[Id] = [Activity].[ContactId]
	AND ([Activity].[ResultId] = @P1
	OR [Activity].[ResultId] = @P2
	OR [Activity].[ResultId] = @P3
	OR [Activity].[ResultId] = @P4
	OR [Activity].[ResultId] = @P5))

как объяснить ошибку?
если я прописал

var esqContact = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Contact");
esqContact.AddColumn("Name");
esqContact.AddColumn("Id");
....
foreach(var Contact in Contacts) {
	 var Contact = Contact.GetTypedColumnValue<Guid>("Id");
}
....

другие поля нормально видит и выбирает

"Радчук Виталий Владимирович" написал:как объяснить ошибку
если я прописал

Приведите весь код, вероятно ошибка не в esqContact.AddColumn("Id");, а в моменте получения данных по этой колонке, и стоит использовать алиас. var contactIdColumnName = esqContact.AddColumn("Name");
и уже вот имя записанное тут contactIdColumnName использовать при получении.

"Радчук Виталий Владимирович" написал:как объяснить ошибку
если я прописал

Приведите весь код, вероятно ошибка не в esqContact.AddColumn("Id");, а в моменте получения данных по этой колонке, и стоит использовать алиас. var contactIdColumnName = esqContact.AddColumn("Name");
и уже вот имя записанное тут contactIdColumnName использовать при получении.

вот код

UserConnection userConnection = Get<UserConnection>("UserConnection");
var esqContact = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Contact");
esqContact.AddColumn("Name");
esqContact.AddColumn("Id");
var UsrCounterTOLLColumn = esqContact.AddColumn("UsrCounterTOLL");
UsrCounterTOLLColumn.OrderByAsc(1);
var CreatedOnLColumn = esqContact.AddColumn("CreatedOn");
CreatedOnLColumn.OrderByAsc(2);
 
esqContact.Filters.Add(esqContact.CreateFilterWithParameters(FilterComparisonType.Equal,
 "UsrContactStage", "b9f5501f-d028-4547-b694-ea7c2dbf8006"));
фильтры
var Contacts = esqContact.GetEntityCollection(userConnection);
foreach(var Contact in Contacts) {
	 var contact = Contact.GetTypedColumnValue<Guid>("Id");
}

нужна именно айдишка для дальнейшего выполнения БП

все получилось:

var IdColumnName = esqContact.AddColumn("Id").Name;
...
Set("Contact",  Contact.GetTypedColumnValue<string>(IdColumnName));
Показать все комментарии

Добрый день!

Кто разбирается одновременно в bpm'online и лицензировании Microsoft?

Помогите посчитать количество необходимых CAL-лицензий, если bpm'online устанавливается on-site на Windows Server и MS SQL Server?

Спасибо!

Нравится

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

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

Вам необходима будет одна cal лицензия для пользователя, от которого будет происходить подключение к БД. Количество пользователей приложения bpm'online значения не имеет.

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

Это с точки зрения здравого смысла и "разумной экономии" достаточно одной лицензии. С точки зрения инфоцентра Microsoft для каждого пользователя или устройства, которое пользуется WinServer или SQL Server нужна своя пользовательская или на устройство лицензия.

Правильнее обращаться в инфоцентр Microsoft, если вопрос конечно не просто умозрительный, а нужно проработать полную лицензионную чистоту.

"Галанин Артур Николаевич" написал:Правильнее обращаться в инфоцентр Microsoft

инфоцентр Microsoft ничего не знает про bpm'online :(

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

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

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

Спасибо! Я потому и спросил, что уверен, что кто-то выяснял уже :)

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

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

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

Нравится

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

Добрый день.
Версия 7.9

Кейс был такой: Нужно создать деталь с полем справочник (у меня это "UsrStore") c ссылкой на объект "Остаток продукта".

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

1)

Uncaught iargumentName: ""__proto__: constructor$className: "Terrasoft.exceptions.ArgumentNullOrEmptyException"alternateClassName: "Terrasoft.ArgumentNullOrEmptyException"argumentName: nullconfig: e__proto__: Objectconstructor: function ()__proto__: Objectconstructor: function Object()hasOwnProperty: function hasOwnProperty()isPrototypeOf: function isPrototypeOf()propertyIsEnumerable: function propertyIsEnumerable()toLocaleString: function toLocaleString()toString: function toString()valueOf: function valueOf()__defineGetter__: function __defineGetter__()__defineSetter__: function __defineSetter__()__lookupGetter__: function __lookupGetter__()__lookupSetter__: function __lookupSetter__()get __proto__: function __proto__()set __proto__: function __proto__()configMap: Object__proto__: ObjectinitConfigList: Array(0)length: 0__proto__: Array(0)initConfigMap: Objectmessage: "Несуществующий или пустой аргумент"self: function i()superclass: constructortoString: function ()__proto__: constructor
/core/04566becfbd71b73c17d3b4e92cd2ba9/Terrasoft/amd/core.js?:579 user: Supervisor/7f3b869f-34f3-4f20-ab4d-7480a5fdf647
 file: a href="http://176.104.2.162/core/9b78b22f0e6d6388b9ec0f8fae14cb84/combined/all-combined.js

"
title="http://176.104.2.162/core/9b78b22f0e6d6388b9ec0f8fae14cb84/combined/all-combined.js

"
>a href="http://176.104.2.162/core/9b78b22f0e6d6388b9ec0f8fae14cb84/combined/all-...">http://176.104.2.162/core/9b78b22f0e6d6388b9ec0f8fae14cb84/combined/all-... line: 846
 column: 295
 message: Uncaught Terrasoft.ArgumentNullOrEmptyException: Несуществующий или пустой аргумент
 date: Fri Mar 24 2017 11:05:50 GMT+0200 (Финляндия (зима))
 stack: undefined
writeErrorMessage @ /core/04566becfbd71b73c17d3b4e92cd2ba9/Terrasoft/amd/core.js?:579

2)

LookupPageViewModelGenerator.js:284 Uncaught i {argumentName: ""}argumentName: ""__proto__: constructor
addColumn @ all-combined.js:846
addColumn @ all-combined.js:939
(anonymous) @ LookupPageViewModelGenerator.js:284
Terrasoft.utils.array.each @ all-combined.js:225
addSelectColumns @ LookupPageViewModelGenerator.js:282
Terrasoft.each.scope @ LookupPageViewModelGenerator.js:273
Terrasoft.utils.array.each @ all-combined.js:225
getSelect @ LookupPageViewModelGenerator.js:271
loadData @ LookupPageViewModelGenerator.js:344
load @ LookupPageViewModelGenerator.js:73
(anonymous) @ /0/configuration/fec43bee7d1bd6fa3769ce764f5b8168ru-RU/LookupPage.js:176
(anonymous) @ /0/configuration/fec43bee7d1bd6fa3769ce764f5b8168ru-RU/LookupPage.js:284
execCb @ require.js:1693
check @ require.js:881
enable @ require.js:1173
init @ require.js:786
(anonymous) @ require.js:1457

3)

/core/04566becfbd71b73c17d3b4e92cd2ba9/Terrasoft/amd/core.js?:579 user: Supervisor/7f3b869f-34f3-4f20-ab4d-7480a5fdf647
 file: a href="http://176.104.2.162/core/9b78b22f0e6d6388b9ec0f8fae14cb84/combined/all-combined.js

"
title="http://176.104.2.162/core/9b78b22f0e6d6388b9ec0f8fae14cb84/combined/all-combined.js

"
>a href="http://176.104.2.162/core/9b78b22f0e6d6388b9ec0f8fae14cb84/combined/all-...">http://176.104.2.162/core/9b78b22f0e6d6388b9ec0f8fae14cb84/combined/all-... line: 846
 column: 295
 message: Uncaught Terrasoft.ArgumentNullOrEmptyException: Несуществующий или пустой аргумент
 date: Fri Mar 24 2017 11:11:48 GMT+0200 (Финляндия (зима))
 stack: undefined
writeErrorMessage @ /core/04566becfbd71b73c17d3b4e92cd2ba9/Terrasoft/amd/core.js?:579
(anonymous) @ /core/04566becfbd71b73c17d3b4e92cd2ba9/Terrasoft/amd/core.js?:740
execCb @ require.js:1693
check @ require.js:881
enable @ require.js:1173
init @ require.js:786
(anonymous) @ require.js:1457

4)

/core/04566becfbd71b73c17d3b4e92cd2ba9/Terrasoft/amd/core.js?:579 user: Supervisor/7f3b869f-34f3-4f20-ab4d-7480a5fdf647
 file: a href="http://176.104.2.162/core/9b78b22f0e6d6388b9ec0f8fae14cb84/combined/all-combined.js

"
title="http://176.104.2.162/core/9b78b22f0e6d6388b9ec0f8fae14cb84/combined/all-combined.js

"
>a href="http://176.104.2.162/core/9b78b22f0e6d6388b9ec0f8fae14cb84/combined/all-...">http://176.104.2.162/core/9b78b22f0e6d6388b9ec0f8fae14cb84/combined/all-... line: 846
 column: 295
 message: Uncaught Terrasoft.ArgumentNullOrEmptyException: Несуществующий или пустой аргумент
 date: Fri Mar 24 2017 11:11:48 GMT+0200 (Финляндия (зима))
 stack: undefined

Нравится

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

По ошибкам сложно понять в чем дело, напишите в поддержку, с предоставлением доступа к сайту:
support@terrasoft.ru
Пусть посмотрят и исправят на месте.

Ок. Спасибо.

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

День добрый.
Подскажите как установить значение в поле которого нет на странице редактирования.
Есть поле типа "справочник". В него нужно запихнуть id записи которая получается запросом, а само поле на странице не отображать.

Нравится

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

Добрый день!

Добавьте его в атрибуты страницы:

attributes: {
			"ProductType": {
				dataValueType: Terrasoft.DataValueType.LOOKUP,
				referenceSchemaName: "ProductType"
			}
}

После этого можете с ним работать методами set и get

Я конечно догадываюсь, что, скорее всего, вас интересует возможность записи в объекты посредством esq. Почитайте подробнее тут: https://academy.terrasoft.ua/documents/technic-sdk/7-6-0/ispolzovanie-r…
И если возникнут точечные вопросы, задавайте, либо более подробно объясните что вам нужно, желательно с примерами, названиями полей, и.т.д. А то вопрос звучит слишком абстрактно.
Если же вас интересует глобальная "переменная", для переиспользования её далее в рамках схемы, то ответ выше.

"Дмитрий Степанов" написал:

Добрый день!

Добавьте его в атрибуты страницы:

attributes: {

                        "ProductType": {

                                dataValueType: Terrasoft.DataValueType.LOOKUP,

                                referenceSchemaName: "ProductType"

                        }

}

После этого можете с ним работать методами set и get


Добавил. Вот только в базе изменения не отображаются.

.Погодите, не понял. То, что вы спросили относится в атрибуту, который живет на страничке. Только на страничке. Если хотите, чтобы оно писалось в БД, создайте одноименное поле в объекте с аналогичным типом. Потом на страничке его объявите так, как я написал. Теоретически должно работать и сохранение.

"Сурмачевский Евгений Александрович" написал:Добавил. Вот только в базе изменения не отображаются

Естественно, атрибут это не физическая колонка в БД. Физическую колонку в бд вам необходимо добавить в объект, и\или если она там есть, использовать esq для установки её значения:
https://academy.terrasoft.ua/documents/technic-sdk/7-6-0/ispolzovanie-r…

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

"Дмитрий Степанов" написал:

.Погодите, не понял. То, что вы спросили относится в атрибуту, который живет на страничке. Только на страничке. Если хотите, чтобы оно писалось в БД, создайте одноименное поле в объекте с аналогичным типом. Потом на страничке его объявите так, как я написал. Теоретически должно работать и сохранение.


Не до конца выразил мысль. Есть поле в объекте ("IncomeSpare") и тип его справочник. Я запросом получаю Guid и хочу это значение внести в базу в колонку "IncomeSpareID".
На самой странице редактирования я не хочу размещать данный справочник.
Использовать esq ? Описанный вами способ к сожалению не работает.

"Сурмачевский Евгений Александрович" написал:я не хочу размещать данный справочник.

Не прописывайте данное поле в diff
"Сурмачевский Евгений Александрович" написал: хочу это значение внести в базу в колонку "IncomeSpareID".

Делайте Insert в бд после получения Guid'а или

this.set(/*название поля*/, {value: /*id*/, displayValue: /*name поля из справочника*/})

1. Создаете в структуре объекта поле IncomeSpare, тип справочник
2. на странице объекта объявляете атрибут

attributes: {
"IncomeSpare": {
         dataValueType: Terrasoft.DataValueType.LOOKUP,
         referenceSchemaName: "IncomeSpareLOOKUP"  //ваше наименование справочника
                        }
}

3. В коде страницы перед сохранением присваиваете ему значение:

this.set("IncomeSpare", value)

Сделал как описал Дмитрий.
Вот только установил значение таким способом: this.set(/*название поля*/, {value: /*id*/, displayValue: /*name поля из справочника*/})
Все получилось.
Всем спасибо.

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

Добрый день!
Возможен ли перенос между средами права доступа "Администрируется по записям" и, например Право на удаление?
Если да, то каким образом?

Нравится

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

Права доступа по записям — это записи в таблице Sys[название раздела]Right. Их можно попробовать перенести как данные в составе пакета, если даст выбрать эту таблицу, а если нет — то SQL-запросом. Главное, чтобы на старой и новой базе совпадали Id записей в разделе и Id пользователей и их групп. Также учтите, что на новом месте по записям раздела уже могут быть вручную выданы права и вместе с залитыми может возникнуть путаница.

"Зверев Александр" написал:

Права доступа по записям — это записи в таблице Sys[название раздела]Right. Их можно попробовать перенести как данные в составе пакета, если даст выбрать эту таблицу, а если нет — то SQL-запросом. Главное, чтобы на старой и новой базе совпадали Id записей в разделе и Id пользователей и их групп. Также учтите, что на новом месте по записям раздела уже могут быть вручную выданы права и вместе с залитыми может возникнуть путаница.


Я изменил права на удаления контактов, со всех сотрудников на Supervisor. Но в таблице запись никак не отобразилась.

Права на удаление влияют на возможность удаления, а не отображения.

"Зверев Александр" написал:

Права на удаление влияют на возможность удаления, а не отображения.


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

Если настраиваете права по операциям (а не записям), то они хранятся в SysEntitySchemaOperationRight.

"Зверев Александр" написал:

Если настраиваете права по операциям (а не записям), то они хранятся в SysEntitySchemaOperationRight.


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

Это зависит от того, какие права Вам нужны. Запустите профайлер, настройте в интерфейсе права и посмотрите, какие запросы идут в базу..

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

Добрый день, добавили в црм новых менеджеров.
Однако менеджерам в пользовательском разделе видна лишь часть записей и при сохранении появляется окошко, уведомляющее, что недостаточно прав для изменения записи.
Как я понимаю необходимо изменить правда доступа в “Права доступа на объекты”, пытались снять галочку для раздела на пункте “Администрируется по записям”, но появляется предупреждение: “Невозможно понизить права, которые установлены на уровне схемы объекта в дизайнере”, кнопка добавить также неактивна. Подскажите, пожалуйста, как можно решить данную проблему?

Нравится

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

Добрый день, Мария!

Пример решения типовой задачи со скриншотами прикрепил вложением.

Адасюк Валерий Викторович Можете выслать и мне вложение, та же проблема

 

Добрый день!

так как функционал нового community не позволяет выкладывать вложения (кроме скриншотов), то пошаговое решение выложил архивом по ссылке http://tsrdp.tscrm.com/support/pub/Adasyuk/Zip.zip

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

Добрый день!

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

Нравится

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

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

ActionsDashboard состоит из двух блоков: полоса стадий, которая расположена в HeaderContainer и панель действий — в ContentContainer.
В статье https://academy.terrasoft.ru/documents/technic-sdk/7-9/instrumentalnaya… об этом рассказывается.

Можно сделать "headerVisible": false в config вашего ActionsDashboardModule.

Пример создания своего ActionsDashboard - https://academy.terrasoft.ru/documents/technic-sdk/7-9/dobavlenie-instr…

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

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

Это можно реализовать? Если да то желательно пример.
За ранее спасибо.

Нравится

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

Здравствуйте, Максим!

За функционал печатных форм отвечает миксин PrintReportUtilities. Генерация коллекции печатных форм происходит в методах initCardPrintForms и initSectionPrintForms. События клика на печатных формах в секции и карточке редактирования обрабатываются в методах generateCardPrintForm и generateSectionPrintForm. Для изменения логики стандартных печатных форм необходимо заместить данные методы с добавлением пользовательской логики(фильтрации).

Как альтернативное решение, Вы можете добавить пользовательскую кнопку печати и при клике обращаться к вэб сервису напрямую. Реализацию обращения к вэб сервису для печати "Печатных форм", Вы можете посмотреть в методе generatePrintForm схемы PrintReportUtilities (NUI).

Также вопрос обсуждался здесь:
http://www.community.terrasoft.ru/forum/topic/11555.

"Мотков Илья" написал:

Здравствуйте, Максим!

За функционал печатных форм отвечает миксин PrintReportUtilities. Генерация коллекции печатных форм происходит в методах initCardPrintForms и initSectionPrintForms. События клика на печатных формах в секции и карточке редактирования обрабатываются в методах generateCardPrintForm и generateSectionPrintForm. Для изменения логики стандартных печатных форм необходимо заместить данные методы с добавлением пользовательской логики(фильтрации).

Как альтернативное решение, Вы можете добавить пользовательскую кнопку печати и при клике обращаться к вэб сервису напрямую. Реализацию обращения к вэб сервису для печати "Печатных форм", Вы можете посмотреть в методе generatePrintForm схемы PrintReportUtilities (NUI).

Также вопрос обсуждался здесь:

http://www.community.terrasoft.ru/forum/topic/11555.

Прошу прощения, а не подскажите где это делать?

rules: {}
или
metods: {}

Добрый день, Максим!

Методы нужно добавить в methods, миксин подключить в mixins. Более подробно можете прочитать здесь: https://academy.terrasoft.ua/documents/technic-sdk/7-9/klientskie-shemy…

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