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

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


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

как в 1с унф проверить проведение документов на фактический остаток перед записью по времени остатка, а не текущий остаток



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

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

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

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

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

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

1C
Функция ПроверитьОстатки(Документ)
    ДатаДокумента = Документ.Дата;
    Товары = Документ.Товары; // Предполагается, что товары хранятся в табличной части

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

        Если Остатки.Количество < Товар.Количество Тогда
            Сообщить("Недостаточно остатков для " + Товар.Номенклатура);
            Возврат Ложь;
        КонецЕсли;
    КонецЦикла;

    Возврат Истина;
КонецФункции

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



   
ОтветитьЦитата