Каталог решений - Альтернативный нумератор 1С

Альтернативный нумератор 1С

Альтернативный нумератор 1С

В наличии

Альтернативный нумератор 1С

Простая и полезная доработка. Позволяет решить проблему сбивания нумерации в документах. Иногда менеджерам или бухгалтерам необходимо внести кривой номер типа "000000305/2". Однако в стандартном нумераторе 1С после такого номера нумерация сбивается. Спорить с пользователями иногда бывает бесполезно и вредно. Приходится что-то придумывать.  Предлагаемая доработка решает эту проблему. Учитывается префиксация. Для счёт-фактур на аванс добавляется префикс "А".

Категория:

Описание

1. Создаём общий модуль, например «Процедуры разработчика»

2. Устанавливаем в свойствах модуля необходимые признаки «Клиент (обычный)»,»Сервер» и «Внешнее приложение»

 

3. Вносим в созданный общий модуль следующий код:

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

            Префикс4 = Префикс;

            
            НомерЧисло = 1;
            
            Запрос = Новый Запрос;
            Запрос.Текст=»ВЫБРАТЬ ПЕРВЫЕ 1
                         |    ПОДСТРОКА(Документ.Номер, 5, 10) КАК Номер
                         |ИЗ
                         |    Документ.РеализацияТоваровУслуг КАК Документ
                         |ГДЕ
                         |    ПОДСТРОКА(Документ.Номер, 1, 4) = &Префикс
                         |    И Документ.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата, ГОД) И КОНЕЦПЕРИОДА(&Дата, ГОД)
                         |    И НЕ ПОДСТРОКА(Документ.Номер, 5, 10) ПОДОБНО «»%[^0-9]%»»
                         |
                         |УПОРЯДОЧИТЬ ПО
                         |    Номер УБЫВ»;
                        
            Запрос.Текст = СтрЗаменить(Запрос.Текст,»РеализацияТоваровУслуг»,ВидДокумента);
            
            Пока СтрДлина(Префикс4)

                    Префикс4 = Префикс4 + «0»;
            КонецЦикла;                
                        
            Запрос.УстановитьПараметр(«Префикс»,Префикс4);
            Запрос.УстановитьПараметр(«Дата»,Источник.Дата);
            Выборка = Запрос.Выполнить().Выбрать();
            
            Если Выборка.Следующий() Тогда
                Попытка
                 НомерЧисло = Число(Выборка.Номер)+1;
                 Источник.Номер = Префикс+Формат(НомерЧисло,»ЧЦ=»+Строка(СтрДлина(Источник.Номер)-СтрДлина(Префикс))+»; ЧВН=; ЧГ=»);    
                Исключение
                КонецПопытки;
            Иначе    
                 НомерЧисло = 1;
                 Источник.Номер = Префикс+Формат(НомерЧисло,»ЧЦ=»+Строка(СтрДлина(Источник.Номер)-СтрДлина(Префикс))+»; ЧВН=; ЧГ=»);    
            КОнецЕсли;

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

 

4. Добавляем новую подписку на событие, даём имя, в поле «Источник» выбираем необходимые документы, в поле «Событие» выбираем «ПриУстановкеНовогоНомера», в поле «Обработчик» выбираем созданную нами процедуру.

 

5. Сохраняем всё это в базу.

Результат: после «кривых» номеров создаётся документ с правильным номером.

6. Несложная доработка позволяет сделать периодическую префиксацию.

Для этого создаём периодический регистр сведений «ПрефиксыОрганизаций» (ресурс — префикс) и вносим небольшое изменение в код.

      Вместо:

             Префикс = СокрЛП(Источник.Организация.Префикс);

      Пишем:

            СтруктураОтбора = Новый Структура(«Организация»,Источник.Организация);
            Префиксы = РегистрыСведений.ПрефиксыОрганизаций.СрезПоследних(Источник.Дата,СтруктураОтбора);
            Если Префиксы.Количество()>0 Тогда
             Префикс = Префиксы[0].Префикс;    
            Иначе    
             Префикс = СокрЛП(Источник.Организация.Префикс);
            КонецЕсли;

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