Добрый день, какое свойство отвечает за сохранение с игнорированием обязательных полей на js

я знаю что есть такое на c# entity.save(false)

Мне надо нечто подобное

Нравится

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

Попробуйте 

this.save({isSilent: true});

 

Александр Тыра

не подходит(


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

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

Когда нажимаю кнопку сохранить страница редактирования детали закрывается

Как я понял из постов в академии мне надо переопределеить метод onSilentSaved я пробовал несколько примеров, но пока не один не дал должного результата

Нравится

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

            save: function(config) {

                config = config || {};

                config.isSilent = true;

                this.callParent([config]);

            }

            save: function(config) {

                config = config || {};

                config.isSilent = true;

                this.callParent([config]);

            }

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

Как на базовую кнопку "СОХРАНИТЬ" повесить доп функции (выполнение пользовательских методов).

Что бы после нажатия на кнопку "СОХРАНИТЬ", в нужных нам полях сначала сгенерировались значения(если эти поля еще не заполнены), и только после этого уже выполнилось сохранение значений карточки.

 

Нравится

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

Вам нужно в карточке редактирования переопределить метод save. Например:

            save: function() {

              // Здесь будет вызов нужных Вам методов  

              this.callParent(arguments);

            }

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

Автоматическое заполнение можно реализовать либо в бизнес-правиле фильтрации, либо через свойства атрибута dependencies.

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

Вам нужно в карточке редактирования переопределить метод save. Например:

            save: function() {

              // Здесь будет вызов нужных Вам методов  

              this.callParent(arguments);

            }

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

Автоматическое заполнение можно реализовать либо в бизнес-правиле фильтрации, либо через свойства атрибута dependencies.

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

Можно сделать всю логику во встроенном БП объекта, на событии Saving (до момента сохранения) или на Saved (после). Например, вторым способом формируют номер по порядку в некоторых разделах.

А в чем тогда отличие save от onSaved ?

Это разные вещи, функция на клиенте на JS и на сервере на C#.

То что это разные вещи и так понятно. Вопрос в чем конкретно отличие?!

Соломонов Алексей Михайлович,

save - это метод, который вызывает обработчик onSaved события save.

Вот кусок кода из BasePage:

            /**

             * @inheritdoc Terrasoft.BaseEntityPage#save

             * @override

             */

            save: function(config) {

                this.callParent([function() {

                    this.Terrasoft.chain(this.saveDetailsInChain, function() {

                        this.onSaved(this.cardSaveResponse, config);

                        this.cardSaveResponse = null;

                        delete this.cardSaveResponse;

                    }, this);

                }, this]);

            },

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

Приветы,

 

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

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

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

 

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

{

                    "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, то в перенос не попали.

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

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

Добрый день!

Как сделать в 7.6, чтобы при сохранении любой карточки, не происходило выхода из неё (а выход осуществлялся по Close), в том числе, если карточка открывается в ходе БП?

Нравится

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

Владимир, здравствуйте!

За данное действие отвечает параметр isSilent».
Пример реализации Вы может посмотреть в схеме «LeadQualificationPageV2».

Также рекомендую ознакомиться со следующими топиками:
- http://www.community.terrasoft.ru/forum/topic/12346;
- http://www.community.terrasoft.ru/forum/topic/11623;
- http://www.community.terrasoft.ru/forum/topic/12063.

изменили метод onSaved:

onSaved: function (response, config) {
     if (!this.get("IsProcessMode")) {
                     if (config) {
       if (!config.isSilent) {
                       var updateConfig = this.getUpdateDetailOnSavedConfig();
        this.sandbox.publish("UpdateDetail", updateConfig, [this.sandbox.id]);
                       config.isSilent = true;
       }
                     }
                     else {
                   var updateConfig = this.getUpdateDetailOnSavedConfig();
       this.sandbox.publish("UpdateDetail", updateConfig, [this.sandbox.id]);
                         config = { isSilent: true};
                     }
     }
                    this.callParent(arguments);
    },

Этот код запускается только если карточка открыта не в ходе процесса. Если то же самое делать в процессе (без проверки), то при нажатии на Save, кнопка Save всё равно остается активной (и не показывается Close)

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

Подскажите а какую карточку вы вызываете в ходе БП, не преднастроеную ведь?

Обычные карточки - Контрагент, Продажа, Счет, Документ.

У пользователей есть прекрасная привычка сохранять по ходу работы (лучше 5 раз нажать Save, чем потом снова 30 минут вводить всю информацию). Но после первого же сохранения система считает, что работа выполнена и бежит дальше по процессу. Очень неудобно. Было бы хорошо закрывать карточку и идти дальше именно по Close

При сохранении записи в бд, в любом случае БП это поймет, и побежит дальше по процессу.
Данное поведение поменять нельзя.
Другое дело пользователь останется в карточке, если сохранение было в isSilent, и сможет довносить изменения.
А активность кнопки Save определяется в методе updateButtonsVisibility (BasePageV2), переопределяя его, в наследнике BasePageV2, в теории можно и поменять поведение отображения.

Владимир Соколов,   

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

Дарина,

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

Создал идею, но пока нет отклика - https://community.terrasoft.ua/ideas/save-i-saveclose

Наверное, недостаточно актуальности :(

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