|
Почему слетает счетчик? | ☑ | ||
---|---|---|---|---|
0
pro3ri
16.07.15
✎
09:16
|
Добрый день!
код: Процедура КнопкаВыполнитьНажатие(Кнопка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | (НЕ Номенклатура.ПометкаУдаления) | И (НЕ Номенклатура.ЭтоГруппа)"; Выборка = Запрос.Выполнить().Выбрать(); Счетчик = 0; Пока Выборка.Следующий() Цикл Объект = Выборка.Ссылка.ПолучитьОбъект(); Объект.ВестиУчетПоСериям = Истина; Попытка Объект.Записать(); Исключение Счетчик = Счетчик + 1; Сообщить(Строка(Счетчик)+": В Номенклатуре "+ Объект.Наименование+ " не установлен признак Серии: "+ ОписаниеОшибки()); КонецПопытки; КонецЦикла; КонецПроцедуры Заходит на Счетчик, он стан-ся = 1, далее как только попадает на Объект.Записать(); счетчик обнуляется. В чем ошибка? |
|||
1
Fish
16.07.15
✎
09:20
|
(0) А зачем ты увеличение счётчика в исключение запихал?
|
|||
2
Jokero
16.07.15
✎
09:22
|
(1) Он так количество ошибок отлавливает
(0) может конфликтует с другой переменной. Назови счетчик - абрвал)) |
|||
3
Fish
16.07.15
✎
09:23
|
(2) Ну по идее всё равно не должно такого быть.
|
|||
4
pro3ri
16.07.15
✎
09:25
|
(3) а как отловить колво ошибок?
|
|||
5
pro3ri
16.07.15
✎
09:27
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | (НЕ Номенклатура.ПометкаУдаления) | И (НЕ Номенклатура.ЭтоГруппа)"; Выборка = Запрос.Выполнить().Выбрать(); абрвал=0; Пока Выборка.Следующий() Цикл Объект = Выборка.Ссылка.ПолучитьОбъект(); Объект.ВестиУчетПоСериям = Истина; Попытка Объект.Записать(); Исключение абрвал = абрвал + 1; Сообщить(Строка(Счетчик)+": В Номенклатуре "+ Объект.Наименование+ " не установлен признак Серии: "+ ОписаниеОшибки()); КонецПопытки; КонецЦикла; КонецПроцедуры так работает спасибо, только это внешняя голая обработка без реквизитов... |
|||
6
фобка
16.07.15
✎
09:31
|
Опечатка - абырвалг
|
|||
7
sash-ml
16.07.15
✎
09:33
|
какая версия платформы?
Теоретически это может быть связано с областью видимости переменных, и прекэшированием байткода в ядро процессора, |
|||
8
фобка
16.07.15
✎
09:34
|
1) Коробит название переменной Объект
2) Коробит название переменной Счетчик 3) Счетчик ошибок можно накрутить не в исключении: попытка объект.записать(); продолжить; исключение конецпопытки; счетчик = счетчик+1; сообщить(счетчик); |
|||
9
pro3ri
16.07.15
✎
10:02
|
(7) 1С:Предприятие 8.1 (8.1.15.14)
|
|||
10
1sanekmaloi1
16.07.15
✎
10:03
|
(8) а чем исключение не нравится? Зачем городить костыли?Зачем тогда исключение сделали?Имхо все нормально было только на зарезервированную переменную похоже нарвался.
|
|||
11
фобка
16.07.15
✎
10:08
|
(10) я не говорил, что не нравится
|
|||
12
1sanekmaloi1
16.07.15
✎
10:23
|
(11)в контексте (8) читается недовольство кодом,получение.из чего я и сделал такой вывод, может ошибся конечно.тогда зачем вообще пункт 3,непонятна.
|
|||
13
1sanekmaloi1
16.07.15
✎
10:24
|
Получение=поучение
|
|||
14
patria0muerte
16.07.15
✎
10:27
|
А не проще ли счетчик прибавлять после записи, а количество ошибок считать из количества записей в результате запроса минус счетчик...
|
|||
15
probably
16.07.15
✎
10:32
|
(5) увеличиваешь абрвал, а выводишь всё равно счетчик
|
|||
16
1sanekmaloi1
16.07.15
✎
10:52
|
(14)Еще один мастер костылей. Зачем велосипед с квадратными колесами,лишних вычислений несколько штук, да еще и неверных(там считается и выводится порядковый номер ошибки, а не их количество)? в алгоритме все верное, синтаксис подвел.
|
|||
17
patria0muerte
16.07.15
✎
11:08
|
(16) Наркоман чтоле?
пост (3) как бы намекает, что человек интересуется как получить количество ошибок, не? как бэ нафига нужен номер ошибки? если уж так хочется - можно выводить номенклатуру, которая не записалась.. а производить какие то вычисления в исключениях - это не комильфо, насколько мне известно... |
|||
18
Draziw
16.07.15
✎
11:24
|
(10)
Счетчик = 0; Счетчик = Счетчик + 1; Да нет тут никакой переменной зарезервированной, просто тут 2 разных переменных :) одна Английской "С", а вторая с Русской "С". поэтому 0+1 - всегда = 1 :) |
|||
19
1sanekmaloi1
16.07.15
✎
11:24
|
(17) Попутал чтоли?
из (0) Заходит на Счетчик, он стан-ся = 1, далее как только попадает на Объект.Записать(); счетчик обнуляется. В чем ошибка? ответ на это - ошибка в имени переменной то что в (3) написано это не есть истина, если имел ввиду 4(я как то упустил этот пост), то это уже к (0) не имеет отношения номер ошибки нужен автору, его и спроси зачем он там. не надо истерить по поводу "нельзя в исключении считать", если говорят не желательно, то не надо там обработку проведения мутить, а сложить 2 числа можно. |
|||
20
pro3ri
16.07.15
✎
11:42
|
(15) описка - проверил в отладчике и кинул
|
|||
21
pro3ri
16.07.15
✎
11:48
|
(18) все гениальное просто! А как нашли?
|
|||
22
1sanekmaloi1
16.07.15
✎
11:55
|
(18)Телепат 80лвл, красава
|
|||
23
Draziw
16.07.15
✎
12:08
|
(21) Я не нашел, я предположил, частая же ошибка. Ну и никакой зарезервированной переменной "счетчик" точно нету, какие еще могут быть варианты.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |