|
Обрезание номера при формировании ПФ | ☑ | ||
---|---|---|---|---|
0
Валидатор
19.02.14
✎
11:19
|
Конфа 8.2 КА. Документ ПКО, у него есть печатная форма - приходный кассовый ордер. Для этого документа мне нужно было дописать процедуру избавления от нулей, чтобы писался префикс, и потом сразу цифра, номер документа - К1000000001, а в Итоге должно на ПФ быть К11. Это получилось сделать, но при формировании этой ПФ, теперь номер самого документа режется до последней цифры, то есть не К11 а просто 1 остается, как так? вот код процедуры обрезания нулей:
НомерДокументаБезНулей = ПолучитьНомерДляПечатиПКО(Шапка); ПрефиксКассы = Касса.ттПодразделение.ттПрефиксКассовыхДокументов; ОбластьМакета.Параметры.НомерДокумента = ПрефиксКассы +""+ НомерДокументаБезНулей; и процедура получения номера: Функция ПолучитьНомерДляПечатиПКО(Документ, МассивПрефиксов = Неопределено) Экспорт Если Документ = Неопределено Тогда Возврат 0; КонецЕсли; Номер = СокрЛП(Документ.Номер); Префикс = ""; Если МассивПрефиксов = Неопределено Тогда Организация = Неопределено; Если ТипЗнч(Документ) = Тип("ВыборкаИзРезультатаЗапроса") ИЛИ ТипЗнч(Документ) = Тип("Структура") Тогда Организация = Документ.Организация; Иначе МетаданныеДокумента = Документ.Метаданные(); Если МетаданныеДокумента.Реквизиты.Найти("Организация") <> Неопределено Тогда Организация = Документ.Организация; КонецЕсли; КонецЕсли; МассивПрефиксовДляОбхода = Новый Массив; ПрефиксОрганизации = ЭтотОбъект.Организация.Префикс; ПрефиксКасс = ЭтотОбъект.Касса.ттПодразделение.ттПрефиксКассовыхДокументов; ПрефиксДокумента = ПрефиксОрганизации + ПрефиксКасс; МассивПрефиксовДляОбхода.Добавить(ПрефиксДокумента); Иначе МассивПрефиксовДляОбхода = МассивПрефиксов; КонецЕсли; Для Каждого ТекущийПрефикс ИЗ МассивПрефиксовДляОбхода Цикл Если Найти(Номер, ТекущийПрефикс)=1 Тогда Номер = Сред(Номер, СтрДлина(ТекущийПрефикс)+1); КонецЕсли; КонецЦикла; // так же, может остаться "минус" впереди Если Лев(Номер, 1) = "-" Тогда Номер = Сред(Номер, 2); КонецЕсли; // удаление ведущих нулей Пока Лев(Номер, 1)="0" Цикл Номер = Сред(Номер, 2); КонецЦикла; Возврат Номер; КонецФункции // ПолучитьНомерДляПечатиПКО() |
|||
1
Godofsin
19.02.14
✎
11:24
|
СтрЗаменить() тебя спасет ))))
|
|||
2
Godofsin
19.02.14
✎
11:25
|
НомерДокаБезНулей = СтрЗаменить(НомерДока,"0",""); =)
|
|||
3
Chikko
19.02.14
✎
11:25
|
СтрЗаменить() в таких случаях не помогает.
Вот тут проблема имхо: Номер = Сред(Номер, СтрДлина(ТекущийПрефикс)+1); Получишь К10 и обрежешь 0, вот и результат. |
|||
4
Godofsin
19.02.14
✎
11:31
|
(3) Чо это не помогает?
|
|||
5
Godofsin
19.02.14
✎
11:34
|
А ну да в принципе, не помогает )))
|
|||
6
Шапокляк
19.02.14
✎
11:38
|
(0) Ну так префикс-то кто впереди будет приляпывать?
|
|||
7
Валидатор
19.02.14
✎
11:43
|
(6) так а каким образом из за измений в процедура печати меняется номер документа?
|
|||
8
Валидатор
19.02.14
✎
11:45
|
(6) то есть опять добавлять новый номер перед закрытием формы? или как?
|
|||
9
Шапокляк
19.02.14
✎
11:47
|
Плин! Был у тебя в (0) номер К1000001. Ты перебрал массив префиксов и определил, что твой префикс К1. Оторвал его от номера и получил Номер 000001, после чего стал от него ведущие нолики отрывать. В итоге Номер=1. Ты его возвращаешь и чему-то удивляешься. Возвращай ТекущийПрефикс+Номер и будет тебе счастье.
|
|||
10
Валидатор
19.02.14
✎
11:52
|
(9)
Для Каждого ТекущийПрефикс ИЗ МассивПрефиксовДляОбхода Цикл Если Найти(Номер, ТекущийПрефикс)=1 Тогда Номер = Сред(Номер, СтрДлина(ТекущийПрефикс)+1); КонецЕсли; КонецЦикла; // так же, может остаться "минус" впереди Если Лев(Номер, 1) = "-" Тогда Номер = Сред(Номер, 2); КонецЕсли; // удаление ведущих нулей Пока Лев(Номер, 1)="0" Цикл Номер = Сред(Номер, 2); КонецЦикла; Возврат ПрефиксДокумента + Номер; потом в процедуре печати: НомерДокументаБезНулей = ПолучитьНомерДляПечатиПКО(Шапка); ОбластьМакета.Параметры.НомерДокумента = НомерДокументаБезНулей; в Итоге в самом документе ( а не в печатной форме, просто остается 1 цифра, так что не помог ваш вариант) |
|||
11
Валидатор
19.02.14
✎
12:03
|
и почему меняется номер в документе, когда я меняю его только в печатной форме?
|
|||
12
grayshadow
19.02.14
✎
12:06
|
извращенцы:)
где-то в общих модулях есть ф-ция ПолучитьНомерНаПечать |
|||
13
Шапокляк
19.02.14
✎
12:06
|
А, ну это просто. Переменная Номер - она такая. Назови ее иначе и все пройдет
|
|||
14
Валидатор
19.02.14
✎
12:07
|
(12) да, я ее и брал, чтобы допиливать, потому что зачем в общем модуле мне делать удаление нулей, когда в других документах они тоже резаться будут
|
|||
15
Валидатор
19.02.14
✎
12:09
|
(13) а вот да, вроде получилось, спс
|
|||
16
Валидатор
19.02.14
✎
12:12
|
теперь прошу сюда))
v8: Изменение номеров документов |
|||
17
Шапокляк
19.02.14
✎
12:14
|
Мне бы столько энергии
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |