Имя: Пароль:
1C
1С v8
Сбилась нумерация документов.
0 JuixyJes
 
23.12.19
15:59
Добрый день! У меня есть база, в которой работают люди как в РИБах так и напрямую под разными пользователями. Для удобной работы этих пользователей были сделаны доработки, устанавливающие префикс документам/элементам справочников не идентичный префиксу ИБ, а префикс Подразделения, указанного у них в настройках пользователя. У пользователей была дурацкая привычка править номера в ручную и нумерация сбилась, есть ли какой то безболезненный вариант как восстановить нумерацию, не ожидая НГ? Бухгалтерия 2.0
1 unbred
 
23.12.19
16:01
посмотри, может найдёшь что-то для себя Нумерация документов.
2 Джинн
 
23.12.19
16:01
Нет. Выравнивание киянкой рук пользователей всегда болезненное.
3 JuixyJes
 
23.12.19
16:12
Просто пользователи жалуются, что нумерация у них сбилась. Поэтому и написала сюда, вдруг кто знает как решить такое.
4 dka80
 
23.12.19
16:29
Обработка Универсальный подбор и обработка объектов
5 Dmitrii
 
гуру
23.12.19
16:32
Вручную или обработкой (если много документов) исправляешь "кривые" номера.
Потом выполняешь программно ОбновитьНумерациюОбъектов(<Метаданные>).
Затем пишешь докладную записку руководству с перечнем фамилий пользователей, грешащих установкой кривых номеров, с просьбой лишить их новогодней премии.
6 johnnik
 
23.12.19
16:33
(3) И приговаривают: "мы ничего не трогали, оно само"
7 Фрэнки
 
23.12.19
17:00
Ну так на 2.0 обработки просто пишутся и все. Можно подсмотреть процедуры установки номеров из доработок, но использовать их на все документы в выборке. Тут универсальных советов надавать можно, но делать все равно через обработки.
8 JuixyJes
 
23.12.19
17:38
Так, а подскажите, как мне обработку написать, где я смогу выбрать тип документа, указать год, за который искать, и найти количество документов с разной длиной номера. Чтоб было что-то вроде

Сообщить("В базе из " + СчДокументов + " есть " + сч +  " документов с номером длины " + Н + " за " + Год + "год.");
9 JuixyJes
 
23.12.19
17:38
Функция ВыборкаСЧ(Выборка,н,год)
    сч = 0;
    Если Выборка = "РКО" Тогда
        Выб=Документы.РасходныйКассовыйОрдер.Выбрать();
    ИначеЕсли Выборка = "ПКО" Тогда
        Выб=Документы.ПриходныйКассовыйОрдер.Выбрать();
    ИначеЕсли Выборка = "Заявка" Тогда
        Выб=Документы.мЗаявкаНаЗайм.Выбрать();
    ИначеЕсли Выборка = "Договор" Тогда
        Выб=Документы.мКредитныйДоговор.Выбрать();
    ИначеЕсли Выборка = "Возврат" Тогда
        Выб=Документы.мПлатежПоКредиту.Выбрать();
    КонецЕсли;
    Пока Выб.Следующий() Цикл
        Если Год(Выб.Дата) = Год Тогда
            Если СтрДлина(Выб.Номер) = н Тогда
                сч = сч + 1;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    Возврат сч
КонецФункции


Функция НайтиМалыеНомера(ВыборкаДокументов,КоличествоСимволов,Год)
    СчДокументов = 0;
    Если ВыборкаДокументов = "РКО" Тогда
        Выб=Документы.РасходныйКассовыйОрдер.Выбрать();
    ИначеЕсли ВыборкаДокументов = "ПКО" Тогда
        Выб=Документы.ПриходныйКассовыйОрдер.Выбрать();
    ИначеЕсли ВыборкаДокументов = "Заявка" Тогда
        Выб=Документы.мЗаявкаНаЗайм.Выбрать();
    ИначеЕсли ВыборкаДокументов = "Договор" Тогда
        Выб=Документы.мКредитныйДоговор.Выбрать();
    ИначеЕсли ВыборкаДокументов = "Возврат" Тогда
        Выб=Документы.мПлатежПоКредиту.Выбрать();
    КонецЕсли;
    Пока Выб.Следующий() Цикл
        СчДокументов = СчДокументов + 1;
    КонецЦикла;
    
    Для н = 1 по КоличествоСимволов Цикл
        сч = ВыборкаСЧ(ВыборкаДокументов,н,год);
        Сообщить("В базе из " + СчДокументов + " есть " + сч +  " документов с номером длины " + Н + " за " + Год + "год.");    
    КонецЦикла;
КонецФункции  
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Если Реквизит1 = "РКО" Тогда
        НайтиМалыеНомера("РКО",11,2019);
    ИначеЕсли Реквизит1 = "ПКО" Тогда
        НайтиМалыеНомера("ПКО",11,2019);
    ИначеЕсли Реквизит1 = "Заявка" Тогда
        НайтиМалыеНомера("Заявка",9,2019);
    ИначеЕсли Реквизит1 = "Договор" Тогда
        НайтиМалыеНомера("Договор",10,2019);
    ИначеЕсли Реквизит1 = "Возврат" Тогда
        НайтиМалыеНомера("Возврат",10,2019);
    КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()
    ЭлементыФормы.Реквизит1.СписокВыбора.Добавить("РКО");
    ЭлементыФормы.Реквизит1.СписокВыбора.Добавить("ПКО");
    ЭлементыФормы.Реквизит1.СписокВыбора.Добавить("Заявка");
    ЭлементыФормы.Реквизит1.СписокВыбора.Добавить("Договор");
    ЭлементыФормы.Реквизит1.СписокВыбора.Добавить("Возврат");
КонецПроцедуры
10 JuixyJes
 
23.12.19
17:39
Ибо сейчас это все очень топорно и работает не правильно)
11 lodger
 
23.12.19
18:43
(10) ну сделаешь ты "ровную" нумерацию. а документ внутренний? первичка с нее не печатается?
Закон Брукера: Даже маленькая практика стоит большой теории.