Имя: Пароль:
1C
1С v8
Дамп при записи документа
0 Stim
 
18.10.12
16:41
такой код:

Попытка
ОбъектДок.записать();
Сообщить("Перенумерован документ "+ПредставлениеДокументаДоИзменения+" в документ: "+Строка(стр.документ));            
исключение
ОбъектДок.Номер = Формат(МаксимальныйНомер - стр.НомерСтроки, "ЧГ=0");
ОбъектДок.записать();
КонецПопытки;

когда отладчик заходит в исключение - предприятие вылетает с дампом.
Присваиваемый номер при этом: "99999999998"
документов с таким номером больше нет.

При этом, забавно - если вместо кода выше написать просто

ОбъектДок.Номер = Формат(МаксимальныйНомер - стр.НомерСтроки, "ЧГ=0");
ОбъектДок.записать();

без попыток и исключений, то спокойно создается док с номером "99999999998"

Почему так? БП 2.0
1 Stim
 
18.10.12
16:42
+ в исключение сваливается, когда записывает док с существующим уже номером. выполняется в толстом клиенте, на сервере, в обычных и в управляемых формах - везде с ошибкой
2 Vadim_37
 
18.10.12
16:43
Записать() в попытку
3 Stim
 
18.10.12
16:44
(2) бесполезно. Городил

Попытка
ОбъектДок.записать();
Сообщить("Перенумерован документ "+ПредставлениеДокументаДоИзменения+" в документ: "+Строка(стр.документ));            
исключение
ОбъектДок.Номер = Формат(МаксимальныйНомер - стр.НомерСтроки, "ЧГ=0");
Попытка
ОбъектДок.записать();
исключение
КонецПопытки;
КонецПопытки;


все равно вылетает с дампом
4 Stim
 
18.10.12
16:45
при этом как-то странно - только для одного типа документов такая ошибка. во всех остальных заходит в исключение и не вываливается.
такое ощущение, что какие-то внутренние таблицы нумерации переполнены
5 Vadim_37
 
18.10.12
16:45
ну и пес с ним, записывай без попыток. Мож в платформе дело.
6 Stim
 
18.10.12
16:49
(5) мне так нужно. полный код:

Попытка
ОбъектДок.записать();
Сообщить("Перенумерован документ "+ПредставлениеДокументаДоИзменения+" в документ: "+Строка(стр.документ));            
исключение
ОбъектДок.Номер = Формат(МаксимальныйНомер - стр.НомерСтроки-100, "ЧГ=0");
ОбъектДок.записать();
НеУникальныеНомера.Вставить(НовыйНомерДокумента, ОбъектДок.Ссылка);
КонецПопытки;



Для каждого Зн Из НеУникальныеНомера Цикл
НовыйНомер   = Зн.Ключ;
ОбъектДок       = Зн.Значение.ПолучитьОбъект();
ОбъектДок.Номер = НовыйНомер;
Попытка
ОбъектДок.Записать();
Сообщить("Перенумерован документ "+Строка(ОбъектДок.ссылка));    
Исключение
Сообщить("Повтор номера: " + НовыйНомер + " за пределами данной выборки!");
КонецПопытки;        
КонецЦикла;
7 Stim
 
18.10.12
16:50
+ т.е. получается, что в первой попытке док записывается либо как есть, либо с номером 99999999998, следующий - 99999999997 и тд.

а потом уже при обходе структуры НеУникальныеНомера - этим документам даются их номера
8 Stim
 
18.10.12
16:50
++
       ОбъектДок.Номер = Формат(МаксимальныйНомер - стр.НомерСтроки-100, "ЧГ=0");


и даже так не хочет записывать((
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший