Имя: Пароль:
1C
1C 7.7
v7: Автонумератор не начинает новый счет при смене периода!
0 Yakov21
 
16.08.11
21:50
Добрый день!
Возникла такая проблема. У документа Периодичность выставлена в пределах месяца, но при вводе документа следующего месяца нумерация продолжается! Тип - текстовый. Автоматическая нумирация включена.
1 Темный Эльф
 
16.08.11
21:59
Значит в прошлом месяце набивают документы и ставят дату этого месяца. А процедурка по переприсваиванию номера при смене месяца даты не сделана.
2 Mashinist
 
16.08.11
22:04
(1) прав
Создали документ прошлым месяцем и поменяли дату на это
А при смене даты код для изменения номера не стоит
Нужно в код смотреть
3 Yakov21
 
17.08.11
17:04
При Вводе нового документа!
   ГенНомДок(Контекст,0);
   КодДок = Число(Прав(СокрЛП(НомерДок),6));
В глобальнике:
Процедура ГенНомДок(Конт,мсг=1,пДлина=6) Экспорт
   Перем НомерДоИзменения,ДатаЗаписанного,НомерЗаписанного;
   Если  (Конт.ТекущийДокумент().Вид() = "зпБольничныйЛист") ИЛИ (Конт.ТекущийДокумент().Вид() = "зпРасчетСредней") Тогда
       дд=СоздатьОбъект("Документ."+Конт.ТекущийДокумент().Вид());
       Если (дд.НайтиПоНомеру(Конт.НомерДок,Конт.ДатаДок)=1)
           И(дд.ТекущийДокумент()<>Конт.ТекущийДокумент()) Тогда
           Если мсг=1 Тогда
               Предупреждение("ВНИМАНИЕ! Изменен номер документа!");            
           КонецЕсли;
           Конт.УстановитьНовыйНомер();
           Попытка
               Конт.КодДок = Число(Прав(СокрЛП(Конт.НомерДок),пДлина));
           Исключение
           КонецПопытки;    
       КонецЕсли;
     Иначе
       НомерДоИзменения = Конт.НомерДок;
       НомерЗаписанного = ПолучитьПустоеЗначение();          
       ДатаЗаписанного  = ПолучитьПустоеЗначение();          
       Док=СоздатьОбъект("Документ."+Конт.ТекущийДокумент().Вид());  
       Попытка
           Если Док.НайтиДокумент(Конт.ТекущийДокумент()) = 1 Тогда
               НомерЗаписанного = Док.ТекущийДокумент().НомерДок;
               ДатаЗаписанного  = Док.ТекущийДокумент().ДатаДок;          
           КонецЕсли;
       Исключение    
       КонецПопытки;
       Если ПустоеЗначение(НомерЗаписанного) = 0 Тогда
           Если ДатаГод(ДатаЗаписанного) = ДатаГод(Конт.ДатаДок) Тогда
               Конт.НомерДок = НомерЗаписанного;
           Иначе
               Конт.УстановитьНовыйНомер();    
           КонецЕсли;                      
       Иначе
           Конт.УстановитьНовыйНомер();    
       КонецЕсли;
       Если НомерДоИзменения <> Конт.НомерДок Тогда
           Предупреждение("ВНИМАНИЕ! Изменен номер документа.");            
       КонецЕсли;
           Попытка
               Конт.КодДок = Число(Прав(СокрЛП(Конт.НомерДок),пДлина));
           Исключение
           КонецПопытки;    
   КонецЕсли;
КонецПроцедуры
Программист всегда исправляет последнюю ошибку.