Имя: Пароль:
1C
1С v8
Отказ при записи
0 MIV 91
 
23.11.20
17:54
Добрый день, по задумке при записи если не хватает товара то должен идти отказ в записи, однако этого нет, не подскажите почему?


Процедура ПриЗаписи(Отказ)
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
        |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
        |ИЗ
        |    РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура В (&Товары)) КАК ТоварыНаСкладахОстатки
        |ГДЕ
        |    ТоварыНаСкладахОстатки.КоличествоОстаток < 0";
    
    Запрос.УстановитьПараметр("Товары", Товары.ВыгрузитьКолонку("Номенклатура"));
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Если ВыборкаДетальныеЗаписи.Количество()> 0 Тогда
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Сообщить ("Не хватает"  + ВыборкаДетальныеЗаписи.Номенклатура +  "количество" +  -ВыборкаДетальныеЗаписи.КоличествоОстаток + "!")    
    КонецЦикла;
    Отказ = Истина;
    КонецЕсли;
    
КонецПроцедуры
1 ДенисЧ
 
23.11.20
17:58
Белые люди обычно такую пакость делают в ПередЗаписью()
2 MIV 91
 
23.11.20
18:03
(1) Я пробовал и перед Записью и Режим Проведения, все равно документ проходит...
3 RomanYS
 
23.11.20
18:04
(1) а типовые другие расы пишут? Контроль остатков обычно в обработке проведения
4 ДенисЧ
 
23.11.20
18:10
(3) Типовые пишут инопланетянет
(2) А запрос что говорит вообще?
5 MIV 91
 
23.11.20
18:12
(4) Через запрос я получаю выборку, и конкретно нужную строку табличной части, плюс условие что если меньше нуля конкретной номенклатуры, тогда...
6 RomanYS
 
23.11.20
18:17
(4) Не только инопланетяне знают, что отрицательные остатки нужно проверять после проведения (и точно после "ПередЗаписью") :))).
7 RomanYS
 
23.11.20
18:18