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

Ресурсные спецификации и главная сборка

Автор BruceWayne007, 05 мар 2025, 10:13

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

BruceWayne007

Всем привет. Кто-нибудь работал с ресурсными спецификациями в ERP??? Дали задачу - убрать покупные товары из ресурсных спецификаций в главную сборку. В какую сторону смотреть? Ресурсные спецификации - это справочник. На вкладке материалы и работы я так понимаю указана номенклатура, которую производят и которую закупают. А как понять какая главная сборка, а какая нет и что с этим делать дальше?
Вроде как еще надо сделать рекурсивный метод, чтобы получить все дерево. так как материалы могут могут состоять из узлов с собственной спецухой. Но что делать дальше я вообще не ма

BruceWayne007

Точнее мне необходимо как-то определять после разузлования, что является покупным, а что нет

Optiman

Цитата: BruceWayne007 от 05 мар 2025, 11:44мне необходимо как-то определять после разузлования, что является покупным, а что нет
Давай немного теории: в ресурсной спецификации есть только 2 вида: обеспечение (т.е. сразу берётся со склада) и производство (т.е. будет произведено собственными силами, если этой детали нет в наличии в НЗП).

Теперь вопрос: что вкладывается в понятие "покупной". В моей практике было разделение на:
- "Материалы" (на сладе организации эта номенклатура была оприходована на счет 10.01)
- "Покупные" - счет 10.02.

Если у вас такое же разделение, то для ресурсной спецификации в стандартной поставке это не имеет никакого значения. Потому что в цеховую кладовую (НЗП) всё сваливается в кучу на 20-й счет. Останется только разделение по реквизиту "Вид номенклатуры" или "Группа финансового учета" (если у вас заложено разделение). В этом случае придётся самому "дорабатывать" разделение в спецификации на материалы и покупные.

BruceWayne007

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

BruceWayne007

В итоге, решили так - открываю материал на первом уровне вложенности -он включает материал или несколько материалов со спецухой и материал или несколько без(последнее это покупнина). Опускаюсь на уровень ниже, т.е. этих материалов, что были со спецухами - у них идет один материал и он без спецухи - это производят. Т.е. по идее я смотрю на степень вложенности. Например -1, дальше вопрос - а одинаковый ли Родитель(спецификация 0 уровня) - да, одинаковый. Тогда надо смотреть, что содержит? есть на этом уровне материалы со спецухами и без, если да - значит "без" помечаем покупной. если нет, только материалы без спецух - значит производимый . Теперь программная реализация, нашел вот такой способ отбирать

Группы = Новый Соответствие;
Для Каждого Строка Из ТЗ Цикл
    Ключ = Строка.Уровень + "|" + Строка.Родитель;
    Если Не Группы.Содержит(Ключ) Тогда
        Группы.Вставить(Ключ, Новый Список);
    КонецЕсли;
    Группы[Ключ].Добавить(Строка);
КонецЦикла;

// 2. Анализ групп
Для Каждого ПараГруппы Из Группы Цикл
    СписокТоваров = ПараГруппы.Значение;
    ЕстьСпецификацииВГруппе = Ложь;

    // Проверяем наличие хотя бы одной спецификации
    Для Каждого Товар Из СписокТоваров Цикл
        Если Товар.ЕстьСпецификация Тогда
            ЕстьСпецификацииВГруппе = Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;

    // 3. Определение покупных товаров
    Если ЕстьСпецификацииВГруппе Тогда
        Для Каждого Товар Из СписокТоваров Цикл
            Если Не Товар.ЕстьСпецификация Тогда
                Товар.ПометкаПокупной = Истина;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
КонецЦикла;

Но при обходе соответствия галиматья. Ну т.е. Товар.ЕстьСпецификация - такого поля нет. Вопрос на миллион, как мне обойти Соответствие и выдернуть данные.

antoneus

Если Новый Список - это Новый СписокЗначений, тогда

Для Каждого ЭлементСписка Из СписокТоваров Цикл
    Если ЭлементСписка.Значение.ЕстьСпецификация Тогда

BruceWayne007

antoneus, в итоге сделал через ВыгрузитьЗначение() в массив и уже массив обхожу) спасибо)

antoneus

А чего бы сразу в массив не добавлять)

BruceWayne007

antoneus, во-первых, хз как вы смогли понять, что у меня там список значений, я потом когда сам посмотрел - офигел, че я там скинул) сорян за такой код. да наверное так и надо было. просто нашёл возможное решение под себя адаптировал, был выходной) рад был, что хотя бы верную инфу мне выводит. я в итоге потом на ЭлементСписка.Значение.ЕстьСпецификация исправил. Подумал, что это дурь в массив и из массива, когда можно через значение)

Теги:

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

Рейтинг@Mail.ru

Поиск