Имя: Пароль:
1C
1С v8
Изменение номеров документов
0 Валидатор
 
19.02.14
11:15
конфа КА 8.2. Такой вопрос: Есть РС, в котором есть дата, и организация(Например конфетпром 01.01.2014). Есть документы ПКО и РКО, в которых есть реквизит касса, у которых есть реквизит подразделение, у подразделений в свою очередь есть префиксы. Так вот, для каждой кассы ставится префикс: Касса1 например с префиксом К1, Касса2 с префиксом К2. В итоге если дата документа больше той, что в РС указана, что при проведении документа, номер у документа будет такой (рассмотрим случай, когда у нас в ПКО касса1 с префиксом К1) : К10000001. Так в принципе и работает, но чтобы номер документа поменялся, нужно перевыбрать кассу и провести документ, а как сделать, чтобы при групповой обработки проведения документов, номер автоматически сам подставился?
Делал в процедуре перед записью:
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ттПараметрыУчетаКассыПоПодразделениям.Организация,
    |    ттПараметрыУчетаКассыПоПодразделениям.ДатаРедактирования
    |ИЗ
    |    РегистрСведений.ттПараметрыУчетаКассыПоПодразделениям КАК ттПараметрыУчетаКассыПоПодразделениям
    |ГДЕ
    |    ттПараметрыУчетаКассыПоПодразделениям.Организация = &Организация";
    Запрос.УстановитьПараметр("Организация", ЭтотОбъект.Организация);
    Результат = Запрос.Выполнить().Выгрузить();
    Для каждого Строка из Результат Цикл
        Если  Строка.ДатаРедактирования < ЭтотОбъект.Дата Тогда
            Если НЕ ЭтотОбъект.Касса.ттПодразделение.Наименование = ""  Тогда
                Если НЕ ЭтотОбъект.Ссылка.Касса.ттПодразделение.ттПрефиксКассовыхДокументов = ЭтотОбъект.Касса.ттПодразделение.ттПрефиксКассовыхДокументов Тогда
                    ЭтотОбъект.УстановитьНовыйНомер();
                КонецЕсли;
                Если ЭтотОбъект.Ссылка.Касса.ттПодразделение.ттПрефиксКассовыхДокументов = "" ИЛИ НЕ ЭтотОбъект.Ссылка.Касса.ттПодразделение.ттПрефиксКассовыхДокументов = ЭтотОбъект.Касса.ттПодразделение.ттПрефиксКассовыхДокументов Тогда
                    ЭтотОбъект.УстановитьНовыйНомер();
                КонецЕсли;
            КонецЕсли;
        Иначе
        КонецЕсли;
    КонецЦикла;


а вот в общем модуле сама процедура установки номера:
Процедура ПриУстановкеНовогоНомераДляДокументов(Источник, СтандартнаяОбработка, Префикс) Экспорт
    // {УНС "Техно-Терм" 04.02.2014
    Если ТипЗнч(Источник) = Тип("ДокументОбъект.ПриходныйКассовыйОрдер") ИЛИ ТипЗнч(Источник) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
        |    ттПараметрыУчетаКассыПоПодразделениям.Организация,
        |    ттПараметрыУчетаКассыПоПодразделениям.ДатаРедактирования
        |ИЗ
        |    РегистрСведений.ттПараметрыУчетаКассыПоПодразделениям КАК ттПараметрыУчетаКассыПоПодразделениям
        |ГДЕ
        |    ттПараметрыУчетаКассыПоПодразделениям.Организация = &Организация";
        Запрос.УстановитьПараметр("Организация", Источник.Организация);
        Результат = Запрос.Выполнить().Выгрузить();
        Для каждого Строка из Результат Цикл
            Если  Строка.ДатаРедактирования < Источник.Дата Тогда
                ПервыйПрефикс  =  (Источник.Организация.Префикс);
                ВторойПрефикс = Источник.Касса.ттПодразделение.ттПрефиксКассовыхДокументов;
                Префикс = ПервыйПрефикс+ВторойПрефикс;
                ДобавитьПрефиксОрганизации(Источник, Префикс + Префикс);
                ДобавитьПрефиксУзла(Префикс+Префикс);
            Иначе
                ДобавитьПрефиксОрганизации(Источник, Префикс);
                ДобавитьПрефиксУзла(Префикс);
            КонецЕсли;
        КонецЦикла;
    Иначе
        // }УНС "Техно-Терм" 04.02.2014
        ДобавитьПрефиксОрганизации(Источник, Префикс);
        ДобавитьПрефиксУзла(Префикс);
    КонецЕсли;
КонецПроцедуры

Повторю еще раз вопрос: Как сделать, чтобы не нужно было перевыбирать кассу для установки нового номера документа, а достаточно было просто его перепровести?
1 Godofsin
 
19.02.14
11:21
УстановитьНовыйНомер()?
2 Валидатор
 
19.02.14
11:30
(1) так использую
3 Валидатор
 
19.02.14
11:43
ап
4 Валидатор
 
19.02.14
11:44
(1) в коде написано же
5 Валидатор
 
19.02.14
12:58
знает кто?
6 Валидатор
 
19.02.14
13:21
иначе просто приходится выбирать другую кассу, проводить документ, потом возвращать предыдущую кассу, и проводить документ опять, тогда номер правильно встанет