Воплотил инструкцию https://academy.terrasoft.ru/documents/technic-sdk/7-6-0/kak-sozdat-svo…

всё работает, но есть вопрос - как передать в функцию более 1 параметра? Например, сумму и валюту?

Там есть параметр arguments - им можно воспользоваться?

Нравится

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

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

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

Это уж слишком костыльное решение :) Хочется нормальное.

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

Аргументы идут через символ «|» после названия макроса внутри его обрамления.

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

Спасибо! Однако, тут получается, что параметры константны.

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

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

Столкнулся с проблемой передачи параметров из клиентского кода в БП

Вот код вызывающий мой БП и туда передаю 2 параметра, названия совпадают:

 

runProcessFormingAudience: function () {
				debugger;
				var folderFilters = this.get("SectionFiltersValue").collection.get("FolderFilters");
				var customFilters = this.get("SectionFiltersValue").collection.get("CustomFilters");
				if(folderFilters || (customFilters && customFilters.null != undefined)){
					var filters = (folderFilters != undefined && folderFilters.length > 0) ? folderFilters[0].filter : customFilters.null.filter;
				}
				var args = {
					sysProcessName: "AbCreatingSmsAudienceProcess",
					parameters: {
						EntitySchemaName: this.entitySchemaName,
						Filters: filters
					}
				};
				ProcessModuleUtilities.executeProcess(args);
			}

Принимаемые параметры - http://prntscr.com/j8wmeg

Далее смотрю что передалось в эти параметры и логирую:

 

var userConnection = Get<UserConnection>("UserConnection");
var log = new LogService(userConnection);
var filters = Get<string>("Filters");
var entitySchemaName = Get<string>("EntitySchemaName");
var smsServiceId = Get<Guid>("SmsServiceId");
var smsName = Get<string>("SmsName");
 
log.RecInfo(string.Format("smsName = {0}", smsName));
log.RecInfo(string.Format("smsServiceId = {0}", smsServiceId));
log.RecInfo(string.Format("entitySchemaName = {0}", entitySchemaName));
log.RecInfo(string.Format("filters = {0}", filters));
 
return true;

И в итоге данные не занеслись - http://prntscr.com/j8wnau

Подскажите из-за чего может вести себя так система? Вроде делаю все правильно.

Нравится

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

немного не понял смысла

customFilters.null

ну да и ладно...

Код актулен, если вы планируете поместить filters в string(по коду var filters = Get<string>("Filters"), я понимаю в этом план).

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

Благодарю, уже разобрался))

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

После очистки кэша рэдиса перестали вызываться события по таймеру.

Что нужно сделать, чтобы они все заработали?

Нравится

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

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

Мне необходимо внести изменения в базовый конфигурационный сервис AdministrationServiceUsers.

Возможно ли создать замещающую схему для сервиса? 

Подскажите, как правильно это сделать? В академии не нашел информации.

Нравится

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

Добрый день, Павел.

Вносить изменения в базовые веб сервисы нет возможности.

Для этих целей Вам необходимо реализовать собственный веб - сервис,

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

Подробно вопрос конфигурирования веб-сервисов рассматривается в видео-обучении. https://www.youtube.com/watch?v=rbdB7LFgNf0&feature=youtu.be

Антон Малий,

а случайно ссылки на "День 2" у Вас нет?

Александр О,

Продвинутая разработка, день 2 (внимание, версия 7.11, многое устарело): https://youtu.be/y45IHGDm0WY

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

Могу ли я запретить создавать новые записи в реестре, имея только "Администрирование по записям"?

Если я в "Доступ к записям по умолчанию: Изменение" сделаю "кто создает: группа документооборот" и не будет "все сотрудники компании" это поможет сделать так, чтобы создавать могли только люди из группы документооборота?

Нравится

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

Это задаётся не в администрировании по записям, а по объекту.

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

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

Настроили и отладили печатные формы на сервере разработки.

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

Нравится

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

            attributes: {

                "SpeakAddress": {

                    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,

                    dataValueType: Terrasoft.DataValueType.LOOKUP,

                    referenceSchemaName: "AccountAddress",

                    isLookup: true,

                    lookupListConfig: {

                        "filter": function () {

Как написать sql запрос

select ad.id, ad.Address

from 

  AddressType at, 

  AccountAddress ad

where 

    at.Name = 'Собеседования' and 

    at.Id = ad.AddressTypeId

                        }

                    }

                    //isRequired: true

                },

Нравится

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

Здравствуйте попробуйте что то вроде такого:

 

lookupListConfig: {
    "filters": [ 
        function () {
            var addressTypeId = this.get("AddressType").value;            
            var filterGroup = Ext.create("Terrasoft.FilterGroup");
            filterGroup.add("CV", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,"[AccountAddress:AddressType].Name", "Собеседования"));
            filterGroup.add("Type", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,"[AccountAddress:AddressType].Id", addressTypeId));
            return filterGroup;
             }
    ]
}

 

как работать с фильтрами описано в статье - https://academy.terrasoft.ru/documents/technic-sdk/7-12/primenenie-filt…

Нигрескул Алексей,

Спасибо. 

Своими силами попробовал написать и совпало с вашим советом

 "filter": function () {

                            var filterGroup = Ext.create("Terrasoft.FilterGroup");

                            filterGroup.add("IsAddressType",

                                Terrasoft.createColumnFilterWithParameter(

                                    Terrasoft.ComparisonType.EQUAL,

                                    "[AccountAddress:AddressType].Id",

                                    "[AccountAddress.AddressType].Id"));//из таблицы

                            filterGroup.add("IsSpeak",

                                Terrasoft.createColumnFilterWithParameter(

                                    Terrasoft.ComparisonType.EQUAL,

                                    "[AccountAddress:AddressType].Name",

                                    "Собеседования"));

                            return filterGroup;

                        }

Делал как раз по той статье, клиентский esq синтаксис - это для наркоманов :)

QArt,

Нигрескул Алексей,

Не заработало

Добрый день.

Вот оптимизированный sql запрос:

Вот esq строка для фильтра:

Так же проверьте устраивает ли вас результат исходного sql запроса (т.е. выполните запрос непосредственно из SQL Server Management Studio)

 

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

Всем привет, прошу помощи в вопросе кастомизации страницы авторизации.

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

Блок авторизации представлен: viewContainer, но не понятно где он генерируется

 

Подскажите куда копать?

 

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

Нравится

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

Возможно, есть смысл сделать полностью свою страницу входа, которая получает логин и пароль и, если нужно войти именно в CRM, передаёт их POST-ом в AuthService. Он должен в случае верных данных возвратить куку, которая даст возможность работать с самой системой, если перейти на URL страницы раздела.

Кастомизировал в итоге с помощью jQuery, просто и быстро получилось

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

Добрый день!

Подскажите пожалуйста, быть может кто-нибудь интеграцию bpm и программы Альта ГТД или bpm с другой программой по таможенному оформлению товаров?

Нравится

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

Добрый день, Александр!

На данный момент в базовой версии bpm'online нет интеграции с программами для таможенного оформления.

Вы можете решить данную бизнес цель один из следующих способов:

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

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

Так же можно выполнять передачу данных по API из Альта ГТД в bpm'online - https://academy.terrasoft.ru/documents/technic-sdk/7-12/integraciya-s-s…

 

 

 

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

Добрый день!

Создал печатную форму, в нее добавил поля с дробными числами.

В bpm разделитель целой и дробной части является запятая.

Как сделать так, чтобы в печатной форме разделитель целой и дробной части была точка, а в самой системе оставалась запятая? 

Нравится

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

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

Так есть же базовый макрос [#NumberDigit#] (https://academy.terrasoft.ru/documents/technic-sdk/7-11/bazovye-makrosy…), который решит Вашу задачу. 

Если нужны дополнительные манипуляции, то только через создание своего макроса - https://academy.terrasoft.ru/documents/technic-sdk/7-11/kak-sozdat-makr…

Вильшанский Дмитрий,

Cпасибо! 

Чакур Александр

Александр, добрый день!

Я Вам ошибочно предоставил ответ не на тот вопрос.  Данный макрос разделаем "тысячные", но дробную часть не затрагивает. 

Базового макроса нет для решения вашей задачи.

День добрый. Вот пример моего решения. Использую 2 представления одних данных.

Amount[#NumberRU|Cent#].«Amount[#NumberRU|Cent#]»

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