Нашел такой алгоритм, который мне показался неоптимальным
Дано:
Таблица Отгрузки, имеющая набор реквизитов:
1.Номенклатура
2.Характеристика номенклатуры
3.Серия номенклатуры
4.Заказ покупателя
5.Количество
Таблица номер 2:
1.Номенклатура
2.Характеристика номенклатуры
3.Референс строки заказа (Это реквизит заказа покупателя подобие внутренний номер строки, который не изменяется)
4.Заказ покупателя
5.Количество
Задача:
Распределить количество, соединив две таблицы по всем реквизитам.
Выход:
1.Номенклатура
2.Характеристика номенклатуры
3.Референс строки заказа (Это реквизит заказа покупателя подобие внутренний номер строки который не изменяется)
4.Серия номенклатуры
5.Заказ покупателя
6.Количество
Решение было:
В цикле обойти все строки первой таблицы и по формулам Распределено и Осталось распределить пересчитать количества, соединив две таблицы в одну.
Решение очень тормозное, решил перенести циклический перебор в запрос.
Текст прилагаю в аттаче.
Сразу предвижу критику за использование лишних точек. Их там немного и на производительность не влияет.
Также запрос рассчитан на обработку максимального количества распределяемых штук 9999. Чтобы увеличить количество, необходимо нарастить счетчик, находящийся в первой временной таблице.
Запрос предоставлен как пример, т.к. разработан на самодописанной конфигурации, но разобраться в реквизитах и их типах возможно, так как они имеют общие названия, а следовательно, тип данных с документом, передаваемым в параметр, а это РеализацияТоваровУслуг.
Также возможно увеличить количество соединяемых таблиц, продублировав набор временных таблиц, относящийся к объекту ИтоговаяТаблица.
Параметры П1 и П2 есть определение максимального обрпабатываемого количества, т.е. его можно уменьшить от 9999, которые заложены в счетчик.
Дополнение описания структуры данных:
Здесь для хранения референса использован регистрСведений, т.к. референс не учавствует в остатках по причине наличия еще одного идентификатора строки, по которому хранятся итоги.
То есть строка с ИД=1 может иметь один референс=1, но в остатках по количеству может быть разбита по внутренним реквизитам (Пример: Номенклатура, состояние остатка: прибыл, отгружен, отказ)