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

Создан новый сервер BpmOnline, настроен по инструкции в Академии.

Вход через веб-интерфейс работает без проблем, при попытке входа через мобильный клиент процесс «затыкается» на пункте «Импорт данных (Контрагент)».

Не подскажете, в чем может быть проблема?

В логах IIS строки вида:

 

2019-07-03 06:51:39 192.168.104.132 POST /0/DataService/json/SyncReply/SelectQuery - 80 Egorov_v 192.168.107.173 Mozilla/5.0+(Linux;+Android+8.0.0;+SM-G570F+Build/R16NW;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/75.0.3770.101+Mobile+Safari/537.36 - 200 0 0 103
2019-07-03 06:51:41 192.168.104.132 POST /0/DataService/json/SyncReply/SelectQuery - 80 Egorov_v 192.168.107.173 Mozilla/5.0+(Linux;+Android+8.0.0;+SM-G570F+Build/R16NW;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/75.0.3770.101+Mobile+Safari/537.36 - 200 0 0 100
2019-07-03 06:51:41 192.168.104.132 POST /0/DataService/json/SyncReply/SelectQuery - 80 Egorov_v 192.168.107.173 Mozilla/5.0+(Linux;+Android+8.0.0;+SM-G570F+Build/R16NW;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/75.0.3770.101+Mobile+Safari/537.36 - 200 0 0 39
2019-07-03 06:51:41 192.168.104.132 POST /0/DataService/json/SyncReply/SelectQuery - 80 Egorov_v 192.168.107.173 Mozilla/5.0+(Linux;+Android+8.0.0;+SM-G570F+Build/R16NW;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/75.0.3770.101+Mobile+Safari/537.36 - 200 0 0 167
2019-07-03 06:52:13 192.168.104.132 POST /0/DataService/json/SyncReply/SelectQuery - 80 Egorov_v 192.168.107.173 Mozilla/5.0+(Linux;+Android+8.0.0;+SM-G570F+Build/R16NW;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/75.0.3770.101+Mobile+Safari/537.36 - 200 0 0 83
2019-07-03 06:52:18 192.168.104.132 POST /0/DataService/json/SyncReply/SelectQuery - 80 Egorov_v 192.168.107.173 Mozilla/5.0+(Linux;+Android+8.0.0;+SM-G570F+Build/R16NW;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/75.0.3770.101+Mobile+Safari/537.36 - 200 0 0 2258

Не знаю, куда копать, может подскажете?

Нравится

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

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

На конференции TechPoint рассказывали о мобильной программе для спортивных ставок, которая плохо работала на демонстрации у заказчика, как оказалось, из-за плохой связи в его офисе. В Вашем случае может тоже быть что угодно. Больше подробностей можно узнать из отчёта по кнопке «Отправить лог». Если подозреваете, что дело в обновлении, попробуйте и на старом, и на новом.

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

Спасибо, Александр.

Со связью проблем нет - тестировалось на офисном wifi в том числе.

А отправить лог нет возможности - клиент "зависает" на пункте импорта контрагентов, в таком состоянии нельзя ни вернуться на предыдущий шаг на даже закрыть клиент.

Как выяснилось, проблемы возникают не на всех устройствах.

Есть подозрение, что проблема в количестве контрагентов, которое в последние дни подскочило при подключении новых филиалов к системе.

Смотрите логи на стороне мобильного и на стороне сайта (не IIS).

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

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

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

Получилось вытянуть родительскую роль "Inherited from", для всех контактов читается значение - "All employees". 

Подскажите, реально ли без побочных "костылей" с помощью процесса прочитать орг. роль?

Нравится

5 комментариев
Лучший ответ

Добрый день!

У контакта может быть несколько орг. ролей, так как это деталь.

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





Добрый день!

У контакта может быть несколько орг. ролей, так как это деталь.

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





Добрый день,

Это не очень сложно: но нужно учитывать структуру таблиц где хранятся роли и вхождения в роли. Посмотрите таблицы / объекты "Объект администрирования" и "Вхождение пользователя в роли". В первой хранятся роли и сами пользователи, а во второй хранятся вхождения этих пользователей в соответствующие роли. Так же в таблицах есть тип роли, по которому можно определить организационная это роли или функциональная.

Сидоров Александр В.,

Делала в точности также, только в "Роли пользователя" читала первую запись выборки, а не коллекцию. Спасибо большое, попробую.

Тёскин Дмитрий Валерьевич,

здравствуйте, Дмитрий. 

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

Вся информация о пользователях и ролях и вхождении первых во вторые хранится в таблицах SysAdminUnit, SysUserInRole и SysAdminUnitInRole. В последнюю переносится после выполнения действия актуализации. Возможно, Вы как раз ещё не актуализировали.

Если есть доступ к базе, сделайте SQL-запросами выборку из этих таблиц: сначала по имени определите Id этого пользователя, а потом посмотрите роли, в которые он входит. Когда структура и условия фильтрации станут ясны, можно будет повторить аналогичные условия выборки средствами движка процессов.

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

Как использовать BigInt  в ВРМ? 

Не хватает 32 бит, нужно 64, в конфигураторе нет такого выбора!

Нравится

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

В дизайнере объектов нельзя добавить поле такого типа. Как обходной вариант, длинное число можно хранить в текстовом поле или в двух и более отдельных числовых, используя вычисление. В коде C#-схем можно создавать переменные типа System.Int64 и работать с ними.

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

Печалька. Если нельзя в дизайнере, то и в базе будут сложности и в DataService нельзя будет отправить. А в какой-нибудь будущей версии планируется добавить? Всё-таки мы на 64 битных системах уже 10+ лет работаем все

Ещё можно использовать тип «Деньги», то есть Decimal(20,2).

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

Мы зафиксировали ваше пожелание, на данный момент конкретных планов по этой функциональности нет.

Можете вкратце описать бизнес-кейс, для которого вам потребовалось поле такого типа?

Дмитрий Жаренко,

я думаю таких кейсов полно. У нас - интеграция с внешними ресурсами, там 64-битные ID и их надо сохранять. Конвертить все в деньги туда-сюда - костыль, которого хотелось бы избежать.

Алексей-Карягин,

Спасибо!

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

Не планируется добавить в систему данный тип?

Так же хотелось бы делать значимые поля(int, dateTime и прочие) nullable, не подсажите это есть в планах? 

Прошло 2 года, сменилось 10+ версий, вменяемого решения так и не появилось? Террасофт?

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



Получили ответ от Product owner'а ответственной команды разработки. Реализация данной задачи включена в Roadmap команды R&D. Но поскольку есть более приоритетные задачи, в ближайшие пол года работы по решению не планируются.



С уважением, Елена.

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

Добрый день !

Существует 2 объекта: Проект и Контрагент. Контрагент и Проект содержат в себе справочное поле "Отрасль".  Также в Проекте заполняется поле Контрагент.

Хочу создать Бпроцесс, устанвливающий значение поля Отрасль в Проекте, если заполнить Контрагента, значением поля Отрасль из контрагента. Но зашла в тупик.

При чтении данных разрешено читать данные поля Проект: Отрасль, Контрагент и id. а как считать значение поля Отрасль в контрагенте ? Если добавить новый элемент для чтения данных контрагента, то как указать, что читать следует лишь в том контрагенте, который используется в проекте с данным id (id проекта который был изменен в данный момент) ?

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

 

Нравится

4 комментария
Лучший ответ

Добрый день!

Ваш процесс должен выглядеть так:







Создала бизнес процесс по примеру из статьи: https://academy.terrasoft.ru/documents/technic-bpms/7-14/kak-chitat-dannye-zapisi-drugogo-obekta   но после запуска процесса ничего не происходит.. ни при создании проекта, ни при изменении. Можно ли где то найти, в чем проблема ?

Здравствуйте. Сначала читаете данные контрагента (либо всех колонок либо необходимых) фильтруя по id из стартового сигнала, берете элемент - http://prntscr.com/o6ffgh

Как то так.

Я бы сделал на событийном слое кодом.

Добрый день!

Ваш процесс должен выглядеть так:







Сидоров Александр В., 

Александр, большая Вам благодарность !  Подправила свой процесс, добавив фильтрацию по id как на Вашем примере ! БПроцесс заработал !

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

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

Возможно ли настроить конфигурацию мобильного приложения следующим образом, что бы при срабатывании бизнес правила и обработки модели текущей записи возможно было доставать значения данных из связанных записей? В данном случае меня интересует Контакт - http://prntscr.com/o5yxe7. Без написания запроса. или запрос нужно писать в любом случае? Стоит задача при изменении Контакта необходимо в заказе перезаписывать контактный номер телефона, как лучше реализовать?

Нравится

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

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

Мне кажется, такое нужно делать не в мобильной версии, а на стороне сервера при синхронизации. Ведь новые данные контакта могут прийти с разных сторон, например, их может исправить пользователь, работающий в веб-версии, интеграция с сайтом, 1С или ещё чем-то. Если менять будут при помощи класса EntitySchemaQuery, можно реализовать логику во встроенном или обычном процессе.

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

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

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

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

Доброго времени суток! Подскажите, пожалуйста, как добавить CheckBox в средства связи. Для средства связи добавил в объекте логическое значение, например с названием "UsrIsMain".

Нравится

4 комментария
Лучший ответ

Мягко говоря не тривиальная задача, посмотрите как в BaseCommunication формируются конфиги для элементов управления для существующих в короюке типов комуникации и по аналогии для своего (добавленного) логического типа создайте конфиг для контрола. 

Мягко говоря не тривиальная задача, посмотрите как в BaseCommunication формируются конфиги для элементов управления для существующих в короюке типов комуникации и по аналогии для своего (добавленного) логического типа создайте конфиг для контрола. 

Григорий Чех,

В принципе мне понятно, как конфиг строится. Добавлял TextEdit поле, Lookup поле. А вот CheckBox не получается, выбрасывает ошибку следующую:

 

message: Cannot read property 'changeEvent' of undefined 

 date: Thu Jun 13 2019 11:01:45 GMT+0300 (Москва, стандартное время)

moduleId: CardModuleV2_########GUID###########_ContactPageV2_detail_ContactCommunication

moduleName: DetailModuleV2



Строил сам CheckBox вот так:

{

                        className: "Terrasoft.CheckBoxEdit",

                        id: "CheckBoxEditId",

                        classes: {

                            wrapClass: ["communication-detail-edit-user-class", "communication-additional-edit-label-wrap"]

                        },

                        value: {

                            bindTo: "UsrIsMain"

                        },

                        change: {

                            bindTo: "changeIsMainFlag"

                        }

  };



Сама функция changeIsMainFlag объявлена в ViewConfig'е.

 

Григорий Чех,

Вообще видел уже два поста в коммьюнити, которые тоже не понимали, как CheckBox вставить в Средства связи. Ответа там так и не было.

В детали средств связи контакта в пакете MarketingCampaign есть такое поле «Не актуальный» (NonActual) у каждого средства связи. Посмотреть на реализацию можно в схеме ContactCommunicationDetail.

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

Имеется иерархическая деталь с редактируемым реестром. В ней возникает проблема при сохранении дробного числа. Появляется ошибка Cannot read property 'getAttribute' of null, которая возникает в результате того, что метод GetDomRow возвращает undefined. После этого я не могу больше сохранять дробные числа в реестре и приходится перезагружать страницу. Первое сохранение проходит удачно, хоть и успевает появиться ошибка. В результате чего возникает такая проблема? ниже представлен код детали

define("IDSBRefrigeratorInTMADetail",
    ["ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities", "ServiceHelper"],
    function (ConfigurationGrid, ConfigurationGridGenerator, ConfigurationGridUtilities, ServiceHelper) {
        return {
            messages: {
                "ReloadRefrigeratorsInTMAGrid": {
                    "mode": Terrasoft.MessageMode.BROADCAST,
                    "direction": Terrasoft.MessageDirectionType.SUBSCRIBE
                }
            },
            entitySchemaName: "IDSBRefrigeratorInTMA",
            attributes: {
                "IsEditable": {
                    dataValueType: Terrasoft.DataValueType.BOOLEAN,
                    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                    value: true
                }
            },
            mixins: {
                ConfigurationGridUtilities: "Terrasoft.ConfigurationGridUtilities"
            },
            details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
            diff: /**SCHEMA_DIFF*/[
                {
                    "operation": "merge",
                    "name": "DataGrid",
                    "values": {
                        "hierarchical": true,
                        "hierarchicalColumnName": "IDSBParent",
                        "className": "Terrasoft.ConfigurationGrid",
                        "generator": "ConfigurationGridGenerator.generatePartial",
                        "generateControlsConfig": { "bindTo": "generateActiveRowControlsConfig" },
                        "changeRow": { "bindTo": "changeRow" },
                        "unSelectRow": { "bindTo": "unSelectRow" },
                        "onGridClick": { "bindTo": "onGridClick" },
                        "activeRowAction": { "bindTo": "onActiveRowAction" },
                        "initActiveRowKeyMap": { "bindTo": "initActiveRowKeyMap" },
                        "multiSelect": false
                    }
                },
                {
                    "operation": "remove",
                    "name": "AddRecordButton"
                }]/**SCHEMA_DIFF*/,
            methods: {
                generateActiveRowControlsConfig: function (id, columnsConfig, rowConfig) {
                    this.columnsConfig = columnsConfig;
                    var gridData = this.getGridData();
                    var activeRow = gridData.get(id);
                    var isEditableColumn;
                    if (activeRow.values.IDSBParent === "") {
                        isEditableColumn = this.ParentColumnIsEditable;
                    }
                    else {
                        isEditableColumn = this.ColumnIsEditable;
                    }
                    var gridLayoutItems = [];
                    var currentColumnIndex = 0;
                    Terrasoft.each(columnsConfig, function (columnConfig) {
                        var cellConfig = this.getActiveRowCellConfig(columnConfig, currentColumnIndex);
                        cellConfig.enabled = isEditableColumn(cellConfig.name);
                        if (!cellConfig.hasOwnProperty("isNotFound")) {
                            gridLayoutItems.push(cellConfig);
                        }
                        currentColumnIndex += cellConfig.layout.colSpan;
                    }, this);
                    this.applyBusinessRulesForActiveRow(id, gridLayoutItems);
                    var viewGenerator = Ext.create(this.getRowViewGeneratorClassName());
                    viewGenerator.viewModelClass = this;
                    var gridLayoutConfig = viewGenerator.generateGridLayout({
                        name: this.name,
                        items: gridLayoutItems
                    });
                    rowConfig.push(gridLayoutConfig);
                },
                ParentColumnIsEditable: function (columnName) {
                    return (columnName === "IDSBPlacementPrice" || columnName === "IDSBNumberOfDoors" || columnName === "IDSBProlongation");
                },
                ColumnIsEditable: function (columnName) {
                    return (columnName === "IDSBRBBottlePlan" || columnName === "IDSBRBBottleCurrent"
                        || columnName === "IDSBBRBottlePlan" || columnName === "IDSBBRBottleCurrent");
                },
                init: function () {
                    this.callParent(arguments);
                    this.set("IsPageable", false);
                    this.set("RowCount", 28000);
                    this.sandbox.subscribe("ReloadRefrigeratorsInTMAGrid", this.onReloadRefrigeratorsInTMAGrid, this);
                },
                onReloadRefrigeratorsInTMAGrid: function (args) {
                    var id = this.get("MasterRecordId");
                    debugger;
                    if (id === args) {
                        this.reloadGridData();
                    }
                },
                addGridDataColumns: function (esq) {
                    this.callParent(arguments);
                    if (!esq.columns.contains("IDSBParent")) {
                        esq.addColumn("IDSBParent");
                    }
                },
                getGridDataColumns: function () {
                    var gridDataColumns = this.callParent(arguments);
                    if (!gridDataColumns.IDSBParent) {
                        gridDataColumns.IDSBParent = {
                            path: "IDSBParent"
                        };
                    }
                    return gridDataColumns;
                },
                addToolsButtonMenuItems: function (toolsButtonMenu) {
                    this.addGridOperationsMenuItems(toolsButtonMenu);
                    if (this.useDetailWizard) {
                        this.addDetailWizardMenuItems(toolsButtonMenu);
                    }
                },
                prepareResponseCollection: function (collection) {
                    collection.each(function (item) {
                        var parent = item.get("IDSBParent");
                        var parentId = parent && parent.value;
                        if (parentId) {
                            item.set("IDSBParentId", parentId);
                        }
                        Terrasoft.each(item.columns, function (column) {
                            this.addColumnLink(item, column);
                            this.applyColumnDefaults(column);
                        }, this);
                    }, this);
                }
            }
        };
    });

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

Нравится

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

Навряд ли кто то взглянув на не один десяток строк кода ответит вам почему возникает проблема при сохранении (скорее всего редактируемость и иерархичность не совместимы).

В любом случае вам может помочь только отладка кода!

решил задачу тупо влоб, переопределив метод сохранения. Написал своё сохранение, вызывая сервис из сервера. немного медленно, но работает

saveRowChanges: function (row, callback, scope) {
                    scope = scope || this;
                    callback = callback || Terrasoft.emptyFn;
                    if (row && this.getIsRowChanged(row)) {
                        if (row.values.IDSBParent !== "") {
                            this.saveChildRow(row, callback, scope);
                        }
                        else {
                            this.saveParentRow(rowm, callback, scope);
                        }
                    } else {
                        callback.call(scope);
                    }
                },
saveChildRow: function (row, callback, scope) {
                    var changed = row.changedValues;
                    debugger;
                    if (!changed.hasOwnProperty("IDSBBRBottleCurrent")) {
                        changed.IDSBBRBottleCurrent = row.values.IDSBBRBottleCurrent;
                    }
                    if (!changed.hasOwnProperty("IDSBBRBottlePlan")) {
                        changed.IDSBBRBottlePlan = row.values.IDSBBRBottlePlan;
                    }
                    if (!changed.hasOwnProperty("IDSBRBBottlePlan")) {
                        changed.IDSBRBBottlePlan = row.values.IDSBRBBottlePlan;
                    }
                    if (!changed.hasOwnProperty("IDSBRBBottleCurrent")) {
                        changed.IDSBRBBottleCurrent = row.values.IDSBRBBottleCurrent;
                    }
                    callback = this.reloadGridData;
                    var serviceSaveData = {
                        RowId: row.values.Id,
                        bottles: changed
                    }
                    ServiceHelper.callService("IDSBPlacingREService", "SaveChildRow",
                        callback, serviceSaveData, scope);
                }

 

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

Получаю записи о счетах по ссылке:



https:///0/ServiceModel/EntityDataService.svc/InvoiceCollection



В ответ приходит xml содержащий ссылки на xml с различной информацией. Меня интересует информация о продуктах счета. Для этого перехожу по ссылке:



https:///0/ServiceModel/EntityDataService.svc/InvoiceCollection(guid'00000000-0000-0000-0000-000000000000')/InvoiceProductCollectionByInvoice



Но в ответ получаю xml с ошибкой: Method 'SelectMany' not supported



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



Так же интересует как получить информацию о кол-ве продуктов в счете.

Нравится

2 комментария
Лучший ответ

Добрый день!

Про фильтрацию:

https://<адрес>/0/ServiceModel/EntityDataService.svc/InvoiceProductCollection?$filter=Invoice/Id eq guid'7e78ff39-ded1-416d-995a-71cef69387e8'

 

Добрый день!

Про фильтрацию:

https://<адрес>/0/ServiceModel/EntityDataService.svc/InvoiceProductCollection?$filter=Invoice/Id eq guid'7e78ff39-ded1-416d-995a-71cef69387e8'

 

Сидоров Александр В.,

Большое спасибо, вроде бы работает!)

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

Есть ли в версиях bpm online выше чем 7.12 открывать разделы и другие элементы на новой вкладке ? 

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

 

Нравится

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

Сразу открыть в новой вкладке можно через стартовую страницу (IntroPage) - на Вашем скриншоте справа.

Либо же открывать в текущей вкладке, а потом дублировать текущую.

Алла, со стартовой тоже нельзя, попробуй.

Как вариант, можно открыть каждый раздел и добавить в «Избранное» на панель закладок:

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

Спасибо !

Хотелось бы, чтобы такая возможность появилась в дальнейшем, крайне неудобно что такой возможности нет :(

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

Да, действительно, если открывать со стартовой через пункт меню 'Открыть ссылку в новой вкладке', происходит дублирование стартовой страницы.

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

Связано с тем, что ссылки сделаны не обычным  A HREF, а программно отрабатывают при помощи JS-логики.

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

Добрый день! 

Есть Запрос(Лид) и Документ в нём (модуль PT Docs). В карточке запроса используется поле Формат ТП (справочник). В документе есть поле, которое также ссылается на этот же справочник и называется абсолютно также.

Можно ли без средств программирования сделать так, чтобы при создании документа в запросе ,  поле Формат ТП в Документе заполнялось аналогично ранее выбранного значения в Запросе (Лиде)?

Нравится

8 комментариев
Лучший ответ

Добрый день!

Без программирования не получится(

Потребуются незначительные доработки. Для реализации этой задачи используйте атрибут defaultValues при объявлении детали в схеме страницы редактирования раздела.

Подробные примеры смотрите в постах на эту тему здесь и здесь.

Добрый день!

Без программирования не получится(

Потребуются незначительные доработки. Для реализации этой задачи используйте атрибут defaultValues при объявлении детали в схеме страницы редактирования раздела.

Подробные примеры смотрите в постах на эту тему здесь и здесь.

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

Зверев Александр, Спасибо, попробую в крайнем случае. Хотелось бы реализовать именно при создании документа, поскольку система позволяет не сохранять карточку документа и пользователь её может просто закрыть, не сохраняя, и поле останется не заполненным.

Алла Савельева,

а если никогда ранее не занимался разработкой в BPM , это реальная задача (по силам) ? С чего лучше начать?

LilyG,

Думаю, что реальная.

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

Если будут вопросы, ищите ответы либо на Академии, либо на community. Если не найдете нужный ответ, всегда сможете задать вопрос здесь wink

LilyG пишет:

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

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

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

Вы пробовали создавать документы в PT Docs ? Карточка документа создается и сохраняется, даже если не нажать кнопку сохранить. Этой лазейкой успешно пользуются сотрудники, чтобы не заполнять обязательные поля. Проверка обязательных полей например, происходит при нажатии на кнопку сохранить. А если не хочешь их заполнять - просто закрываешь карточку документа и всё.. Сохраняется с пустыми обязательными полями. 

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

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