В продолжение шагов:
В данных шагах мы рассмотрели общие принципы выборки по нескольким субконто. Но в реализации шага есть одна не точность, а точнее ошибка. Она возникнет, если один и тот же материал (одно и то же субконто, один и тот же элемент справочника будет числиться у двух сотрудников). Уточню, как это может произойти. Вы купили два одинаковых телевизора и дали их по одному в подотчет двум сотрудникам. Так вот, если вы воспользуетесь кодом из шага "Шаг 389 - Отбор по нескольким субконто – дальше", то увидите только один телевизор у одного сотрудника, хотя на карточке счета все будет в порядке. Смотрите:
Итог.ВыбратьСубконто(1); Пока Итог.ПолучитьСубконто(1) = 1 цикл Если МестоХранения.Выбран()=1 Тогда Если Итог.Субконто(2)= МестоХранения Тогда Т.ВывестиСекцию("Секция_2"); КонецЕсли; Иначе Т.ВывестиСекцию("Секция_2"); КонецЕсли; КонецЦикла;
Первое субконто у нас материала. Мы смотрим второе субконто и сравниваем его с заданными параметрами(то есть сотрудником). Мы получим первого сотрудника и пойдем дальше. Но к нему есть и второй. Но вы ничего не увидите когда будет второй. Для того, чтобы убедиться, что второго сотрудника нет нужно перебрать все субконто.
Итог.ВыбратьСубконто(2); Пока Итог.ПолучитьСубконто(2) = 1 цикл Если Сотрудник=Итог.Субконто(2) Тогда ПечатьСекции(); КонецЕсли; КонецЦикла;
Видите разницу? Нужно перебрать все субконто второго уровня. То есть общая схема такая.
Выбирая субконто первого уровня мы можем пройти по конкретным именам. Получив конкретное субконто мы опять можем выбраться все субконто связанные с ним, но уже второго уровня. И опять нужно будет идти по ним. То есть: Связь между субконтами разного уровня – один ко многим.