|   |   | 
| 
 | Преобразование к типу число не может быть выполнено | ☑ | ||
|---|---|---|---|---|
| 0
    
        Смотрящий от 1С 07.03.13✎ 18:22 | 
        Непонятный глюк. При выполнении кода ИДПлатежа = Число(Выборка.ИДплатежа);
  через внешнюю обработку все отрабатывает нормально. При запуске через фоновое задание выпадает подобная ошибка. Смотрел в отладчике. Ничего необычного нет. Значение типа "1 441 003" тип значения строка хочу преобразовать в число. Кто нибудь знает особенности приведения к типу число на сервере? | |||
| 1
    
        Kreont 07.03.13✎ 18:23 | 
        ну а пробелы всередине не смущают?     | |||
| 2
    
        1C-band 07.03.13✎ 18:23 | 
        (0) СтрЗаменить(Выборка.ИДплатежа, " ", "") или не?     | |||
| 3
    
        Смотрящий от 1С 07.03.13✎ 18:27 | 
        (1)не очень. В отладчике чудно преобразует в число.
  (2) точно, хотел попробовать, отложил. Сейчас проверю | |||
| 4
    
        Kreont 07.03.13✎ 18:30 | 
        Тестируешь на той же базе?
  Может влияют региональные настройки символа разделения разрядов для сервера, ИБ и клиента. Хз какие тут могут быть варианты, потому лучше всегда пропускать полученную строку из чисел через фильтр типа : СтрЗаменить(СтрокаЦифр,Символы.НПП,"") | |||
| 5
    
        exwill 07.03.13✎ 18:30 | 
        Там не пробелы.     | |||
| 6
    
        Смотрящий от 1С 07.03.13✎ 18:33 | 
        (5) а что может быть?     | |||
| 7
    
        Смотрящий от 1С 07.03.13✎ 18:36 | 
        Вставил запись в журнал регистрации. Сначала вывожу для себя текущее значение "Отладка:  1 441 003 строковая длина 9 тип значения Строка". Следующее сообщение о вылете "{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(575)}: Преобразование значения к типу Число не может быть выполнено"     | |||
| 8
    
        Живой Ископаемый 07.03.13✎ 18:40 | 
        Известно что, непробелы     | |||
| 9
    
        Живой Ископаемый 07.03.13✎ 18:40 | 
        Победитовый клюв детектед     | |||
| 10
    
        Смотрящий от 1С 07.03.13✎ 19:17 | 
        (9) добрее надо быть ))
  победил с помощью этого Функция УбратьЛишниеСимволы(Строка1) Экспорт НовСтрока = ""; ПравильныеСимволы = "1234567890"; Для Сч = 1 по СтрДлина(Строка1) Цикл ТекСимв = Сред(Строка1, Сч, 1); Если Найти(ПравильныеСимволы, ТекСимв) > 0 Тогда НовСтрока = НовСтрока + ТекСимв; КонецЕсли; КонецЦикла; Возврат НовСтрока; КонецФункции | |||
| 11
    
        ДенисЧ 07.03.13✎ 19:41 | 
        (10) ррррррассссттррррелять.     | |||
| 12
    
        Утконос 07.03.13✎ 19:44 | 
        (10) 29.03.2004 Стаж: 9 г. // Списан по проф непригодности     | |||
| 13
    
        Mashinist 07.03.13✎ 20:04 | 
        (12) +100500     | |||
| 14
    
        Skylark 07.03.13✎ 20:09 | 
        Судя по заголовку темы, автор отсюда уже слинял.
  Не будем тогда тайну раскрывать. Пусть пребывает в своем блаженном неведении относительно могущества кое-какой функции на букву Ф... | |||
| 15
    
        Живой Ископаемый 07.03.13✎ 20:22 | 
        (10) копрокод детектед.
  Для тех кто так пишетесть специальное место в аду. | |||
| 16
    
        Classic 07.03.13✎ 20:32 | 
        Злые вы. 
  Автор, гугли про неразрывный пробел | |||
| 17
    
        Kvestin 07.03.13✎ 21:09 | 
        (16) Согласен.
  ИДПлатежа = Число(СтрЗаменить(Выборка.ИДплатежа, Символы.НПП, "")); | |||
| 18
    
        Skylark 08.03.13✎ 02:26 | 
        (17) бугага
  прямо кунсткамера | |||
| 19
    
        Chai Nic 08.03.13✎ 08:36 | 
        (12) (13) (18)
  Ну вот нафига переходить на личности? Есть ЗАДАЧА, так подскажите РЕШЕНИЕ... Если вместо решения начинаете обсуждать личность спросившего - возникает разумный вывод - решения у вас нет, а есть только понты) | |||
