Хитрая нумерация документов с периодичностью "в течение дня" (внесение изменений в типовой механизм)

Программирование - Практика программирования

Нумерация документов в виде гг/ММ/дд + НомерВТеченииДня

Задача:
нумеровать выбранные документы по шаблону: ППггММддNNN,

где ПП - префикс организации (если установлен),
гг - год двумя цифрами,
ММ - месяц двумя цифрами,
дд - день  двумя цифрами,
NNN - номер документа в течении дня (три знака) 

Реализовано на примере УТ 8.1 (10.3):

Использована, уже имеющаяся в УТ, подписка на событие "ПриУстановкеНовогоНомераДокумента". Данная подписка вызывает процедуру Общего модуля.ОбщегоНазначения:

Процедура ПриУстановкеНовогоНомераДокументаПриУстановкеНовогоНомера(Источник, СтандартнаяОбработка, Префикс) Экспорт
 ОбщегоНазначения.ДобавитьПрефиксОрганизации(Источник, Префикс);
 ОбщегоНазначения.ДобавитьПрефиксУзла(Префикс);
 ОбщегоНазначения.ДобавитьПрефиксДаты(Источник, Префикс);  // Добавлена
КонецПроцедуры

В которую, добавлена строка вызывающая процедуру ДобавитьПрефиксДаты(Источник, Префикс), добавленая в общий модуль:  

Процедура ДобавитьПрефиксДаты(ДокументОбъект, Префикс) Экспорт
 
 Если  ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.РеализацияТоваровУслуг")
  ИЛИ ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ПоступлениеТоваровУслуг")
  ИЛИ ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ВозвратТоваровОтПокупателя") Тогда
  
  Префикс = Префикс + "" + Формат(ДокументОбъект.Дата,"ДФ=""ггММдд""") ;
  
 КонецЕсли;
Конецпроцедуры

Также необходимо установить периодичность документа "в пределах дня". А в случае если документ не входил в типовую конфигурацию необходимо:

1. проверить, входит ли данный документ в число источников для данной подписки на событие
2. проверить, чтобы в свойствах формы документа значение свойства "Автонумерация" имело значение "Не использовать".

 

P.S. В случае если вам необходимо добавить "хитрую нумерацию" только для одного или двух документов, можно не использовать подписку на событие, а прописать в модуле конкретного документа процедуру ПриУстановкеНовогоНомераДокумента()  и непосредственно в ней описать весь алгоритм.

См. также

Комментарии
1. Андрей Акулов (DrAku1a) 1201 22.12.11 02:59 Сейчас в теме
А если вдруг документов в течение дня будет больше 999 ???
2. Igоr Sаulеviсh (gutentag) 251 22.12.11 11:17 Сейчас в теме
3. Яков Коган (Yashazz) 2080 22.12.11 18:36 Сейчас в теме
*почти trollface
А перенумератор для этого дела есть, если вдруг понадобится?
4. Харьков Харьков (xaker1C) 23.12.11 05:35 Сейчас в теме
5. Max Черепахин (tamaks) 89 23.12.11 10:07 Сейчас в теме
(1) DrAku1a, Если количество документов одного типа в течении одного дня будет более 999, то могут быть несколько варианты решения.
Т.к. в типовой версии количество знаков отведенных под номер равно 11, то нужно либо изменить маску (например "ППггММддNNN" заменить на "ПггММддNNN", отдав под префикс организации один символ), либо увеличить количество символов для номера (например вместо 11 указать 12).
6. Max Черепахин (tamaks) 89 23.12.11 10:14 Сейчас в теме
(3) Yashazz, Как полагаю такой механизм нумерации может потребоваться либо для какой-либо новой конфигурации, либо (если конфигурации уже используется и по ней есть документы) такой учет должен быть введен например с нового отчетного периода, например с нового года, что должно быть отражено главным бухгалтером в учетной политике фирмы. При таких условиях, возникновение вопросов у налоговых органов, будет сведено к минимуму. В связи с этим "перенумератор" мне не требовался.
7. Ирина Вшивкова (ir_en) 27.12.11 17:42 Сейчас в теме
Огромное спасибо, ваша публикация дала понимание, как мне наконец-то сделать в ЗУП нумерацию с разными постфиксами для кадровых документов с разными сроками хранения.
8. Igori Krutoi (IgoriKr) 28.12.11 17:57 Сейчас в теме
Данный механизм нумерации решили принять при регистрации платежей с 6-ти филиалов, очень удобно, спасибо
9. Марина Калинина (sc_digital) 05.02.12 19:35 Сейчас в теме
спасибо за материал, как раз не могла нумерацию реализации с префиксом год/месяц/номер сделать! счет-фактуру сделала, разобралась, а реализацию не могла никак. Спасибо!
10. Дакки МАМА (mamadakki) 16.06.12 00:21 Сейчас в теме
скажите пожалуйста если я внесу изменения в типовую конфигурацию столкнусь ли я с трудностями в ее обновлении?
11. ik_80 14.11.12 22:46 Сейчас в теме
да, столкнетесь. раз вы внесли изменения в конфигуратор, то у вас уже не типовая программа
12. Александр (Bell) 33 26.01.13 01:39 Сейчас в теме
Похожий алгоритм использую почти 8 лет. Разница, только в том, что при вводе нового документа заполняются пропущенные (удаленные) номера. А если их нет, то пишется новый (старший) номер.
13. Andre Solovij (andre solovij) 27.06.13 14:07 Сейчас в теме
Добрый День!!!А не подскажите, как в этом месте Вашего программного кода сделать так, что можно было менять нумерации и по подразделениям
Если ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.РеализацияТоваровУслуг")
ИЛИ ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ПоступлениеТоваровУслуг")
ИЛИ ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ВозвратТоваровОтПокупателя") @И ПодразделенияНайтиПоКоду(000000006);@

Тогда
Оставьте свое сообщение