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

Не работает контроль остатков

Автор Игорь Коритняк, 16 мая 2021, 19:49

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

Игорь Коритняк

Сделал, контроль остатков товаров, чтобы при проведении документа с продажей нельзя было продать товара больше, чем есть на складе. Контроль остатков работает и даже вылезает сообщение о том, сколько товара не хватает для проведения документа. Вот только есть одна беда - работать он начинает только когда я нажимаю кнопку "Провести" второй раз. При первом же проведении невозможно большое количество товаров продаётся.
:trhregerhg:
Отрывок кода, скриншоты с произошедшим, а также выгрузку конфигурации прикладываю! Помогите пожалуйста! С меня ПИВО! Я не знаю разрешено ли это правилами форума, но если мне кто-то поможет, я реально скину на пиво, потому что очень прям выручите, скоро работу сдавать, а она не работает!







Код в модуле ПродажиТоваров, в процедуре ОбработкаПроведения


Если Режим = РежимПроведенияДокумента.Оперативный Тогда

//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("Ссылка", Ссылка);

РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
Отказ = Истина;

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
  Сообщить ("Недостаточно товара" + ВыборкаДетальныеЗаписи.Товар + " в количестве" + ВыборкаДетальныеЗаписи.Количество);
    КонецЦикла;
КонецЕсли;
   КонецЕсли;


вот это выгрузка моей конфигурации

Геннадий ОбьГЭС

Спам какой-то, то ли раскрутка cyberforum.ru
А , для скачивания надо регистрироватся на cyberforum.ru
Чем не устроиил ответ
https://www.cyberforum.ru/1c-custom/thread2830766.html#post15496960
?

nvj84

Посмотрите про новую методику проведения. У вас при проверке не учитываются движения самого документа. И чтобы они учитывались нужно использовать в параметрах виртуальной таблицы остатков в качестве периода Границу.

Новый Граница(МоментВремени(), ВидГраницы.Включая)

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

Рейтинг@Mail.ru Rambler's Top100

Поиск