Имя: Пароль:
1C
1С v8
Изменение нумерации счетов фактур.
0 AndyTLT63
 
12.07.12
16:59
Конфа Бухгалтерия гос. учреждения 12.2. Клиент хочет изменить  нумерацию счетов фактур по типу номер+префикс. Будет выглядеть примерно так 000099ПФ. Где ПФ  - префикс. Причем они хотят префикс имменно в конце номера. Но как такое сделать? и чтобы новым счетам фактурам присваивался номер с этим префиксом. Если бы префикс был бы в начале все просто. А как реализовать такое?
1 YF
 
12.07.12
16:59
Шли их лесом
2 YF
 
12.07.12
17:00
А вот на печать можно выводить номер в любом виде ...
3 GLazNik
 
12.07.12
17:00
префикс в конце... тогда уж суфикс
4 НикДляЗапросов
 
12.07.12
17:01
а в чем сложность преффикса в конце?
5 Пыльный
 
12.07.12
17:02
Идешь в модуль объекта СчетФактураВыданный, находишь процедуру ПриУстановкеНовогоНомера и занимаешься извращениями.
6 AndyTLT63
 
13.07.12
08:38
Нету такой процедуры в модуле объекта
7 AndyTLT63
 
13.07.12
08:39
Сложность префикса в конце, в том что я не знаю как схранть автоматическую нумерацию документов.
8 AndyTLT63
 
13.07.12
08:46
Ну как вариант попробую создать эту прцедуру и поизварщаться
9 Пыльный
 
13.07.12
08:54
(6),(7) Сам напиши :)
(8) А что там извращаться? Делаешь запрос:
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ ПЕРВЫЕ 1
   |    СчетФактураВыданный.Номер
   |ИЗ
   |    Документ.СчетФактураВыданный КАК СчетФактураВыданный
   |ГДЕ
   |    СчетФактураВыданный.Номер ПОДОБНО &Номер
   |
   |УПОРЯДОЧИТЬ ПО
   |    СчетФактураВыданный.Номер УБЫВ";

   Запрос.УстановитьПараметр("Номер",ПрефиксОрганизации + "%" + ТвойСуффикс );
   Результат = Запрос.Выполнить().Выгрузить();

Отбрасываешь суффиксы/префиксы, увеличиваешь номер на единицу, добавляешь суффиксы/префиксы и все.

В стандартном виде эта процедура выглядит примерно так:
Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
   ОбщегоНазначения.ДобавитьПрефиксОрганизации(ЭтотОбъект, Префикс);
   Если Исправление Тогда
       Префикс = "И" + Префикс;
   ИначеЕсли ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс
       ИЛИ ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента Тогда
       Префикс = "А" + Префикс;
   КонецЕсли;
   ОбщегоНазначения.ДобавитьПрефиксУзла(Префикс);
КонецПроцедуры
10 Пыльный
 
13.07.12
08:58
Да, и в запросе еще условие, что только текущий год.
11 MSII
 
13.07.12
09:01
(10) И учесть ситуацию "первый документ в новом году".
12 Serg_1960
 
13.07.12
09:14
Спешите с советами, а автор про одну мелочь забыл сообщить - пространство автонумерации. Т.е. последовательность нумерации сквозная в пределах года или в пределах каждого суффикса и года?
13 Пыльный
 
13.07.12
09:27
(12) Запрос.УстановитьПараметр("Номер",ПрефиксОрганизации + "%" + ТвойСуффикс );

А уж какой суффикс в каждом конкретном случае, я думаю сам разберется :)
14 AndyTLT63
 
13.07.12
09:36
Спасибо за советы господа, вы мне очень помогли.
15 AndyTLT63
 
18.07.12
11:38
ВОт если кому пригодиться сделал так:
16 AndyTLT63
 
18.07.12
11:39
Вот если кому пригодиться сделал так:

Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
   СтандартнаяОбработка =Ложь;
   Префикс=Учреждение.Префикс;
   
   
   Запрос=Новый Запрос;
   Запрос.Текст=
   "ВЫБРАТЬ ПЕРВЫЕ 1
   |    НДС_СчетФактураВыданный.Номер,
   |    НДС_СчетФактураВыданный.Дата
   |ИЗ
   |    Документ.НДС_СчетФактураВыданный КАК НДС_СчетФактураВыданный
   |ГДЕ
   |    НДС_СчетФактураВыданный.Номер ПОДОБНО &Номер
   |    И НДС_СчетФактураВыданный.Дата МЕЖДУ &ДатаНач И &ДатаКОн
   |
   |УПОРЯДОЧИТЬ ПО
   |    НДС_СчетФактураВыданный.Номер УБЫВ";

   Запрос.УстановитьПараметр("Номер",  "%" + "/9" );
   Запрос.УстановитьПараметр("ДатаНач", НачалоГода(Дата));
   Запрос.УстановитьПараметр("ДатаКОн", КонецГода(Дата));

   Результат = Запрос.Выполнить().Выгрузить();
   
   Если Результат.Количество()=0 Тогда  //В этом году еще не было счетов фактур с таким постфиксом создадим первую
       Номер="000001/9";
   КОнецЕсли;
   
   Для каждого СТрока Из Результат Цикл
       
         Сообщить(Лев(СТрока.Номер,6));
         НовыйНомер=Число(Лев(СТрока.Номер,6))+1;
         Пока СтрДлина(НовыйНомер)<6 Цикл
            НовыйНомер="0"+НовыйНомер;
           
         КонецЦикла;
         НовыйНомер=НовыйНомер+"/9";
         Номер=НовыйНомер;
         
    КонецЦикла;
     
КонецПроцедуры


Все отлично работает. Это для бюджетной бухгалтерии
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс