Имя: Пароль:
1C
1С v8
Преобразовать строку в число Запрос 1С
,
0 Gossar1C
 
30.04.13
15:05
Здравствуйте. Тема может быть бабабаян, но можно ли как то в СКД преобразовать строковое поле в число?
1 eklmn
 
гуру
30.04.13
15:07
2 Волшебник
 
30.04.13
15:07
(0) Нельзя
3 Gossar1C
 
30.04.13
15:08
Просто есть строковое поле ЗаказКлиента.ПроцентОтПрайса и содержит он только дробное числовое значение, но под типом строка, а нужно это все в отчете посчитать...
4 Волшебник
 
30.04.13
15:08
(3) ВЫРАЗИТЬ(Поле КАК Число(15,3))
5 ЧашкаЧая
 
30.04.13
15:08
В СКД можно вызвать функцию общего модуля.
6 ThreeTONE
 
30.04.13
15:09
выбор когда поле = "1" тогда 1
     когда поле = "2" тогда 2
     когда поле = "3" тогда 3

...
7 drcrasher
 
30.04.13
15:09
(1) ну зачем, если есть миста?
(4) точно? оно вроде как для полей одного типа
8 drcrasher
 
30.04.13
15:10
(6) бггг )
а как будет выглядеть полная конструкция для условия "дробное числовое значение, но под типом строка"?
9 Птица
 
30.04.13
15:10
интересно, кто же догадался процент хранить в строке?..
10 Волшебник
 
30.04.13
15:12
(3) создай новое поле типа число, перегони туда данные обработкой, используй его в запросе
11 Gossar1C
 
30.04.13
15:12
(9) предыдущий одинэснег -_-
12 Gossar1C
 
30.04.13
15:12
(10) да как вариант, спасибо)
13 drongo-god
 
30.04.13
15:12
(4) думаю не получится.
не умеют запросы в 1с преобразовывать типы
14 Aprobator
 
30.04.13
15:13
(10) а если док в закрытом периоде?
15 bahus
 
30.04.13
15:13
Можно с использованием функции из общего модуля. В вычисляемых полях добавляешь поле и пишешь что-то вроде ОбщегоНазначения.ПреобразоватьСтрокуВЧисло(Строка)
16 Волшебник
 
30.04.13
15:13
(14) Объект.ОбменДанными.Загрузка = Истина
17 MSII
 
30.04.13
15:14
А вообще взять и вынести в свойство/доп.реквизит. И документы перезаписывать не нужно.
18 Aprobator
 
30.04.13
15:16
(16) я не про то. Остатки могут съехать и т.п..
19 Волшебник
 
30.04.13
15:17
(0) Измени тип этого поля на составной, в список типов добавь число. Все данные обработай, преврати в числа и запиши. Затем строку убери из списка типов.
20 Волшебник
 
30.04.13
15:17
(18) От простой записи документа остатки не поплывут. Мы же без проведения
21 Gossar1C
 
30.04.13
15:18
(15) спасибо, попробую найти эту функцию
22 Волшебник
 
30.04.13
15:19
(21)

Функция ПреобразоватьСтрокуВЧисло(Строка)
  Возврат Число(Строка);
КонецФункции
23 Aprobator
 
30.04.13
15:20
(20) а млин, все еще 7 кой местами живу )
24 Gossar1C
 
30.04.13
15:20
(22) а в модуле объекта разместить если? с экспортом или надо в общий модуль?
25 Волшебник
 
30.04.13
15:21
(24) надо в общий модуль
26 Gossar1C
 
30.04.13
15:25
(25) хм преобразовывать не хочет, может потому что дробная часть есть? За помощь спасибо, попробую сам додумать)
27 Волшебник
 
30.04.13
15:28
(26) разделитель целой и дробной части какой? должна быть точка.

удали из строки все пробелы, включая неразрывные

Функция ПреобразоватьСтрокуВЧисло(Строка)
  Строка = СокрЛП(Строка);
  Строка = СтрЗаменить(Символы.НПП,"");
  Строка = СтрЗаменить(",",".");
  Возврат Число(Строка);
КонецФункции
28 Птица
 
30.04.13
15:29
(22) + Экспорт
29 Maxus43
 
30.04.13
15:30
Сообщить(Число(" 25,6"));
   Сообщить(Число("25.6 "));

всё работает, скорее дело в левых символах, типа НПП. сам разделитель неважен
30 bahus
 
30.04.13
15:31
Если отчет программно формируется - нужно в инициализации построителя поставить истину последним параметром:

   ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных,ДанныеРасшифровки, Истина);
31 bahus
 
30.04.13
15:33
*..инициализации процессора компановки..