По непонятным причинам не могу добавить это сообщение в нужный пост, поэтому создаю новую ветку.
1) В форме документа Счет(ТЧ называется СоставСчета) добавляем закладку, на которую помещаем дерево значений с полями "Номенклатура", "Количество", "Состояние".
2) При нажатии кнопки вызывается серверная контекстная процедура ОтобразитьНаСервере(), где прежде всего создается запрос к базе, в котором получаем нужные состояния товаров счета (сколько на складе, сколько отгружено). Группировка по Номенклатуре.
3) Создается дерево значений
ДеревоЗн = Новый ДеревоЗначений;
ДеревоЗн.Колонки.Добавить("Номенклатура");
ДеревоЗн.Колонки.Добавить("Количество");
ДеревоЗн.Колонки.Добавить("Состояние");
4) Обходится результат запроса и для каждой строки номенклатуры выводится код:
Строка = ДеревоЗн.Строки.Добавить();
Строка.Номенклатура = СтрокаСчета.Номенклатура;
Строка.Количество = СтрокаСчета.Количество;
Строка.Состояние = "Заказано";
5) Затем по детальным записям в зависимости от значения:
СтрокаСостояния = Строка.Строки.Добавить();
СтрокаСостояния.Количество = [Сколько из запроса на складе]
СтрокаСостояния.Состояние = "На складе";
или
СтрокаСостояния = Строка.Строки.Добавить();
СтрокаСостояния.Количество = [Сколько из запроса отгружено]
СтрокаСостояния.Состояние = "Отгружено";
6) По окончанию цикла пишется
ЗначениеВДанныеФормы(ДеревоЗн,СостояниеСчета);
В результате на закладке Состояние счета будет выведено соответствующее дерево.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший