Имя: Пароль:
1C
1С v8
КАК в отчете на СКД сделать отбор по строковому типу (номер заявки)
,
0 Sergei1982
 
30.10.12
11:55
Помогите, пожалуйста, делая отчет на СКД, в отборе нужно сделать диапазон чтобы поьлзователь мог выбирать диапазон заявок типа больше или равно и ниже строчка меньше или равно в пользовательских настройках формы отчета. Беда в том, что номер заявки строковой тип, так в конторе завелось, типа могут быть заявки, где номер будет с префиксами, отсюда и гемморой
1 Godofsin
 
30.10.12
11:56
Сделай вычмсляемый параметр
2 Sergei1982
 
30.10.12
11:56
не знаю как ))
3 Sergei1982
 
30.10.12
11:57
где-то надо лезть в вычисляемые поля, но не знаю как именно
4 Sergei1982
 
30.10.12
11:58
вот этот реквизит ЗаявкиНаОказаниеУслуг.НомерБланка
5 Sergei1982
 
30.10.12
11:59
он соответственно строковый тип
6 samozvanec
 
30.10.12
11:59
в вычисляемых полях есть выражение, которое позволяет вызвать функцию общего модуля и передать параметр. можно пробегаться по кодам и обрубать все что не цифры
7 Godofsin
 
30.10.12
12:02
Так а заявки с префиксами то существуют в реале?
Если нет, то на закладку "вычисляемое поле"
8 Sergei1982
 
30.10.12
12:04
вроде существуют ))
9 Godofsin
 
30.10.12
12:05
тогда (6)
10 Sergei1982
 
30.10.12
12:05
а как функция должна выглядеть типа : число (ЗаявкиНаОказаниеУслуг.НомерБланка);?
11 Godofsin
 
30.10.12
12:06
ну типа, только буквы надо оттуда убирать/заменять
12 Sergei1982
 
30.10.12
12:09
да буквы ладно, там в основном заявки с номерами , только вот они, как я говорил, строковой тип имеют
13 Godofsin
 
30.10.12
12:10
(12) что значит ладно? как ты к числу приведешь "ЧЧ000789"??
14 Godofsin
 
30.10.12
12:10
ошибка будет
15 Sergei1982
 
30.10.12
12:11
никак, конечно, но уж пока бы так и то хлеб ))
16 GANR
 
30.10.12
12:12
(0)(15) Конструктор СКД \ закладка "вычисляемые поля" \ добавить поле с выражением Вычислить(ЗаявкиНаОказаниеУслуг.НомерБланка). И строка превращается в число.

Подробнее - "Справка \ 1С:Предприятие \ Система компоновки данных \ Язык выражений системы компоновки данных \ Функции языка выражения системы компоновки данных"
17 Sergei1982
 
30.10.12
12:12
вечно у нас не продумают, а потом надо извращаться переправлять все. Сразу присвоить числовой тип и все, нафига префиксы, цифр что ли мало ))
18 Sergei1982
 
30.10.12
12:13
и он Вычислить(ЗаявкиНаОказаниеУслуг.НомерБланка) определит что надо в число превращать? А в общем модуле колдовать не надо?
19 Sergei1982
 
30.10.12
12:14
пишет такое поле не найдено
20 GANR
 
30.10.12
12:15
(18) Провел эксперимент со стандартным реквизитом справочника "Код" - всё прокатило. И общих модулей не надо, что позволяет быть отчету внешним.
21 Sergei1982
 
30.10.12
12:16
вроде получилось прописать, а после вычисляемых этих полей что еще делать?
22 GANR
 
30.10.12
12:16
(19) Ах да... Надо псевдоним этого поля в запросе задать а не через точку обращаться
23 GANR
 
30.10.12
12:16
+(19) Так, наверное Вычислить(НомерБланка)
24 Sergei1982
 
30.10.12
12:16
Уважаемый Ganr, значит просто достаточно в вычисляемых полях прописать поле, потом выражение и он сам автоматом должен слопать?
25 Sergei1982
 
30.10.12
12:17
а как? ))
26 Godofsin
 
30.10.12
12:17
(16) Век живи, век учись... Я и не знал... Работает?
27 Sergei1982
 
30.10.12
12:18
сейчас проверю, не знаю пока
28 GANR
 
30.10.12
12:18
Я со строковым кодом справочника в колонке выражение прописал так Вычислить(Код) - пашет
29 GANR
 
30.10.12
12:18
(25) см. (28)
30 Sergei1982
 
30.10.12
12:20
"Номер бланка Больше или равно ""1"" И
Номер бланка Меньше или равно ""10000""" в отборе указал, ничего не выдал гад
31 Sergei1982
 
30.10.12
12:21
просто в колонке выражение прописать " Вычислить(Код) " ?
32 Sergei1982
 
30.10.12
12:22
он пишет Поле не найдено "код"
33 GANR
 
30.10.12
12:26
(32) Точно... Выводить - выводит, а отбор не делает.
34 Sergei1982
 
30.10.12
12:27
Тип значения какой указывать имеющийся или желаемый ?
35 Sergei1982
 
30.10.12
12:27
засада ))
36 GANR
 
30.10.12
12:28
(35) СКД - прогрессивный инструмент, но багов там столько, что лично я уже, например, был вынужден написать процедуру трансляции настроек отбора в условие запроса.
37 Sergei1982
 
30.10.12
12:29
Пишет вот что: Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Выражение не может быть вычислено "024294"
38 GANR
 
30.10.12
12:30
(34) и это не помогло
39 Defender aka LINN
 
30.10.12
12:30
(36) Ну, если делать нечего, то отчего бы и не написать, конечно. Только нафига?
40 GANR
 
30.10.12
12:30
(37) тогда общий модуль, со всеми вытекающими (((
41 Sergei1982
 
30.10.12
12:30
а, там же еще и нули могут быть, вот в чем дело, он не понимает что за число на ноль начинается, хреново
Значит в принципе теоретически работает
42 Sergei1982
 
30.10.12
12:31
вытекающими прямо мне на голову ))
43 GANR
 
30.10.12
12:32
(39) Это не от нечего делать, это от необходимости обеспечить работоспособность механизма с любыми правами и в любых условиях. Вот и пришлось.
44 GANR
 
30.10.12
12:33
(41) Нет. В отчет он число выводит, но вот отбор - не работает.
45 Sergei1982
 
30.10.12
12:35
у меня наоборот, отбор подставляет калькулятор, чтобы число ввести, а в отчете не показывает
46 Defender aka LINN
 
30.10.12
12:37
(43) Транслировать отбор в условия запроса СКД умеет и сама. Если у тебя получаются "не такие" условия - то у тебя что-то не так сделано в схеме
47 GANR
 
30.10.12
12:45
(46) 1 раз на 40 где-то - этого достаточно элементарнейшие условия отбора в пользовательских полях работали неправильно или вызывались исключения на ровном месте по абсолютно неведомым причинам. Что самое плохое - СКД для меня черный ящик, и я не могу туда подлезть и исправить что-то в таких случаях. Поэтому настройку условий отбора я отдал СКД - эта часть не подводила, а работу с данными - запросам.
48 GANR
 
30.10.12
12:49
+(47) Как только это будет исправлено на уровне платформы - всё отдам СКД.
49 Sergei1982
 
30.10.12
13:09
Да, скд - это сила, макеты - уже сил больше нету ))
50 Sergei1982
 
30.10.12
13:10
Спасибо БОЛЬШОЕ за помощь и советы !!! )))
AdBlock убивает бесплатный контент. 1Сергей