Консультация № 176470
03.02.2010, 19:31
0.00 руб.
0 7 2
Здравствуйте! Помогите, пожалуйста!
Есть номер дока, например, ТО-0000052, как в табличной, так и в печатной форме. Нужно в печатной форме выводить без нуликов, но с префиксом, т.е. ТО-52. Пробовала через конфиг, он убирает с конца, т.е. ТО-0000, а нужно убрать нулики в середине номера.
И еще один нюанс: Нужно только в счетах и расходных накладных, все остальные без изменений...
За ранее благодарна!

Обсуждение

Неизвестный
03.02.2010, 20:40
общий
создайте новую внешнкю печатную форму и обрабатывайте поля как вздумается, это типовая конфигурация?
Неизвестный
04.02.2010, 08:34
общий
это ответ
Здравствуйте, Lesine.

Если префикс ВСЕГДА есть и ВСЕГДА 3 символа можно в печатной форме вместо "НомерДок" Написать "Лев(НомерДок, 3) + Число(Прав(НомерДок, СтрДлина(НомерДок) - 3)) "
5
Супер, на будущее не плохой вариант!!!!
Неизвестный
04.02.2010, 10:25
общий
Piter:
Цитата: 285782
Число(Прав(НомерДок, СтрДлина(НомерДок) - 3))

Ну, а если НЕ всегда, или номер состоит из разных символов, например, ТО-001/15/02? Тут в число перевести не получится.
Неизвестный
04.02.2010, 13:26
общий
Владимир,
Думаю, вот так будет интересней:
Сред(НомерДок, 1,Найти(НомерДок,"-"))+Число(Сред(НомерДок,Найти(НомерДок,"-")+1))

правда подсказали поздно, решила по другому. Но тоже вариант... причем не плохой...
Неизвестный
04.02.2010, 13:47
общий
Владимир Лазурко:
Цитата: 138007
Ну, а если НЕ всегда, или номер состоит из разных символов, например, ТО-001/15/02?

Тогда нужно - хоть как-то формализовать задачу, иначе "Принеси то, не знаю что".
Если поставить условие примерно так:
Убрать первую встретившуюся группу нулей.
Тогда что-то такое....
Код:
Функция ПреобразоватьНомер(Номер)     
Перем Сч, МаксСч, СчПреф;

МаксСч = СтрДлина(Номер);
СчПреф = -1;
Для Сч = 1 По МаксСч Цикл
Если Сред(Номер, Сч, 1) = "0" Тогда
Если СчПреф < 0 Тогда
СчПреф = Сч - 1;
КонецЕсли;
ИначеЕсли СчПреф >= 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;

Возврат Лев(Номер, СчПреф) + Прав(Номер, МаксСч - Сч + 1);
КонецФункции


Ну и вызывать
Код:
ПреобразоватьНомер(СокрЛП(НомерДок))
Неизвестный
06.02.2010, 22:02
общий
это ответ
Здравствуйте, Lesine.
В процедуре Печать() нужно добавить такие строки:
ПозицияВедущегоНуля=Найти(СокрЛП(НомерДок),"0");
Если ПозицияВедущегоНуля=0 Тогда
ПозицияВедущегоНуля=3;
КонецЕсли;
НомерБезПрефикса=Сред(СокрЛП(НомерДок),ПозицияВедущегоНуля);
ПрефиксНомера=Сред(СокрЛП(НомерДок),1,ПозицияВедущегоНуля-1);
Пока Сред(НомерБезПрефикса,1,1)="0" Цикл
НомерБезПрефикса=Сред(НомерБезПрефикса,2);
КонецЦикла;
НомерДляПечати=ПрефиксНомера+НомерБезПрефикса;

Вот его то и надо печатать
5
Спасибо, вариант не плохой...
Неизвестный
08.02.2010, 18:10
общий
Piter:
У меня почти так, как и у Шахрайчук Владимира:
Код:
Функция глНомерБезПрефикса(Знач НомерДок) Экспорт
ПозицияПрефикса = Найти(НомерДок,"-");
//Если (глИспользуетсяРазделительУчета = 1) И (ПозицияПрефикса > 0) Тогда
//Если (ПозицияПрефикса > 0) Тогда
//Возврат Число(Сред(НомерДок,Найти(НомерДок,"-")+1));
НовыйНомер=Прав(НомерДок,СтрДлина(НомерДок)-ПозицияПрефикса);
Пока Лев(НовыйНомер,1)="0" Цикл
НовыйНомер=Прав(НовыйНомер,СтрДлина(НовыйНомер)-1);
КонецЦикла; //Лев(НовыйНомер,1)="0"
Возврат НовыйНомер;
//Иначе
// Возврат Число(НомерДок);
//КонецЕсли;
КонецФункции
Форма ответа