|   |   | 
| 
 | Обрезание номера при формировании ПФ | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Мне бы столько энергии     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |