|
Нумерация реквизита дока | ☑ | ||
---|---|---|---|---|
0
Boudybuilder
23.12.12
✎
18:59
|
В документе приема на ремонт есть реквизит ID (Строка,12). Это должен быть уникальный номер как и номер дока. Если его значение не заполнено то тогда он стает равен номеру дока. Раньше стояла автонумерация на форме и было все гуд! Но потом я заметил , что при каждом открытии формы , номер стает на один больше , даже если док предыдущий закрыт и не создан. Хотел это обойти. Но стоит подписка на событие при установке нового номера.
Сделал так и заметил что получаются дубли именно ID а номер устанавливает ОК. . Почему, не пойму! Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Если ЭтоНовый() Тогда МетаданныеДокумента = ЭтотОбъект.Метаданные(); Если Не ОбщегоНазначения.ЕстьРеквизитДокумента("Организация", МетаданныеДокумента) Или НЕ ЗначениеЗаполнено(ЭтотОбъект.Организация.Префикс) Тогда Префикс = ""; Иначе Префикс = ЭтотОбъект.Организация.Префикс; КонецЕсли; Если ПараметрыСеанса.ИспользованиеРИБ ИЛИ ПараметрыСеанса.НаличиеОбменаТорговляБухгалтерия ИЛИ ПараметрыСеанса.НаличиеОбменаСРозничнойТорговлей Тогда Префикс = ПараметрыСеанса.ПрефиксУзлаРаспределеннойИнформационнойБазы + Префикс; КонецЕсли; УстановитьНовыйНомер(Префикс); КонецЕсли; Если ЭтоНовый() И Не ЗначениеЗаполнено(ID) Тогда ID = Врег(Номер); КонецЕсли; КонецПроцедуры Щас и это написал , но явно не катит через подписку : Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс) Если ЗначениеЗаполнено(ID) Тогда ID = Врег(Номер); КонецЕсли; КонецПроцедуры Как быть , чтобы эти ID были уникальными учитывая РИБ. ??? |
|||
1
Boudybuilder
23.12.12
✎
19:02
|
С автонумерацией формы при открытии ставил это :
Если ЭтоНовый() Тогда ID = Врег(Номер); КонецЕсли; Но хотелось бы избежать увеличения номера без создания дока. |
|||
2
DrShad
23.12.12
✎
19:47
|
а зачем весь этот бред с типа "ID"?
|
|||
3
Boudybuilder
23.12.12
✎
19:57
|
ID - уникальный идентификатор ремонта.
То есть , если мне его принесли по гарантии , то я его ввожу и мне возвращает все данные по нему. |
|||
4
DrShad
23.12.12
✎
20:34
|
Новый УникальныйИдентификатор() чем не нравится?
|
|||
5
Boudybuilder
23.12.12
✎
20:35
|
Сделал так
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Если НЕ ЗначениеЗаполнено(Номер) И ЭтоНовый() Тогда ЭтотОбъект.УстановитьНовыйНомер(); Если НЕ ЗначениеЗаполнено(ID) Тогда ID = Врег(Номер); КонецЕсли; КонецЕсли; КонецПроцедуры Процедура УстановитьНовыйНомер() Если вызвана кодом , то вызывается ли она еще раз? И если ее описывать как я щас сделал , то по умолчанию она когда вызывается? При записи или перед? |
|||
6
Boudybuilder
23.12.12
✎
20:35
|
(4)
Щас посмотрю. Об этом не знал. |
|||
7
Boudybuilder
23.12.12
✎
22:07
|
Вобщем сделал так:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Если ЭтоНовый() Тогда ЭтотОбъект.УстановитьНовыйНомер(); КонецЕсли; Если НЕ ЗначениеЗаполнено(ID) Тогда ID = Врег(Номер); КонецЕсли; КонецПроцедуры Все вроде ок. Но теперь после обмена РИБ в каждой базе один и тот же док имеет номерацию по своему префиксу. Что за фигня???? |
|||
8
DrShad
23.12.12
✎
22:22
|
1С это не твое, смирись уже
|
|||
9
ERWINS
23.12.12
✎
22:28
|
(7) Если не ЭтотОбъект.ОбменДанными.Загрузка тогда
|
|||
10
DrShad
23.12.12
✎
22:29
|
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если обменДанными.Загрузка Тогда Возврат; КонецЕсли; Если ЭтоНовый() Тогда ЭтотОбъект.УстановитьНовыйНомер(); КонецЕсли; Если НЕ ЗначениеЗаполнено(ID) Тогда ID = Врег(Номер); КонецЕсли; КонецПроцедуры |
|||
11
DrShad
23.12.12
✎
22:30
|
+(10) потому что при обмене тоже происходит ЗАПИСЬ!!!
|
|||
12
DrShad
23.12.12
✎
22:30
|
+(11) и в приемнике это НОВЫЙ объект
|
|||
13
Boudybuilder
24.12.12
✎
01:43
|
(9) (10) Спасибо , друзья!
Так оно и есть... Просто я такой человек , который курсы не дослушает , а экзамены уже сдает. Надо книги до конца читать а не на 30% )))) |
|||
14
Boudybuilder
25.12.12
✎
15:51
|
(10)
Если перед записью использовать этот код , то номер еще раз ни в каких случаях устанавливаться не будет? И еще , если не описывать установку номера, то в каком событии он стандартно устанавливается? При записи? Если ЭтоНовый() Тогда ЭтотОбъект.УстановитьНовыйНомер(); КонецЕсли; |
|||
15
Serg_1960
25.12.12
✎
16:14
|
(14) Ты прав. Лучше проверятьне на новый, а на пустой номер. Юзвер может стереть номер при редактировании. Не спрашивай зачем.
|
|||
16
del123
25.12.12
✎
16:20
|
а в новом году нумерация документов начнется заново и ID станет неуникальным?:)
|
|||
17
Boudybuilder
26.12.12
✎
13:43
|
(15)
Хорошо , пускай я не буду это писать , и не буду шаманить с номером. Как мне номеровать реквизит дока ID и проверять его на уникальность? (+префикс Риб+организации) |
|||
18
Boudybuilder
27.12.12
✎
00:06
|
(17) Ребяты , вы где? Есть ответ?
Как мне номеровать реквизиты дока подобно номерации номера дока ? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |