Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 апр 2024, 13:30

Разузлование спецификации

Автор demon3, 13 фев 2014, 07:25

0 Пользователей и 1 гость просматривают эту тему.

demon3

в КА и УПП в справочнике спецификации можно распечтать исходные комплектующие. а если в исходных комп у них еще есть своя спецификация,как получить значения спецификации у исходной комплектующей? запросом возможно?
ситуация такая,справочник спецификации, оттуда нужно сделать печатную форму чтобы печаталась спецификация с разузлованием. запрос вот такой сделал,но почему то он мне выводит 2 раза верхний уровень и разузлование не происходит. подскажите что я делаю не так!?

"ВЫБРАТЬ
| СпецУровень1.КомплектующиеУровень1 КАК Номенклатура,
| СпецУровень1.КомплектующиеУровень1.Код КАК Код,
| СпецУровень1.КомплектующиеУровень1.Артикул КАК Артикул,
| СпецУровень1.ХарактеристикаНоменклатуры КАК Характеристика,
| СпецУровень1.Количество КАК Количество,
| СпецУровень1.ЕдиницаИзмерения,
| СпецУровень1.Наименование КАК Наименование,
| NULL КАК Серия
|ИЗ
| (ВЫБРАТЬ
| СпецификацииНоменклатурыВыходныеИзделия.Номенклатура КАК ВыходноеУровень1,
| СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК СпецификацияУровень1,
| СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК КомплектующиеУровень1,
| СпецификацииНоменклатурыВыходныеИзделия.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК Количество,
| СпецификацииНоменклатурыИсходныеКомплектующие.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВЫБОР
| КОГДА СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура.НаименованиеПолное ЕСТЬ NULL
| ТОГДА СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура
| ИНАЧЕ ВЫРАЗИТЬ(СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))
| КОНЕЦ КАК Наименование
| ИЗ
| Справочник.СпецификацииНоменклатуры.ВыходныеИзделия КАК СпецификацииНоменклатурыВыходныеИзделия
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
| ПО СпецификацииНоменклатурыВыходныеИзделия.Ссылка = СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка
| ГДЕ
| СпецификацииНоменклатурыВыходныеИзделия.Ссылка = &Ссылка) КАК СпецУровень1
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СпецУровень2.КомплектующиеУровень2,
| СпецУровень2.КомплектующиеУровень2.Код,
| СпецУровень2.КомплектующиеУровень2.Артикул,
| СпецУровень2.ХарактеристикаНоменклатуры,
| СпецУровень2.Количество,
| СпецУровень2.ЕдиницаИзмерения,
| СпецУровень2.Наименование,
| NULL
|ИЗ
| (ВЫБРАТЬ
| СпецификацииНоменклатурыВыходныеИзделия.Номенклатура КАК ВыходноеУровень2,
| СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК СпецификацияУровень2,
| СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК КомплектующиеУровень2,
| СпецификацииНоменклатурыИсходныеКомплектующие.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК Количество,
| СпецификацииНоменклатурыИсходныеКомплектующие.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВЫБОР
| КОГДА СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура.НаименованиеПолное ЕСТЬ NULL
| ТОГДА СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура
| ИНАЧЕ ВЫРАЗИТЬ(СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))
| КОНЕЦ КАК Наименование
| ИЗ
| Справочник.СпецификацииНоменклатуры.ВыходныеИзделия КАК СпецификацииНоменклатурыВыходныеИзделия
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
| ПО СпецификацииНоменклатурыВыходныеИзделия.Ссылка = СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка
| ГДЕ
| СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка = &Ссылка) КАК СпецУровень2";
Помог ответом, скажи спасибо

Raiga

    Помещаешь спецификацию в таблицу значений. Перебираешь таблицу в цикле, запросом выбираешь исходные комплектующие из этой спецификации и спецификации на эти комплектующие, записываешь в таблицу значений.
    Вот так:
            ТЗ=Новый ТабЛицаЗначений;
ТЗ.Колонки.Добавить("Спецификация");

Стр=ТЗ.Добавить();
Стр.Спецификация="Нужная спецификация";

Для Каждого Стр Из ТЗ Цикл

Запрос=Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
| СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура
|ПОМЕСТИТЬ ВТ
|ИЗ
| РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних(&Дата, СпецификацияНоменклатуры = &Спецификация) КАК ОсновныеСпецификацииНоменклатурыСрезПоследних
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
| ПО ОсновныеСпецификацииНоменклатурыСрезПоследних.СпецификацияНоменклатуры = СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ.Номенклатура,
| ОсновныеСпецификацииНоменклатурыСрезПоследних.СпецификацияНоменклатуры КАК Спецификация
|ИЗ
| РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних КАК ОсновныеСпецификацииНоменклатурыСрезПоследних
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ
| ПО ОсновныеСпецификацииНоменклатурыСрезПоследних.Номенклатура = ВТ.Номенклатура";
Запрос.УстановитьПараметр("Дата",ТекущаяДата());
Запрос.УстановитьПараметр("Спецификация",Стр.Спецификация);

Результат=Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() Цикл

Стр1=ТЗ.Добавить();
Стр1.Спецификация=Результат.Спецификация;

КонецЦикла;
КонецЦикла;

demon3

что то ваш запрос в консоле запросов ничего не выводит!
Помог ответом, скажи спасибо

Raiga

Подправил.
ВЫБРАТЬ
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура
ПОМЕСТИТЬ ВТ
ИЗ
РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних(&Дата, СпецификацияНоменклатуры = &СпецификацияНоменклатуры) КАК ОсновныеСпецификацииНоменклатурыСрезПоследних
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
ПО ОсновныеСпецификацииНоменклатурыСрезПоследних.СпецификацияНоменклатуры = СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ.Номенклатура,
ОсновныеСпецификацииНоменклатурыСрезПоследних.СпецификацияНоменклатуры КАК Спецификация
ИЗ
ВТ КАК ВТ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних КАК ОсновныеСпецификацииНоменклатурыСрезПоследних
ПО ОсновныеСпецификацииНоменклатурыСрезПоследних.Номенклатура = ВТ.Номенклатура

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск