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

Получить наименование реквизита табличной части справочника из модуля документа

Автор stlvrr777, 15 мая 2022, 20:05

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

stlvrr777

Доброго времени суток всем! Я новичок в 1С и уже сломал голову...
Нужно получить наименование реквизита  табличной части справочника из модуля документа.
Есть регистр накопления "ОстаткиПродуктов", документ "Продажи" и справочник "Меню", у него есть табличная часть "Состав" с реквизитом "Ингредиенты".
Не могу разобраться, как настроить конструктор движений, чтобы при проведении продажи в остаткиПродуктов попадали не сами блюда, а его ингредиенты.
Благодарю за любую помощь

На всякий случай прилагаю код модуля объекта "Продажи":
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

// регистр ОстаткиПродуктов Расход
Движения.ОстаткиПродуктов.Записывать = Истина;
Для Каждого ТекСтрокаПереченьМеню Из ПереченьМеню Цикл
Движение = Движения.ОстаткиПродуктов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Продукты = ТекСтрокаПереченьМеню.Меню;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаПереченьМеню.Количество;
КонецЦикла;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры

LexaK

stlvrr777, вообще, конечно по правильному надо учитывать расход блюд, именно как товара,
но если вам так надо по заданию  тогда примерно так
(если правильно указали свои имена реквизитов)
Процедура ОбработкаПроведения(Отказ, Режим)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

    // регистр ОстаткиПродуктов Расход
    Движения.ОстаткиПродуктов.Записывать = Истина;
    Для Каждого ТекСтрокаПереченьМеню Из ПереченьМеню Цикл
        Движение = Движения.ОстаткиПродуктов.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        //Движение.Продукты = ТекСтрокаПереченьМеню.Меню;
    Для Каждого СтрокаМеню Из ТекСтрокаПереченьМеню.Меню.Состав Цикл
        Движение.Продукты = СтрокаМеню.Ингредиенты;
        //считаем общее количество, умножаем на количество блюд из меню
        Движение.Количество = СтрокаМеню.Количество * ТекСтрокаПереченьМеню.Количество;
    КонецЦикла;
        Движение.Склад = Склад;
    КонецЦикла;

    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
если помогло нажмите: Спасибо!

stlvrr777

LexaK, спасибо огромное! немного изменил код, так как в вашем примере записывался только последний ингредиент, но всё работает! еще раз благодарю!

LexaK

stlvrr777,
Цитата: stlvrr777 от 15 мая 2022, 21:19только последний ингредиент,

а, да действительно, (не было возможности проверить в конфигураторе)
по идее такой код пишут с запросом,
там один проход по результату, или вообще одна команда Загрузить(Результат)
 
если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск