![]() |
![]() |
![]() |
|
Как убрать лидирующие нули номера документа при выводе в отчёте? | ☑ | ||
---|---|---|---|---|
0
reanimator
19.10.09
✎
23:49
|
Есть внешний отчёт на СКД. Но в общем-то это, наверное, без разницы.
В отчёте надо вывести в колонку "номер документа", но без лидирующих нулей этого номера. В 7.7 это бы элементарно решалось через использование вызова собственной функции. Но в V8, как я понял, такой фокус не пройдёт, там только переменные можно указывать :( Собственно, вопрос - как реализовать вывод номера документа без нулей? Ткните в нужном направлении... |
|||
1
zak555
19.10.09
✎
23:50
|
Число()
|
|||
2
zak555
19.10.09
✎
23:50
|
(0) или есть префикс?
|
|||
3
Федя Тяпкин
19.10.09
✎
23:51
|
ОбщегоНазначения.ПолучитьНомерНаПечать(ОбъектДокумент)
Оно? |
|||
4
zak555
19.10.09
✎
23:52
|
(3) а так (1) ?
|
|||
5
Федя Тяпкин
19.10.09
✎
23:54
|
(4) если есть префикс не прокатит
|
|||
6
reanimator
19.10.09
✎
23:54
|
(1) На Число() ругается.
(2) Префикса нет. (3) Пробовал. Пишет ошибку при выводе отчёта. Всю голову уже сломал... :( |
|||
7
zak555
19.10.09
✎
23:55
|
(5) а если нету?
|
|||
8
Федя Тяпкин
19.10.09
✎
23:55
|
(6) что за ошибка? передавать надо не номер а объект.
|
|||
9
zak555
19.10.09
✎
23:55
|
(6) что говорит?
|
|||
10
Федя Тяпкин
19.10.09
✎
23:56
|
(7) сегодня нет, завтра есть. правильнее использовать (3) :)
|
|||
11
reanimator
19.10.09
✎
23:57
|
(8,9) Синтаксическая ошибка "ОбщегоНазначения.ПолучитьНомерНаПечать".
|
|||
12
zak555
19.10.09
✎
23:57
|
(10) да это понятно, всё равно в (0) - внешний )))
а какова фунцкия в (3) |
|||
13
reanimator
19.10.09
✎
23:58
|
+(11) Если полностью:
{Форма.ФормаОтчета(94)}: Ошибка при вызове метода контекста (Следующий): Ошибка компоновки данных ЭлементРезультатаКомпоновкиДанных = ПроцессорКомпоновки.Следующий(); по причине: Ошибка компоновки данных по причине: Ошибка получения данных по причине: Ошибка в выражении по причине: Синтаксическая ошибка "ОбщегоНазначения.ПолучитьНомерНаПечать" |
|||
14
Федя Тяпкин
19.10.09
✎
23:59
|
(12) согласен, если не типовая может не сработать )))
|
|||
15
Федя Тяпкин
20.10.09
✎
00:00
|
вернее функции может не быть
|
|||
16
reanimator
20.10.09
✎
00:00
|
(12) Да отчёт внешний, но в принципе для БП. По книжке вроде должен брать процедуры из общих модулей в "выражении представления"... но не берёт...
|
|||
17
Федя Тяпкин
20.10.09
✎
00:00
|
(13) текст вывода результата в студию!
|
|||
18
reanimator
20.10.09
✎
00:02
|
Вообще можно реализовать вывод своей функции в отчёт? Есть какие-нибудь способы?
Пробовал пользовательские поля, не берёт функции. Пробовал свой макет для поля, не берёт функции. Пробовал выражения представления для поля, не берёт функции. |
|||
19
reanimator
20.10.09
✎
00:03
|
(17) Да вроде стандартный брал...
ЭлементыФормы.Результат.Очистить(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат); //ПроцессорВывода.Вывести(ПроцессорКомпоновки); ПроцессорВывода.НачатьВывод(); Пока Истина Цикл ЭлементРезультатаКомпоновкиДанных = ПроцессорКомпоновки.Следующий(); Если ЭлементРезультатаКомпоновкиДанных = Неопределено Тогда Прервать; КонецЕсли; ПроцессорВывода.ВывестиЭлемент(ЭлементРезультатаКомпоновкиДанных); КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); КоличествоГруппировок = ЭлементыФормы.Результат.КоличествоУровнейГруппировокСтрок(); Если КоличествоГруппировок > 0 Тогда ПовторятьСоСтроки = 4 + КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Количество(); ЭлементыФормы.Результат.ПовторятьПриПечатиСтроки = ЭлементыФормы.Результат.Область(ПовторятьСоСтроки, , ПовторятьСоСтроки + КоличествоГруппировок - 1); КонецЕсли; |
|||
20
reanimator
20.10.09
✎
00:12
|
+(18) Вычисляемые поля ещё пробовал...
Такое чувство, что это как-то просто должно делаться, просто я по недостатку знаний чего-то не догоняю... |
|||
21
reanimator
20.10.09
✎
00:14
|
Отчёт-то в принципе рабочий... но вот захотелось людям номера документов без нулей в отчёте видеть...
|
|||
22
Федя Тяпкин
20.10.09
✎
00:15
|
попробовал. засада какая то
ничего умнее предложить не могу как вывести в ТЗ для дальнейшей обработки |
|||
23
reanimator
20.10.09
✎
00:18
|
Главное, если просто поставить Формат(Регистратор.Номер, параметры), то не ругается, но строку в число не преобразовывает.
А если ставишь Формат(Число(Регистратор.Номер), параметры) - ругается на Число... :( |
|||
24
Федя Тяпкин
20.10.09
✎
00:19
|
(23) в "выражении представления" ставишь?
|
|||
25
reanimator
20.10.09
✎
00:19
|
(22) Не может же быть, что 8-ка тупее 7-ки... Но вообще - да, засада...
|
|||
26
reanimator
20.10.09
✎
00:20
|
(24) В нём. Но вообще - пробовал по-моему уже везде "ткнуть".
|
|||
27
reanimator
20.10.09
✎
00:21
|
Не может же быть, чтоб клиенты ни к кому не приставали с этим вопросом :)
|
|||
28
reanimator
20.10.09
✎
00:23
|
Блин, завтра вставать рано... пойду на боковую... утро вечера мудренее...
|
|||
29
Evrik
20.10.09
✎
07:21
|
Формат всегда возвращает строковое значение :)
|
|||
30
reanimator
20.10.09
✎
08:00
|
(29) Сильная мудрость :)
|
|||
31
reanimator
20.10.09
✎
14:21
|
Вопрос в силе... :(
|
|||
32
reanimator
20.10.09
✎
14:22
|
Кроме (22) есть ещё варианты?
|
|||
33
tsr
20.10.09
✎
14:26
|
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
про Инициализировать посмотри в СП |
|||
34
hhhh
20.10.09
✎
14:27
|
(32) Формат(Число(Сред(Регистратор.Номер, 4)), параметры) - чтобы префикс отсечь
|
|||
35
tsr
20.10.09
✎
14:29
|
Инициализировать(<Макет>, <ВнешниеНаборыДанных>, <ДанныеРасшифровки>, <ВозможностьИспользованияВнешнихФункций>)
Параметры: <Макет> (обязательный) Тип: МакетКомпоновкиДанных. Макет, для которого будет выполняться компоновка. <ВнешниеНаборыДанных> (необязательный) Тип: Структура. Ключ структуры соответствует имени внешнего набора данных. Значение структуры - внешнему набору данных. <ДанныеРасшифровки> (необязательный) Тип: ДанныеРасшифровкиКомпоновкиДанных. Объект, в котором нужно заполнить данные расшифровки. Если не указан, то расшифровка заполняться не будет. <ВозможностьИспользованияВнешнихФункций> (необязательный) Тип: Булево. Указывает возможность использования функции общих модулей конфигурации в выражениях компоновки данных. Значение по умолчанию: Ложь |
|||
36
zak555
20.10.09
✎
14:32
|
(34) так надо знать длину префикса
|
|||
37
hhhh
20.10.09
✎
14:35
|
(35) не прокатит.
ОбщегоНазначения.ПолучитьНомерНаПечать(ОбъектДокумент) до такой степени тормозная, что иногда хочется комп в окошко выбросить. |
|||
38
reanimator
20.10.09
✎
14:45
|
(35) Спасибо, что направили на путь истинный!!!! :)
|
|||
39
reanimator
20.10.09
✎
15:33
|
В общем, всё получилось, спасибо.
Жалко, что можно вставлять только функции общих модулей конфигурации. Надо, например, свою функцию вставить во внешнем отчёте, а конфигурацию трогать нельзя. Как-нибудь можно подключить функции, определённые во внешнем отчёте? Например, в модуле объекта. Или как-то по-другому? |
|||
40
reanimator
20.10.09
✎
16:43
|
Тогда может кто-нибудь знает - есть функция в БП, которая возвращает Вид документа?
Регистратор.Метаданные().Имя - не прокатывает :( |
|||
41
hhhh
20.10.09
✎
17:03
|
(39) ну добавь туда свой общий модуль, что тебя останавливает?
|
|||
42
EvgeniuXP
20.10.09
✎
18:29
|
0+"003"
|
|||
43
reanimator
20.10.09
✎
19:33
|
(42) Интересный вариант, надо будет проверить.
(41) Куда - в конфигурацию? Конфигурацию не хочется с поддержки снимать из-за такого. Или во внешний отчёт можно добавить общий модуль?! :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |