Добрый день, уважаемые коллеги!

Продолжаем знакомить вас с функциональными возможностями наших решений. Сегодня мы остановимся на конструкторе номеров для договоров и документов, реализованном в продукте Docs on bpm’online.
В каждой компании предусмотрены определенные правила нумерации документов, которые зачастую являются индивидуальными и существенно отличаются для различных видов документов. Для того, чтобы у вас была возможность быстро и удобно настроить маску ввода номера под каждый тип документа, нами был разработан справочник нумераторов.

Карточка справочника

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

Полная информация о данной функциональной возможности здесь.

С удовольствием отвечу на все ваши вопросы!

Нравится

Поделиться

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

Добрый день, уважаемые коллеги!

Представляем вашему вниманию обзорное видео 1C Connector, в котором вы познакомитесь с интерфейсом нашего продукта, а также узнаете об основных возможностях данного решения.

Кроме того, в продолжение нашей статьи о базовом сценарии интеграции с использованием 1C Connector, мы подготовили для вас небольшой видео-урок с обзором процесса интеграции.

Желаем приятного просмотра!

С удовольствием отвечу на все возникающие вопросы!
samarasoft.com

Нравится

Поделиться

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

Добрый день, Уважаемые коллеги!

Продолжая цикл статей, посвященный знакомству с возможностями контроля исполнительской дисциплины в продукте Docs on bpm’online, мы подготовили обзор функционала переноса сроков выполнения и делегирования задач.

Возможность делегирования задачи.

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

Делегирование шаг 1

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

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

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

Перенос шаг 1

Подробнее о возможностях делегирования задачи и переноса сроков ее выполнения читайте здесь.

Буду рад ответить на возникшие вопросы!

Нравится

Поделиться

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

Добрый день, уважаемые коллеги!

В данной статье мы хотим подробнее познакомить вас с функцией контроля исполнения заданий в Docs on bpm’online.
Чтобы реализовать данную функцию, мы добавили в активность поле «Контролёр» – это поле не является обязательным к заполнению, однако, если автор задачи укажет в нем значение, то ответственному потребуется отправить задание на проверку, и без одобрения контролера он не сможет завершить активность.

Поле контролер

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

Сообщение о ошибке

Подробнее о данной функции читайте здесь.

Буду рад ответить на возникшие вопросы!

Нравится

Поделиться

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

Можно и в базовый функционал - полезная вещь!

Владимир,
это и есть базовый функционал продукта "документооборот для bpm'online" - PT Docs on bpm'online, который мы разрабатываем и в который вкладываем и силы и душу. :)

Скоро будет отдельный модуль по контролю задач, который будет устанавливаться на любую bpm'online и расширять ее функционал контролем.
Это для тех, кому нужен контроль, но не обязательно нужен документооборот.

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

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

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

Кроме того, хотел бы добавить, что функции продукта PT Time Control уже совсем скоро можно будет опробовать на демо-стенде, который будет в общем доступе.
Сейчас мы завершаем тестирование функционала на on-demand.

Статья о продукте в целом и о том, где его можно будет протестировать, в ближайшее время появится на community.

С уважением,
Зайчиков Илья
Менеджер продуктов
ООО «Программные Технологии»
Центр разработки и внедрения Террасофт Поволжье
Тел. +7 (846) 266-55-69
samarasoft.com

"Галанин Артур Николаевич" написал:Скоро будет отдельный модуль по контролю задач

Может, еще и управление проектами делаете?

Владимир, управление проектами мы делаем для себя, обкатываем.
Возможно будет продукт.
Сейчас у нас весь проектный департамент работает в bpm'online sales ondemand как в системе управления проектами, сделанной под нас, точнее делающейся под наши нужды проектной работы.

Чуть позже об этом сможет рассказать Александр Свистунов, директор проектов.

"Владимир Соколов" написал:Может, еще и управление проектами делаете?

Действительно, управление проектами мы допиливаем. Все будет завязано на методологию ведения проектов от Террасофт - роли КВ, CSE, фазы Initiation...Transition и так далее.
Есть конечно интересная идея, чтобы либо распространить это решение между всеми партнерами, либо сделать единый портал, где бы все партнеры смогли работать по единой методологии и было бы видны все активности, документы по проекту, все задержки сроков, эскалации проблем и так далее...
Но пока об этом говорить рано:smile: Как только мы будем готовы - выложим описание сделанных доработок, там есть несколько интересных решений, в том числе с чисто технической точки зрения.

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

