Имя: Пароль:
1C
1C 7.7
v7: Бухгалтерша залезла в нумерацию, что теперь делать?
,
0 Double_Medved
 
17.03.15
14:36
Добрый день! Бухгалтерия проф 7.7, последняя, чистая. Бухгалтерша в начале года сделала номера счет фактур с 00000001-00000009 , потом сделала 00000001А, 00000003А... 00000009А. Сегодня делает новую - у нее номер 00000009А, не уникальный, видимо кончилось количество знаков, а ей надо 000000010, не изменяя уже созданные и не правя номера руками. Как теперь все исправить, подскажите пожалуйста?
1 Скользящий
 
17.03.15
14:37
>>не изменяя уже созданные и не правя номера руками.
Никак
2 Fedor-1971
 
17.03.15
14:39
00000001Б - ещё 9 номеров
3 Double_Medved
 
17.03.15
14:40
(1) А как? Я говорю измени номера, а она значил - все белое, трогать нельзя. Более того, уже есть конкретно 18 счет фактур, 9 с А и 9 без А. Нужна следующая десятая, а их как бы не 9 а 18. Как переименовать 18 штук так чтобы следующая была 10, а не 19? Математическая загадка
4 Масянька
 
17.03.15
14:42
(3) "А" - это случайно не аванс?
5 palpetrovich
 
17.03.15
14:45
(3) эт не "Математическая загадка", это "Горе от ума" ...нельзя менять номера - сделай уникальность номера - ВПределахДня
6 aka AMIGO
 
17.03.15
14:47
кто-то тут советовал ввести префикс..
Либо назначать номер в модуле, при открытии
7 Dmitrith
 
17.03.15
14:47
Сделать нумерацию с префиксом.
А-0000001 для ашных
и например Б-000001 для нормальных
8 Fedor-1971
 
17.03.15
14:47
(3) так поставь 100000010, правда, до следующей буквы в конце номера
9 Double_Medved
 
17.03.15
14:48
(4)Аванс, да
10 Fedor-1971
 
17.03.15
14:50
(9) Сделай на документе галку "Аванс", которая будет лепить букву А к номеру при печати и запрети изменять номер намертво.
11 vde69
 
17.03.15
14:52
Функция ПолучитьНовыйНомерДокумента (ИмяТаблицы, Ответственный, ИнкрементНовогоДня = 1) Экспорт
    Запрос = Новый Запрос (
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |    СчетНаОплату.Номер
    |ПОМЕСТИТЬ ПоследнийНомер
    |ИЗ
    |    Документ."+ИмяТаблицы+" КАК СчетНаОплату
    |ГДЕ
    |    ГОД(СчетНаОплату.Дата) = &Год
    |
    |УПОРЯДОЧИТЬ ПО
    |    СчетНаОплату.Номер УБЫВ
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ ПЕРВЫЕ 1
    |    СчетНаОплату.Ссылка
    |ПОМЕСТИТЬ ТекущиеСчета
    |ИЗ
    |    Документ."+ИмяТаблицы+" КАК СчетНаОплату
    |ГДЕ
    |    СчетНаОплату.Дата >= &Дата
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ПоследнийНомер.Номер,
    |    ВЫБОР
    |        КОГДА ТекущиеСчета.Ссылка ЕСТЬ NULL
    |            ТОГДА "+ИнкрементНовогоДня+"
    |        ИНАЧЕ 1
    |    КОНЕЦ КАК Инкремент,
    |    ТекущиеСчета.Ссылка
    |ИЗ
    |    ПоследнийНомер КАК ПоследнийНомер
    |        ПОЛНОЕ СОЕДИНЕНИЕ ТекущиеСчета КАК ТекущиеСчета
    |        ПО (ИСТИНА)");
    Запрос.УстановитьПараметр("Дата", НачалоДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("Год", Год(ТекущаяДата()));
    
    мНомер = "00000000000";
    мИнкр = 1;
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        мНомер = Выборка.Номер;
        мИнкр = Выборка.Инкремент;
    КонецЦикла;
    
    НовыйНомер = "";
    д = СтрДлина(мНомер);
    Для е = 1 по д Цикл
        мКод = КодСимвола(мНомер, е);
        Если (мКод >= 48) и (мКод <= 57) Тогда
            НовыйНомер = НовыйНомер + Символ(мКод);
        Иначе
            Прервать;
        КонецЕсли;
    КонецЦикла;
    НовыйНомер = Число(НовыйНомер) + мИнкр;
    НовыйНомер = Формат(НовыйНомер, "ЧГ=0");      
    НовыйНомер = Прав("00000000000000" + НовыйНомер + СокрЛП(УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(Ответственный, "Нумератор")), 12);
    
    Возврат НовыйНомер;
КонецФункции
12 Double_Medved
 
17.03.15
14:52
Она еще обещала так больше не делать, то есть далее обещает 000000010, 000000011, 000000012 и т.д., то есть с А уже не надо, надо только как-то это исправить. Но уникальность номера в течении дня только - начнется такое небось, что риск не стоит свеч
13 Масянька
 
17.03.15
14:53
(9) Понятно... Передай главбухше - сначала нужно было спросить у специалиста.
14 aka AMIGO
 
17.03.15
14:54
(11) у автора 7.7
15 aka AMIGO
 
17.03.15
14:56
(12) да, и скажи, что мы ей всем форумом верим :)
16 Double_Medved
 
17.03.15
14:56
(13)причем за ней в прошлом году уже водились изменения номеров, например перебивания номера из чека какого-нибудь на бензин и т.д., я ее уже просил туда больше не лезть, но сказала что надо было поставить А, они же на аванс
17 vde69
 
17.03.15
14:56
(14) тогла классика жанра

во всех счетах с буквой добавить тильду первым знаком
вместо 00000001А будет ~0000001А
18 Double_Medved
 
17.03.15
14:56
Теперь ей приходится бить номер вручную, в общем, хочет чтобы снова все стало автоматически
19 Масянька
 
17.03.15
14:57
(16) Я для авансовых делала префикс. По желанию буха.
(18) Вот теперь пусть до следующего года сидит и ручками вбивает номера. Научится.
20 vde69
 
17.03.15
14:58
(17) после этого будет все работать нормально, только один документ надо будет правильно пронумеровать
21 aka AMIGO
 
17.03.15
14:58
(18) В БД пример с префиксом есть? поищи.. если нет - выложу какой-нть..
22 varelchik
 
17.03.15
15:00
(0)Сделать номер вообще недоступным.
23 floody
 
17.03.15
15:02
Коленку прострелить.
24 Double_Medved
 
17.03.15
15:14
(21) а можно пример что за префикс?
25 aka AMIGO
 
17.03.15
15:27
(24) Ну, во-первых, в Глоб.модуле:
//-----------------------------
//Создание префиксов автонумерации
ПБ=Константа.ПрефиксБазы;
ПрефиксАвтоНумерации("РасходнаяНал","Рн"+ПБ+"-");
ПрефиксАвтоНумерации("ПриходнаяНал","Пн"+ПБ+"-");
ПрефиксАвтоНумерации("РасходнаяКредит","Рк"+ПБ+"-");
ПрефиксАвтоНумерации("ПриходнаяКредит","Пк"+ПБ+"-");
ПрефиксАвтоНумерации("Заказ","Зк"+ПБ+"-");
ПрефиксАвтоНумерации("Счет","Сч"+ПБ+"-");
ПрефиксАвтоНумерации("КоммерческоеПредложение","Кп"+ПБ+"-");
ПрефиксАвтоНумерации("Счет_фактура","Сф-");
ПрефиксАвтоНумерации("ЗаписьКнигиПродаж","Зкпр-");
ПрефиксАвтоНумерации("РегистрацияСчета_фактуры","Рсф-");

где ПБ - константа - префикс базы, у нас 5 филиалов, каждый имеет свой префикс, в частности - чтобы можно было распознать место образования документа.

во-вторых, в одном из документов:

//**
Процедура УстНомера()      
    Если СокрЛП(Константа.ПрефиксБазы)="" Тогда
        Если Фирма.Выбран() = 1 Тогда
            Преф="Рк" + ?(ПустаяСтрока(Фирма.Префикс) = 1, "-0", СокрЛП(Фирма.Префикс) + "-");
        Иначе    
            Преф="Рк-";
        КонецЕсли;
    Иначе
        Преф="Рк"+Константа.ПрефиксБазы+"-";
    КонецЕсли;
    УстановитьНовыйНомер(Преф);
КонецПроцедуры
26 Double_Medved
 
17.03.15
15:28
(25) Спасибо
27 Сияющий Асинхраль
 
17.03.15
15:28
Если конфа типовая в бухе 7.7 лучше вообще номера не менять, раньше можно было в типовой без проблем назначать свой префикс не меняя кода и вводить руками другие префиксы, а теперь только конфу менять...
28 fishb1
 
17.03.15
15:32
(18) Попробуй тупо сделать:
ВЫБРАТЬ
    МАКСИМУМ(Документ.Номер) КАК Номер
ИЗ
    Документ.Документ КАК Документ

Мне однажды помогло восстановить нумерацию в справочнике, чем черт не шутит. :)
29 aka AMIGO
 
17.03.15
15:35
+25 забыл сказать, УстНомера() выполняется из формы, при нажатии кнопки "Выбор фирмы", а у нас их 5 штук.

Вот так примерно:
30 aka AMIGO
 
17.03.15
15:36
(28) у него 7-ка :)
31 fishb1
 
17.03.15
15:58
(30) Точно, извиняюсь. :(