8.х Отчет по номенклатуре: спецификация + комплектующие

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем bluntschi, 27 май 2013.

  1. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    Добрый день, пишу отчет на СКД:
    необходимо чтобы у номенклатуры было выведена ее спецификация и комплектующие, но у каждой спецификации есть свой справочник, в котором есть свои исходные комплектующие, по данной спецификации, и их тоже нужно вывести и вот тут у меня в запросе 1с показывает ошибку:

    "В выражении связи набора данных - приемника разрешено использовать только поля набора данных - приемника Состав.ВыходныеИзделия.Комплектующие"
    То есть как я понимаю, можно использовать только табличную часть этого справочника, а как тогда связать ?

    сам отчет в прикрепленном файле

    [​IMG]

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


    2 набор данных запрос:
    Код:
    ВЫБРАТЬ
    КомплектующиеНоменклатуры.Номенклатура КАК Продукция,
    КомплектующиеНоменклатуры.Комплектующая КАК Комплектующие,
    КомплектующиеНоменклатуры.Количество КАК Норма
    ИЗ
    РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры
    
    3 набор данных запрос:

    Код:
    ВЫБРАТЬ
    СпецификацииНоменклатуры.Наименование как Спецификация,
    СпецификацииНоменклатуры.ВыходныеИзделия.(
    Номенклатура как Комплектующие )
    ИЗ
    Справочник.СпецификацииНоменклатуры КАК СпецификацииНоменклатуры

    Вложения:

  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Не совсем понятно в чем у Вас проблема.
    Если строить простой запрос на СКД то берете из справочника Спецификации Тч Исходные комплетующие, там же через ссылку - получаете свою спецификацию и Берете ТЧ Выходные изделия и там Номенклатуру и опять же через ссылку делваете свзять, что бы поттянуть данные из второй таблицы. и все.

    Но я тут еще не учитываю что есть РС, где храняться актуальные спецификации на дату. Вам просто надо учитывать что Номенклатура для которой делается спецификация - это не реквизит а строка ТЧ Выходные изделия
  3. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    нужно получить примерно следущие
    Номенклатура
    Комплектующие
    исходные комплектующие

    Комплектующие
    исходные комплектующие
    ..
    а это в одном запросе данных? или тоже два ?
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    В одном наборе данных.
    Не совсем понятно Что Вы понимаете под Комплектующими,а что под исходными комплектующими? Вы хотите разузловывать спецификацию?
  5. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    у нас есть продукция, у этой продукции - есть спецификация, продукция делиться на комплектующие, у которых в свою очередь тоже может быть спецификация, в которой вот указаны эти исходные комплектующие, ну видимо вы верно сказали, разузловывать

    Код:
    ВЫБРАТЬ
    СпецификацииНоменклатуры.ИсходныеКомплектующие.(
    Номенклатура  как Комплектующие,
    Ссылка.Наименование как Спецификация
    ),
    СпецификацииНоменклатуры.ВыходныеИзделия.(
    Номенклатура КАК Состав,
    Ссылка.Наименование как Спецификация    )
    ИЗ
    Справочник.СпецификацииНоменклатуры КАК СпецификацииНоменклатуры
    так тоже не получается, мне получается только одну табличную часть нужно выбрать, а на остальное ссылаться через ссылку?
  6. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Ну если разозузловывать - то это не все так просто у Вас же может быть вложенгость и третьего уровняи четвертого, а на одном этапе, что одно комплектующее получается из узловой спецификации, где на выходе 2 или три изделимя и вам тогда надо комплектующие делить пропорционально выходному количеству.

    Одним запросом на СКД - тут не обойдешся - процедуура разуздлования в УПП не маленька я и довольно то сложная...

    Если у вас какая то локальная задача, что уровень не больше трех и что спецификации только сборочные, то это еще можно решить и впринципе одним запросом, только повторить его и свзять по номенлатуре.
    А универсальную не получится одним запросом.
  7. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    да уровень больше трех не должен быть, по крайней мере все 5 лет обычно три.

    а что значит повторить запрос? можете чуть подробнее объяснить?
  8. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Ну как у вас один запрос как я писал получить Номенклатура - Спецификация - комплектующие, берем второй запрос такой же и соеденяем по Комплектующие Номенклатура, - получаем второй уровень, потом третий со вторым.
    т.е в вас в запросе три вложенных одинаковых запроса, которые соединяете между собой
  9. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    типо такого да, запрос должен получиться?

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

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Если очень прямолинейно то как то так


    Код:
    ВЫБРАТЬ
    СпецУровень1.ВыходноеУровень1,
    СпецУровень1.СпецификацияУровень1,
    СпецУровень1.КомплектующиеУровень1,
    СпецУровень2.КомплектующиеУровень2,
    СпецУровень2.СпецификацияУровень2
    ИЗ
    (ВЫБРАТЬ
    СпецификацииНоменклатурыВыходныеИзделия.Номенклатура КАК ВыходноеУровень1,
    СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК СпецификацияУровень1,
    СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК КомплектующиеУровень1
    ИЗ
    Справочник.СпецификацииНоменклатуры.ВыходныеИзделия КАК СпецификацииНоменклатурыВыходныеИзделия
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
    ПО СпецификацииНоменклатурыВыходныеИзделия.Ссылка = СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка) КАК СпецУровень1
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    СпецификацииНоменклатурыВыходныеИзделия.Номенклатура КАК ВыходноеУровень2,
    СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК СпецификацияУровень2,
    СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК КомплектующиеУровень2
    ИЗ
    Справочник.СпецификацииНоменклатуры.ВыходныеИзделия КАК СпецификацииНоменклатурыВыходныеИзделия
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
    ПО СпецификацииНоменклатурыВыходныеИзделия.Ссылка = СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка) КАК СпецУровень2
    ПО СпецУровень1.КомплектующиеУровень1 = СпецУровень2.ВыходноеУровень2
    Т.е в первом запросе получаем выходнное изделие и комплектующие, во втором запросе то же самое и соединяем комплектующие первого с выходными второго, либо можно вытаскивать поле Спецификация из ТЧ коплектующих и по нему связвывать уже
  11. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    спасибо вам большое)
    а этот запрос можно связать еще с регистром сведение "Комплектующие Номенклатуры" или это уже отдельным набором к нему соединять?
  12. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Принципе можно и так и так, на первый взгляд проблем не вижу.
  13. TopicStarter Overlay
    bluntschi
    Offline

    bluntschi Опытный в 1С

    Регистрация:
    18 июл 2012
    Сообщения:
    422
    Симпатии:
    0
    Баллы:
    26
    а если три уровня комплектующих, то по аналогии с вашим примером выше запрос получиться, да?)
  14. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Да. Только там лучше тогда Продукцию и комплектующие разнести в справочнике номенклатура по разным группам и потом отбор по группе делать. просто если без отбра то отчет будет по всей номенклатуре работать т.е сначал продцию разложит до 3 го уровня, потом перейдет на комплектующие, а так указываете что раскладывай только то что в папке Готовая продукция

Поделиться этой страницей