Все блоги автора

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

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

Решение состоит из 2х частей:

  • Добавить кнопки переключения между представлениями
  • Собственно сделать страницы представленийИзображение удалено.

Добавление кнопок переключения реестров в раздел

Подготовлены спрайты кнопок:

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

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

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

Размер 30*60. Смысл в том, чтобы при наведении мыши фон кнопки съезжал на 30 пикселей, и как бы подсвечивался. Создан модуль, назвать, например SmrCustomButtonsCSS и определить LESS:

.blue-button-wrapper {
     width: 30px;
     height: 30px;
     padding: 0px;
     margin: 0px 5px 0px 5px;
}
.blue-button-image {
     display: inline;
     background-position: 0px 0px;
     width: 30px;
     height: 30px;
     padding: 0px;
     margin: 0px;
}
.blue-button-image:hover {
     display: inline;
     background-position: 0px -30px;
}
.blue-button-pressed {
     display: inline;
     background-position: 0px -30px;
     width: 30px;
     height: 30px;
     padding: 0px;
     margin: 0px;
}

Создана замещающая страница "AccountSectionV2":

 

define("AccountSectionV2", ["ConfigurationConstants", "css!SmrCustomButtonsCSS"],
    function(ConfigurationConstants) {
        return {
            entitySchemaName: "Account",
            attributes: {  },
            methods: {
                showLegalView: function(){
                    this.sandbox. publish( "PushHistoryState", { hash : "SectionModuleV2/LegalAccountSectionV2" });
                },
                showIndividualView: function(){
                    this.sandbox. publish( "PushHistoryState", { hash : "SectionModuleV2/IndividualAccountSectionV2" });
                },
                showAllView: function(){
                    this.sandbox. publish( "PushHistoryState", { hash : "SectionModuleV2/AccountSectionV2" });
                },
                isSwitchButtonsContainerVisible: function() {
                    var isCardVisible = this.get("IsCardVisible");
                    return !isCardVisible;
                }
 
 
            },
            diff: /**SCHEMA_DIFF*/[
 
                {
                    "operation": "insert",
                    "name": "SwitchViewButtonsContainer",
                    "parentName": "ActionButtonsContainer",
                    "propertyName": "items",
                    "values": {
                        "itemType": Terrasoft.ViewItemType.CONTAINER,
                        "visible": {
                            "bindTo": "isSwitchButtonsContainerVisible"
                        },
                        "items": []
                    }
                },
                {
                    "operation": "insert",
                    "parentName": "SwitchViewButtonsContainer",
                    "propertyName": "items",
                    "name": "SwitchToAllDataView",
                    "values": {
                        "layout": {
                            "column": 23,
                            "row": 0,
                            "colSpan": 1,
                            "rowSpan": 1
                        },
                        "itemType": Terrasoft.ViewItemType.BUTTON,
                        "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                        //"iconAlign": Terrasoft.controls.ButtonEnums.iconAlign.RIGHT,
                        iconAlign: Terrasoft.controls.ButtonEnums.iconAlign.TOP,
                        pressed: {bindTo: "LegalGridActive"},
                        "imageConfig": {
                            "source": Terrasoft.ImageSources.SOURCE_CODE_SCHEMA,
                            "params": {
                                "schemaName": "SmrCustomButtonsCSS",
                                "resourceItemName": "GridDataViewIconBlue"
                            }
                        },
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-pressed"
                        },
                        "click": {"bindTo": "showAllView"}
                    }
                },
                {
                    "operation": "insert",
                    "parentName": "SwitchViewButtonsContainer",
                    "propertyName": "items",
                    "name": "SwitchToPersonalDataView",
                    "values": {
                        "layout": {
                            "column": 23,
                            "row": 0,
                            "colSpan": 1,
                            "rowSpan": 1
                        },
                        "itemType": Terrasoft.ViewItemType.BUTTON,
                        "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                        //"iconAlign": Terrasoft.controls.ButtonEnums.iconAlign.RIGHT,
                        iconAlign: Terrasoft.controls.ButtonEnums.iconAlign.TOP,
                        pressed: {bindTo: "LegalGridActive"},
                        "imageConfig": {
                            "source": Terrasoft.ImageSources.SOURCE_CODE_SCHEMA,
                            "params": {
                                "schemaName": "SmrCustomButtonsCSS",
                                "resourceItemName": "GridPersonalDataViewIconBlue"
                            }
                        },
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-image"
                        },
                        "click": {"bindTo": "showIndividualView"}
                    }
                },
                {
                    "operation": "insert",
                    "parentName": "SwitchViewButtonsContainer",
                    "propertyName": "items",
                    "name": "SwitchToLegalDataView",
                    "values": {
                        "layout": {
                            "column": 23,
                            "row": 0,
                            "colSpan": 1,
                            "rowSpan": 1
                        },
                        "itemType": Terrasoft.ViewItemType.BUTTON,
                        "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                        //"iconAlign": Terrasoft.controls.ButtonEnums.iconAlign.RIGHT,
                        iconAlign: Terrasoft.controls.ButtonEnums.iconAlign.TOP,
                        pressed: {bindTo: "LegalGridActive"},
                        "imageConfig": {
                            "source": Terrasoft.ImageSources.SOURCE_CODE_SCHEMA,
                            "params": {
                                "schemaName": "SmrCustomButtonsCSS",
                                "resourceItemName": "GridLegalDataViewIconBlue"
                            }
                        },
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-image",
                            pressedClass: "blue-button-pressed"
                        },
                        "click": {"bindTo": "showLegalView"}
                    }
                }
 
            ]/**SCHEMA_DIFF*/
        };
    }
);

Страницы разделов

Созданы 2 страницы разделов. Код для реестра физических лиц:

define("IndividualAccountSectionV2", ["ConfigurationConstants", "css!SmrCustomButtonsCSS"],
    function(ConfigurationConstants) {
        return {
            entitySchemaName: "Account",
            methods: {
                /**
                 * Инициализирует  фильтры экземпляра запроса
                 * @protected
                 * @overridden
                 * @param {Terrasoft.EntitySchemaQuery} esq Запрос, в котором будут инициированы фильтры
                 */
                initQueryFilters: function (esq) {
                    this.callParent(arguments);
                    esq.filters.removeByKey("ClientType");
                    esq.filters.add("ClientType", this.Terrasoft.createColumnFilterWithParameter(
                        this.Terrasoft.ComparisonType.EQUAL, "SmrClientType.Id", "80FD3F74-0AF4-4F8A-9F0B-F626E4F05147"));
                },
                /**
                 * Возвращает представления раздела по умолчанию.
                 * Реестр, Аналитика не создаётся
                 * @overridden
                 * @return {Object} Представления раздела по умолчанию
                 */
                getDefaultDataViews: function() {
                    var gridDataView = {
                        name: this.get("GridDataViewName"),
                        caption: this.getDefaultGridDataViewCaption(),
                        icon: this.getDefaultGridDataViewIcon()
                    };
                    var analyticsDataView = {
 
                    };
                    return {
                        "GridDataView": gridDataView,
                        "AnalyticsDataView": analyticsDataView
                    };
                },
                /**
                 * Получает пункты меню кнопки "Вид"
                 * @overridden
                 * @virtual
                 * @return {Terrasoft.BaseViewModelCollection} Возвращает пункты меню кнопки "Вид"
                 */
                getViewOptions: function() {
                    var viewOptions = this.Ext.create("Terrasoft.BaseViewModelCollection");
                    viewOptions.addItem(this.getButtonMenuItem({
                        "Caption": {"bindTo": "Resources.Strings.SortMenuCaption"},
                        "Items": this.get("SortColumns")
                    }));
                    viewOptions.addItem(this.getButtonMenuItem({
                        "Caption": {"bindTo": "Resources.Strings.OpenGridSettingsCaption"},
                        "Click": {"bindTo": "openGridSettings"}
                    }));
                    return viewOptions;
                }
            },
            diff: /**SCHEMA_DIFF*/[
                {
                    "operation": "merge",
                    "name": "SwitchToAllDataView",
                    "values": {
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-image"
                        }
                    }
                },
                {
                    "operation": "merge",
                    "name": "SwitchToPersonalDataView",
                    "values": {
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-pressed"
                        }
                    }
                },
                {
                    "operation": "merge",
                    "name": "SwitchToLegalDataView",
                    "values": {
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-image"
                        }
                    }
                }
            ]/**SCHEMA_DIFF*/
        };
    }
);

Код страницы для реестра юридических лиц:

define("LegalAccountSectionV2", ["RightUtilities", "ConfigurationConstants", "css!SmrCustomButtonsCSS"],
    function (RightUtilities, ConfigurationConstants) {
        return {
            entitySchemaName: "Account",
            attributes: {},
            messages: {},
            methods: {
                /**
                 * Инициализирует  фильтры экземпляра запроса
                 * @protected
                 * @overridden
                 * @param {Terrasoft.EntitySchemaQuery} esq Запрос, в котором будут инициированы фильтры
                 */
                initQueryFilters: function (esq) {
                    this.callParent(arguments);
                    esq.filters.removeByKey("ClientType");
                    esq.filters.add("ClientType", this.Terrasoft.createColumnFilterWithParameter(
                        this.Terrasoft.ComparisonType.EQUAL, "SmrClientType.Id", "DD4E6E34-21D3-4F09-A417-6FC4116876B5"));
                },
                /**
                 * Возвращает представления раздела по умолчанию.
                 * Реестр, Аналитика не создаётся
                 * @overridden
                 * @return {Object} Представления раздела по умолчанию
                 */
                getDefaultDataViews: function() {
                    var gridDataView = {
                        name: this.get("GridDataViewName"),
                        caption: this.getDefaultGridDataViewCaption(),
                        icon: this.getDefaultGridDataViewIcon()
                    };
                    var analyticsDataView = {
 
                    };
                    return {
                        "GridDataView": gridDataView,
                        "AnalyticsDataView": analyticsDataView
                    };
                },
                /**
                 * Получает пункты меню кнопки "Вид"
                 * @overridden
                 * @virtual
                 * @return {Terrasoft.BaseViewModelCollection} Возвращает пункты меню кнопки "Вид"
                 */
                getViewOptions: function() {
                    var viewOptions = this.Ext.create("Terrasoft.BaseViewModelCollection");
                    viewOptions.addItem(this.getButtonMenuItem({
                        "Caption": {"bindTo": "Resources.Strings.SortMenuCaption"},
                        "Items": this.get("SortColumns")
                    }));
                    viewOptions.addItem(this.getButtonMenuItem({
                        "Caption": {"bindTo": "Resources.Strings.OpenGridSettingsCaption"},
                        "Click": {"bindTo": "openGridSettings"}
                    }));
                    return viewOptions;
                }
            },
            diff: /**SCHEMA_DIFF*/[
                {
                    "operation": "merge",
                    "name": "SwitchToAllDataView",
                    "values": {
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-image"
 
                        }
                    }
                },
                {
                    "operation": "merge",
                    "name": "SwitchToPersonalDataView",
                    "values": {
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-image"
                        }
                    }
                },
                {
                    "operation": "merge",
                    "name": "SwitchToLegalDataView",
                    "values": {
                        classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-pressed"
                        }
                    }
                }
            ]/**SCHEMA_DIFF*/
        };
    });

Что нужно отметить в этих страницах:

/**
 * Инициализирует  фильтры экземпляра запроса
 * @protected
 * @overridden
 * @param {Terrasoft.EntitySchemaQuery} esq Запрос, в котором будут инициированы фильтры
 */
initQueryFilters: function (esq) {
        this.callParent(arguments);
        esq.filters.removeByKey("ClientType");
        esq.filters.add("ClientType", this.Terrasoft.createColumnFilterWithParameter(
                this.Terrasoft.ComparisonType.EQUAL, "SmrClientType.Id", "DD4E6E34-21D3-4F09-A417-6FC4116876B5"));
}

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

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

 

Проблемы

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

P.S.: Очень ждем возможности использовать такую возможность базовыми средствами, кейсов много - это и деление на сотрудники/контакты и физ/юр лица. В ситуациях, когда набор колонок одинаковый, конечно рекомендуется пользоваться стандартными динамическими группами.

Нравится

Поделиться

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

Эх, еще бы это в Мастер раздела :)

Кстати, а кейс ведения физических и юридических лиц в Контрагентах давно стал практикой?

Это практика при условиях, что:

  • Клиенту нужно смотреть суммарную разнообразную аналитику по всем клиентам физики+юрики, создаваемую через стандартные средства (в представлении "Аналитика")
  • Клиента бесит, когда ему каждый раз заходя в раздел Контакты, нужно отфильтровывать своих сотрудников и сотрудников подрядчиков, чтобы поработать с клиентами:smile:

Александр, золотой вы человек :twisted:
Как раз ломал голову как бы не убить кучу времени и реализовать представления с переключением, а тут пример живой.

Рад помочь, для этого и нужно комьюнити:smile:. Если есть еще вопросы в стиле "В 3ке это делалось в 5 кликов аналитиком, а как это сделать это в 7ке?" - спрашивайте, наверняка найдем проектное решения в закромах, пусть и не всегда очевидное:lol:

"Александр Свистунов" написал:спрашивайте, наверняка найдем проектное решения в закромах

Я ж воспользуюсь :)
Case: отфильтровать в разделе Счета все счета, к которым прикреплен продукт = "ххх". То есть фильтр по вхождению некой информации в деталь - аналогично в любом разделе. Так как штатно доступны только фильтры по детали с агрегатной функцией, то видимо надо как-то добавлять свой фильтр?
В 3х это делалось через модификацию sq_, в 5х вроде как вообще работало штатно через обратные связи.
Раздел итоги элемент список не предлагать :) там делается посредством списка на основании Продукт в счете - пробовал, работает.

Александр, если я правильно понял ваш Кейс, то это делается через подобный фильтр

Продукт в счете

"Толмачев Дмитрий Юрьевич" написал:делается через подобный фильтр

Вот только сейчас сумел поменять count на exists - после того как выбрал хоть какую-то колонку при фильтрации по связанной таблице.
Именно это и было нужно, спасибо
Ну вот как надо было догадаться сначала выбрать произвольное поле типа Количество, чтобы попасть обратно в настройки фильтра... Идем и ищем (с)

Чтобы темы не плодить... товарищи, как бы попроще скрыть из меню Edit, Copy и особенно Delete для детали, основанной на вьюшке?
Деталь самодельная, родитель BaseGridDetailV2.

Александр,

Для решения вашей задачи достаточно переопределить функцию addRecordOperationsMenuItems на созданной вами странице реестра

methods: {
	/**
	 * @overridden
	 */
	addRecordOperationsMenuItems: Ext.emptyFn
	//...
}

"Толмачев Дмитрий Юрьевич" написал:Ext.emptyFn

Спасибо, попробую так.
Я ее нашел, только наивно переопределял как

addRecordOperationsMenuItems: function() {
}

То есть пытался заполнить "ничем"...

А я где-то такую функцию нашёл

getAddRecordButtonVisible: function() {
	return false;
},

Добрый день!

Александр, спасибо за предоставленной пример, остался один непонятный для меня момент, какие действия нужно выполнить, что бы новая страница раздела (например, IndividualAccountSectionV2) стала доступна по URL "http://localhost/0/Nui/ViewModule.aspx#SectionModuleV2/IndividualAccoun…"?

Сергей,

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

В данном случае, насколько я помню, у страниц LegalAccountSectionV2 и IndividualAccountSectionV2 в качестве родительской использовалась "AccountSectionV2", т.к. по сути это дочерние ветки.

Александр, большое спасибо за то что делитесь отличным материалом!

В процессе его изучения и использования появилось несколько вопросов. Буду очень благодарен за любой совет или помощь.

1. Правильно ли я понимаю, что через свойства Diff:

pressed: {bindTo: "LegalGridActive"},

и

classes: {
                            wrapperClass: "blue-button-wrapper",
                            imageClass: "blue-button-image",
                            pressedClass: "blue-button-pressed"
                        },

Вы указываете, будет ли элемент содержать класс "blue-button-pressed" ?
Если да, то что в этом случае должна возвращать функция "LegalGridActive" - true или false?

У меня на версии 7.7 не получилось сделать так, чтобы к елементу "прицепился" мой класс указанный в pressedClass (как у Вашем примере: pressedClass: "blue-button-pressed"). Вместо него появился "дефолтный" класс - t-btn-pressed.
вот код DIFF:

	{
		"operation": "insert",
		"parentName": "SignButtonsContainer",
		"propertyName": "items",
		"name": "SignBtnVip",
		"values": {
			"itemType": Terrasoft.ViewItemType.BUTTON,
			"caption": {"bindTo": "sign_Vip"},
			"hint": {"bindTo": "Resources.Strings.sign_Vip"},
			"imageConfig" : {"bindTo": "Resources.Images.sign_vip_Image"},
			//"click": {"bindTo": "onVipButtonClick"},
			pressed : {bindTo : "VipButtonPressed"},
			classes : {
				wrapperClass : "sign-btn",
				imageClass   : "sign-img",
				pressedClass : "sign-img-pressed"
			},
			"visible": true
		}
	},

В итоге вместо ожидаемого css-класса "sign-img-pressed" - появляется "t-btn-pressed". Не могу понять что я сделал не так...

2. Можно ли какимто образом отключить для моего елемента генерацию стандрартных css-классов?
(для элемента Terrasoft.ViewItemType.BUTTON сгенерировались - t-btn-wrapper, t-btn-no-text-padding, t-btn-style-default )

3. Глобальный вопрос - не могли бы Вы подсказать, какой подход можно применить для того, чтобы можно было динамически (например по кнопочке) добавлять или удалять указанные кастомные css-классы для элемента?

В целом, очень хорошо что в 7-ке есть возможность подключать свои css-стили, это очень удобно, но вот генерация самих классов для элемента происходит немного не очевидно... :smile:

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

Добрый день, уважаемые коллеги!

Продолжаем знакомить вас с функциональными особенностями наших продуктов. В данной статье мы расскажем об Информере для Windows – приложении для рабочего стола Windows, которое поставляется с нашими продуктами, такими как Docs или Time Control.

Наше приложение предназначено для того, чтобы вы всегда оперативно получали информацию о поступающих задачах, даже если в данный момент не находитесь в системе bpm’online.
На изображении ниже представлена новая поступившая задача с иконкой Информера в системной области панели задач:

Информер в трее

Кликнув на задачу, мы перейдем в интерфейс Информера:

Интерфейс

Полную статью читайте здесь.

С удовольствием отвечу на все возникающие вопросы!

Нравится

Поделиться

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

Добрый день, Илья.
Есть ли у вас док по автоматической установке "Информера"?

Best regards,

Maxim Abramov

Postal Address: 15, Vashutinskoye Shosse, City of Khimki
141402, Moscow Region, Russia

Phone: +7 495 933 60 27 / 4402 - Mobile: +7 916 197 07 92
E-mail: Maxim.Abramov@ru.atlascopco.com

Добрый день.
Отдельную инструкцию не делали, так как обычно ставим через стандартные груповые политики (вешаем на событие logon). В принципе все делаем по примеру

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

Добрый день, Уважаемые коллеги!

Продолжаем рассказывать о продукте 1C Connector. Сегодня мы остановимся на одном из наиболее часто используемых сценариев интеграции, который доступен пользователям нашего продукта.

Рассмотрим следующий кейс: менеджер создает счет в системе bpm’online и ему нужно, чтобы он сразу ушел в 1С, а после получения оплаты по этому счету необходимо сразу отобразить это в bpm’online.

Менеджер создает счет в системе bpm’online:

Счет в bpm

Далее пользователь может подождать экспорта счета в 1С в течение определенного времени, заданного в расписании настроенной интеграции:

Расписание интеграции

Или же может запустить интеграцию вручную:

Запуск вручную

После этого счет появится в системе 1С. Вместе со счетом будут переданы все связанные сущности, такие как Продукты, Договоры, Контрагенты и т.д., которые вы прописали в настройках синхронизации:

Счет в 1С

Для интеграции оплаты в bpm’online необходимо провести счет в 1С:

Проводка счета

Вся внесенная информация появится уже на стороне bpm’online:

Оплаченный счет

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

В скором времени мы расскажем, как можно при помощи нашего коннектора вызывать интеграцию из БП, какие фильтры можно настроить для интегрируемых сущностей и поговорим о множестве иных интересных функций, которые заложены в продукте 1C Connector. Подписывайтесь на обновление материала!

С удовольствием отвечу на все возникающие вопросы!

Нравится

Поделиться

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

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

С 4 по 6 июня «Программные технологии» принимали участие в CRM Days – ежегодной партнерской конференции Terrasoft. Это были очень интересные и насыщенные дни в кругу профессионалов CRM-рынка!

Доклады от партнеров и клиентов, интереснейшие дискуссии и великолепная атмосфера сделали этот форум крайне полезным и увлекательным для каждого участника. Хотим еще раз поблагодарить организаторов и участников за создание этого замечательного профессионального праздника!

