Перерасчёт данных в дочернем списке при изменении значения в родительской записи

Максим max

Посетитель
Здравствуйте, уважаемые разработчики! Не устану благодарить за Руну - огромное спасибо!
Помогите, пожалуйста, если вообще возможно сделать подобный "финт ушами"). Есть форма связи "Заказы" с дочерним объектом "Состав заказа". В объекте "Состав заказа" есть поле "Итого кол-во товаров", которое формируется на базе формы связи "Заказы". Есть условие - цена каждого товара зависит от количества всех товаров в заказе. Именно, от количества ВСЕХ товаров (у меня это поле "Итого кол-во товаров"). В объекте "Товары" прописано, как зависит от количества цена каждого товара.
Я прописал в объекте "Состав заказа" все необходимые условия и, в принципе, всё работает. Одно очень большое неудобство). Если изменить "Количество" в уже созданном товаре (это в "Заказы" во вкладке "Состав заказа"), то цена не меняется сразу на ту, которая задана по условию от количества. Нужно заходить ещё раз в этот товар и сохранять ещё раз - тогда меняется на правильную цену.
Также, если созданы два товара и, допустим, в одном из них нужно изменить количество, которое в итоге влияет по условию на цены обоих товаров, то для того, чтобы выполнилось условие, нужно зайти в оба товара и сохранить их - тогда условие выполняется.
Я понимаю, что значение в поле "Итого кол-во товаров", которое находится в объекте "Состав заказа" напрямую зависит от значения поля "Итого кол-во товаров", которое находится в форме связи "Заказы", по сути это оно и есть. И именно поэтому сразу не выполняется условие цены от количества в "Составе заказа".
Суть вопроса. Можно ли сделать в "Составе заказа" какое-то поле (сейчас это поле "Итого кол-во товаров" в объекте "Составе заказа"), в котором, при изменении количества, сразу бы менялась цена, т.е. выполнялось условие? И, чтобы это сразу было видно, т.е. меняю количество - изменяется цена по условию. Или может как-то вообще по-другому решить это.
Не знаю, понятно ли объяснил, если нет, то запишу видео с комментариями. Пример проекта прилагаю.
Спасибо!
 

Вложения

  • Пример.rbase
    1.6 KB · Просмотры: 7
Последнее редактирование модератором:

Vladimir

Администратор
Команда форума
Добрый день, Максим!
Очень рады, что наш труд помогает в работе, и впредь будем расширять возможности наших программ.

Сразу скажу, что Ваше пожелание в 6-ой версии - нереализуемо. Но все вопросы к нам мы внимательно рассматриваем.

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

У нас есть идеи по реализации данной задачи, но Ваш вопрос потребует расширения запланированного решения.
 

Максим max

Посетитель
Спасибо большое за ответ! Мне всё равно нужно этот вопрос решать, так как у меня цены двух категорий товаров рассчитываются именно так. Если найду какое-то хитрое решение, обязательно здесь поделюсь, может кому-то тоже надо.
 

Ирина

Модератор
Здравствуйте!
В принципе, что Вам нужно сделала, правда не совсем уверенна устроит ли Вас результат)))
Технических полей тоже немного добавилось))) Зато всё работает, как швейцарские часы!
В Руне, главное связать между собой объекты, что Вы видимо и пытались сделать в объекте "Товары" добавив скрытое поле-объект "Заказы".

Данная операция однонаправленная, и в 6-ой версии не может быть обратного направления, когда значение из родительского списка меняет данные в записях дочернего списка - для этого необходимо производить перерасчёт каждой записи в списке.
Чтобы обойти такую "однонаправленность" действуем по-другому. Теперь родительский объект будет собирать данные не только из дочернего объекта, но и из другого объекта, а дочерний объект собирать расчёты из родительского объекта, автоматически меняя цену по заданному условию.

В двух словах - в родительский объект "Заказы" добавляем технические поля по товарам (в примере поля для 2-х типов товаров, но можно добавлять до бесконечности). Эти технические поля заполнятся автоматически из объекта "Товары". Единственное, в объект "Товары" добавлено 1 техническое поле-переключатель "Категория". Его обязательно заполнять при вводе нового товара для передачи параметра в другой объект. При необходимости в структуре объекта добавляем новые значения в переключатель.
Но есть одно но, хотя... Дочерних объектов теперь несколько - по каждому типу товара. Таким образом перерасчёт каждой записи в списке реализован. А чтобы не путаться при создании записи (не выбирая нужный тип товара) используется передача параметра.

Если изменить "Количество" в уже созданном товаре (это в "Заказы" во вкладке "Состав заказа"), то цена не меняется сразу на ту, которая задана по условию от количества. Нужно заходить ещё раз в этот товар и сохранять ещё раз - тогда меняется на правильную цену.
Теперь можно без проблем менять количество в уже созданном товаре, но поля "Цена" и "Сумма" не изменятся при открытом объекте на изменение. Автоматический перерасчёт цены и суммы по заданному условию произойдет после закрытия (сохранения) дочернего объекта во всех дочерних объектах одновременно.

чтобы это сразу было видно, т.е. меняю количество - изменяется цена по условию.
Повторюсь, это сразу будет видно после сохранения записи в дочернем объекте.
Например, по товару 1 заполнено количество 7 (первая ценовая категория). Теперь добавляя товар 2 в количестве 4 штук (получается уже вторая ценовая категория по условию) в записи появится цена по 1-ой категории (в родительском объекте пока ведь не рассчиталось новое общее количество), но после сохранения записи всё изменится как в родительском, так и дочернем объекте (объектах).

P.S. Также сделала шаблон по всем товарам из 2-ух дочерних объектов.
Шаблон.png
 

Вложения

  • Цена от количества.rbase
    25.7 KB · Просмотры: 22

Alex

Продвинутый
Добрый день. По логике выставления счетов я понимаю, что счет это документ за которым следует оплата и данный документ с датой считается закрытым. (Это по моей логике. Извините, если не прав.) В общем. Вот мой пример, ну вдруг... Вспомогательных полей не много. Так я справляюсь со счетами, когда на одной единице товара несколько цен. В моем примере 3 цены. и после составления счета можно смело менять кол-во товаров. Цена изменится.
В любом случае, больше примеров проще новичкам. Всем счастья!
 

Вложения

  • TEST_Invoice.rbase
    1.5 KB · Просмотры: 8

Ирина

Модератор
Здравствуйте!
Класс, много примеров это супер!
Только задача немного другая, цена должна изменится у всех товаров от общего количества товаров.
Например, первичный заказ: 5 сушек и 4 печеньки. Попадают в первый ценовой диапазон, т.к. общее количество 9 штук. Сушки 5 шт. по 200 руб. и печеньки 4 шт. по 350 руб.
Покупатель передумал и заказал 6 сушек. В итоге общее количество товара 10 штук, а это уже второй ценовой диапазон. Значит 2 товара должны изменить цену на вторую категорию. Сушки 6 шт. по 150 руб., печеньки 4 штуки по 300 руб.
 

Alex

Продвинутый
Здравствуйте!
Класс, много примеров это супер!
Только задача немного другая, цена должна изменится у всех товаров от общего количества товаров.
Например, первичный заказ: 5 сушек и 4 печеньки. Попадают в первый ценовой диапазон, т.к. общее количество 9 штук. Сушки 5 шт. по 200 руб. и печеньки 4 шт. по 350 руб.
Покупатель передумал и заказал 6 сушек. В итоге общее количество товара 10 штук, а это уже второй ценовой диапазон. Значит 2 товара должны изменить цену на вторую категорию. Сушки 6 шт. по 150 руб., печеньки 4 штуки по 300 руб.
Какое странное ценообразование. ОК ) Оперировать условиями можно бесконечно ))) Спасибо. Попробуем так.
 

Serg

Гость
Добрый вечер.
Как реализовать изменение цены в дочернем списке, как всегда ценообразование, при условии валютной цены и пересчет при изменении в родительском объекте курса валют?
Вместо списка заказов в условия заносим курс валют, и в зависимости от валюты делаем пересчет, но только при изменении, а списком есть возможность пересчитать в дочернем списке?
 

Vladimir

Администратор
Команда форума
Добрый день, Serg.
Решение Ирины позволяет корректировать цену в заказе при условии, если вся информация находится в родительском объекте формы связи. В случае необходимости изменения данных в дочернем списке формы - этого сделать автоматически нельзя, т.е. произвести перерасчёт всех связанных записей пока невозможно.
Данная проблема будет решена в 7-ой версии, где можно будет использовать инструмент перерасчёта множества записей в связанном списке: автоматически или по кнопке.
 

Alex

Продвинутый
Добрый вечер.
Как реализовать изменение цены в дочернем списке, как всегда ценообразование, при условии валютной цены и пересчет при изменении в родительском объекте курса валют?
Вместо списка заказов в условия заносим курс валют, и в зависимости от валюты делаем пересчет, но только при изменении, а списком есть возможность пересчитать в дочернем списке?
Да. Автоматизировать перерасчет не получится, но руками при открытии записи в дочернем объекте, перерасчет будет. Если документов не особо много и их номенклатура не велика, то можно, самое нужное и пересчитать ))) В общем ждем 7-ую версию очень. Ну и пример с курсом валюты в родительском объекте ниже. На всякий случай.
 

Вложения

  • TEST_Invoice2.rbase
    2.1 KB · Просмотры: 5
Сверху Снизу