Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Непонятки с "УстановитьНовыйНомер" (число прочтений - 9558 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Непонятки с "УстановитьНовыйНомер"
09. Ноября 2006 :: 12:22
Печать  
Вчера вечерком в один из документов добавил процидуру (вызывается при выборе реквизита):
Код
Выбрать все
Процедура ПриВыбореМОЛа()
	Если ОтКого = Кому Тогда
		УстановитьНовыйНомер("ВНУТ-");
	Иначе
		УстановитьНовыйНомер("");
	КонецЕсли;
КонецПроцедуры // ПриВыбореМОЛа() 


Т.е. если выбраны два одинаковых реквизита ОтКого и Кому надо устанавливать префикс "ВНУТ-", если же они разные, то идёт обычная нумерация (без префиксов)
Так вот, сегодня наши девушки вбивали-вбивали, всё вроде бы нормуль было. Но потом, так и не понял почему, перестало работать. Сейчас, при вводе нового документа, он сразу же открывается с префиксом "ВНУТ-", даже если выбираем разных ОтКого и Кому, всё равно этот же префикс и остаётся?

Вопрос: почему так случилось?
Как это побороть?
Уже не знаю на что и грешить....

ЗюЫю У документа - автоматическая нумерация, тип текстовый, длина 8, контроль уникальности стоит.
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Непонятки с "УстановитьНовыйНомер"
Ответ #1 - 09. Ноября 2006 :: 12:26
Печать  
  
Наверх
www  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Непонятки с "УстановитьНовыйНомер"
Ответ #2 - 09. Ноября 2006 :: 12:39
Печать  
fez писал(а) 09. Ноября 2006 :: 12:26:

Понял, спасибо, благо ещё не много навбивали с префиксом "ВНУТ-". Переделаю на "!ВН-".
  
Наверх
 
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Непонятки с "УстановитьНовыйНомер"
Ответ #3 - 09. Ноября 2006 :: 14:05
Печать  
Универсальный вариант:
1. Нумерация идет НЕ средствами 1С, а самописной процедурой.
2. Ведется справочник последних присвоенных номеров. Там храняться последние номера для всех имеющихся цепочек нумерации. Методики формирования нового номера при этом могут быть разными для разных документов.
3. Присвоение нового номера вызывается ЛИБО из модуля проведения, ЛИБО с использованием Блокировка() элемента справочника последних номеров: одно лишь Начать/ЗафиксироватьТранзакцию не спасает от дублей при интенсивной работе.
4. Кстати, эта методика позволяет обеспечить бездырочную нумерацию при возможности удаления задним числом: удаляемому доку присваивается номер из специальной последовательности, а бывший номер пихается в справочник, подчиненный справочнику последних номеров. При присвоении следующего номера система начала пытается взять его изэтого подчиненного справочника, а уж если он пуст (для данного подчинения) - тогда запускает алгоритм генерации следующего номера.
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Непонятки с "УстановитьНовыйНомер"
Ответ #4 - 09. Ноября 2006 :: 14:10
Печать  
При активной работе, чтобы не морочиться со справочником, есть еще один способ.
Всем новым и незаписанным документам присваивать номер "Новый", печать таких документов запрещать, а номер присваивать в момент записи документа.
  
Наверх
www  
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Непонятки с "УстановитьНовыйНомер"
Ответ #5 - 09. Ноября 2006 :: 15:08
Печать  
fez писал(а) 09. Ноября 2006 :: 14:10:
При активной работе, чтобы не морочиться со справочником, есть еще один способ.
Всем новым и незаписанным документам присваивать номер "Новый", печать таких документов запрещать, а номер присваивать в момент записи документа.


Я сначала так примерно и делал. Только номер присваивался при проведении.
А потом возникла задача "бездырочной" нумерации. Пришлось отбирать номер при отмене проведения и заморачиваться со справочником. Ну, а  ради единообразия систему потом расширил на другие доки.

ЗЫЖ Кстати о птичках.
Малоизвестный факт:
при переприсвоении номера в модуле проведения документ будет записан даже если номер не уникален, а контроль уникальности включен в конфигураторе.
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать