|
УстановитьНовыйНомер() рандомно пропускает несколько номеров. | ☑ | ||
---|---|---|---|---|
0
ugroblin
05.08.14
✎
16:01
|
Есть регламентированный отчет (справка о соц. отчислениях за 12 месяцев), использующий для хранения данных документ РегламентированныйОтчет. При сохранении новой справки (если не вбивать номер вручную), если у последней номер был Х, новый номер почему-то назначается не Х+1, а Х+некое рандомное число. Вот список последних назначенных автоматически номеров:
19, 22, 23, 27, 39. Код ответственный за установку номера. НомерДок = СокрЛП(ЗначениеОбласти(ЭлементыФормы.ПолеТабличногоДокументаРасчет, "Номер", "")); Если ЗначениеЗаполнено(НомерДок) Тогда НомерДок = ОбщегоНазначения.ДополнитьСтроку(НомерДок, мСохраненныйДок.Метаданные().ДлинаНомера - СтрДлина(ПрефиксДок), "0", 0); мСохраненныйДок.Номер = ПрефиксДок + НомерДок; Иначе мСохраненныйДок.УстановитьНовыйНомер(ПрефиксДок); КонецЕсли; |
|||
1
х86
05.08.14
✎
16:04
|
номера небось не освобождаешь
|
|||
2
ugroblin
05.08.14
✎
16:06
|
(1) От чего освобождать то? Просто создал справку, заполнил, сохранил - назначился номер 19. Тут же создал новую - 22. Никаких откатов транзакций, сохранений документов и т.д. не было, в тестовой базе один сижу.
|
|||
3
ugroblin
05.08.14
✎
16:12
|
В подписках нет ссылок на документ РегламентированныйОтчет. В модуле отчета и его формы больше нигде номер не устанавливается. Непосредственно перед выполнением строки мСохраненныйДок.УстановитьНовыйНомер(ПрефиксДок)
проверял, 19-й номер последний. После выполнения назначился 22. Сбивает толку то, что промежуток между номерами рандомный. То 3, то 4 то 12. |
|||
4
acsent
05.08.14
✎
16:14
|
где код вызывается и сколько раз?
|
|||
5
ugroblin
05.08.14
✎
16:16
|
(4) Процедура Сохранить() модуля формы. Отладчик только 1 раз в нее заходит.
Процедура КоманднаяПанельДействийЗаписать(Кнопка) Если НЕ ОбщегоНазначения.ПроверкаУстановленнойРолиТолькоПросмотр() Тогда Сохранить(); КонецЕсли; КонецПроцедуры |
|||
6
Maxus43
05.08.14
✎
16:18
|
в свойствах документа есть такая фигня как "Освобождать номер". Т.е. создал кто-то новый документ - номер занялся под него. Передумал, не сохранил. Следующий номер автоматом поставится Номер+2, т.к. тот не освободился
|
|||
7
ugroblin
05.08.14
✎
16:22
|
(6) - выше писал "Никаких откатов транзакций, сохранений документов и т.д. не было, в тестовой базе один сижу."
|
|||
8
Крошка Ру
05.08.14
✎
16:24
|
(7)Может кто с событием ПриУстановкеНовогоНомера пошалил?
|
|||
9
Крошка Ру
05.08.14
✎
16:25
|
Или подписка есть
|
|||
10
hhhh
05.08.14
✎
16:26
|
(7) походу работает
НомерДок = СокрЛП(ЗначениеОбласти(ЭлементыФормы.ПолеТабличногоДокументаРасчет, "Номер", "")); а УстановитьНовыйНомер не запускается |
|||
11
ugroblin
05.08.14
✎
16:35
|
(10) Не, отладчик именно на установить новый номер приходит. До выполнения номера нет, после выполнения есть, но непонятно как рассчитанный.
НомерДок = СокрЛП(ЗначениеОбласти(ЭлементыФормы.ПолеТабличногоДокументаРасчет, "Номер", "")); срабатывает если до записи поле номер в ТД уже заполнено (пользователь руками вбил, или открыли существующий документ). Пошел другим путем. Номер заполняю при заполнении отчета, метод УстановитьНовыйНомер() не буду использовать. Можно закрывать тему. |
|||
12
Бледно Золотистый
05.08.14
✎
16:36
|
В общем при каждом УстановитьНовыйНомер() платформа запоминает его и в следующий раз при вызове этого метода это значение увеличивает на 1. Даже если документ не записан.
Актуализировать можно с помощью ОбновитьНумерациюОбъектов(<Метаданные>) в монопольном режиме. |
|||
13
catena
05.08.14
✎
16:56
|
Автонумерация у документа случайно не стоит?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |