Уже несколько дней думаю над этой задачей. В чем сложность: сложность в том, что это задача выборов. Выбор в начале выборки меняет ситуацию в конце. При этом для решения задачи необходимо помнить те выборы, что были с деланы в процессе обхода. Вижу 3 варианта решения:
1. Заведомо неметодологичный. Обходим табличную часть, строим таблицу остатков в следующем виде: сверху товар, ниже аналоги по убыванию приоритета. Идем по выборке, списываем кол-во в строке, пишем в базу движения. Т.е. запрос к остаткам аналогов и запись по каждой строке. Самое бесхитростное решение.
2. Развитие п.1. Перед обходом табл.части в таблицу значений выгружаем остатки по товарам ТЧ и их аналогам. Идем по срокам, пишем движения, убираем из ТЗ исчерпанные остатки товаров и их аналогов. Тоже не очень хорошо -- обработка ТЗ.
3. Развитие п.2. Перед обходом выборки строк выбрать остатки товаров ТЧ и их аналогов во временную таблицу МВТ. Обход по строкам -- запрос как выборка из ВТ МВТ остатков аналогов на количество строки. Убираем из ВТ МВТ Остатки исчерпанные в запросе по строке товары. Пишем движения по строке. Т.е. в каждый проход по ТЧ идет запрос к ВТ МВТ. Т.е. как бы запрос в цикле, но не к остаткам, а к памяти кластера серверов. Не знаю насколько это зло с точки зрения 1С. Я думаю это не лучше п.2. Тот же запрос к памяти.. Но отлаживать такое решение сложнее, но вполне можно.
Я склоняюсь к п.2 как наиболее простому в данном случае и способному реализовать задачу с одним лишь ограничением -- нет аналогов аналога. Т.е дерево аналогов ограничено уровнем 2.
Если попробовать взглянуть на задачу шире, то можно сказать, что одним запросом задачу решить не возможно... Она уходит в область комбинаторики. Т.е. просчитать все выборы сверху до низу просчитать одним последовательным запросом не получается. И тут в любом случае придется нарушить методологию рекомендуемую 1С. Вариант п.2 наиболее прозрачен в данном случае для реализации... В обход по строкам можно при желании воткнуть и рекурсивный вызов, который будет так же исчерпывать данные ТЗ остатки товаров и их аналогов.