|
v8: Нули в номере документа при формировании печатных форм | ☑ | ||
---|---|---|---|---|
0
Валидатор
17.09.13
✎
15:41
|
Дорбрый день, БП 8.2 конфа, при формировании документов (счет, реализация товаров и т.д.) в номер при формировании ПФ стал попадать так:
Счет на оплаты 0000000000048 например как для всех печатных встроенных форм сделать, чтобы был номер просто 48, к примеру? |
|||
1
пипец
17.09.13
✎
15:42
|
число() не предлагать ?
|
|||
2
John83
17.09.13
✎
15:42
|
если типовая печ. форма, то наверное поставили префикс букву "О"
|
|||
3
Валидатор
17.09.13
✎
15:43
|
не совсем так, на одной печатной форме можно все исправить, а у меня по всей базе во всех ПФ Документы покупатлю вместо просто номера стоит 00000004839, вот эти 0-ли, можно ли по всей конфе для всех печатных форм поставить на вывод без нулей перед цифрами?
|
|||
4
giallo
17.09.13
✎
15:45
|
(3) она и так вроде без нулей выводит. Отладь формирование печ. формы- функцию ПолучитьНомерНапечать емнип
|
|||
5
Валидатор
17.09.13
✎
15:46
|
(4) это общий модуль?
|
|||
6
Валидатор
17.09.13
✎
15:48
|
(4) нету такой функции в этом модуле
|
|||
7
giallo
17.09.13
✎
15:48
|
(6) отладчик есть в любом случае ;)
|
|||
8
Serg_1960
17.09.13
✎
15:54
|
Если в остальных печатных формах ведущие нули номера документа обрезаются - то значит есть такая общая функция.
Если для некоторых документов она "не работает" - то, скорее всего, там первый символ не "ноль", а буква "О" :)) |
|||
9
Валидатор
17.09.13
✎
15:56
|
(8) для всех выводятся нули перед номером документа в печатной форме
|
|||
10
giallo
17.09.13
✎
15:58
|
(9) Что мешает отладить формирование номера на печать? Ставишь точку останова на определение в коде соответствующего параметра макета и вперед!
|
|||
11
Валидатор
17.09.13
✎
15:59
|
(10) на всех печатных формах отдельно?
|
|||
12
giallo
17.09.13
✎
16:00
|
(11) Есть варианты:
а) провести отладку на произвольной проблемной форме для начала б) гадать на форуме http://funkyimg.com/i/D4hp.jpg |
|||
13
Валидатор
17.09.13
✎
16:00
|
(12) нашел ту функцию, вот она:
Функция ПолучитьНомерНаПечать(Документ, МассивПрефиксов = Неопределено) Экспорт Если Документ = Неопределено Тогда Возврат 0; КонецЕсли; Номер = СокрЛП(Документ.Номер); // {ОбменДаннымиБСП // Если номер документа по стандарту БСП 8.2, сформируем номер через стандартную процедуру БСП. Если ПолучитьФункциональнуюОпцию("ИспользоватьОбменДанными") = Истина Тогда Если Сред(Номер, 5, 1) = "-" Тогда Номер = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Номер, Ложь, // УдалитьПрефиксИнформационнойБазы Истина // УдалитьПользовательскийПрефикс ); Возврат Номер; КонецЕсли; КонецЕсли; // }ОбменДаннымиБСП СсылкаНаДокумент = Неопределено; Префикс = ""; Попытка Если ТипЗнч(Документ) = Тип("Структура") Тогда СсылкаНаДокумент = Документ.СсылкаСФАванс; ИначеЕсли ТипЗнч(Документ) = Тип("ДокументСсылка.СчетФактураВыданный") Или ТипЗнч(Документ) = Тип("ДокументОбъект.СчетФактураВыданный") Тогда Если Документ.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс Тогда СсылкаНаДокумент = Документ; КонецЕсли; ИначеЕсли ТипЗнч(Документ) = Тип("ВыборкаИзРезультатаЗапроса") Тогда Если Документ.СчетФактура.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс Тогда СсылкаНаДокумент = Документ; КонецЕсли; КонецЕсли; Исключение КонецПопытки; Если МассивПрефиксов = Неопределено Тогда Организация = Неопределено; ПодразделениеОрганизации = Неопределено; Если ТипЗнч(Документ) = Тип("ВыборкаИзРезультатаЗапроса") ИЛИ ТипЗнч(Документ) = Тип("Структура") Тогда Организация = Документ.Организация; Иначе МетаданныеДокумента = Документ.Метаданные(); Если ЕстьРеквизитДокумента("Организация", МетаданныеДокумента) Тогда Организация = Документ.Организация; КонецЕсли; КонецЕсли; МассивПрефиксовДляОбхода = СформироватьМассивПрефиксовДляРИБИОрганизации(Организация); Иначе МассивПрефиксовДляОбхода = МассивПрефиксов; КонецЕсли; Номер = ПолучитьНомерБезПрефиксов(Номер, МассивПрефиксовДляОбхода); ВыкинутПрефиксСФНаАванс = Ложь; ОтдельнаяНумерацияСФНаАванс = Константы.ОтдельнаяНумерацияСчетовФактурНаАванс.Получить(); Если ОтдельнаяНумерацияСФНаАванс И СсылкаНаДокумент <> Неопределено И Сред(Номер, 1, 1) = "А" Тогда ВыкинутПрефиксСФНаАванс = Истина; Номер = Сред(Номер, 2); Если Сред(Номер, 1, 1) = "-" Тогда Номер = Сред(Номер, 2); КонецЕсли; Номер = ПолучитьНомерБезПрефиксов(Номер, МассивПрефиксовДляОбхода); КонецЕсли; Если ВыкинутПрефиксСФНаАванс Тогда Номер = "А" + Номер; КонецЕсли; Возврат Номер; КонецФункции // ПолучитьНомерНаПечать() только как в ней сделать, чтобы нули резались? |
|||
14
Sabbath
17.09.13
✎
16:00
|
(0) и (3) чтобы сразу во всех, не слышал такого. А в отдельных, наверно, сам знаешь
|
|||
15
Валидатор
17.09.13
✎
16:00
|
была в общего назначения
|
|||
16
giallo
17.09.13
✎
16:01
|
(13) вот врубайся теперь почему у тебя нули не режутся, ты же прог, ничего сложного не должно быть.
|
|||
17
Serg_1960
17.09.13
✎
16:01
|
В УПП префиксы и ведущме нули обрезает ОбщегоНазначения.ПолучитьНомерНаПечать. И в любом модуле документа, где есть встроенные печатные формы, используется строка, типа:
ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(ЭтотОбъект); |
|||
18
Валидатор
17.09.13
✎
16:02
|
(17) Номер = Сокр(Документ.Номер); вот тут я так понял должен обрезаться номер, но он как был 0000004175, так после этой строки и остался 00000004175
|
|||
19
Serg_1960
17.09.13
✎
16:04
|
(18) Этот бред ты написал по памяти? А как на самом деле?
|
|||
20
Валидатор
17.09.13
✎
16:06
|
(19) Документ. Номер = 00000001706
СокрЛП(Документ. Номер) = 00000001706 вот в чем проблема( |
|||
21
Валидатор
17.09.13
✎
16:06
|
не обрезает он функцией СОКрЛП
|
|||
22
Валидатор
17.09.13
✎
16:10
|
что еще может быть?
|
|||
23
Sabbath
17.09.13
✎
16:12
|
(18) сокрЛП обрезает проблеы по краям
(13) не знал о такой. Перед возвратом придется тебе прописать код для обрезания нулей (хотя вроде было что-то такое по типу "УбратьЛидирущиеНули" :) ) Можешь втупую обойти строку в цикле и обрезать нули. |
|||
24
Sabbath
17.09.13
✎
16:13
|
+ (23) насчет функции УбратьЛидирущиеНули не граантирую)), возможно, была где-то нетиповая реализация, а мне запомнилось.
|
|||
25
Валидатор
17.09.13
✎
16:16
|
Для Каждого ТекущийПрефикс ИЗ МассивПрефиксовДляОбхода Цикл
ТекущийНомер = Найти(Номер, ТекущийПрефикс); Если ТекущийНомер = 1 Тогда Номер = Сред(Номер, СтрДлина(ТекущийПрефикс)+1); КонецЕсли; // удаление префикса из номера документа //Если Найти(Номер, ТекущийПрефикс)=1 Тогда // Номер = Сред(Номер, СтрДлина(ТекущийПрефикс)+1); //КонецЕсли; // так же, может остаться "минус" впереди Если Лев(Номер, 1) = "-" Тогда Номер = Сред(Номер, 2); КонецЕсли; // удаление ведущих нулей Пока Лев(Номер, 1)="0" Цикл Номер = Сред(Номер, 2); КонецЦикла; КонецЦикла; если надо кому будет в функцию засовыватее в конец и все |
|||
26
Валидатор
17.09.13
✎
16:22
|
причем этот код был в типовой конфе раньше, версии 49.15 смотрел, ав 51.9 его уже нет, 1сники решили убрать его, дабы прогеры сами дописывали что ли?)))))
|
|||
27
Sabbath
17.09.13
✎
16:23
|
(25) типа того
Пока Лев(Номер, 1)="0" Цикл Номер = Сред(Номер, 2); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |