|
Разница в применении Продолжить | ☑ | ||
---|---|---|---|---|
0
NIGHTHUNTER
09.01.22
✎
09:00
|
Есть ли разница в применении оператора продолжить в варианте 1 и варианте 2 ?
Спрашиваю так как, есть мнение. что разница принципиальна. Я же не вижу ее. Вариант 1 Пока Выборка.Следующий() Цикл Если Выборка.Количество > Выборка.КоличествоОстаток Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не хватает товара " + Выборка.НоменклатураПредставление + " в количестве " + (Выборка.Количество - Выборка.КоличествоОстаток); Сообщение.Сообщить(); Отказ = Истина; КонецЕсли; Если Отказ Тогда Продолжить; КонецЕсли; Движение = Движения.ОстаткиНоменклатуры.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Склад = Склад; Движение.Номенклатура = Выборка.Номенклатура; Движение.Количество = Выборка.Количество; КонецЦикла; Вариант 2 Пока Выборка.Следующий() Цикл Если Выборка.Количество > Выборка.КоличествоОстаток Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не хватает товара " + Выборка.НоменклатураПредставление + " в количестве " + (Выборка.Количество - Выборка.КоличествоОстаток); Сообщение.Сообщить(); Отказ = Истина; Продолжить; КонецЕсли; Движение = Движения.ОстаткиНоменклатуры.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Склад = Склад; Движение.Номенклатура = Выборка.Номенклатура; Движение.Количество = Выборка.Количество; КонецЦикла; |
|||
1
Мимохожий Однако
09.01.22
✎
09:04
|
(0) "есть мнение". Чьё мнение?
В чём цель кода? |
|||
2
SleepyHead
гуру
09.01.22
✎
09:09
|
(0) Здесь напрашивается цитата про очень тонкий лед из большого куша, только про троллинг.
|
|||
3
NIGHTHUNTER
09.01.22
✎
09:14
|
(1) Это код из расходной накладной. Старая методика проведения. Цель кода, провестись.
Я вроде бы, кажется понял разницу. Вариант 1 верный. Так как, там заложен смысл того, что при возведении отказ в истина, не будут формироваться движения. В варианте 2 же. Движения будут формироваться. И из за не там расположенного оператора Продолжить, это будет бессмысленно ! |
|||
4
aka MIK
09.01.22
✎
09:21
|
Разница в том что в первом варианты будет инфа обо всех товарах без остатка, а во втором - только о первом
|
|||
5
Aleksey
09.01.22
✎
09:35
|
(3) Почему бессмысленно? Движение будет по тем позициям которых достаточно для списания
(4) а не наоборот? В первом варианте как только нарвется на недостачу, то все последующие позиции будут без движения. По сути в первом варианте продолжить равносильно прервать |
|||
6
Мимохожий Однако
09.01.22
✎
09:48
|
(5) Если Отказ=Истина, то движения не будут записаны. Во втором варианте будут формироваться движения, но на финише будет Отказ. И движения не сохранятся. В первом варианте движения вообще не будут формироваться при первом же отказе.
Я бы сделал 3 вариант. Сначала проверка, а потом запись движений при успехе. |
|||
7
aka MIK
09.01.22
✎
10:06
|
(5) ну да, наоборот
|
|||
8
Aleksey
09.01.22
✎
10:10
|
(5) "Если Отказ=Истина, то движения не будут записаны" - нам отсюда не видно, может будет, может не будет.
И насчет вариантов, зависит от того что нужно в конечном итоги. У меня в самописке он пишет движения всегда, просто при недостачи делается запись в РС "Недостачи при проведении". Но в моем случае база не для интерактивной работы, а сводная, и если прилетел проведенный документ он должен провести, а с минусами потом на выходных разбираться будем. |
|||
9
NIGHTHUNTER
09.01.22
✎
14:00
|
(5) Так если уже, отказ истина. Зачем эти движения? Документ же уже не проведется. По этому и бессмысленно.
Я не знаю тонкости внутренней работы СУБД. Но вроде как этого не нужно делать. Документ и так не проведется. По этому считается что правда за первым вариантом. Вот я и задал вопрос, что бы точнее разобрать его. |
|||
10
Волшебник
модератор
09.01.22
✎
14:06
|
Если Отказ Тогда
Прервать; КонецЕсли; |
|||
11
RomanYS
09.01.22
✎
14:08
|
(10) тогда не узнаешь обо всех ошибках. Только о первой
|
|||
12
Casey1984
09.01.22
✎
14:28
|
Если отказ, то зачем продолжать вообще?
|
|||
13
RomanYS
09.01.22
✎
14:32
|
(12) чтобы узнать все позиции, по которым нехватка остатков.
|
|||
14
Sserj
09.01.22
✎
14:39
|
На самом деле все что тут написали - мелочь.
А разница КОЛОСАЛЬНАЯ :) Тут как в детской задачке: Пете дали 5 яблок, два он съел. Сколько яблок осталось у Пети. А ответа правильного тут нет - не определено сколько было у Пети яблок изначально. Так вот и в этом примере, НЕИЗВЕСТНО состояние Отказа на момент начала цикла. А так же что будет с этим Отказом после цикла. |
|||
15
Сергиус
09.01.22
✎
14:39
|
(0)Разница видится только в том, что для 1-го случая проверка на Отказ происходит всегда при проходе цикла, а во 2-м только когда Кол-во из документа больше остатка.
|
|||
16
Сергиус
09.01.22
✎
14:41
|
+(15) а как правильно заметили в (14) Отказ может быть выставлен в Истина и до цикла.
|
|||
17
Casey1984
09.01.22
✎
14:43
|
(0) Весь код надо.
|
|||
18
NIGHTHUNTER
10.01.22
✎
03:50
|
(11) Это верно!!! По этому Продолжить!
|
|||
19
NIGHTHUNTER
10.01.22
✎
03:51
|
(17) Да выше там запрос, и его выполнение. Вот, выборка - выполненный запрос и идет .
|
|||
20
NIGHTHUNTER
10.01.22
✎
03:55
|
(15) Да, около того. И что во втором, будут делаться движения, количество которых не вызывает нехватку.
И проблема в том, что раз, сработал отказ, то не нужно делать уже движения. Это оптимальное выполнение. А лепить движения, когда они нужны неправильно же. Если их 900 ? |
|||
21
NIGHTHUNTER
10.01.22
✎
03:57
|
(20) Правлю. -
А лепить движения, когда они нужны неправильно же. => А лепить движения, когда они НЕ нужны неправильно же. |
|||
22
Ненавижу 1С
гуру
10.01.22
✎
06:23
|
Во втором случае пропускаем создание движений только у проблемных движений. В первом у всех, после первого проблемного.
Кроме того отказ мог быть установлен и до цикла |
|||
23
Волшебник
модератор
10.01.22
✎
07:18
|
Интересно, а в запросе, который возвращает "Выборка", есть "ДЛЯ ИЗМЕНЕНИЯ"?
|
|||
24
Ryzeman
10.01.22
✎
07:32
|
(2) Не думаю, слишком тонко и разнообразно, интеллектуальные затраты на придумывание такого какими-то немыслимыми были бы)
|
|||
25
Ryzeman
10.01.22
✎
07:39
|
(0) что это вообще? Обработка проведения какого-то документа? У тебя в случае отказа дальше движения отменяются или чересстрочно должны записываться?
|
|||
26
Мимохожий Однако
10.01.22
✎
07:42
|
(25) ОФФ: Если ответить на твой вопрос, то ветка будет слишком короткой )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |