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