Как осуществляется присвоение номера новому документу?

1. alw-1 14.01.14 08:29 Сейчас в теме
Есть документ - Накладная , ей в зависимости от ситуации присваеваются префиксы от Н1 до Н9, то есть номер документа - Н1_1... или Н9_1... , когда создаю новый документ, автоматически присваивается номер - Н9_1 и пишет что он не уникальный(так и есть) но почему система автоматически присваивает старый номер , а не дает новый?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. M.Flint 14.01.14 08:39 Сейчас в теме
(1) alw-1, у вас тип номера текстовый, надо писать обработку для присвоения нового номера.
3. alw-1 14.01.14 09:02 Сейчас в теме
(2) M.Flint, Да тип текст , но в предидущем году нумерация осуществлялась правильно, сбой в начале нового года
какая логика присвоения номеров?
4. Rothschild 14.01.14 09:14 Сейчас в теме
(1) alw-1,
при автоматической автонумерации текстового номера документа
отыскивается самый короткий номер и его числовой суффикс увеличивается на единицу
с указанным строковым префиксом.
Допустим полная длина номера 10 символов.
в начале пусть нумерация шла так:
ФФ00000001
ФФ00000002
ФФ00000003
...
ФФ00000333

Но вдруг какие-то кривые руки укоротили номер
ФФ1

тогда дальше нумерация пойдет так
ФФ2
ФФ3
ФФ4
ФФ5
ФФ6
ФФ7
ФФ8
ФФ9

и дальше - уже пойдет по циклу.
freeek; Ars_; +2 Ответить
5. Rothschild 14.01.14 09:21 Сейчас в теме
(4)
единственное решение - восстановить нумерацию
с полным заполненией строки номера
***
это извесная проблема как в 7.7 так и 8.х
штатный механиз автонумерации весьма капризная штука.
его можно легко поламать,
поэтому в типовых конфигурациях в 8.х
изменение номера по умолчанию заблокировано.
чтобы его изменить -
надо разблокировать поле ввода для изменения.
6. alw-1 14.01.14 09:36 Сейчас в теме
(5) Rothschild, только один вопрос - как зависит нумерация от префикса у меня например берет все время префикс Н9 , а не Н1,Н2,Н3..... , берет больший?
8. Rothschild 14.01.14 10:01 Сейчас в теме
(6) alw-1,
префикс - это первые нечисловые символы в номере.
поэтому префикса "Н9" быть не может.
в строке "Н9"
префикс это "Н",
а "9" - это короткий числовой суффикс, из одного символа,
который при автонумерации "скинется" к "1".
***
если хочешь что-то подобное использовать
делай префикс "Н9-"
и числовой суффикс вида "000000NNN" - причем на полную длину строки номера!
9. alw-1 14.01.14 10:37 Сейчас в теме
(8) Rothschild, Примерно так я и сделал:
- Те номера, что имели префикс Н9 я дополнил нулями - было Н9_1 стало Н9_00001
- Номера с другими префиксами Н1, Н2, Н3.... не трогал.
- При вводе нового документа автонумерация дает - Н9_+ Следующий номер(например 00002)
смущет только то что Н9_ а не например Н1_ или Н2_.
13. CheBurator 2725 15.01.14 04:32 Сейчас в теме
(8)
а "9" - это короткий числовой суффикс, из одного символа,
который при автонумерации "скинется" к "1".


аналогично, все неправильно.
никакого "скидывания" не происходит.

если последний номер типа Н9, то следующий система присвоит Н10, и ОБРЕЖЕТ до двух символов слева, что приведет к поялению "дубля" Н1. Это красиво видно на примере Н99, следующим номером будет Н10
Rothschild; +1 Ответить
14. Rothschild 15.01.14 05:52 Сейчас в теме
(13) CheBurator,
спасибо за разяснения деталей механизма автонумерации
и визуально наблюдаяемого "сбрасывания" числового суффикса.
15. CheBurator 2725 15.01.14 21:36 Сейчас в теме
(14) если что - спрашивайте - то что знаю точно - расскажу. в чем сомневаюсь - раскажу тоже, но с оговорками.. ;_)
7. tdr1225 37 14.01.14 10:00 Сейчас в теме
(1) Посмотри ПрефиксНомера() и УстановитьНовыйНомер()
Мож, натолкнет на мысли
10. alw-1 14.01.14 12:06 Сейчас в теме
Все ясно, "9" после Н уже часть номера и самое большое значение - оно и учитывается.
11. Rothschild 14.01.14 12:21 Сейчас в теме
Просто при автонумерации префикс может схватиться произвольно.

Обычно префикс номера назначают (например при установке фирмы документа)
УстановитьНовыйНомер(СтрокаПрефикса)

при установке чего у тебя там надо это делать - тебе лутше знать.
:)
maksa2005; +1 Ответить
12. CheBurator 2725 15.01.14 04:29 Сейчас в теме
Кто-то выше написал:
> отыскивается самый короткий номер и его числовой суффикс увеличивается на единицу
.
немножко все не так...
на единицу увеличивается числовая часть последнего по алфавитной сортировке префикса.
так что тут зависит не от длины номера, а от упорядочивания по алфавиту...
.
если на один и тот же документ есть номера АА003 и ФФФ00009
.
то следующим номером будет ФФФ00010, а не "самый короткий номер"
.
написал и застремался.. неужели я туплю, спецом пришлось "оттренировать", дабы еще раз удостоверится, что некоторые больше трындят, чем полезное/правильное рассказывают...
.
пример: http://screencast.com/t/ExC2DlQNxG3J
Rothschild; +1 Ответить
16. ВасяЧ 18.08.14 14:55 Сейчас в теме
Чтобы темы не плодить, спрошу здесь же.

По сути вопрос звучит также - как осуществляется присвоение номера новому документу?
Имеем переписанную Бухгалтерию, где номера документов присваиваются по правилу ММ/ДД/НННН
где:
ММ - номер месяца в году
/ слеш
ДД номер дня в месяце
/ слеш
НННН номер документа в течение дня.

Номер присваивает функция описанная в главном модуле, причем похожке что номер присваивается уже до события ВводНового() и ПриОткрытии().
В форме документа описана функция, которая сравнивает текущую дату с датой документа, и если у документа поменялась дата, она меняет номер в соответствии с датой по указанному выше правилу.

При создании нового документа отладчик не ловит вызов функции установки номера, но она откуда-то вызывается. Если изменить вызов функции, то при создании нового документа ругается что не может найти функцию присвоения нового номера.

Внимание вопрос - откуда может быть осуществлен вызов функции нумерации документа при создании нового документа кроме предопределенных процедур ВводНового() и ПриОткрытии() ?

Процедура ВводНового(Копирование)
	Новый = 1;
	Если Копирование = 1 Тогда //копирование документа
		Возврат;
	КонецЕсли;
//	глУстановитьНомерДокументаПоМаске(Контекст, ""); Номер все равно присваивается, несмотря на то что строка закомментирована
КонецПроцедуры // ВводНового()
.
.
.
Процедура УстановитьНомер()
	Если ДатаДок <> СтараяДата Тогда
		глУстановитьНомерДокументаПоМаске(Контекст, "");
	КонецЕсли;
КонецПроцедуры

Процедура ПриИзмененииДаты()
	УстановитьНомер();// если закомментировать здесь вызов "Установить номер()", все равно присваивается номер по маске. Если поставить бряку, то при создании документа отладчик на этом месте не останавливается. Если поменять вызов на УстановитьНомерБум(), при создании документа пишет, что процедура УстановитьНомерБум() не обнаружена.
	СтараяДата = ДатаДок;
КонецПроцедуры
Показать


На вкладке "дополнительно" в свойствах поля "ДатаДок" формула ПриИзмененииДаты()

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

Штатная автонумерация я думаю не в состоянии присваивать номера по указанному выше правилу, значит процедура ПриИзмененииДаты() вызывается еще откуда-то при создании нового документа.
Прикрепленные файлы:
17. AlexInqMetal 78 18.08.14 15:43 Сейчас в теме
(16) ВасяЧ, FormEx может используется и глобальные процедуры, попробуйте глобальным поиском "ПриИзмененииДаты" посмотреть
18. ВасяЧ 18.08.14 15:56 Сейчас в теме
FormEx.dll нет ни в каталоге BIN, ни в каталоге с базой.

Глобальный поиск находит вхождение в собственно тексте формы и в формуле диалога.
в процедуре ВводНового(), отладчик может остановиться и показывает (вычисляет) НомерДок уже установленным по маске.
Присвоение номера происходит перед ВводНового(). ГДЕ??? 8-)
19. Timesoft 271 18.08.14 18:22 Сейчас в теме
(18) ВасяЧ,
Штатная автонумерация я думаю не в состоянии присваивать номера по указанному выше правилу

А почему собственно нет ?
Вернее, конечно, она не в состоянии это делать. Но собственный алгоритм автонумерации будет во многих случаях выдавать "похожие" или идентичные номера.
Если у Вас уже есть документ № 08/18/0052, то штатная автонумерация следующий номер даст 08/18/0053 и так далее. Вот другое дело, первый документ 19го числа при закомментированной глУстановитьНомерДокументаПоМаске конечно № 08/19/0001 не даст, а продолжит увеличивать число последнего блока
20. AlexInqMetal 78 18.08.14 18:34 Сейчас в теме
кстати верно (19) Timesoft говорит, можно попробовать пустую базу с этим md сделать, и там документы посоздавать или дату на компе переставить
21. ВасяЧ 20.08.14 11:18 Сейчас в теме
Новый номер присваивается по правилу, не просто в конеце добавляется.
Закомментировал уже весь код, а оно работает. Мистика.
22. AlexInqMetal 78 20.08.14 11:23 Сейчас в теме
(21) ВасяЧ,чудес не бывает, дайте конфу посмотреть
23. Cooler 22 20.08.14 12:29 Сейчас в теме
(21)
Закомментировал уже весь код, а оно работает. Мистика.
Ищите глобальным поиском вызов УстановитьНовыйНомер
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот