Нужно настроить видимость отчета в разделе где несколько страниц

Нужна видимость только в определенной странице.

что сделано:

в карточке и разделе:

attributes: {
			"VisibleExpenditure":
			{
				"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				"dataValueType": Terrasoft.DataValueType.BOOLEAN,
				"value": false
			}
		}

Преопределил функцию:

initCardPrintForms: function(callback, scope) {
                var reportsEsq = this.getModulePrintFormsESQ();
                reportsEsq.clientESQCacheParameters = {cacheItemName: this.getESQCacheName("CardPrintForms")};
                this.initCardPrintFormsEsqFilters(reportsEsq);
                reportsEsq.getEntityCollection(function(result) {
                    if (this.destroyed) {
                        return;
                    }
                    if (result.success && !result.collection.isEmpty()) {
                        var printFormsMenuCollection = result.collection;
                        this.preparePrintFormsMenuCollection(printFormsMenuCollection);
                        printFormsMenuCollection.each(function(item) {
                            item.set("Click", {bindTo: "generateCardPrintForm"});
                            if (item.get("Id") === "70ebac9d-d5ce-48c3-aee7-421dfcf0fe40") {
                                
                                item.set("visible",  {bindTo: "VisibleExpenditure"});
                            }
                        }, this);
                        var printMenuItems = this.preparePrintButtonCollection(this.moduleCardPrintFormsCollectionName);
                        printMenuItems.loadAll(printFormsMenuCollection);
                        this.set(this.moduleCardPrintFormsCollectionName, printMenuItems);
                        this.getCardPrintButtonVisible();
                    }
                    if (callback) {
                        callback.call(scope || this);
                    }
                }, this);
            }

потом в карточке прописал:

onEntityInitialized: function() {
				this.callParent(arguments);
				var visible = (this.get("WisType").value === "339a6b20-e26f-4f4a-8328-2b238c99e8bd");
				this.sandbox.publish("SetVisibleExpenditure", visible, ["SetVisibleExpenditure"]);
				this.set("VisibleExpenditure", visible);
			}

И разделе в разделе:

init: function() {
				this.callParent(arguments);
				var scope = this;
				this.sandbox.subscribe("SetVisibleExpenditure", function(arg) {
					scope.set("VisibleExpenditure",  arg);
					scope.initCardPrintForms();
				}, this, ["SetVisibleExpenditure"]);
			}

Видимость не работает!

При переходе по разным карточкам отчет активный всегда(

Нравится

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

Вопрос актуальный! Могу перефразировать: как обновлять выпадающие меню кнопки? Коллекцию изменил, но набор кнопок - тот же

Решил))) Нужно в функции initCardPrintForms прописать код:

	if (!this.get("VisibleExpenditure")) {
							printMenuItems.collection.removeAtKey("70ebac9d-d5ce-48c3-aee7-421dfcf0fe40");
						}

 

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

Привет всем, некоторое время назад решали проблему с множественными прайсами в коммерсе и энтерпрайзе с фактурами и заказами. Предыстория - у клиента множественные прайсы в разных валютах, при этом на момент оформления заказа известно какой прайс будет использоваться. Ну и раньше мы это решали так - https://community.terrasoft.ru/articles/ulucsaem-rabotu-mastera-podbora-produktov

Однако, коллеги-разработчики не дают скучать и переход на новую версию каталога + отказ от наследования модулей свел на нет наши изыскания. Но мы сдаваться не привыкли, посему выкладываю решение это проблемы для каталога 2.0. Решение требует добавления поля "Прайс-лист (UsrPricelist)" в фактуру и заказ, ну и установку станицы каталога (во вложении к посту). Результат - в этих объектах можно выбрать прайс, по которому будут выбраны продукты по его же ценам. Т.е. если у продукта этого прайса нет, он вообще не будет доступен к подбору. Далее дело фантазии - назначить прайс клиенту и тянуть его из карты клиента в заказ / фактуру и т.д. 

Всем удачи :)

Прикрепленные файлы

Нравится

Поделиться

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

Добрый день. Попробовал поставить ваше дополнение (верисия 7.14.3), но из-за него образуется много ошибок. Текущие (цены которые уже выставили и сохранили в деталь) не загружаются при повторном редактировании списка продуктов. Так же отвалился поиск. Нет ли у вас обновленной версии решения?

Трефилов Павел Сергеевич, написал в личку

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

добрый день.

прошу помощи зала: мне необходимо понять, разобраться и научиться настраивать бизнес-процессы в врм.

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

 

заранее благодарна за помощь.

Нравится

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

Добрый день, попробуйте посмотреть это видео.

Добрый день, попробуйте посмотреть это видео.

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

При вводе части строки в справочное поле получаем не только предложения для значений из bpm'online, но еще и от браузера.



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

Нравится

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

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

Данная проблема нам известна, она связана с обновлением браузера Chrome. 

Как их отключить?

Рекомендуем Вам отключить настройку  "Адреса и другая информация" в браузера Chrome.



После этого подсказки выпадать списком не будут.

 Возможно ли как-то улучшить эту ситуацию глобально?

 Проблема исправлена в версии 7.13.2.

Спасибо, Илья!

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

Мотков Илья,

И проблема снова появилась в 7.16

Здравствуйте, Владимир.

 

В этот раз её рекомендуют отключить в настройках, см. скриншот выше, или в более новой версии так:

Пока Google не сделал отключение  только для определенных сайтов, надеемся, что Terrasoft исправит эту ситуацию внутри

Здравствуйте, Владимир.

В версии 7.16.2 должно исправиться.

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

Добрый день. Возникла проблема при установке пакета. Лог ошибки: 2019-01-28 08:28:22,238 System.Data.SqlClient.SqlException (0x80131904): The INSERT statement conflicted with the FOREIGN KEY constraint "FKjAq0FkyoI98D9WOxx46aiDCFY". The conflict occurred in database "rvvz_anonymous", table "dbo.SysCulture", column 'Id'. The statement has been terminated. На дев-стенде таблица SysCulture содержит 7 значений. На тестовом стенде 2 значения. Как можно обойти эту ошибку при установке пакета?

Нравится

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

прикрепите на закладке "данные" отсутствущие культуры к пакету, поставьте тип установки данных на странице привязки "Первоначальная установка" и будет Вам счастье :)

Проблема была решена после перезагрузки редиса.

C наполнением SysCulture нужно быть осторожным. Если туда залить что-то не то, сайт упадёт, причём вместе со страницей логина.

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

На странице академии есть пример создания кнопки в совмещенном режиме https://academy.terrasoft.ru/documents/technic-sdk/7-12/kak-dobavit-kno… , но не написано что для того что бы работа этот пример нужно что бы колонка основного контакта была выведена в списке контрагентов. По этой причине если пользователь сменит набор колонов - работать такой пример не будет.

Вопрос в том как заставить работать эту кнопку если в списке контрагентов нет колонки основного контакта?

Нравится

3 комментария
            getGridDataColumns: function() {
                var baseGridDataColumns = this.callParent(arguments);
                var gridDataColumns = {
                    "PrimaryContact": {path: "PrimaryContact"},
                    "Contact": {path: "Contact"},
                    //...
                    "ProcessElementId": {
                        path: "ProcessElementId",
                        dataValueType: 0
                    }
                };
                return Ext.apply(baseGridDataColumns, gridDataColumns);

Попробуйте вот так

Дмитрий А.,

вопрос о страние редактирования а не о реестре или детали с реестром, этот способ не годится для страниц редактирования

Видимо идей не укого нет

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

Добрый день.

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

При отладке мобильного приложения и переходе на страницу с воронками отобразилось сообщение, что этот блок пока можно посмотреть только в основном приложении bpm'online.

Не поскажете, есть ли какие-то решения, как их можно отобразить? Или когда будет доступен функционал для решения этого вопроса?

Спасибо.

Нравится

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

Есть 2 разные воронки:

Блок итогов “Воронка продаж” следует отличать от блока итогов “График” с типом диаграммы “Воронка”. Блок итогов “График” описан в отдельной статье.

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

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

Есть действие по множественному выбору в реестре. 

Проблема в том, что оно должно выполняться для большого кол-ва записей. Если я делаю Действия-Выбрать все, то он мне показывает, например, 4000 записей. Но когда я попадаю в метод обработки действия, то 

var selectedRows = this.get("SelectedRows");
this.showInformationDialog(selectedRows.length.toString());

возвращает кол-во записей, которые отображаются на странице в текущий момент, например, 30. Как мне поймать все записи?

Мне в конечном итоге надо будет передать их на сервер в БП или сервис. Возможно, можно на сервер передать фильтр, по которому этим записи отфильтровались и там выбрать коллекцию?

Есть пример реализации?

Нравится

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

Для обработки всех записей нужно использовать запросы в БД , для раздела вычитываются 30 записей по странично (те пролистывая вы можете по 30 записей листать) это сделано с целью увеличения производительности

Для обработки всех записей нужно использовать запросы в БД , для раздела вычитываются 30 записей по странично (те пролистывая вы можете по 30 записей листать) это сделано с целью увеличения производительности

Григорий Чех,это понятно.

Вопрос в том, как пробросить фильтр в запрос, который выбрал пользователь. Т.е. мне не тупо надо все записи в БД обработать, а те, которые выбраны. А до выбора они могут быть отфильтрованы.

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

Тогда листать постранично по 30 записей и обрабатывать

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

4000 записей? нет уж, спасибо :)

Нужен другой способ.

Однако действие Delete в разделе работает не со страницей, а именно со всеми записями, кстати

 

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

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

Добрый день!



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

Нравится

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

Добрый день.

Необходимо вызывать анонимный сервис перед авторизацией пользователя для фиксации данных в объекте.

В loginmodule.js в onLoginButtonClick добавляю вызов аналогичный ..AuthService.svc/Login.

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

Анонимный сервис делал по аналогии https://academy.terrasoft.ru/documents/technic-sdk/7-13/kak-sozdat-anon…

Нравится

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

Скорее всего у вас не выполнен или выполнен с ошибками 4 пункт  руководства по созданию анонимного веб-сервиса а именно: Настройте доступ к WCF-сервиса для всех пользователей.

Возможно после окончания настройки сервиса вы не выполнили рестарт пула IIS

Сделал его. Проблема именно в связке с сервисом авторизации. Запрос осуществляется с клиентской стороны. Заметил еще, если куки очищаем после сообщения ошибки лицензии, то сервис работает.

Значит проблема не в сервисе. Обратитесь в техподдержку террасофт за лицензионным ключем  и перелицензируйте систему. Иногда очистка редиса помогает

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

Дело в том, что у пользователя может не быть лицензии, но при этом вызвать сервис также требуется. Есть какие-нибудь варианты?

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

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

Почему для моего случая не работает?

Либо что-то неверно в коде, либо не так зарегистрирован в конфигах.

Может как-то влиять, что вызов моего сервиса происходит в callback сервиса авторизации? также в примере из академии пример не компилировался и я добавил наследование от BaseService. 

Сам сервис доступен без авторизации postman отправлять.

Также, если необходимо, могу привести пример клиент. кода loginmodule.js

Привожу пример моего сервиса:

[OperationContract]

        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,

        ResponseFormat = WebMessageFormat.Json)]

        public string GetMyService(string Name)

        {

            var returnObject = new

            {

                ResultCode = 0,

                ResponseText = ""

            };

            return JsonConvert.SerializeObject(returnObject);

        }

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

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

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

Если авторизация уже прошла, то можно обычный сервис.

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

у пользователя может не быть лицензии, авторизация не пройдет полноценно, хотя AuthService возвращает OK, поэтому я рассчитывал настроить анонимный сервис

Все входы, в том числе и неуспешные, можно логировать:

 

scr_chapter_system_operations_log_system_setting.png

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

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

это усложняет задачу, через вызов сервиса никак нельзя?

Можно: 

Зверев Александр пишет:

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

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

Я вижу вариант только в своем сервисе вызвать сервис авторизации и дописать свою логику. Если успех, то передать выполнение клиентской стороне, где сервис авторизации будет вызван повторно, но уже с клиента, с сохранением куки в браузере.

Заметил интересную вещь о стандартным сервисом авторизации:

Запускаю его с клиента (у пользователя нет лицензии) в loginmodule.js и в колбэке еще раз его. Он отрабатывает и 401 ошибки нет. Как мне свой кастомный сервис также настроить?

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

А сервису авторизации не нужно знать, вошёл ранее или нет, он заменяет куки новыми.

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

Да, похоже на правду, есть пример реализации такого сервиса?

Сервис авторизации сделан на уровне ядра, в конфигурации его нет.

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