Каталог решений - Как изменить нумерацию документов в БП 3.0

Как изменить нумерацию документов в БП 3.0

Как изменить нумерацию документов в БП 3.0

В наличии

В статье (на примере Бухгалтерия предприятия, редакция 3.0 (3.0.35.27) ) рассматривается, как в БП 3.0 изменить алгоритм формирования префикса номера.

Категория:

Описание

В БП 3.0 по сравнению с БП 2.0 существенно поменялась
нумерация документов. Вот, что пишет «1С» по этому поводу (цитату можно найти в
файле readme.txt, который прилагается к каждому апдейту конфигурации БП 3.0):

“Способ нумерации документов в редакции 3.0 изменен по сравнению с редакцией 2.0.
Для правильной нумерации документов необходимо изменить номер первого
создаваемого документа каждого вида так, чтобы он продолжал нумерацию из старой версии.
При этом номера документов, перенесенных из редакции 2.0,
в печатных формах будут отображаться правильно.
Например, последний номер документа «Реализация товаров и услуг» был 00000000131.
После обновления на редакцию 3.0 первый введенный документ будет иметь номер 0000-000001.
Чтобы сохранить правильную нумерацию, необходимо в этом документе изменить номер на 0000-000132.
В дальнейшем всем введенным документам «Реализация товаров, услуг»
будет присваиваться правильный номер.”

Другими словами, изменился принцип формирования префикса. Если
в БП 2.0 мы имели дело с трехзначным префиксом документа, который брался из
реквизита Префикс справочника Организации, то теперь, наш префикс имеет вид «XXXX-», где X – произвольный символ.

В общем виде, номер либо код объекта складывается по
следующей схеме:
«ОР» + «ИБ» + «-» + номер/код, где:

* «ОР» —префикса организации (2 символа); если префикс организации не
назначен, то «00». Префикс организации задается в справочнике
«Организации».
* «ИБ» —префикс информационной базы (2 символа); если префикс
информационной базы не назначен, то «00». Префикс информационной базы
задается в настройках синхронизации данных (раздел Администрирование)
* «-» — раздеяет префикс и
номер (код).

Еще одно существенное изменение, которое обычно упускают из
вида, это тот факт, что реквизит Префикс в справочнике Организации в БП 3.0
уменьшился на один символ и теперь равен не трем, как в БП 2.0, а двум
символам. В то же время, появился реквизит ПрефиксБП20 – строка три символа – в
который при переходе на БП 3.0 с БП 2.0 сохраняется старый «длинный» префикс.
Почему хочется обрать внимание на этот момент? Дело в том, что в случае, если в
БП 2.0 у организации «Рога и копыта» был трехзначный префикс, и номер документа
начинался с префикса РИК, то в БП 3.0 номер будет начинаться с РИ (именно этот
префикс останется по умолчанию в реквизите Префикс справочника Организации).
Пользователь может быть не в восторге от этого новшества.

За формирование префикса в БП 3.0 отвечают несколько
подписок на событие, связанных с событием «ПриУстановкеНовогоКода»: или с
событием «ПриУстановкеНовогоНомера»:

Источники у этих подписок разные. Напомню, что подписка
срабатывает после срабатывания основного события, на которое она «вешается».
Процедуры, которые являются обработчиками событий расположены в общих модулях,
для которых установлены параметры «серверный» и «внешнее соединение».

Зададимся теперь вопросом, нельзя ли изменить алгоритм
формирования префикса номера, скажем для документов. Будем считать, что наша
информационная база не имеет префикса, а префикс организации в БП 2.0 состоял
из трех значащих символов.

Внесем некоторые изменения в типовую конфигурацию БП 3.0.

Во-первых, создадим подсистему «МояНумерация» и включим в
нее объекты конфигурации так или иначе имеющие отношение к решаемой задаче.

Внесем изменения в справочник Организации.

Во-первых выведем в форме реквизит справочника ПрефиксБП20 и сделаем его доступным.

