Имя: Пароль:
1C
1С v8
Нумерация документов
,
0 PiotrLoginov
 
25.03.16
13:03
Всем здрасте.

8.3.7.1917
УТ 11.2.2.100

Последний документ РТУ имеет номер "ПРФК-000100"

Выполняю код:

Для И = 1 по 3 Цикл
    РТУ = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
    РТУ.Дата = ТекущаяДатаСеанса();
    РТУ.УстановитьНовыйНомер("ПРФК-");
КонецЦикла;

ОбновитьНумерациюОбъектов(Метаданные.Документы.РеализацияТоваровУслуг);


Затем создаю (и записываю) новый документ интерактивно. Документ получает номер "ПРФК-000104". Что сделать, чтобы получил номер "ПРФК-000101"?

Уже пробовал выполнять цикл внутри транзакции. Не помогло.
1 lxs
 
25.03.16
13:21
В рамках одного сеанса такая фишка не прокатит, мне кажется
2 lxs
 
25.03.16
13:22
Система резервирует выданные номера для данного сеанса. А команда ОбновитьНумерациюОбъектов() эти именно номера по-моему не трогает.
3 PiotrLoginov
 
25.03.16
13:31
Так. Открыл программу. Текущий номер "ПРФК-000100". Выполнил

    РТУ = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
    РТУ.Дата = ТекущаяДатаСеанса();
    РТУ.УстановитьНовыйНомер("ПРФК-");


Закрыл программу.  Открыл программу. Выполнил

ОбновитьНумерациюОбъектов(Метаданные.Документы.РеализацияТоваровУслуг);



Создал новый РТУ. Записал. Получился номер "ПРФК-000102".

Ничего не понимаю.
4 PiotrLoginov
 
25.03.16
13:37
Получается, если, имея последний документ "ПРФК-000100", запросить выдачу нового номера 10 раз, не записывая ничего в реальности в базу, то номер следующего реально записанного документа будет "ПРФК-000111". Т.е. он перепрыгнет через 10 пунктов. И ничего не спасет.


Но вот что интересно. Если удалить этот 111-ый типовыми средствами и создать еще один документ, то этот уже будет с номером "ПРФК-000101". Т.е. нумератор все-таки умеет помечать выданные, но не использованные номера как невалидные. Нужен метод, где б его взять?
5 PiotrLoginov
 
25.03.16
14:48
вверх
6 PiotrLoginov
 
25.03.16
15:24
еще раз вверх
7 Звездец
 
25.03.16
15:28
в УТ номер устанавливается при записи объекта. Убери вообще РТУ.УстановитьНовыйНомер("ПРФК-"); и попробуй
8 mikecool
 
25.03.16
15:30
9 mikecool
 
25.03.16
15:30
+8 возможно это проблема нумератора
10 lxs
 
25.03.16
16:00
(9) вот да, если он есть, его надо убрать
11 PiotrLoginov
 
25.03.16
16:15
(7) УстановитьНовыйНомер используется для получении текущего номера для того или иного префикса. В этом весь смысл.
12 PiotrLoginov
 
25.03.16
16:19
(8) (9)  начинаю что-то понимать.  Попробую сбрасывать у всех документов, использующих этот нумератор.

(10) Модифицировать конфигурацию не буду
13 PiotrLoginov
 
25.03.16
16:57
Сбор для всех документов, использующих нумератор не помог:


МассивОбъектовМетаданных = Новый Массив;
    МассивОбъектовМетаданных.Добавить(Метаданные.Документы.РеализацияТоваровУслуг);
    МассивОбъектовМетаданных.Добавить(Метаданные.Документы.ВыкупВозвратнойТарыКлиентом);
    МассивОбъектовМетаданных.Добавить(Метаданные.Документы.ПередачаТоваровМеждуОрганизациями);
    МассивОбъектовМетаданных.Добавить(Метаданные.Документы.РеализацияУслугПрочихАктивов);
    
    ОбновитьНумерациюОбъектов(МассивОбъектовМетаданных);


Буду дико рад любым идеям и мыслям.
14 PiotrLoginov
 
25.03.16
16:57
*Сбор = Сброс
15 lxs
 
25.03.16
17:12
(12) "Модифицировать конфигурацию не буду" - на копии попробуй хотя бы, чтобы понять, откуда ноги растут у косяка. А то может "Надо, Федя, надо"
16 PiotrLoginov
 
25.03.16
17:18
(15) да, в таких случаях надо пробовать на копии, согласен.

Но - вопрос разрешился.  Сбросил для самого нумератора:


ОбновитьНумерациюОбъектов(Метаданные.НумераторыДокументов.ДокументыРеализацииТоваров);



- и выданные, но не записанные номера перестали мешаться.  Ура.  Нумерация в платформе работает как часы. Все объяснимо и поддается управлению. Вопрос закрыт. Всем помогавшим большущее спасибо.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс