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

Для проверки проведения документов на фактический остаток в 1С УНФ перед записью, можно использовать следующий подход:
1. **Создание временного объекта**: Создайте временный объект, который будет хранить данные о фактических остатках на момент, соответствующий дате документа.
2. **Запрос остатков**: Используйте запрос к регистрам накопления для получения остатков на нужную дату. Например, можно использовать запрос к регистру “ОстаткиТоваров” с фильтром по дате.
3. **Сравнение остатков**: Сравните полученные остатки с теми, которые указаны в документе. Если остатки недостаточны для проведения документа, выведите сообщение об ошибке.
Пример кода для проверки остатков:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 1C Функция ПроверитьОстатки(Документ) ДатаДокумента = Документ.Дата; Товары = Документ.Товары; // Предполагается, что товары хранятся в табличной части Для Каждого Товар Из Товары Цикл Остатки = Запрос("ВЫБРАТЬ СУММА(Количество) КАК Количество ИЗ РегистрНакопления.Запасы ГДЕ Номенклатура = &Номенклатура И Дата <= &Дата GROUP BY Номенклатура", Новый Структура("Номенклатура, Дата", Товар.Номенклатура, ДатаДокумента)); Если Остатки.Количество < Товар.Количество Тогда Сообщить("Недостаточно остатков для " + Товар.Номенклатура); Возврат Ложь; КонецЕсли; КонецЦикла; Возврат Истина; КонецФункции |
Этот код проверяет, достаточно ли остатков для каждого товара в документе на дату его проведения. Если остатков недостаточно, выводится сообщение об ошибке.