sandbox
Технические вопросы
7.x

Добрый день!

Необходимо отправить сообщение из детали на карточку редактирования этой детали. Для этого использую "sandbox". Код:

addRecord: function(editPageUId) {
        this.sandbox.publish("PublishDetailName", "ilaySchema6Detail", [this.sandbox.id]);
        this.callParent(arguments);
}

subscribeSandboxEvents: function() {
        this.callParent(arguments);
        var detailId = "SectionModuleV2_ilayDiagnosisSection_CardModuleV2_detail_ilayRecomendation46fde591d61eilayRecomendationilayilayRecomendation1Page";
        this.sandbox.subscribe("PublishDetailName", this.getDetailNameFromWhoOpen, this, ["CardModuleV2_ilayDiagnosisPage_detail_ilayRecomendation46fde591d61eilayRecomendationilayilayRecomendation1Page"]);
},

getDetailNameFromWhoOpen: function(detailName) {
        var a = 5;
}

Не вызывается метод "getDetailNameFromWhoOpen", т.к. скорее всего неправильно задан 4-й параметр метода ["CardModuleV2_..."]. Подскажите, как быть!

Нравится

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

Здравствуйте.
Рекомендуем посмотреть соседнюю тему:
http://www.community.terrasoft.ru/forum/topic/15210

Эту тему находил, но там не совсем понятен принцип формирования тега (4-й параметр в методе "subscribe"). Также находил различные примеры в других проектах на 7.6 и 7.7 версиях, но какого-то определенного правила не нашел для того, чтобы правильно задать сигнатуры методов "sandbox" - каждый пример реализован слишком не так, как остальные.

Если конкретно рассмотреть код:

this.sandbox.subscribe("PublishDetailName", this.getDetailNameFromWhoOpen, this, ["CardModuleV2_..."]);

теоретически, 4-й параметр ["CardModuleV2_..."] является идентификатором именно этого сообщения, которое должно быть получено из:

this.sandbox.publish("PublishDetailName", "ilaySchema6Detail", [this.sandbox.id]);

, где этим идентификатором для метода "publish" является 3-й параметр.

Так ли это? Подчеркну, что задачей является передача сообщения из детали на карточку редактирования этой детали.

Да, Вы все поняли верно. При подписке на сообщение , массив идентификаторов передается четвертым параметром, а при публикации он передается 3-им. Для удачного получения сообщения один и тот же идентификатор должен присутствовать в обоих массивах.

Допустим так... А вот название этой переменной-идентификатора - оно какое-то особое по составу? Или можно абсолютно произвольным его задать? Суть в том, что при выполнении всего выше указанного, метод не вызывается! Почему, собственно, и была создана эта тема.

Не совсем понял про название переменной-идентификатора.

Вот рабочий пример кода для общения страницы редактирования с деталью:

Код для страницы контрагента.

Объявляем сообщение:

messages:{
	"PublishDetailName": {
		mode: Terrasoft.MessageMode.PTP,
		direction: Terrasoft.MessageDirectionType.SUBSCRIBE
	}
},

Подписываемся на сообщение в методе init:

methods: {
	init: function(){
		this.callParent(arguments);
		var sandboxId = this.sandbox.id + '_detail_LTSTestDetail';
		console.log(sandboxId);
		this.sandbox.subscribe("PublishDetailName", function(){
			this.set("Name", "Great");
		}, this, [sandboxId]);
	}
},

Код для страницы редактирования детали.

Объявляем сообщение:

messages: {
	"PublishDetailName": {
		mode: Terrasoft.MessageMode.PTP,
		direction: Terrasoft.MessageDirectionType.PUBLISH
	},
},

Подписываемся на событие и при определенном условии публикуем сообщение:

methods: {
	init: function(){
		this.callParent(arguments);
		var scope = this;
		var id = this.sandbox.id;
		var detailId = id.substring(0, id.indexOf('32c1bacf5d43LT'));
		console.log('detailId ' + detailId);
		this.on("change:LTSSTRING", function(){
			var val = this.get("LTSSTRING");
			if(val === 'test'){
				scope.sandbox.publish("PublishDetailName", { test: "test" }, [detailId]);
			}
		});
	}
},

В данном примере оба идентификатора равны CardModuleV2_a924f56e-85a8-4bd5-a388-0009571f7988_AccountPageV2_detail_LTSTestDetail

Показать все комментарии
Ondemand
отчет
Технические вопросы
7.x

Как создать простой отчет в BPMonline 7.х Ondemand?
Какие есть инструменты для этого?
Заранее спасибо.

Нравится

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

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

Посмотрите в сторону печатных форм:
https://www.youtube.com/watch?v=H1at0EPvKpc

а где взять Конструктор печатных форм MS Word Report Designer??
Гугл к сожалению ничего не показал, или я плохо искал

"Радчук Виталий Владимирович" написал:а где взять Конструктор печатных форм MS Word Report Designer??

Вот этот вопрос отправляйте в суппорт, они вам пришлют его.

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

Получилось ли у Вас создать первый отчет?:)

Показать все комментарии
модель
представления
таблица
Технические вопросы
7.x

Добрый день. Как реализовать кликабельную таблицу в BPM? Тобишь, в контейнер нужно выводить таблицу N*N, по клику на ячейку: получать ее индекс в таблице, данные из нее, перерисовывать таблицу.
Для того что бы это реализовать нужно описывать новую модель представления? Или уже есть "что-то" базовое, описанное, что можно использовать как основу?

Нравится

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

Здравствуйте!
Меня интересует вопрос о заполнении курсов валют из точним банковским курсом.
Допустим ситуацию:
Базовая валюта - руб
Стоимость продукта - 100$
Курс Доллара США $ - 76,3928 руб.

Если зайти в справочники в валюты, то нужно ввести курс на сегодня. Но получается что курс доллада нада вписывать 100/76,3928=1.309023887

Получается нужно писать 1.31?

Но когда добавляеш продукт в заказ то его стоимость 7633,58 руб.

а должна быть 7639,28 руб.
1.Что можна сделать чтобы числа были точные?
2.Можна ли автоматизировать процесс загрузки курсов в систему bpmonline commerce 7.7?

Нравится

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

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

Система считает корректно:
[Цена продукта в $]/[Курс (1,31)]*100(рублей/$)

Итого, при стоимости товара в 1$ его цена будет составлять 76.3358. Так как тип "Деньги" - два знака после запятой, то система округлит значение до 76.34.

При стоимости в 100$ - сумма будет 7633.58 (при округлении - 7633.58).

Показать все комментарии
7.7
entity
EntitySchemaQuery
Технические вопросы
7.x

В процессе, в рамках одного "Задания-Сценария" идет цикл по строкам (продуктам).
По логике, в этом цикле идет запрос в другую сущность, и если ничего не возвращает, делает новую строку в той сущности.
Если находит, то делает апдейт найденной строки.

Вопрос: Если в списке строк попадутся обе ситуации, и при первом проходе будет создана нужная запись, то при втором проходе запрос ее не возвращает - это потому что entity.Save реально в базу изменения внесет только после окончания сценария, или даже всего процесса?
Или нужно просто ввести временной лаг после добавления записи, чтобы успела система все сохранить?

Нравится

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

Возникла необходимость в такой детали.
В качестве детали "Счета в которых встречается продукт" Подошла деталь OpportunityProductDetailV2,
При штатном связывании отображает список продаж и даже позволяет "провалиться" в продажу по ссылке. (возможно не лучшее решение, но для решения задачи подходит).
А вот со списком заказов, в которых продукт встречается, штатные детали не подходят.
Просьба подсказать, есть ли готовое решение, или, если нет, указать кошерный путь к решению..

Нравится

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

Не знаю, насколько оптимален такой путь, но иногда я просто делаю VIEW с логикой внутри, затем регистрирую объект по этому VIEW, регистрирую деталь и уже использую на всю катушку.

Логика VIEW гораздо больше подаётся пониманию, к тому же её можно одновременно использовать в коде JS, в БП и в печатных формах.

Путь интересный.. а он возможен on-Demand? :) SqlExecutor позволяет создавать view?
На данный момент я разглядываю логику аналогичной детали с продажами, и пытаюсь понять ее логику, чтобы воспроизвести.. Но там как-то все нелинейно.. Подумаю насчет view.

"Шестаков Алексей Владимирович" написал:Путь интересный.. а он возможен on-Demand?

в bpm'online есть SQL-сценарии, которые позволяют в том числе создавать VIEW

Спасибо, такой вариант устраивает.

"Шестаков Алексей Владимирович" написал:SqlExecutor позволяет создавать view?

Он все позволяет, хоть drop :cool:

"Александр Кудряшов" написал:

Он все позволяет, хоть drop


А вот это уже настораживает :)

Показать все комментарии
7.4
Кнопка Добавить
справочник
Технические вопросы
7.x

Здравствуйте!
Подскажите пожалуйста, по какому условию отображается кнопка добавить в справочниках в BPM Online 7.4?

Нравится

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

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

Скрытие кнопки "Добавить" обсуждалось здесь.

Алексей, это совсем не то, что нужно.
Я спрашивал о справочнике, а не о детали.
Есть кнопка:

Нет кнопки:

А такое обсуждалось здесь.

Показать все комментарии
командная строка
поиск
Технические вопросы
7.x

Добрый день!

В жизни компаний иногда случается смена имени, в жизни людей случается смена фамилии. С помощью БП можно организовать хранение истории изменений.

Но как можно организовать поиск по старым названиям/фамилиям из командной строки?
Или можете предложить другое решение? (Фильтр с поиском по детали истории пользователям каждый раз будет долго настраивать)

Нравится

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

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

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

Как вариант Вы можете хранить не актуальную информацию в пользовательской колонке и по ней фильтровать.

Спасибо за вариант!

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

Владимир, по поводу "Как идея, можно было бы определять, какую колонки использовать для поиска." Данная идея уже присутствует в списке задач департамента разработки. Возможно будет реализована в одной из будущих версий приложения.

Показать все комментарии
виза
права доступа
Технические вопросы
7.x

Коллеги, прошу помощи.
Создал новую визу - "Виза закупок" на основе Базовой визы, при крепил новое поле-справочник "Заявки на закупки". Визу назвал PurchasingVisa. Создал деталь, прикрепил к карточке заявки на закупку.
При сохранении новой визы закупки выдаёт ошибку "Недопустимое имя объекта "dbo.SysPurchasingVisaRight"" (см.скриншот). Как это побороть?

Нравится

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

Антон, попробуйте в объекте установить птичку "Администрируется по записям". После ее установки должна появиться указанная таблица ("dbo.SysPurchasingVisaRight)

Александр, Ваше решение работает, отлично. Большое спасибо!

Показать все комментарии
7.5
представление
редактируемый реестр
Технические вопросы
7.x

Добрый день!
Есть задача добавить представление в разделе, в котором будет редактируемый реестр другого объекта с собственными фильтрами (фильтры аналогичны с фильтрами раздела).
Подскажите, пожалуйста, как реализовать данный функционал?

Нравится

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

Здравствуйте, Александр!

Правильно ли я понимаю, что Вы хотите создать еще одно представление раздела, выведя в реестр детали, и добавив в созданное представление "Фильтр", который будет фильтровать записи на деталях?

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

Добрый день!
Вашу задачу нужно разделить на 2 этапа:
1. Создать представление
2. Создать свой модуль отображения реестра

По 1-му:
Начать нужно искать с BaseSection, в котором есть функция initDataViews(). Далее по аналогии с, например, представлением "Аналитика"

По 2-му:
Вам нужно создать свой модуль, который будет отображать что угодно (ваш реестр, графики...). После этого проследите как работает функция LoadView из BaseSection, на примере того же представления Аналитика

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