Во-вторых, создадим реквизит ИспользоватьПрефиксБП20 типа булево, выведем его на форму элемента
справочника. Будем считать,что если ИспользоватьПрефиксБП20
= истина,
то в качестве префикса «ОР» должен браться префикс из
реквизита ПрефиксБП20.

Создадим общий модуль «МояНумерация» с установленными свойствами
«Сервер» и «Внешнее соединение». И
поместим в него процедуру ПереформироватьПрефиксПоНовымПравилам(…)

Процедура
ПереформироватьПрефиксПоНовымПравилам(Знач Источник, Префикс)
Экспорт

Если
НАЙТИ(Строка(ТипЗнч(Источник)),»Документ объект») = 0 Тогда

                //Это не документ, префикс не меняем

                Возврат;

КонецЕсли;

Если
Источник.Метаданные().Реквизиты.Найти(«Организация») = Неопределено
Тогда

                //Нет реквизита «Организация», менять
префикс не нужно

                Возврат;

КонецЕсли;

                              

мОрганизация =
Источник.Организация;

Если
мОрганизация.Метаданные().Реквизиты.Найти(«ИспользоватьПрефиксБП20»)
= Неопределено Тогда

                //Реквизит ИспользоватьПрефиксБП20 отвечает за выбор
стратегии формирования префикса

                //Если этого реквизита нет, то считаем, что префикс
формируется, как в типовай конфигурации

                Возврат;

КонецЕсли;

Если НЕ
мОрганизация.ИспользоватьПрефиксБП20 Тогда

                //Не усьтановлен флажок формирования префикаса номера
по старому

                //Префикс формируем, как в типовой

                Возврат;

КонецЕсли;

                мПолныйПрефикс = Префикс;

               

                Если СтрДлина(СокрЛП(мОрганизация.ПрефиксБП20)) = 3
Тогда

                               мПолныйПрефикс =
СтрЗаменить(мПолныйПрефикс,мОрганизация.Префикс + «0»,
мОрганизация.ПрефиксБП20);

                ИначеЕсли СтрДлина(СокрЛП(мОрганизация.ПрефиксБП20))
= 2 Тогда

                               Если СокрЛП(мОрганизация.ПрефиксБП20) <>СокрЛП(мОрганизация.Префикс)
Тогда

                                               мПолныйПрефикс =
СтрЗаменить(мПолныйПрефикс,мОрганизация.Префикс, мОрганизация.ПрефиксБП20);

                               КонецЕсли;

                КонецЕсли;

               

                Префикс = мПолныйПрефикс;

               

КонецПроцедуры

Вызов процедуры ПереформироватьПрефиксПоНовымПравилам(…)
осуществляется из обработчиков вышеперечисленных событий (последней строкой в
коде обработчика)

Общий модуль
ПрефиксацияОбъектовБПСобытие:

Процедура
УстановитьПрефиксИнформационнойБазыОрганизацииПодразделения(Источник,
СтандартнаяОбработка, Префикс) Экспорт

               

<оригинальный код
обработчика>…

                              

МояНумерация.ПереформироватьПрефиксПоНовымПравилам(Источник,
Префикс);

КонецПроцедуры

Общий модуль
ПрефиксацияОбъектовСобытия :

Процедура
УстановитьПрефиксИнформационнойБазы(Источник, СтандартнаяОбработка, Префикс)
Экспорт

<оригинальный код
обработчика>…

МояНумерация.ПереформироватьПрефиксПоНовымПравилам(Источник,Префикс);


КонецПроцедуры

На этом всё. Надеюсь,
что описанная здесь методика кому-то поможет. Оговорюсь, что за кадром остался
вопрос безопасности подобного изменения нумерации. На первый взгляд, не должно
возникнуть проблем в базе, которая работает полностью автономно, то есть без
синхронизации с другими базами. В рассмотренном примере считается, что префикс
у информационной базы отсутствует, что, разумеется, не всегда так.

Буду рад развитию темы.

Мой сайт: 1c1c1c.ru

has been added to your cart:
Оформление заказа