Имя: Пароль:
1C
1С v8
Сбилась нумерация документов реализации в УТ11
,
0 Alekzander
 
04.03.19
11:31
Добрый день. УТ 11.4.6.188, платформа 8.3.12.1685. С начала года в документах реализации шла правильная нумерация, однако в середине января кто-то поменял вручную номер, поставив после дефиса не ноль, а "О", и укоротив длину номера до четырёх символов, то есть было типа КТУТ-000001, а стало КТУТ-О001. Разумеется, что после достижения номера КТУТ-О999 при записи следующего документа стала вылетать ошибка о неуникальности номера. Мы сделали внешней обработкой перенумерацию документов, восстановив нормальную, но всё равно при попытке записать следующий документ выходит ошибка неуникальности. Даже если поменять номер вручную и создать следующий, ошибка всё равно вылетит. Такое ощущение, что неверная нумерация где-то осталась, и либо программа, либо платформа где-то хранит последний неправильный номер и пытается продолжить неверную нумерацию. Мы пробовали на копии базы сделать перенумерацию - толку нет, дели ТиИ, выгрузку/загрузку dt, чистку кеша и прочие танцы с бубном - бесполезно. Есть ещё какие варианты решения такой проблемы? Может кто подсказать?
1 Timon1405
 
04.03.19
11:33
Глобальный контекст.ОбновитьНумерациюОбъектов (Global context.RefreshObjectsNumbering)
Глобальный контекст (Global context)
ОбновитьНумерациюОбъектов (RefreshObjectsNumbering)
Синтаксис:

ОбновитьНумерациюОбъектов(<Метаданные>)
Параметры:

<Метаданные> (необязательный)

Описание:

Выполняет обновление номеров в соответствии с номерами, записанными в базе данных. После вызова данного метода все выданные, но незаписанные номера, становятся невалидными т.к. не гарантируется их уникальность. Данный метод разрешено вызывать только администратору системы.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
2 Alekzander
 
04.03.19
12:05
(1) в таком случае нумерация обновится у всех документов реализации в базе, а в нашем случае нужно поправить нумерацию только по документам одной организации.
3 Timon1405
 
04.03.19
12:23
(2) и чем плох сброс выданных номеров для остальных организаций? попробуйте на копии
4 Alekzander
 
04.03.19
15:39
(3) Попробовал, всё равно с буквой создаёт.
5 Alekzander
 
05.03.19
09:35
ап. Есть ещё какие-нибудь идеи?
6 sqr4
 
05.03.19
09:49
т.е номер с буквой нет, а следующий, все равно с буквой?
7 sqr4
 
05.03.19
09:52
Как я понимаю, тут дело не в последнем документе, а в последнем номере, а т.к по строке будет всегда больше  КТУТ-О, то и берет ее.
8 Alekzander
 
05.03.19
10:10
(6) да, именно так
(7) хм, и как же от этого избавиться теперь?
9 polosov
 
05.03.19
10:27
(8)Тыщу раз обсуждалось. Смотри где еще используется нумератор, который задействован в РТУ. Документ, который не РТУ, ломает нумерацию.
10 sqr4
 
05.03.19
10:30
в моей утшке вот виды доков
Документ.ВыкупВозвратнойТарыКлиентом.Нумератор
Документ.ПередачаТоваровМеждуОрганизациями.Нумератор
Документ.РеализацияТоваровУслуг.Нумератор
Документ.РеализацияУслугПрочихАктивов.Нумератор
11 unregistered
 
05.03.19
10:36
(8) > да, именно так.

Зачем ты нас обманываешь?
Или ты хочешь сказать, что являешься свидетелем чуда?

Либо по-прежнему есть документ с номером, содержащим букву "О", либо ты не выполнил обновление нумератора, либо перепутал порядок действий.
Необходимо последовательно(!) сначала перенумеровать все документы, входящие в нумератор, таким образом, чтобы не было ни одного документа с буквой "О" в этом году. Потом выполнить метод ОбновитьНумерациюОбъектов() из (1).
12 Alekzander
 
05.03.19
10:52
(11) ок, намёк понял. Посмотрю тщательнее, раз других вариантов нет, значит, мог порядок действий перепутать.
13 Alekzander
 
12.03.19
11:55
Все проверил. В базе ни одного документа с "О" в номере не осталось. Обновил нумерацию объектов, все равно при создании нового документа вылезает номер КТУТ-О999. Что еще можно сделать?
14 Serg_1960
 
12.03.19
13:13
Проверь установленные префиксы.
15 Alekzander
 
12.03.19
14:27
В префиксах организации и базы буква "О" отсутствует.
16 unregistered
 
12.03.19
14:39
(13) > Все проверил.

Значит не всё.

Перечитай внимательно статью https://its.1c.ru/db/metod8dev#content:1550:hdoc
Может натолкнёт на какие-нибудь мысли.

Восстановление при ошибочно введенном максимальном номере
Механизм автонумерации имеет возможности по восстановлению максимального номера после исправления или удаления неверно введенного максимального номера. Например, имеем текущий максимальный номер АА001, пользователь при вводе документа ошибся и явно ввел номер ААБСД. После этого автонумератор запомнил введенный номер и перестал выдавать корректные номера, все время выдавая номер ААБСД. Пользователь исправил неправильно введенный номер документа на АА002. Поcле этого автонумератор стал выдавать правильные номера - АА003, АА004... Альтернативой исправлению может быть удаление объекта с неверно введенным номером.
Данная возможность избавляет пользователя от проблем, связанных с остановкой сервера или вызовом функции ОбновитьНумерациюОбъектов, которые были необходимы ранее для восстановления нумерации объектов.

Алгоритм работы восстановления нумерации следующий:
- После изменения/удаления номера определенного объекта (в момент записи/удаления) автонумератор определяет, нужно ли сбрасывать максимальный номер.
- Номер нужно сбрасывать, если номер, который изменили/удалили, являлся максимальным записанным номером по данному пространству номеров и не открыта ни одна транзакция, получившая или установившая номера по данному пространству номеров.
- Если номер нужно сбрасывать, то автонумератор обновляет для данного пространства номеров нумерацию объектов, получая тем самым номер, который стал максимальным после изменения/удаления текущего номера. После обновления все возвращаемые для переиспользования номера больше максимального игнорируются.
- Если после ошибочно введенного номера были получены и записаны другие номера, то нужно исправить/удалить их все (включая ошибочно введенный).
После этого нумерация по данному пространству номеров будет восстановлена.
AdBlock убивает бесплатный контент. 1Сергей