| 20
    
        Chai Nic 08.03.13✎ 08:42 | 
        (15) Это обычный "школьный" способ формирования строки, состоящей только из цифр, имеющихся в исходной строке, в изначальном порядке. Да, возможно он не оптимален по быстродействию, но это не имеет значения в отрыве от остального алгоритма.. может, там идет выборка по документам, и потери не неэффективную работу со строками многократно подавятся другими накладными расходами. Говорить о неэффективности можно только после общего анализа производительности и поиска узких мест.     | |||
| 21
    
        Эмбеддер 08.03.13✎ 08:56 | 
        (10) число может быть и дробным. и со знаком минус     | |||
| 22
    
        Эмбеддер 08.03.13✎ 08:57 | 
        21+ хотя для ИДПлатежа неактуально. и я бы не назвал это быдлокодом     | |||
| 23
    
        Chai Nic 08.03.13✎ 09:11 | 
        Мне больше интересно, почему при этом "через внешнюю обработку все отрабатывает нормально" и "В отладчике чудно преобразует в число". Костыль из (10) конечно проблему решает, но хотелось бы выяснить причину различного поведения.     | |||
| 24
    
        БибиГон 08.03.13✎ 09:58 | 
        (23) Если число меньше 1000 то проблем не будет     | |||
| 25
    
        Живой Ископаемый 08.03.13✎ 10:02 | 
        (23) случайность, так уж вышло что в одном случае не превышает порогового значения. А во втором превышает     | |||
| 26
    
        Живой Ископаемый 08.03.13✎ 10:03 | 
        И вообще, ответ уже даден     | |||
| 27
    
        zak555 08.03.13✎ 10:05 | 
        7ка это умеет     | |||
| 28
    
        Chai Nic 08.03.13✎ 10:28 | 
        (27) Восьмерка позволяет эффективно решать проблемы, которые в семерке просто бы не возникли)     | |||
| 29
    
        Живой Ископаемый 08.03.13✎ 13:16 | 
        (28) уже нашел правильный ответ?     | |||
| 30
    
        Chai Nic 08.03.13✎ 14:39 | 
        (29) А я и не ищу.. проблема у автора, но мне интересно, как её решить, если кто-то сообщит - буду рад.     | |||
| 31
    
        Aleksey 08.03.13✎ 14:49 | 
        (11),(12),(13),(15), ...
  Это вы еще не видили как в типовых от 1С это реализовано | |||
| 32
    
        Aleksey 08.03.13✎ 14:52 | 
        // Удаляет все пользовательские префиксы из номера объекта (все нецифровые символы)
  // Переменная НомерОбъекта должна соответствовать шаблону: ООГГ-ХХХ...ХХ или ГГ-ХХХ...ХХ, где // ОО - префикс организации; // ГГ - префикс информационной базы; // "-" - разделитель; // ХХХ...ХХ - номер/код объекта. // // Параметры: // НомерОбъекта - Строка - номер или код объекта из которого требуется лидирующие нули // Функция УдалитьПользовательскиеПрефиксыИзНомераОбъекта(Знач НомерОбъекта) Экспорт СтрокаЦифровыхСимволов = "0123456789"; Если НомерСодержитСтандартныйПрефикс(НомерОбъекта) Тогда Если НомерСодержитПятизначныйПрефикс(НомерОбъекта) Тогда Префикс = Лев(НомерОбъекта, 5); НомерПолный = Сред(НомерОбъекта, 6); Иначе Префикс = Лев(НомерОбъекта, 3); НомерПолный = Сред(НомерОбъекта, 4); КонецЕсли; Иначе Префикс = ""; НомерПолный = НомерОбъекта; КонецЕсли; Номер = ""; Для Индекс = 1 По СтрДлина(НомерПолный) Цикл Символ = Сред(НомерПолный, Индекс, 1); Если Найти(СтрокаЦифровыхСимволов, Символ) > 0 Тогда Номер = Номер + Символ; КонецЕсли; КонецЦикла; Возврат Префикс + Номер; КонецФункции И чем это сильно отличается от так вами называемого копро кода в (10)? | |||
| 33
    
        Aleksey 08.03.13✎ 14:55 | 
        СтрокаЦифровыхСимволов = "0123456789";
  Номер = ""; Для Индекс = 1 По СтрДлина(НомерПолный) Цикл Символ = Сред(НомерПолный, Индекс, 1); Если Найти(СтрокаЦифровыхСимволов, Символ) > 0 Тогда Номер = Номер + Символ; КонецЕсли; КонецЦикла; Найдите 10 отличий ПравильныеСимволы = "1234567890"; Для Сч = 1 по СтрДлина(Строка1) Цикл ТекСимв = Сред(Строка1, Сч, 1); Если Найти(ПравильныеСимволы, ТекСимв) > 0 Тогда НовСтрока = НовСтрока + ТекСимв; КонецЕсли; КонецЦикла; Так что будем расстреливать всех писателей типовых в 1С или через одного? Или всё таки добрее надо быть и сдержание | |||
| 34
    
        Aleksey 08.03.13✎ 14:58 | 
        Кто неверет в типовой БП 3.0 эта процедура находится в общих модулях в ПрефиксацияОбъектовКлиентСервер. И судя по названию скорее всего точно такая же и в БСП должна находиться и в других типовых на основе БСП     | |||
| 35
    
        Chai Nic 08.03.13✎ 15:02 | 
        "Так что будем расстреливать всех писателей типовых в 1С или через одного? "
  Вывести бы их всех в чистое поле, поставить лицом к стенке и пустить пулю в лоб, чтобы на всю жизнь запомнили! )) | |||
| 36
    
        GANR 08.03.13✎ 15:29 | 
        (3) Только не СтрЗаменить(Выборка.ИДплатежа, " ", ""), а СтрЗаменить(Выборка.ИДплатежа, Символы.НПП, ""). На самом деле это не совсем пробел, а другой символ Юникода под названием "неразрывный пробел".     | |||
| 37
    
        Эмбеддер 08.03.13✎ 16:02 | 
        (36) почему юникод? не обязательно. код символа 0xA0.
  и совсем для полноты картины добавлю, придумала его фирма Adobe | |||
| 38
    
        Snovy 08.03.13✎ 19:28 | 
        Прикольно. После (31)-(33) все крутые спецы из ветки сбежали...     | |||
| 39
    
        Chai Nic 08.03.13✎ 20:43 | 
        (38) "Крутые спецы" вовсе не заинтересованы плодить себе конкурентов, поэтому от них толку мало.. они больше саморекламой занимаются, чем помощью :)     | |||
| 40
    
        Kvestin 08.03.13✎ 21:08 | 
        (39) Не совсем понимаю что это за реклама. Желания купить услуги таких спецов у меня не возникает точно. 
  Скорее таким образом они хотят повысить "чувство собственной значимости". Все это делают по разному: кто-то путается унизить других (или подчеркнуть их незнание), кто-то помогает. А кто-то пишет подобные посты как я - если быть до конца честным. Цель одна - средство каждый выбирает сам. | |||
| 41
    
        Живой Ископаемый 08.03.13✎ 21:23 | 
        Будем расстреливать только тех, кто ради того, чтобы избавиться от неразрывного пробела, а еще лучше проанализировать, откуда он взялся в строке, будет использовать этот код для того чтобы сконвертировать строку в число.
  А писателей типовых, которые дают этот инструмент в руки неразумных 1сников от безысходности мы растреливать не станем, нет. | |||
| 42
    
        Живой Ископаемый 08.03.13✎ 21:32 | 
        Но, те кто не видит за деревьями леса, может продолжать причитать о необходимости быть добрее     | |||
| 43
    
        Chai Nic 08.03.13✎ 21:42 | 
        (41) Этот код позволяет во-первых избавиться _не только_ от неразрывного пробела, а и от всех нецифровых символов. Так что он универсальнее замены неразрывного пробела на пустую строку. Во-вторых, "проанализировать, откуда он взялся" не всегда имеет смысл - иногда исходные данные приходится принимать такими, какие они есть. Мы же не знаем предыстории задачи.     | |||
| 44
    
        GANR 08.03.13✎ 22:18 | 
        (39) Кто Вам это сказал???? 
  П о - н а с т о я щ е м у крутые спецы заинтересованы в том, чтобы заниматься более интересными в профессиональном плане задачами, чем "сейчас" -> им нужно освободиться от "мелочевки", которой они вынуждены заниматься -> для этого им нужен квалифицированный напарник. Их не очень интересует максимизация их з/п, так как 100 - 120 тыщ., на которые они л е г к о могут претендовать, им за глаза хватает. А те про кого Вы говорите - просто хапуги. P.S. Чтобы мозг человека хорошо работал, необходимо, чтобы у него была чистая с о в е с т ь (так, по словам людей советской закваски, учили в НИЯУ МИФИ). | |||
| 45
    
        hhhh 08.03.13✎ 23:29 | 
        (43) ну возьми такие строки: -2, 2.2, -1.5 - убедишься, что твой код выдает галиматью.     | |||
| 46
    
        Aleksey 09.03.13✎ 01:31 | 
        (45) это у вас так бухи номера проставляют?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |