|   |   | 
| 
 | Периодически стала сбоить функция УстановитьНовыйНомер(<ПрефиксНомера>) | ☑ | ||
|---|---|---|---|---|
| 0
    
        Ivanich 25.07.23✎ 13:05 | 
        Конфигурация самописная обычные формы. 
 Режим совместимости:Версия 8.2.13 Разработана и эксплуатируется с 2007года БЫЛО: MS SQL 2008 1С:Предприятие 8.2 (8.2.19.130) Перевели на: PostgreSQL 11.19-1.1C(Х64) 1С:Предприятие 8.3 (8.3.20.2184) номер документа: 00230724014 некоторое время работает правильно, т.е. выдает 00230724015, 00230724016, и т.д. потом сбой - запоминается номер, например, 00230724017 и все. Следующий документ, должен быть 00230724018, а все время выдает 00230724017 и, соответственно не дает записать. Лечим так: документу с "глючным" номером (00230724017) руками присваиваем след.номер (018) и некоторое время работаем нормально. Потом опять сообщение: неуникальный номер и все повторяется. В отладке номер формируется в строке: ОбъектДокумента.УстановитьНовыйНомер("00"); т.е. префикс "00" (строка два ноля). Вопрос: может ли префикс быть не буквенным? | |||
| 1
    
        PLUT гуру 25.07.23✎ 13:07 | 
        (0) попробуй магическое заклинание ОбновитьНумерациюОбъектов()
 Если значение параметра не указано, то обновление будет выполнено для всех типов объектов. Описание: Выполняет обновление номеров в соответствии с номерами, записанными в базе данных. После вызова данного метода все выданные, но незаписанные номера, становятся невалидными т.к. не гарантируется их уникальность. Данный метод разрешено вызывать только администратору системы. | |||
| 2
    
        Ivanich 25.07.23✎ 13:13 | 
        Делали ТИИ с установленными флажками:
 Реиндексация таблиц ИБ Реструктуризация таблиц ИБ Не помогло... (1) Спасибо, попробую. | |||
| 3
    
        PLUT гуру 25.07.23✎ 13:16 | 
        (0) ну как вариант я бы еще регистр сведений с номерами добавил и блокировку при присвоении нового номера? номера иногда сложными бывают префиксы/суффиксы/цыхры/буквы/чёрточки
 ПрефиксНомера = какойтотамПрефиксНомера; ДлинаНомера = какаятотамДлинаНомера; НачатьТранзакцию(); БлокировкаДанных = Новый БлокировкаДанных; ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрСведений.НумерацияКакогототамДокумента"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; ЭлементБлокировки.УстановитьЗначение("Prefix", ВыбранныйПрефикс); БлокировкаДанных.Заблокировать(); Запрос = Новый Запрос; Запрос.Текст = ПолучитьТекстЗапросаПоследнегоНомера(); Запрос.УстановитьПараметр("Префикс", ВыбранныйПрефикс); Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); НовыйНомер = Выборка.Номер + 1; МЗ = РегистрыСведений.НумерацияКакогототамДокумента.СоздатьМенеджерЗаписи(); МЗ.Prefix = ВыбранныйПрефикс; МЗ.LastNumber = НовыйНомер; МЗ.Записать(); ЗафиксироватьТранзакцию(); //тут надо добавить магию по присвоению номера Объекту ЭтаФорма.Модифицированность = Истина; | |||
| 4
    
        Ivanich 25.07.23✎ 13:21 | 
        (3) понятно
 но ведь 16 лет работало. Прошли через все платформы 8.0;8.1;8.2 на 8.3 споткнулись... | |||
| 5
    
        PLUT гуру 25.07.23✎ 13:22 | 
        (4) магия из (1) 
 Доступен, начиная с версии 8.1. ну приколы с автонумерацией я и на 8.2 встречал и сейчас периодически бывает помогает магия из (1) | |||
| 6
    
        Fragster гуру 25.07.23✎ 13:23 | 
        пробегись по всем номерам, проверь, может где есть не число в позиции >=3     | |||
| 7
    
        Ivanich 25.07.23✎ 13:25 | 
        Может в Постгри что-то поднастроить?
 Работать стало медленнее. Отметили все пользователи. Хотя нагрузка на процессор <=8% Ветку сисадминам покажу | |||
| 8
    
        Ivanich 25.07.23✎ 13:32 | 
        (6) Поменял код: 
 ОбъектДокумента.УстановитьНовыйНомер("UU"); Обновились, часа 2 работаем. Пока ошибки не возникло. Но как-то неуверен я. Пот со лба вытер, ну и написал пока сюда может нельзя префиксы типа "12" или "25" использовать Сейчас (1) буду проверять | |||
