Вход | Регистрация
 

Разница в применении Продолжить

Разница в применении Продолжить
Я
   NIGHTHUNTER
 
09.01.22 - 09:00
Есть ли разница в применении оператора продолжить в варианте 1 и варианте 2 ?
Спрашиваю так как, есть мнение. что разница принципиальна. Я же не вижу ее.

Вариант 1

    Пока Выборка.Следующий() Цикл
        Если Выборка.Количество > Выборка.КоличествоОстаток Тогда
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Не хватает товара " + Выборка.НоменклатураПредставление + " в количестве " + (Выборка.Количество - Выборка.КоличествоОстаток);
            Сообщение.Сообщить();            
            
            Отказ = Истина;
            
        КонецЕсли;

        Если Отказ Тогда
            Продолжить;
        КонецЕсли;
        
        Движение = Движения.ОстаткиНоменклатуры.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Склад = Склад;
        Движение.Номенклатура = Выборка.Номенклатура;
        Движение.Количество = Выборка.Количество;
        
    КонецЦикла;


Вариант 2

    Пока Выборка.Следующий() Цикл
        Если Выборка.Количество > Выборка.КоличествоОстаток Тогда
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Не хватает товара " + Выборка.НоменклатураПредставление + " в количестве " + (Выборка.Количество - Выборка.КоличествоОстаток);
            Сообщение.Сообщить();            
            
            Отказ = Истина;
                        Продолжить;            
        КонецЕсли;

        Движение = Движения.ОстаткиНоменклатуры.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Склад = Склад;
        Движение.Номенклатура = Выборка.Номенклатура;
        Движение.Количество = Выборка.Количество;
        
    КонецЦикла;
   МимохожийОднако
 
1 - 09.01.22 - 09:04
(0) "есть мнение". Чьё мнение?
В чём цель кода?
   SleepyHead
 
2 - 09.01.22 - 09:09
(0) Здесь напрашивается цитата про очень тонкий лед из большого куша, только про троллинг.
   NIGHTHUNTER
 
3 - 09.01.22 - 09:14
(1) Это код из расходной накладной. Старая методика проведения. Цель кода, провестись.

Я вроде бы, кажется понял разницу. Вариант 1 верный. Так как, там заложен смысл того, что при возведении отказ в истина, не будут формироваться движения.

В варианте 2 же. Движения будут формироваться. И из за не там расположенного оператора Продолжить, это будет бессмысленно !
   aka MIK
 
4 - 09.01.22 - 09:21
Разница в том что в первом варианты будет инфа обо всех товарах без остатка, а во втором - только о первом
   Aleksey
 
5 - 09.01.22 - 09:35
(3) Почему бессмысленно? Движение будет по тем позициям которых достаточно для списания

(4) а не наоборот? В первом варианте как только нарвется на недостачу, то все последующие позиции будут без движения. По сути в первом варианте продолжить равносильно прервать
   МимохожийОднако
 
6 - 09.01.22 - 09:48
(5) Если Отказ=Истина, то движения не будут записаны. Во втором варианте будут формироваться движения, но на финише будет Отказ. И движения не сохранятся. В первом варианте движения вообще не будут формироваться при первом же отказе.
Я бы сделал 3 вариант. Сначала проверка, а потом запись движений при успехе.
   aka MIK
 
7 - 09.01.22 - 10:06
(5) ну да, наоборот
   Aleksey
 
8 - 09.01.22 - 10:10
(5) "Если Отказ=Истина, то движения не будут записаны" - нам отсюда не видно, может будет, может не будет.
И насчет вариантов, зависит от того что нужно в конечном итоги. У меня в самописке он пишет движения всегда, просто при недостачи делается запись в РС "Недостачи при проведении". Но в моем случае база не для интерактивной работы, а сводная, и если прилетел проведенный документ он должен провести, а с минусами потом на выходных разбираться будем.
   NIGHTHUNTER
 
9 - 09.01.22 - 14:00
(5) Так если уже, отказ истина. Зачем эти движения? Документ же уже не проведется. По этому и бессмысленно.
Я не знаю тонкости внутренней работы СУБД. Но вроде как этого не нужно делать. Документ и так не проведется.

По этому считается что правда за первым вариантом. Вот я и задал вопрос, что бы точнее разобрать его.
   Волшебник
 
Модератор
10 - 09.01.22 - 14:06
Если Отказ Тогда
   Прервать;
КонецЕсли;
   RomanYS
 
11 - 09.01.22 - 14:08
(10) тогда не узнаешь обо всех ошибках. Только о первой
   Casey1984
 
12 - 09.01.22 - 14:28
Если отказ, то зачем продолжать вообще?
   RomanYS
 
13 - 09.01.22 - 14:32
(12) чтобы узнать все позиции, по которым нехватка остатков.
   Sserj
 
14 - 09.01.22 - 14:39
На самом деле все что тут написали - мелочь.
А разница КОЛОСАЛЬНАЯ :)
Тут как в детской задачке:
Пете дали 5 яблок, два он съел. Сколько яблок осталось у Пети.
А ответа правильного тут нет - не определено сколько было у Пети яблок изначально.
Так вот и в этом примере, НЕИЗВЕСТНО состояние Отказа на момент начала цикла. А так же что будет с этим Отказом после цикла.
   Сергиус
 
15 - 09.01.22 - 14:39
(0)Разница видится только в том, что для 1-го случая проверка на Отказ происходит всегда при проходе цикла, а во 2-м только когда Кол-во из документа больше остатка.
   Сергиус
 
16 - 09.01.22 - 14:41
+(15) а как правильно заметили в (14) Отказ может быть выставлен в Истина и до цикла.
   Casey1984
 
17 - 09.01.22 - 14:43
(0) Весь код надо.
   NIGHTHUNTER
 
18 - 10.01.22 - 03:50
(11) Это верно!!! По этому Продолжить!
   NIGHTHUNTER
 
19 - 10.01.22 - 03:51
(17) Да выше там запрос, и его выполнение. Вот, выборка - выполненный запрос и идет .
   NIGHTHUNTER
 
20 - 10.01.22 - 03:55
(15) Да, около того. И что во втором, будут делаться движения, количество которых не вызывает нехватку.
И проблема в том, что раз, сработал отказ, то не нужно делать уже движения. Это оптимальное выполнение.
А лепить движения, когда они нужны неправильно же. Если их 900 ?
   NIGHTHUNTER
 
21 - 10.01.22 - 03:57
(20) Правлю. -

А лепить движения, когда они нужны неправильно же.

=>

А лепить движения, когда они НЕ нужны неправильно же.
   Ненавижу 1С
 
22 - 10.01.22 - 06:23
Во втором случае пропускаем создание движений только у проблемных движений. В первом у всех, после первого проблемного.
Кроме того отказ мог быть установлен и до цикла
   Волшебник
 
Модератор
23 - 10.01.22 - 07:18
Интересно, а в запросе, который возвращает "Выборка", есть "ДЛЯ ИЗМЕНЕНИЯ"?
   Ryzeman
 
24 - 10.01.22 - 07:32
(2) Не думаю, слишком тонко и разнообразно, интеллектуальные затраты на придумывание такого какими-то немыслимыми были бы)
   Ryzeman
 
25 - 10.01.22 - 07:39
(0) что это вообще? Обработка проведения какого-то документа? У тебя в случае отказа дальше движения отменяются или чересстрочно должны записываться?
   МимохожийОднако
 
26 - 10.01.22 - 07:42
(25) ОФФ: Если ответить на твой вопрос, то ветка будет слишком короткой )


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.