Приветы,

 

Подскажите плиз, как правильно сделать, создал объект наследуемый от базового и добавил поле BpCandidate как строка 50 символов в конструкторе объекта.

 

Пробовал сделать поле типа справочник и тогда оно становится Guid в коде

В следующем коде было вместо TEXT, у поля BpCandidate указан GUID

Так вот в консоли хрома видел ошибку уровня c#, а именно System.String не могу преобразовать в System.Guid и как быть? 

 

Удалив столбец, пересохранив и добавив его снова как строка 50 символов и вернув ТЕКСТ вместо ГУИД все заработало, но как быть с гуидами в инсерт запросами???

 

insertCount: function (candId) {

                this.logStep('insertCount started...');

                var insertQuery = this.Ext.create("Terrasoft.InsertQuery", {

                    rootSchemaName: "BpCandidateCall"

                });

                insertQuery.setParameterValue("CallCount",

                    1,

                    this.Terrasoft.DataValueType.INTEGER);



                insertQuery.setParameterValue("BpCandidate",

                    candId,

                    this.Terrasoft.DataValueType.TEXT);

                var dt = new Date();

                insertQuery.setParameterValue("CallDate",

                    dt,

                    this.Terrasoft.DataValueType.DATE);

                insertQuery.setParameterValue("CallTime",

                    dt,

                    this.Terrasoft.DataValueType.TIME);

                insertQuery.execute(function () {

                    //this.loadActivities();

                }, this);

                this.logStep('insertCount finished...');

            },

Нравится

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

Добрый день!



При переносе пакета на продакшн возникла проблема. Перенеслась и схема страницы Лид и схема кейса Лид. Но отображается дефолтный кейс, а не кастомизированный. Подскажите, пожалуйста, данные какого объекта надо привязывать к пакету, чтобы все перенеслось как надо?

 

Нравится

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

Марат, здравствуйте!

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

Также проверьте, что при открытии карточки у Вас корректно настроено условие запуска кейса (можно посмотреть в дизайнере кейсов).

Либо же более детально опишите Ваш кейс, для решения проблемы.

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

Здравствуйте, коллеги.



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



Вопрос: можно ли каким-то образом привязать эти печатные формы к пакету или придется наполнять печатные формы в релизе сначала.

Заранее спасибо!

Нравится

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

Здравствуйте, Роман!

Печатные формы Word можно перенести, записи о них хранятся в объектах SysModuleReport, табличные части - в SysModuleReportTable. Достаточно заместить их в нужном пакете.

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

Добрый день!

наблюдаем такую странную картину поведения процесса.

а именно: Задача "Изменить данные заявки" выполняется на 1 раз больше чем две предыдущие задачи "Версия+1" и "Читать данные 2"

(нижний ряд задач)

 

может у кого-то была такая проблема? не могу понять как такое происходит

первый пример

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

 

второй пример

 

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

Нравится

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

Любовь, здравствуйте!

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

Если же такое поведение наблюдается для этого процесса регулярно, рекомендую обратиться в техническую поддержку, так как по скриншоту сложно определить всю структуру и логику процесса.

Также, не рекомендую реализовывать циклические процессы, они создают дополнительную нагрузку на приложение и могут некорректно отрабатывать, если в записи вносятся изменение в момент выполнения процесса. Сложную логику лучше реализовывать в рамках элемента [Задание - сценарий].

Контактная почта - support@terrasoft.ru

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

Подскажите,

как избежать ситуации, когда на открытой карточке достаточно просто дать фокус любому полю карточки и кнопка "Закрыть" превращается в две - "Сохранить" и "Отмена"?

Нравится

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

Борис, здравствуйте!

Данное поведение заложено в базовой логике приложения (схема BasePageV2). При любом нажатии на поле в карточке отрабатывает метод updateButtonsVisibility, и кнопка "Закрыть" меняется на "Сохранить" и "Отмена". Для изменения необходимо переопределять базовую логику, но очень не рекомендуется это делать, так как могут возникнуть проблемы и ошибки после обновления (даже если на текущей версии все будет работать ок).

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

Спасибо, Юлия, за отклик!

Да, пользователей смущает такое поведение, даже можно сказать раздражает, особенно когда они знают, что у них права только на чтение объекта карточки.

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

Здравствуйте, коллеги!

Скажите, тема вообще возможна?

Изучение исходников на предмет наличия Terrasoft.ConfigurationEnums.CardOperation.VIEW показало лишь единичный случай употребления этой константы, и то в контексте миникарточки.

Остается либо Механизм блокировки полей страницы редактирования либо в коде "enabled": false для каждого элемента?

Нравится

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

Добрый день, Борис!

Можно, конечно, использовать бизнесс-правило для каждого поля (или enabled:false), но во-первых, много кода, во-вторых, зачем изобретать велосипед, если "Механизм блокировки полей страницы редактирования" как раз и придуман для блокирования всех полей на редактирование с помощью пары небольших движений. А Terrasoft.ConfigurationEnums.CardOperation.VIEW используется исключительно в контексте миникарточки.

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

Как пожелание, было бы очень удобно механизм блокировки в openCardInChain() включать через operation: "view".

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

Приветы, подскажите

Как писать на c# и чтобы это было доступно с клиента?

Можно пример wcf? (с одним-двумя методами, например, который что-нибудь из БД платформы выдает в JSON) 

Нравится

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

Здравствуйте! По поиску вопрос уже поднимался, но рабочего решения так и нашел.

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

Было выяснено, что список доступных для печати форм формируется в методе initCardPrintForms в миксине ["PrintReportUtilities"]

Соответственно, я этот метод переопределил.

Добавив туда после вызова метода 

this.preparePrintFormsMenuCollection(printFormsMenuCollection);

Вызов своего метода для скрытия формы:

this.hidePrintFormsMenuItem(printFormsMenuCollection);

В этом методе планировалось построчно проверять название (или id) отчета и в зависимости от этого скрывать конкретную форму из списка.

Планировалось использовать что-то типа такой конструкции:

hidePrintFormsMenuItem: function(printForms) {

    printForms.eachKey(function(key, item) {

      var formName = item.get("Caption");

        switch (ЗНАЧЕНИЕ_СПРАВОЧНИКА) {

        case value1:

        if (formName!="Отчет1") item.set("Visible", false);

        break;

        case value2:

        if (formName!="Отчет2") item.set("Visible", false);

        break;

        }    

    }, this);

},

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

Нравится

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

Хотел воспользоваться this.get("СПРАВОЧНИК").displayValue, но при первичной инициализации такого параметра еще нет. Вопрос остается открытым, как получить значение параметра с карточки раздела во время формирования списка печатных форм?

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

Во-первых, нужно переопределить метод initCardPrintForms, в котором после вызова this.callParent(arguments) нужно забиндиться на видимость печатных форм. Сделать это можно так:

//получаем коллекцию всех печатных форм
var printMenuItems = this.get(this.moduleCardPrintFormsCollectionName);
printFormsMenuCollection.each(function(item) {
  item.set("Visible", {bindTo: "getPrintMenuItemVisible"});
}, this);

А уже в самом методе getPrintMenuItemVisible описать логику и возвращать true - для тех, которые отображать и false, для которых не отображать.

getPrintMenuItemVisible: function(reportId) {
  //логика и возврат true/false
}

Чтобы взять нужное вам поле и чтобы оно было инициализировано следует вызвать метод initCardPrintForms в самом конце onEntityInitialized (то есть после this.callParent(arguments)). 

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

Золотарев Артем Андреевич, спасибо за ответ. Смысл понятен, но появились проблемы. Если следовать вашему совету, и переопределить метод initCardPrintForms таким способом

  initCardPrintForms: function(callback, scope) {
                this.callParent(arguments);
                //получаем коллекцию всех печатных форм
                var printMenuItems = this.get(this.moduleCardPrintFormsCollectionName);
                printFormsMenuCollection.each(function(item) {
                    debugger;
                    item.set("Visible", {bindTo: "getPrintMenuItemVisible"});
                }, this); 
            },

то this.get(this.moduleCardPrintFormsCollectionName); возвращает undefined

И как я понимаю, в следующей строке, где происходит перебор коллекции нужно обращаться к printMenuItems, а не к printFormsMenuCollection?

Попробуйте вызывать initCardPrintForms в конце onEntityInitialized, тогда коллекция должна подтянуться.

Да, нужно обращаться к printMenuItems, опечатался

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

Дело в том, что, если initCardPrintForms добавить в конце onEntityInitialized, то initCardPrintForms выполняется два раза. А при повторном выполнении список отчетов уже сгенерирован на странице и получается, что толку смысла видимость строки уже нет. Нужно каким-то образом сгенерировать меню печати повторно.

сгенерировать меню печати повторно можно вызвав

this.getCardPrintButtonVisible()

У меня все равно не получилось добиться результата.

Если попытаться загрузить коллекцию печатных форм через 

this.get(this.moduleCardPrintFormsCollectionName);

в методе initCardPrintForms после this.callParent(arguments), то коллекция не подгружается.

Если скопировать код метода initCardPrintForms и изменить видимость элементов непосредственно в printFormsMenuCollection, то во время второго вызова initCardPrintForms (когда уже прошла инициализация onEntityInitialized), новое меню не формируется и в консоль падает ошибка Uncaught TypeError: callback.call is not a function. Это на строке callback.call(scope || this); в методе initCardPrintForms.

Попробуй тогда использовать просто переопределенные методы либо initCardPrintForms, либо getCardPrintButtonVisible, там по идее уже должны быть доступны поля объекта.

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

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

Как реализовать само окно и его вызов по нажатии на кнопку?

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

Нравится

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

Владислав, вы можете реализовать его используя ModalBox. Посмотрите каким образом реализован ModalBox и его использование (на примере lookupPage)

Суть простая. ModalBox возвращает вам контейнер, в который вы загрузите требуемый модуль.

Что-то типа этого:

var modal_box_container = ModalBox.show();
sandbox.loadModule("MyModule", {
    renderTo: modal_box_container
})

 

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

Товарищи подскажите, как узнать текущий тип отображения карточки.

Собственно в LeadPage нужно понимать - это создание нового лида(тыкнули на кнопку создать) или редактирование(тыкнули на запись реестра)

Может это можно вытащить через this.get("xxxxxx") ???

Нравится

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