| 9
    
        PLUT гуру 25.07.23✎ 13:33 | 
        (8) пользователям запретить редактировать номер вручную
 и вот еще https://infostart.ru/1c/tools/415406/ | |||
| 10
    
        Serg_1960 25.07.23✎ 14:17 | 
        "Вопрос: может ли префикс быть не буквенным?"(0) С версии платформы 8.1.6 реализована корректная работа автонумерации с "цифровыми" префиксами.     | |||
| 11
    
        Serg_1960 25.07.23✎ 14:25 | 
        Не обладая в полной мере всей достоверной информацией, могу только предполагать.
 "Механизм автонумерации позволяет работать в двух режимах: в режиме с возвратом неиспользованных номеров и в режиме без возврата неиспользованных номеров. Режим устанавливается свойством объекта метаданных "Конфигурация" РежимАвтонумерацииОбъектов." Источник: https://its.1c.ru/db/metod8dev/content/1550/hdoc | |||
| 12
    
        Ivanich 25.07.23✎ 15:09 | 
        (6) были не числа в документах за 2008 год, типа СЧ-58
 (1),(5) выполнил строку: ОбновитьНумерациюОбъектов(Метаданные.Документы.РеализацияТоваров); никаких сообщений не получил и выполнялась менее секунды. похоже не сработало. может что-то не так? (9) обработку скачал, но она для управляемых форм (11) Спасибо! Очень познавательно. Таким образом, для реализации возможных стратегий нумерации рекомендуется использовать следующие значения описанных свойств: для объектов, требующих непрерывной нумерации, - РежимАвтонумерацииОбъектов = НеОсвобождатьАвтоматически, Автонумерация = НеИспользовать; для объектов, не требующих непрерывной нумерации, - РежимАвтонумерацииОбъектов = НеОсвобождатьАвтоматически, Автонумерация = Авто; для работы механизма автонумерации аналогично версии 8.0 - РежимАвтонумерацииОбъектов = ОсвобождатьАвтоматически, Автонумерация = Авто. Сейчас установлено как для 8.0: РежимАвтонумерацииОбъектов = ОсвобождатьАвтоматически, Автонумерация = Авто. что логично, так как конфа из тех времен. Ок! попробую на копии как 8.1 | |||
| 13
    
        PLUT гуру 25.07.23✎ 15:23 | 
        (12) >никаких сообщений не получил и выполнялась менее секунды. похоже не сработало. может что-то не так?
 никаких сообщений не выводится. как ты определил, что нумерация не починилась? пробовал создать новый документ и записать? | |||
| 14
    
        Ivanich 25.07.23✎ 16:55 | 
        Позвал сисадмина. Перечитали ветку. Обратили внимание на пост (10). 
 Так как у нас используется механизм автонумерации 8.0, то возможная ошибка как раз была связана с "цифровым" индексом. (которую устранили в 8.1) Заменил "00" на "UU". Уже примерно 5 часов ошибка не проявляется. Судя по (5), ОбновитьНумерациюОбъектов() так же начинает работать с 8.1, поэтому (13) - не проверял, т.к. надо снова возвращаться на "00" | |||
| 15
    
        Ivanich 26.07.23✎ 09:15 | 
        (13) Поэкспериментировал:
 1. Вернул "00" - получил ошибку. 2. Выполнил обработку: ОбновитьНумерациюОбъектов(Метаданные.Документы.РеализацияТоваров); Через документ ошибка проявилась. 3. Изменил конфигурацию стало: РежимАвтонумерацииОбъектов = НеОсвобождатьАвтоматически, Автонумерация = Авто; Ошибка есть. 4. Выполнил обработку: ОбновитьНумерациюОбъектов(Метаданные.Документы.РеализацияТоваров); Ошибки - НЕТ! Ввел штук 15 документов. Таким образом совет из (1) работает! Остались не проверены варианты: 1. PostgreSQL + 8.2.19.130 2. MS SQL 2008 + 8.3.20.2184 Рабочие базы трогать не стал, т.к. работают с "UU" | |||
| 16
    
        Ivanich 26.07.23✎ 09:19 | 
        Спасибо! SERG_1960 - попал "в яблочко". Направил мысль в правильное русло.
 Спасибо! PLUT за активное обсуждение и рабочий совет из (1) | |||
| 17
    
        breezee 26.07.23✎ 12:50 | 
        ОбновитьНумерациюОбъектов() это не понацея. Ковыряйте сервер если у Вас такое есть. Какие-нибудь кэши у Вас плохие     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |