"Пишу отчет в ПУБе 7.7 по трудозатратам на готовую продукцию, т.е.мы выбираем готовую продукцию и по ней должны выбрать все тех операциикоторые даже входят в полуфабрикаты, а эти полуфабрикаты тоже состоят из полуфабрикатов.Подскажите как прописать правильно чтобы отследить все техОперации до конечных полуфабрикатов, я кое-что накидала, но с такой писаниной можно писать до бесконечности, если кто может подскажите какая команда мне поможет, я пробовала ВключатьПодчиненные, но я ей не правильно воспользовалась и результата нет, посмотрите подскажите, СПАСИБО. <br>перем ПояснениеПоНоменклатуре;<br>перем Колво; <br> //*******************************************<br><br><br>//*******************************************<br>// Процедура генерации запроса Сформировать.<br>//<br>Процедура Сформировать()<br> Перем Запрос, ТекстЗапроса, Таб;<br> //если выбрали<br> Если ВыбНоменклатура.Выбран()=1 Тогда <br> ИтогоТ = 0;<br> Запрос2 = СоздатьОбъект("Запрос"); <br> //здесь мы находим количество для выполнения плана продаж на месяц<br> ТекстЗапроса = "С ВыбНачПериода по ВыбКонПериода;<br> |Номенклатура =Регистр.План.Номенклатура;<br> |Количество = регистр.План.Количество;<br> |Функция КолвоС = НачОст(Количество);<br> |Условие (Номенклатура = ВыбНоменклатура);<br> |Группировка Номенклатура;<br> |"<br> ;<br> <br> Таб = СоздатьОбъект("Таблица");<br> Таб.ИсходнаяТаблица("Сформировать");<br> // Заполнение полей "Заголовок"<br> Таб.ВывестиСекцию("Заголовок");<br> Состояние("Заполнение выходной таблицы...");<br> Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); <br> <br> Если Запрос2.Выполнить(ТекстЗапроса) = 0 тогда<br> Сообщить("Ошибка выполнения запроса");<br> СтатусВозврата(0);<br> Возврат;<br> КонецЕсли;<br> <br> Пока Запрос2.Группировка(1) = 1 Цикл<br> Номенклатура = Запрос2.Номенклатура;<br> Артикул = Номенклатура.Артикул;<br> КолП = Запрос2.КолвоС; <br> //выводим саму продукцию или выбранную номенклатуру<br> Таб.ВывестиСекцию("Номенклатура");<br> //здесь по выбранной номенклатуре выбираем техоперации<br> СпрНР = СоздатьОбъект("Справочник.НормыРасходов");<br> СпрНР.ИспользоватьВладельца(Запрос2.Номенклатура);<br> СпрНР.ВыбратьЭлементы();<br> Пока СпрНр.ПолучитьЭлемент() = 1 Цикл <br> //проверка на тех операции, чтобы отбросить ненужные данные<br> Если СпрНР.ВидЭлемента = Перечисление.ВидыЭлементовНормРасходов.ТехОперация Тогда<br> Продукция = СпрНР.Владелец;<br> Работа = СпрНР.Элемент;<br> Норма = СпрНР.Норма.Получить(ВыбКонПериода);;<br> Стоимость = СпрНР.Стоимость.Получить(ВыбКонПериода); <br> //СОЗДАЕМ ЗАПРОС ДЛЯ ПОИСКА ОСТАТКА ПО РАНЕЕ ПОЛУЧЕНОЙ ТехОперации т.е. её оприходовали <br> Запрос = СоздатьОбъект("Запрос");<br> ТекстЗапроса = <br> "//{{ЗАПРОС(про)<br> |Период с ВыбНачПериода по ВыбКонПериода;<br> |Обрабатывать НеПомеченныеНаУдаление;<br> |Наименование = Регистр.Работа.Наименование;<br> |Количество = Регистр.Работа.Количество;<br> |Цена = Регистр.Работа.Цена;<br> |Функция КолвоКонОст = КонОст(Количество);<br> |Функция ЦенаКонОст = КонОст(Цена);<br> |Условие(Наименование = Работа.ТекущийЭлемент());<br> |"//}}ЗАПРОС<br> ;<br> // Если ошибка в запросе, то выход из процедуры<br> Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда<br> Возврат;<br> КонецЕсли;<br> <br> КолвоО = Запрос.КолвоКонОст;<br> ЦенаО = Запрос.ЦенаКонОст;<br> ИтогоО = Окр(КолвоО * ЦенаО,2);<br> КолвоТ = Окр((Норма * КолП)-КолвоО,2);<br> СуммаТ = Окр(КолвоТ * Стоимость,2); <br> ИтогоТ = ИтогоТ + СуммаТ;<br> //выводим саму работу<br> Таб.ВывестиСекцию("Работа"); <br> //проверяем есть ли в спецификации полуфабрикаты<br> ИначеЕсли СпрНР.ВидЭлемента = Перечисление.ВидыЭлементовНормРасходов.Полуфабрикат Тогда<br> Полуфабрикат = СпрНР.Элемент;<br> ЗапросПолуфабрикат = СоздатьОбъект("Запрос"); <br> //проверяем есть ли она в плане продаж<br> ТекстЗапроса = "С ВыбНачПериода по ВыбКонПериода;<br> |Номенклатура =Регистр.План.Номенклатура;<br> |Количество = регистр.План.Количество;<br> |Функция КолвоС = НачОст(Количество);<br> |Условие (Номенклатура = Полуфабрикат.ТекущийЭлемент());<br> |Группировка Номенклатура;<br> |"<br> ;<br> Если ЗапросПолуфабрикат.Выполнить(ТекстЗапроса) = 0 тогда<br> Сообщить("Ошибка выполнения запроса");<br> СтатусВозврата(0);<br> Возврат;<br> КонецЕсли;<br> <br> Пока ЗапросПолуфабрикат.Группировка(1) = 1 Цикл<br> Полуфабрикат1 = ЗапросПолуфабрикат.Номенклатура;<br> Артикул = Полуфабрикат.Артикул;<br> КолвоП = ЗапросПолуфабрикат.КолвоС; <br> //выводим полуфабрикат<br> Таб.ВывестиСекцию("Полуфабрикат");<br> СпрНР.использоватьВладельца(Полуфабрикат);<br> СпрНР.ВыбратьЭлементы();<br> Пока СпрНР.ПолучитьЭлемент()=1 Цикл<br> Если СпрНР.ВидЭлемента = Перечисление.ВидыЭлементовНормРасходов.ТехОпреация Тогда<br> Полуфабрикат2 = СпрНР.СпрНР.Владелец;<br> Артикул = Полуфабрикат2.Артикул; <br> РаботаП = СпрНР.Элемент;///и получается в таком духе до бесконечности<br> КонецЕсли; <br> КонецЦикла;<br> КонецЦикла;<br> КонецЕсли;<br>КонецЦикла;<br>КонецЦикла;<br>КонецЕсли; <br><br><br>ПояснениеПоНоменклатуре = " Для выполнения плана в размере "+КолП+" шт. по продукции "+"*"+Номенклатура+"*" + " потребуется "+ИтогоТ+"руб" ;<br>Таб.ВывестиСекцию("Итого");<br>// Вывод заполненной формы<br>Таб.ТолькоПросмотр(1);<br>Таб.Показать("Сформировать", """");<br>КонецПроцедуры <br>"