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


1С:Предприятие :: 1С:Предприятие 8 общая

Запись документа с неуникальным номером - в ОписаниеОшибки() пусто

Запись документа с неуникальным номером - в ОписаниеОшибки() пусто
Я
   N-S-B
 
24.05.18 - 12:30
Программно записываю документ, если номер неуникальный, то при записи очевидно появляется исключение "Значение "123" поля "Номер" не уникально".
Если же запись документа обернуть в Попытку Исключение, то в ОписаниеОшибки() в этом случае будет пусто.
Почему и можно ли как-то отловить это исключение?
 
 
   DrShad
 
1 - 24.05.18 - 12:38
а зачем ты записываешь с неуникальным номером?
   N-S-B
 
2 - 24.05.18 - 12:47
Парсю файл и на основании него создаю документы с нужными номерами. Если номер неуникальный, то надо обработать это исключение соответствующе. Но проблема в том, что понять по исключение, что ошибка именно в неуникальности номера нельзя, так как в ОписаниеОшибки() в этом случае пусто.
   catena
 
3 - 24.05.18 - 12:59
(2)У меня не пусто.
   N-S-B
 
4 - 24.05.18 - 13:08
(3) Баг платформы оказался. Если ОписаниеОшибки() запихнуть в переменную, то текст ошибки есть, хотя отладкой ОписаниеОшибки() что до присвоения переменной, что после - пустая строка.
Платформа 8.3.11.3034
   Cool_Profi
 
5 - 24.05.18 - 13:09
(4) А ты её отладчиком смотрел? Так это никогда не работало...
   DrShad
 
6 - 24.05.18 - 13:09
а если сразу поискать неуникальный номер, до записи
   N-S-B
 
7 - 24.05.18 - 13:13
(6) Увеличит время выполнения, там тысячи документов создаются
   DrShad
 
8 - 24.05.18 - 13:15
(7) чем увеличит? у тебя при записи что-то отличное от этого происходит?
   N-S-B
 
9 - 24.05.18 - 13:17
(8) А ну да, может и не увеличит)
   catena
 
10 - 24.05.18 - 13:19
(4)"Применять данную функцию имеет смысл только внутри операторных скобок Исключение - КонецПопытки, так как в ином случае она вернет пустую строку. Помогает в выдаче диагностики при возникновении ошибок.
Не рекомендуется использовать для отображения пользователю. "

В табле отладчика - это и есть "иной случай".
 
 Рекламное место пустует
   N-S-B
 
11 - 24.05.18 - 13:23
(10) Ну естественно я ее и проверяю внутри Исключение - КонецПопытки
   Aleksey
 
12 - 24.05.18 - 13:27
(8) Загружается 10 000 документов из них возможно 1 документ будет с не уникальным номером (но это не точно). Думаешь 10 000 поисков по всей базе в поисках, а есть ли такой номер у других документов, не сильно повлияет на общую производительность?
   catena
 
13 - 24.05.18 - 13:35
(11)Тогда как понимать фразу "хотя отладкой ОписаниеОшибки() что до присвоения переменной, что после - пустая строка."?
   N-S-B
 
14 - 24.05.18 - 13:41
(13)
Попытка
    Документ.Записать();
Исключение
    Ошибка = ОписаниеОшибки()//Вот тут точка останова

    Возврат;
КонецПопытки;

При остановке ОписаниеОшибки() - пусто
На следующем шаге (на Возврате) ОписаниеОшибки() - по-прежнему пусто, а в Ошибка уже текст
   catena
 
15 - 24.05.18 - 13:44
(14)Вот я и говорю, что вычисление в табло - это уже "иной случай", описанный в СП. Это ж не переменная, чтобы хранить значение.
   DrShad
 
16 - 24.05.18 - 13:45
(12) а как по твоему платформа проверяет уникальность номера? не на каждом ли документе?
   DrShad
 
17 - 24.05.18 - 13:47
+(16) да и не нужно 10 000 раз искать, достаточно собрать все номера в массив и один раз найти уже существующие
   alxxsssar
 
18 - 24.05.18 - 13:48
может перед загрузкой запросом вытащить все номера в таблицу, а в процессе загрузки к таблице обращаться? чтобы не перебирать всю базу на каждом загружаемом документе?
   DrShad
 
19 - 24.05.18 - 13:48
а при записи документа еще кучу времени на выполнение кода в процедурах ПередЗаписью и т.п.
   alxxsssar
 
20 - 24.05.18 - 13:51
(19) зачем при записи? я так понял он обработкой грузит. Вот в ней и прописать. Отработал поиск, нашел заданное значение - пропускаем строку, идем дальше, не грузим этот документ.
   DrShad
 
21 - 24.05.18 - 13:53
(20) читай тему внимательно, я именно за этот вариант - меня убеждают в обратном
   alxxsssar
 
22 - 24.05.18 - 13:54
(21) просю просчения


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