Имя: Пароль:
1C
1С v8
Нумерация документа с заданного номера
0 maxi0n
 
25.06.14
10:23
Добрый день, подскажите пожалуйста как можно сделать нумерацию документа  чтобы он начинался с заданного номера и дальше по порядку... Например был номер Д0000000049, а стал таким Д0000000060, а след Д0000000061... Как можно задать принудительно номер документа
1 websony
 
25.06.14
10:30
Если речь идет о пользовательском режиме, то после "насильной" смены номера ,например с Д0000000049 на Д0000000060, следующий созданный документ и так будет иметь номер, следующий по порядку, т.е. Д0000000061
2 maxi0n
 
25.06.14
10:39
Как это можно сделать программно, если кому не трудно приведите пример кода...
3 Fedor-1971
 
25.06.14
10:52
Например, так:
Если Число(Прав(ЭтотОбъект.Номер,2))<60 тогда
  ЭтотОбъект.Номер="Д0000000060";
КонецЕсли;

только этот номер присвоится всем (!!!) документам с номером меньше 60. В (1) самое правильное решение, один раз меняем руками номер документа и дальше не паримся.
4 websony
 
25.06.14
11:58
Например так:

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

Функция ВернутьНовыйНомер(Префикс,ДлинаНомера,НомерЧисла)
    
    номер = строка(НомерЧисла) ;
    ДлинаНомера1 = ДлинаНомера - СтрДлина(номер);
    Для  х =1 по ДлинаНомера1  Цикл
        номер = "0"+номер;
    КонецЦикла;
    
    возврат Префикс+номер;
КонецФункции


а в любой обработке в серверной функции вызываете :
&НаСервереБезКонтекста
Процедура ПеренумероватьНаСервере(Документ, НомерДокумента)
Документы.Документ1.ПеренумероватьДокументНачинаяС(Документ, НомерДокумента);
КонецПроцедуры

где Документ - ссылка на документ, с которого надо начать перенумеровывать, НомерДокумента - строковый номер, с которого надо начать нумерацию(с учетом возможного префикса)...

Может и долго, зато точно работает)...
5 maxi0n
 
25.06.14
12:04
Спасибо большое
6 YF
 
25.06.14
12:04
(0) Зачем?