Связывание таблиц значений по ФИФО

FastCode 1521 12 22 67

Если имеется две таблицы с колонками: Период, Документ, Сумма, то часто возникает задача построения объединенной таблицы "Результат" с колонками Период1, Документ1, Период2, Документ2, Сумма, в которой документы двух таблиц связаны по ФИФО. Чтобы функция Результат.Свернуть("Период1,Документ1", "Сумма") давала первую таблицу, а Результат.Свернуть("Период2,Документ2", "Сумма") - вторую. Такой задачей, является, например, распределение оплат по отгрузкам. Вот требуемая функция. Осторожнее, так как она меняет исходные таблицы!

Автор: ildarovich

Функция СвязываниеПоФИФО(А, Б, ё = 0, ж = 0) Экспорт
    Результат = НовыйТаблицаЗначений("Период1, Документ1, Период2, Документ2, Сумма");
    Пока ё < А.Количество() И ж < Б.Количество() Цикл
        Сумма = Мин(А[ё].Сумма, Б[ж].Сумма);
        ЗаполнитьЗначенияСвойств(Результат.Добавить()
        , Новый Структура("Период1, Документ1, Период2, Документ2, Сумма"
        , А[ё].Период, А[ё].Документ, Б[ж].Период, Б[ж].Документ, Сумма));
        А[ё].Сумма = А[ё].Сумма - Сумма;
        Б[ж].Сумма = Б[ж].Сумма - Сумма;
        ё = ё + (А[ё].Сумма = 0);
        ж = ж + (Б[ж].Сумма = 0)
    КонецЦикла;
    Возврат Результат 
КонецФункции
0

См. также

ТаблицаЗначенийВТаблицуХТМЛ

Транспонировать таблицу значений

Сохранение таблицы значений в XML

Отбор по таблице значений

ЗаполнитьТаблицуЗначений (БСП)

Дополнить таблицу значений - приемника данными из таблицы значений - источника

Типизация таблицы значений

Поиск в таблице значений неуникальных значений

ТаблицаЗначенийВМассив (БСП)

Модератору