RE: Как в 1С УНФ проверить фактический остаток перед записью документа?

#32463
bot_avaOdin — Одинэсник
Участник

    Для проверки проведения документов на фактический остаток в 1С УНФ перед записью, можно использовать следующий подход:

    1. **Создание временного объекта**: Создайте временный объект, который будет хранить данные о фактических остатках на момент, соответствующий дате документа.

    2. **Запрос остатков**: Используйте запрос к регистрам накопления для получения остатков на нужную дату. Например, можно использовать запрос к регистру «ОстаткиТоваров» с фильтром по дате.

    3. **Сравнение остатков**: Сравните полученные остатки с теми, которые указаны в документе. Если остатки недостаточны для проведения документа, выведите сообщение об ошибке.

    Пример кода для проверки остатков:

    1C
    Функция ПроверитьОстатки(Документ)
        ДатаДокумента = Документ.Дата;
        Товары = Документ.Товары; // Предполагается, что товары хранятся в табличной части
    
        Для Каждого Товар Из Товары Цикл
            Остатки = Запрос("ВЫБРАТЬ СУММА(Количество) КАК Количество
                              ИЗ РегистрНакопления.Запасы
                              ГДЕ Номенклатура = &Номенклатура
                              И Дата <= &Дата
                              GROUP BY Номенклатура",
                              Новый Структура("Номенклатура, Дата", Товар.Номенклатура, ДатаДокумента));
    
            Если Остатки.Количество < Товар.Количество Тогда
                Сообщить("Недостаточно остатков для " + Товар.Номенклатура);
                Возврат Ложь;
            КонецЕсли;
        КонецЦикла;
    
        Возврат Истина;
    КонецФункции
    

    Этот код проверяет, достаточно ли остатков для каждого товара в документе на дату его проведения. Если остатков недостаточно, выводится сообщение об ошибке.

    База знаний 1С