Рассчитать значения в разделе взяв их из детали.

Добрый день.
Как рассчитать "общий вес" (1) по значениям в детали (2)?

Мне бы пример кода. А там разберемся сами.

Нравится

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

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

Пример такого расчета в системе Вы можете найти в схеме OrderPageV2 - значение поля "Итого" обновляется при добавлении записи на деталь "Продукты в заказе" (OrderProductDetailV2), метод UpdateOrderProductSummary.

Спасибо.

Подскажите где храниться данные метод?
В отладчике увидел. Но где он физически находиться не нашел.

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

OrderPageV2 и OrderProductDetailV2 в пакете Order.

Это я нашел. Но самих методов нет.
Вот смотрите в
есть вызов OrderPage:

				Product: {
					schemaName: "OrderProductDetailV2",
					entitySchemaName: "OrderProduct",
					filter: {
						masterColumn: "Id",
						detailColumn: "Order"
					},
					subscriber: function() {
						this.updateAmount();
					}
				},

а в OrderProductDetailV2

define("OrderProductDetailV2", [], function() {
	return {
		entitySchemaName: "OrderProduct",
		methods: {
			init: function() {
				this.callParent(arguments);
				this.set("MultiSelect", true);
				this.set("isCollapsed", false);
			}
		},
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
	};
});

И понять не могу где этот метода размещен.

Уточните, пожалуйста, Вашу версию и продукт. У меня в 770 больше кода...

Посмотрел 7,7 там да кода больше но не видно где сам расчет происходит.

Здравствуйте, самим подсчётом занимаются методы миксина ProductEntryPageUtils который подключен к карточке OrderPageV2, все это еще связано песочницей с самой деталью. Но все это слишком заточено на универсальность и для Вашего кейса не нужно.
Все что Вам нужно, так это переопределить с вызовом родительского метода, в карточке в которой у Вас размещена деталь, метод:
onDetailChanged
В нем проверять Ваша ли деталь стригерила это событие, и если Ваша, обращаться к БД с помощью esq запроса:
https://academy.terrasoft.ru/documents/technic-sdk/7-7-0/ispolzovanie-r…
Получив нужную сумму, или любые другие данные из БД и посчитав их агрегацию, поместить их куда Вам необходимо на карточку, к примеру в колонку завязанную на виртуальный атрибут.
Таблицу детали вы знаете, единственное условие это Id записи связи, который Вы легко получите в карточке через this.get("имя-колонки-связи")

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