Добрый день!

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

В связи с этим вопрос - какой объект отвечает за Доступ почтового ящика для других пользователей?Изображение удалено.

Нравится

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

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



Права на почтовые ящики храняться в объекте EmailDefRights. В нем Вы можете просматривать/изменять пользователей, которым дано право на тот или иной почтовый ящик.

Анна Журавель,

Добрый день!

Благодарю за ответ. Подскажите пожалуйста, как изменить права в EmailDefRights на Отправку писем (например, через процесс, для manager2 дать доступ на не только к письмам, но и на Отправку писем для manager1)?

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

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

Наиболее простым способом реализовать данную бизнес-задачу можно использую пользовательские средства системы bpm'online.



В версии 7.12.0 был реализован функционал более гибкой настройки прав доступа на почтовый ящик.

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

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

К примеру, Вы можете раздать отдельно право на просмотр писем, на отправку и на настройку почтовых ящиков.



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

 

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

Здравствуйте. Добавила модуль AccountProfile в карточку раздела. Он не отображается. Подскажите что я не правильно сделала?

Ниже представлен код

define("UsrTSiPO2Page", [], function() {

    return {

        entitySchemaName: "UsrTSiPO",

        details: /**SCHEMA_DETAILS*/{

            "AccountAddressDetailV210d08457": {

                "schemaName": "AccountAddressDetailV2",

                "entitySchemaName": "AccountAddress",

                "filter": {

                    "detailColumn": "UsrTS",

                    "masterColumn": "Id"

                }

            },

            "UsrSchema7Detaila426f654": {

                "schemaName": "UsrSchema7Detail",

                "entitySchemaName": "UsrKontLic",

                "filter": {

                    "detailColumn": "UsrTS",

                    "masterColumn": "Id"

                }

            },

            "ActivityDetailV2c61ee416": {

                "schemaName": "ActivityDetailV2",

                "entitySchemaName": "Activity",

                "filter": {

                    "detailColumn": "UsrTSiliPR",

                    "masterColumn": "Id"

                }

            },

            "UsrSchema10Detail2f193796": {

                "schemaName": "UsrSchema10Detail",

                "entitySchemaName": "UsrR",

                "filter": {

                    "detailColumn": "UsrTSiP",

                    "masterColumn": "Id"

                }

            },

            "UsrSchema13Detail0d52d3c2": {

                "schemaName": "UsrSchema13Detail",

                "entitySchemaName": "UsrTSiPOFile",

                "filter": {

                    "detailColumn": "UsrTSiPO",

                    "masterColumn": "Id"

                }

            }

        },

        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*/

        }

    };

});

 

Нравится

5 комментариев
"viewModelConfig": {
   // ̶ ̶Н̶а̶з̶в̶а̶н̶и̶е̶ ̶к̶о̶л̶о̶н̶к̶и̶ ̶с̶в̶я̶з̶а̶н̶н̶о̶й̶ ̶с̶у̶щ̶н̶о̶с̶т̶и̶.̶
   //Теперь по-русски. Здесь прописывается колонка из ТЕКУЩЕГО объекта (у вас это UsrTSiPO), которая ссылается на справочник контрагентов. Я так подозреваю название колонки что-то вроде UsrAccount
   masterColumnName: "UsrAccount"
}

 

А в консоли отображаются какие-то ошибки?

Потому что написано все правильно. Возможно у вас в вашем пользовательском объекте нет связанной сущности "Account"?

Добавить комментарий

Золотарев Артем Андреевич,

 ошибок в консоли нет. карточку открываю там отображается только лента

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

 создала справочник контрагента, Назвала UsrAccount. Изменила в коде ничего не изменилась


 
UsrAccount

 

Трудно определить, что не так по той информации, которую вы предоставили. Попробуйте этот модуль использовать в каком-нибудь коробочном разделе, если сработает, значит что-то не так непосредственно с пользовательским разделом. Если так, то будем дальше смотреть, что можно сделать.

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

Приветы,

 

Все методы работали. 

Разработка велась в "своем" пакете, а создавалось изначально поле в кастоме.

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

 

Есть описание

{

                    "operation": "insert",

                    "name": "BpSpeekAddr",

                    "parentName": "GeneralInfoGridLayout",

                    "propertyName": "items",

                    "values": {

                        "dataValueType": this.Terrasoft.DataValueType.ENUM,

                        "caption": "Адрес собеседования",

                        "controlConfig": {

                            "list": {

                                "bindTo": "SpeakAddressItems"

                            },

                            "prepareList": { bindTo: "initSpeakAddressItems" },

                            "placeholder": {

                                "bindTo": "Адрес собеседования"

                            }

                        },

                        "layout": {

                "colSpan": 12,

                "rowSpan": 1,

                "column": 12,

                "row": 4,

                        }

                    }

                },

Нравится

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

Возможно, одноврененно не перенесены какие-то вспомогательные сущности, например, схемы справочника, на которые ссылается поле. Если на старой базе они так и остались в Custom, то в перенос не попали.

Можно попробовать на новом месте создать аналогичное поле вручную, а затем сравнить с неработающим, будут ли какие-то отличия в сгенерированном коде или в поведении.

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

Воплотил инструкцию 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)

 

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