|
Окно предупреждения в 1С. | ☑ | ||
---|---|---|---|---|
0
Godunov
05.07.16
✎
16:36
|
Ребят, нужна ваша помощь в 1С 8.2, сам ещё зелёный.
Есть такой код: Перем ТаблЗнач; Если ТаблЗнач = Неопределено Тогда ТаблЗнач = ЭтаФорма.Товары.Выгрузить(); ТаблЗнач.Свернуть("ЗаказПокупателя"); Для каждого Стр из ТаблЗнач Цикл Если ТекАдрес = Неопределено Тогда ТекАдрес = Стр.ЗаказПокупателя.АдресДоставки; ИначеЕсли ТекАдрес <> Стр.ЗаказПокупателя.АдресДоставки Тогда Сообщить ("Адрес доставки не совпадает в заказах." + Стр.ЗаказПокупателя.Номер); КонецЕсли; Если ВариантДоставки = Неопределено Тогда ВариантДоставки = Стр.ЗаказПокупателя.ВариантДоставки ИначеЕсли ВариантДоставки <> Стр.ЗаказПокупателя.ВариантДоставки Тогда Сообщить ("Вариант доставки не совпадает в заказах." + Стр.ЗаказПокупателя.Номер); КонецЕсли; Если ОплатаДоставкиПокупателем = Неопределено Тогда ОплатаДоставкиПокупателем = Стр.ЗаказПокупателя.ОплатаДоставкиПокупателем ИначеЕсли ОплатаДоставкиПокупателем <> Стр.ЗаказПокупателя.ОплатаДоставкиПокупателем Тогда Сообщить ("Оплата доставки покупателем не совпадает в заказах." + Стр.ЗаказПокупателя.Номер); КонецЕсли; КонецЦикла; Предупреждение ("Данные по доставке не совпадают в заказах."); КонецЕсли; http://savepic.ru/10412107.png Это предупреждение ("Данные по доставке не совпадают в заказах."); Постоянно выводится, независимо при проверке данных доставки, что указано в коде выше. Такой код не приемлем. Потому что окно предупреждения выскакивает тогда, когда обрабатывается строка с сообщением, т.е. если 5 строк сообщений, то будет 5 окон предупреждения, а мне надо, чтобы предупреждение выходило только один раз. ТаблЗнач = ЭтаФорма.Товары.Выгрузить(); ТаблЗнач.Свернуть("ЗаказПокупателя"); Для каждого Стр из ТаблЗнач Цикл Если ТекАдрес = Неопределено Тогда ТекАдрес = Стр.ЗаказПокупателя.АдресДоставки; ИначеЕсли ТекАдрес <> Стр.ЗаказПокупателя.АдресДоставки Тогда Сообщить ("Адрес доставки не совпадает в заказах." + Стр.ЗаказПокупателя.Номер); Предупреждение ("Данные по доставке не совпадают в заказах."); КонецЕсли; Если ВариантДоставки = Неопределено Тогда ВариантДоставки = Стр.ЗаказПокупателя.ВариантДоставки ИначеЕсли ВариантДоставки <> Стр.ЗаказПокупателя.ВариантДоставки Тогда Сообщить ("Вариант доставки не совпадает в заказах." + Стр.ЗаказПокупателя.Номер); Предупреждение ("Данные по доставке не совпадают в заказах."); КонецЕсли; Если ОплатаДоставкиПокупателем = Неопределено Тогда ОплатаДоставкиПокупателем = Стр.ЗаказПокупателя.ОплатаДоставкиПокупателем ИначеЕсли ОплатаДоставкиПокупателем <> Стр.ЗаказПокупателя.ОплатаДоставкиПокупателем Тогда Сообщить ("Оплата доставки покупателем не совпадает в заказах." + Стр.ЗаказПокупателя.Номер); Предупреждение ("Данные по доставке не совпадают в заказах."); КонецЕсли; КонецЦикла; Как исправить, подскажете? |
|||
1
ДемонМаксвелла
05.07.16
✎
16:40
|
до цикла присвой некое булево в ложь, каждый раз при ошибке присваивай булево в истину. После цикла проверь значение и выведи сообщение.
|
|||
2
ДемонМаксвелла
05.07.16
✎
16:43
|
ну и ошибки при обходе цикла можно в коллекции копить
|
|||
3
AroxNsk
05.07.16
✎
16:43
|
перед напиши
СообщятьОбНеСовпадаении = Ложь; в коде замени Предупреждение ("Данные по доставке не совпадают в заказах."); на СообщятьОбНеСовпадаении = Истина; в конце напиши Если СообщятьОбНеСовпадаении Тогда Предупреждение ("Данные по доставке не совпадают в заказах."); КонецЕсли; |
|||
4
Godunov
05.07.16
✎
16:43
|
А примерный код есть с примером, а то шибко зелёный я в 1С...
|
|||
5
Godunov
05.07.16
✎
16:43
|
(2) (3) Пасиб, попробую.
|
|||
6
youalex
05.07.16
✎
16:44
|
обычно пишу сообщение в переменную (СтрокаОшибки)
После цикла - Если Не ПустаяСтрока(СтрокаОшибки) Тогда Предупреждение (СтрокаОшибки) //условно - предупреждение КонецЕсли; зы. От кода типа "Стр.ЗаказПокупателя.АдресДоставки" - следует избавляться |
|||
7
ovrfox
05.07.16
✎
16:50
|
Код неэффективен
Лучше так ТаблЗнач = ЭтаФорма.Товары.Выгрузить(); ТаблЗнач.Свернуть("ЗаказПокупателя"); СтрЭталон = Неопределено; фДанныеНеСовпадают = Ложь; Для каждого Стр из ТаблЗнач Цикл Если СтрЭталон = Неопределено Тогда СтрЭталон = Стр.ЗаказПокупателя; ИначеЕсли СтрЭталон.АдресДоставки <> Стр.ЗаказПокупателя.АдресДоставки Тогда Сообщить ("Адрес доставки не совпадает в заказах." + Стр.ЗаказПокупателя.Номер); фДанныеНеСовпадают = Истина; КонецЕсли; Если СтрЭталон.ВариантДоставки <> Стр.ЗаказПокупателя.ВариантДоставки Тогда Сообщить ("Вариант доставки не совпадает в заказах." + Стр.ЗаказПокупателя.Номер); фДанныеНеСовпадают = Истина; КонецЕсли; Если СтрЭталон.ОплатаДоставкиПокупателем <> Стр.ЗаказПокупателя.ОплатаДоставкиПокупателем Тогда Сообщить ("Оплата доставки покупателем не совпадает в заказах." + Стр.ЗаказПокупателя.Номер); фДанныеНеСовпадают = Истина; КонецЕсли; КонецЦикла; Если фДанныеНеСовпадают Тогда Предупреждение ("Данные по доставке не совпадают в заказах."); КонецЕсли; |
|||
8
Godunov
05.07.16
✎
16:50
|
(3) Прописал так, но всё равно предупреждение выводится, если не выводит сообщения. А надо, чтобы, если нет сообщений, то нет и предупреждения.
ТаблЗнач = ЭтаФорма.Товары.Выгрузить(); ТаблЗнач.Свернуть("ЗаказПокупателя"); СообщятьОбНеСовпадаении = Ложь; Для каждого Стр из ТаблЗнач Цикл Если ТекАдрес = Неопределено Тогда ТекАдрес = Стр.ЗаказПокупателя.АдресДоставки; ИначеЕсли ТекАдрес <> Стр.ЗаказПокупателя.АдресДоставки Тогда Сообщить ("Адрес доставки не совпадает в заказах." + Стр.ЗаказПокупателя.Номер); КонецЕсли; Если ВариантДоставки = Неопределено Тогда ВариантДоставки = Стр.ЗаказПокупателя.ВариантДоставки ИначеЕсли ВариантДоставки <> Стр.ЗаказПокупателя.ВариантДоставки Тогда Сообщить ("Вариант доставки не совпадает в заказах." + Стр.ЗаказПокупателя.Номер); КонецЕсли; Если ОплатаДоставкиПокупателем = Неопределено Тогда ОплатаДоставкиПокупателем = Стр.ЗаказПокупателя.ОплатаДоставкиПокупателем ИначеЕсли ОплатаДоставкиПокупателем <> Стр.ЗаказПокупателя.ОплатаДоставкиПокупателем Тогда Сообщить ("Оплата доставки покупателем не совпадает в заказах." + Стр.ЗаказПокупателя.Номер); КонецЕсли; КонецЦикла; СообщятьОбНеСовпадаении = Истина; Если СообщятьОбНеСовпадаении Тогда Предупреждение ("Данные по доставке не совпадают в заказах."); КонецЕсли; |
|||
9
Godunov
05.07.16
✎
16:53
|
(7) Волшебник, благодарю)
|
|||
10
Godunov
05.07.16
✎
16:56
|
Всем пасиба за оперативную помощь, + к карме каждому из вас, всё работает как надо. А я буду изучать код для лучшего понимания...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |