Имя: Пароль:
1C
 
Как убрать лидирующие нули номера документа при выводе в отчёте?
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) Куда - в конфигурацию? Конфигурацию не хочется с поддержки снимать из-за такого. Или во внешний отчёт можно добавить общий модуль?! :)