Наша команда также привезла свои материалы и презентации! Мы рассказали участникам и посетителям форума о наших продуктах: на экспо-секции было представлено решение Docs – документооборот на платформе bpm’online, а в CRM академии 1C Connector – приложение для интеграции системы bpm’online с системой 1C.

Также на нашем стенде все участники могли ознакомится с отраслевыми продуктами компании, такими как Forwarder (продукт для логистических компаний) и Bail (решение для ломбардов).

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

Будем рады ответить на все возникающие вопросы!

Нравится

Поделиться

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

Уважаемые коллеги!

Продукт Docs on bpm’online не стоит на месте и каждый день развивается! Мы добавляем новые функции, совершенствуем уже реализованные и делаем все, чтобы пользователь полюбил наше решение с первых же минут работы в системе!

Для того, чтобы Вы могли узнать о возможностях продукта всего за несколько минут, мы сделали ролик, посвященный нашему решению – Все о Docs on bpm’online за 5 минут!
Желаем приятного просмотра!

Подписывайтесь на материалы по данному продукту - впереди еще много нового и интересного!

Буду рад ответить на возникшие вопросы!

Нравится

Поделиться

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

Коллеги,
Центр Разработки и Внедрения Террасофт Поволжье представит свои продукты, разработанные для платформы bpm'online на "Днях CRM 2015".
В рамках выставки будет работать стенд "Программных Технологий", на котором Вы сможете ознакомиться с новыми продуктами компании для различных отраслей и сфер бизнеса.
Мы представим 6 новых продуктов:
PT Docs on bpm’online – решение для организации системы документооборота на платформе bpm’online.
PT 1C Connector on bpm’online – инструмент, с помощью которого можно легко настроить и осуществлять обмен важными данными между системами 1С:Предприятие и bpm’online и всегда быть в курсе актуальной информации.
PT Forwader on bpm’online – логистический продукт для быстрого и удобного автоматического ранжирования и подбора возможных сделок по перевозке грузов, а также расчета оптимального расположения груза в зависимости от маршрута погрузки/разгрузки.
PT Bail on bpm’online – отраслевое решение для ломбардов, которое позволяет вести полный жизненный цикл залога, дает возможность настройки тарифов/схем кредитования, формирует всю необходимую документацию и отчеты.
PT Cost Planning and Sharing – модуль для автоматизации учета стоимости оборудования и расчета стоимости предоставления сервисов. В системе наглядно отображается иерархическая взаимосвязь сервисов и оборудования. Расходы на предоставление сервиса могут распределяться, как на внешних клиентов, так и внутри компании между своими подразделениями. Модуль также снабжен отчетами по клиентам, в которых можно наглядно видеть стоимость предоставление сервисов каждой конкретной компании.

Сотрудники Центра Разработки и Внедрения Террасофт Поволжье выступят с докладами по основным продуктам, над которыми работает компания, а также поделятся своим опытом по внедрению CRM-систем в бизнес-процессы заказчиков.

Илья Зайчиков, менеджер продуктов ООО «Программные Технологии»:
На форуме я расскажу о наших продуктах - некоторые из них будут представлены широкой публике в первый раз, это очень здорово! Хочется произвести очень сильное впечатление теми функциями, что мы реализовали в продуктах. Конечно же, интересно будет получить обратную связь от участников, найти новые нестандартные идеи и решения. Форум – это отличная площадка для общения с партнерами, сотрудниками Terrasoft, обмена опытом и обсуждения новых продуктов и планов на будущее. Для нас очень важен предстоящий релиз 7.6 – в скором времени мы перейдем на него и нам будет что обсудить и с разработчиками, и с менеджерами.

Александр Свистунов, директор проектов ООО «Программные Технологии»:
В этом году мы сможем оценить преимущества нового формата взаимодействия участников форума – форум 2015 проводится не только для партнеров, но и для клиентов. Кроме того, будет очень интересно пообщаться со всеми директорами практик, обсудить перспективы выпуска новых совместных продуктов Террасофт. Мы все ждем релиза 7.6 и развития линейки, ну и конечно же, предвкушаем старт продаж отдельного продукта PT Docs on bpm’online!

Будем рады встретиться с Вами на Днях CRM!

Нравится

Поделиться

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