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




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

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

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

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

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

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

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

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

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

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

 

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

13 Comments

  1. DrAku1a

    А если вдруг документов в течение дня будет больше 999 ???

    Reply
  2. gutentag

    Интерсно. Спасибо!

    Reply
  3. Yashazz

    *почти trollface

    А перенумератор для этого дела есть, если вдруг понадобится?

    Reply
  4. xaker1C

    спасибо

    Reply
  5. tamaks

    (1) DrAku1a, Если количество документов одного типа в течении одного дня будет более 999, то могут быть несколько варианты решения.

    Т.к. в типовой версии количество знаков отведенных под номер равно 11, то нужно либо изменить маску (например «ППггММддNNN» заменить на «ПггММддNNN», отдав под префикс организации один символ), либо увеличить количество символов для номера (например вместо 11 указать 12).

    Reply
  6. tamaks

    (3) Yashazz, Как полагаю такой механизм нумерации может потребоваться либо для какой-либо новой конфигурации, либо (если конфигурации уже используется и по ней есть документы) такой учет должен быть введен например с нового отчетного периода, например с нового года, что должно быть отражено главным бухгалтером в учетной политике фирмы. При таких условиях, возникновение вопросов у налоговых органов, будет сведено к минимуму. В связи с этим «перенумератор» мне не требовался.

    Reply
  7. ir_en

    Огромное спасибо, ваша публикация дала понимание, как мне наконец-то сделать в ЗУП нумерацию с разными постфиксами для кадровых документов с разными сроками хранения.

    Reply
  8. IgoriKr

    Данный механизм нумерации решили принять при регистрации платежей с 6-ти филиалов, очень удобно, спасибо

    Reply
  9. sc_digital

    спасибо за материал, как раз не могла нумерацию реализации с префиксом год/месяц/номер сделать! счет-фактуру сделала, разобралась, а реализацию не могла никак. Спасибо!

    Reply
  10. mamadakki

    скажите пожалуйста если я внесу изменения в типовую конфигурацию столкнусь ли я с трудностями в ее обновлении?

    Reply
  11. ik_80

    да, столкнетесь. раз вы внесли изменения в конфигуратор, то у вас уже не типовая программа

    Reply
  12. Bell

    Похожий алгоритм использую почти 8 лет. Разница, только в том, что при вводе нового документа заполняются пропущенные (удаленные) номера. А если их нет, то пишется новый (старший) номер.

    Reply
  13. andre solovij

    Добрый День!!!А не подскажите, как в этом месте Вашего программного кода сделать так, что можно было менять нумерации и по подразделениям

    Если ТипЗнч(ДокументОбъект) = Тип(«ДокументОбъект.РеализацияТоваровУслуг»)

    ИЛИ ТипЗнч(ДокументОбъект) = Тип(«ДокументОбъект.ПоступлениеТоваровУслуг»)

    ИЛИ ТипЗнч(ДокументОбъект) = Тип(«ДокументОбъект.ВозвратТоваровОтПокупателя») @И ПодразделенияНайтиПоКоду(000000006);@



    Тогда

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *