удаление нулей в СКД в номере #704694


#0 by Валидатор
Делаю отчет на скд, нужно чтобы в отчете был номер документа, но выводился он без 0й, то есть не 0000000001, а просто 1, вот можно в самом конструкторое СКД это сделать и как?
#1 by Maxus43
я юзал для этого функции встроенного языка в общих модулях
#2 by Maxus43
ПодготовитьНомерНаПечать, её в СКД вызывай
#3 by Валидатор
а без погружения в модуль? в самом конструкторе можно это сделать7
#4 by Maxus43
портянка жёсткая будет имхо, проще в вычисляемых полях вызывать функцию общего модуля. По сути - это и будет в "конструкторе" СКД :)
#5 by Maxus43
хотя... в вычисляемых полях можно преобразовать строку в число? тогда можно. Проблема если будут префиксы
#6 by Валидатор
префиксов нет, можешь подробнее рассказать про вычисляемые поля, на Путь к данным я же указываю Номер или что7
#7 by Maxus43
путь к данным - это как твоё поле будет называться, а в выражении попробуй написать Число(ТвоёПоле)
#8 by fisher
"Выражение представления" для этого используется.
#9 by Maxus43
не, не катит преобразование в СКД...
#10 by Валидатор
Ошибка исполнения отчета по причине: Ошибка получения данных по причине: Функция не найдена "ЧИСЛО"
#11 by Maxus43
как ты нули из строки уберёшь лидирующие?
#12 by Maxus43
дада, я тож проверил... почему то думал можно(
#13 by Валидатор
Так и че получается, для того, чтобы в отчете убрать эти нули в номере документа, надо отчет не на СКД писать что ли? оО
#14 by Maxus43
не на СКД у тебя тоже не получится в запросе же, на СКД как раз можно - вызвать там процедурку общего модуля, она переделает как надо
#15 by Валидатор
так а где вызвать то ее?)
#16 by Maxus43
в вычисляемом поле, в выражении будет МойМодуль.МояФункция(ТвойНомерСтрока)
#17 by Maxus43
а в функции соответственно - Вовзрат ЧИСЛО(ТвойНомерСтрока)
#18 by Валидатор
мой модуль это что?
#19 by fisher
Упс :)
#20 by Wobland
это программный модуль, исключительные авторские права на который принадлежат Максусу43. будешь использовать его разработки - надо упомянуть
#21 by Валидатор
блин какие авторские права, я и так тут запутался, вы меня еще больше путаете
#22 by vmv
для извращенцев есть выход без общих модулей, в запросе или вычисляемом поле пишем Выбор Когда Подстрока(Номер, 9, 1) = 0 Выбор Когда Подстрока(Номер, 8, 1) = 0 Конец Как ЗначащийНомер
#23 by Maxus43
в каком модуле ты написал функцию, для преобразования строки в число, либо для обрезания нулей лидирующих у строки?) в типовых это функция Функция ПолучитьНомерНаПечать(Документ, МассивПрефиксов = Неопределено, ПечатьПрефикса = Ложь) Экспорт, модуля ОбщегоНазначения
#24 by Maxus43
всё бы хорошо, а чего с номером 0010101 будет?
#25 by vmv
24 тогда подключаем С и делаем бинарный анализ на асме
#26 by Maxus43
тогда твой функция вернёт "1", а номер "10101" :)
#27 by vmv
если серьезно, то Выбор Когда нужно строить с головы и тогда прокатит, подозреваю что это это прокатит, не такая большая конструкция, но сам использую общие - мне лень писать простынки в СКД
#28 by fisher
Хм... Можно таким макаром определить позицию первой значащей цифры и потом ПОДСТРОКА(Номер, ПозицияПервойЗначащейЦифры, ДлинаНомера - ПозицияПервойЗначащейЦифры) Ну, идея примерно такая.
#29 by Maxus43
да можно, в было... портянка некрасивая будет
#30 by vmv
условие включения хвоста в результрующее поле Выбор Когда элементарно "как только встретили цифру 1,2,3,4,5,6,7,8,9 бери хвост Номер в результат" и даже префиксы не помеха
#31 by Валидатор
вот функция: Функция ПолучитьНомерНаПечать(Знач НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь) Экспорт
#32 by Maxus43
молодец, нашёл
#33 by Валидатор
получается мне в СКД делать так: 1. ЗаказвКарьер.Номер - это нужный нам номер документа 2. на закладке выражение я в 1 поле пишу: Номер документа в выражение я пишуу: ПрефиксацияОбъектовклиентсервер.ПолучитьНомерНаПечать(ЗаказвКарьер.Номер) ВыражениеПредставления - ЗаказвКарьер.Номер так?
#34 by Maxus43
у тебя же номер из документа берётся? передавай туда ссылку на документ и всё
#35 by Maxus43
нет, ПрефиксацияОбъектовклиентсервер.ПолучитьНомерНаПечать(СсылкаНаДокумент)
#36 by Maxus43
тьфу, всё правильно ты писал, это у меня ссылка, у тебя номер
#37 by Maxus43
на закладке Вычисляемые Поля это надо писать
#38 by Валидатор
там и пишу, в поле выражение: ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Номер) и все равно у меня номер с нулями
#39 by Maxus43
ставь там точку останова и иди, чо не так смотри
#40 by Валидатор
как я точку останова поставлю в контсркуторе СКД?)
#41 by Maxus43
Тебе нужна только эта по сути функция -     НомерОбъекта = УдалитьЛидирующиеНулиИзНомераОбъекта(НомерОбъекта); Если она экспортная - сразу её и вызывай
#42 by Maxus43
в модуле можно поставить точку, там код исполняется точно так же
#43 by Валидатор
больше ничего не ставить же на вычисляемых полях?
#44 by Валидатор
о, получилось!
#45 by Maxus43
алилуя!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С