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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как в 1С УНФ проверить фактический остаток перед записью документа?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #32462
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

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

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

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

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

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

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

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С