Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Удаление всех пробелов в автономерных знаках...

Удаление всех пробелов в автономерных знаках...
Я
   VSpicy
 
13.02.20 - 13:44
Всем доброго дня!
Подскажите пожалуйста как лучше реализовать "Удаление всех пробелов в автономерных знаках"...
Есть справочник транспортных средств, в нём поле "Государственный номер". Сейчас все госномера записаны так: В 122 АМ 777, а нужно так: В122АМ777
Вот код накидал:
Процедура УдалениеПробеловВГосНомерахНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст =  "ВЫБРАТЬ
                    |    уатТС.ГосударственныйНомер КАК ГосударственныйНомер
                    |ИЗ
                    |    Справочник.уатТС КАК уатТС";
    Транспорт = Запрос.Выполнить().Выгрузить();

    Для Каждого Стр Из Транспорт. Цикл
        УдалениеПробелов = Транспорт;
        УдалениеПробелов.ГосударственыйНомер = СтрЗаменить(УдалениеПробелов.ГосударственыйНомер," ","");
        УдалениеПробелов.Записать();
    КонецЦикла;
    
КонецПроцедуры
Выходит ошибка: ({ВнешняяОбработка.УдалениеПробеловВГосНомерах.Форма.Форма.Форма(20)}: Поле объекта не обнаружено (ГосударственыйНомер)
        УдалениеПробелов.ГосударственыйНомер = СтрЗаменить(УдалениеПробелов.ГосударственыйНомер," ","");

Подскажите пожалуйста что не так делаю или может есть другие варианты решения?
Заранее благодарен!!!
 
 
   vicof
 
1 - 13.02.20 - 13:49
Стр.ГосударственыйНомер = СтрЗаменить(УдалениеПробелов.ГосударственыйНомер," ","");
   vicof
 
2 - 13.02.20 - 13:50
точней Стр.ГосударственыйНомер = СтрЗаменить(Стр.ГосударственыйНомер," ","");
   vicof
 
3 - 13.02.20 - 13:51
И точку убрать после транспорта
   Fish
 
4 - 13.02.20 - 13:55
"   Для Каждого Стр Из Транспорт. Цикл
        УдалениеПробелов = Транспорт;"

Это пять, я считаю :))
   Fish
 
5 - 13.02.20 - 13:58
+(4) Дальше тоже огонь: "УдалениеПробелов.Записать();"

Это с учетом Транспорт = Запрос.Выполнить().Выгрузить();
И УдалениеПробелов = Транспорт;
   Homer
 
6 - 13.02.20 - 14:01
Запрос = Новый Запрос;
    Запрос.Текст =  "ВЫБРАТЬ
 |    уатТС.Ссылка КАК Ссылка, 
                    |    уатТС.ГосударственныйНомер КАК ГосударственныйНомер
                    |ИЗ
                    |    Справочник.уатТС КАК уатТС";
    Транспорт = Запрос.Выполнить().Выгрузить();

    Для Каждого Стр Из Транспорт. Цикл
        УдалениеПробелов = Стр.Ссылка.ПолучитьОбъект();
        УдалениеПробелов.ГосударственыйНомер = СтрЗаменить(УдалениеПробелов.ГосударственыйНомер," ","");
        УдалениеПробелов.Записать();
    КонецЦикла;
   VSpicy
 
7 - 13.02.20 - 14:01
(5) Я начинающий)
   Fish
 
8 - 13.02.20 - 14:03
(7) В (6) правильный код. Ты забыл получить ссылку на объект, который собрался менять.
   Fish
 
9 - 13.02.20 - 14:03
+(8) Только ещё (3) учесть :)
   VSpicy
 
10 - 13.02.20 - 14:07
(9) Да это понятно)
   Fish
 
11 - 13.02.20 - 14:10
(10) Ну и поле ГосударственныйНомер  в запросе получать необязательно. Достаточно ссылки. Только я бы ещё добавил проверку на наличие пробелов, чтобы не перезаписывать элементы, где в номере уже нет пробелов.
   VSpicy
 
12 - 13.02.20 - 14:11
(8) Похоже не совсем правильный...Ошибка осталась: {ВнешняяОбработка.УдалениеПробеловВГосНомерах.Форма.Форма.Форма(21)}: Поле объекта не обнаружено (ГосударственыйНомер)
        УдалениеПробелов.ГосударственыйНомер = СтрЗаменить(УдалениеПробелов.ГосударственыйНомер," ","");
   VSpicy
 
13 - 13.02.20 - 14:13
(11) А можно маленький пример такой проверки? Спасибо!!!
   Fish
 
14 - 13.02.20 - 14:15
(12) Показывай весь код. Может, что не так скопипастил.
(13) например, можно в цикле:
Если <ВСтрокеЕстьПробелы> Тогда

Тут твой код по замене

КонецЕсли;
   unbred
 
15 - 13.02.20 - 14:16
(13) забей болт. херач все.
(6)  лишили парня отладчика. а он начинающий. грусть.
   Builder
 
16 - 13.02.20 - 14:17
"Государственый" - с двумя Н пишется, если что. :)
   unbred
 
17 - 13.02.20 - 14:17
   Fish
 
18 - 13.02.20 - 14:20
(16) Ну может у него в конфе с одним. Откуда мы знаем :)
   Fish
 
19 - 13.02.20 - 14:20
+(18) А. не заметил. В (0) с двумя как раз.
   VSpicy
 
20 - 13.02.20 - 14:23
(16) Точняк, поспешил не заметил)
   VSpicy
 
21 - 13.02.20 - 14:24
Но теперь новая ошибка:
Реквизит недоступен для группы!
   Fish
 
22 - 13.02.20 - 14:26
(21) Поставь в запросе условие:
ГДЕ НЕ ЭтоГруппа
   VSpicy
 
23 - 13.02.20 - 14:26
Можно конечно в реквизите: Использование изменить на "Для группы и элемента"....но наверное есть и другое решение???
   Fish
 
24 - 13.02.20 - 14:27
(23) Не нужно так делать.
   GROOVY
 
25 - 13.02.20 - 14:28
Объясните сне нахрена создавать таблицу значений для обхода результата запроса?
   Fish
 
26 - 13.02.20 - 14:31
(25) Тут человек с более простыми вещами разобраться не может, а ты ему сразу про таблицу. Думаю, в случае ТС, это вообще не принципиально.
   VSpicy
 
27 - 13.02.20 - 14:34
Это рабочий вариант! Спасибо всем!!!
Запрос = Новый Запрос;
    Запрос.Текст =  "ВЫБРАТЬ
                    |    уатТС.Ссылка КАК Ссылка,
                    |    уатТС.ГосударственныйНомер КАК ГосударственныйНомер
                    |ИЗ
                    |    Справочник.уатТС КАК уатТС
                    |ГДЕ НЕ ЭтоГруппа";
    Транспорт = Запрос.Выполнить().Выгрузить();

    Для Каждого ТекСтрока Из Транспорт Цикл
        УдалениеПробелов = ТекСтрока.Ссылка.ПолучитьОбъект();
        УдалениеПробелов.ГосударственныйНомер = СтрЗаменить(УдалениеПробелов.ГосударственныйНомер," ","");
        УдалениеПробелов.Записать();
    КонецЦикла;
   unbred
 
28 - 13.02.20 - 14:34
(25) а я всегда ТЗ юзаю. не использую следующий().
поясни, в чём ошибка?
   novichok79
 
29 - 13.02.20 - 14:41
(27) через выборку кошернее
   unbred
 
30 - 13.02.20 - 14:42
(29) мне бы хотелось получить ответ от GROOVY
 
 
   novichok79
 
31 - 13.02.20 - 14:58
https://its.1c.ru/db/v8std#content:725:hdoc
специально залез, написано, что надо насильно ограничивать выборку. ТЗ и выборка без ограничения размеров - плохо.
   unbred
 
32 - 13.02.20 - 15:10
(31) не приходилось оптимизировать подобным способом ни разу.
а вот вместо выборки делать ТЗ и кайфовать от набора методов - очень часто.
для всего есть свой инструмент. в конкретном случае нам в любом случае обходить весь массив номеров. по мне дак фиолетово, каким способом.
   _Дайвер_
 
33 - 13.02.20 - 15:21
Сейчас все госномера записаны так: В 122 АМ 777, а нужно так: В122АМ777, кто сказал что нужно так? Это правильный формат, так то, а в случае необходимости вывода без пробела можно и СтрЗаменить() использовать. Я видел в гос номерах такой ужОс, что капец.
//В 122 АМ 777

В122АМ777
В122АМ 777
В 122 АМ (777)
В-122-АМ-777
В-122-АМ(777)
В/122/АМ/777
В 122 АМ ( 77)
А еще вместо латиницы кириллица, вместо О писали 0, использовали в номерах неиспользуемые символы и т.д.
   _Дайвер_
 
34 - 13.02.20 - 15:25
(33) + вместо кириллицы использовали латинский алфавит, или совместно
   unbred
 
35 - 13.02.20 - 15:27
(33) "кто сказал что нужно так"// сказал чувак, который пишет обмен с сайтом.
   Йохохо
 
36 - 13.02.20 - 15:30
(35) полтотекстовый поиск и ввод по наименованию платформенный заплакали)
а ТС получит незачет и вернется перечитать (33)
   _Дайвер_
 
37 - 13.02.20 - 15:38
(35) Серьезно? Чем ему не нравится с пробелами? Есть ограничения какие-то, или это требование стороннего сайта? А синхронизация тоже по номеру будет идти? Чувак который пишет обмен с сайтом...
   GROOVY
 
38 - 13.02.20 - 15:51
(28) Все просто вы создаете еще одну таблицу в памяти, в дополнение к результату запроса, вместо того чтобы порционно считывать выборкой по 25 строк. И это плохо, особенно если запрос выбрал пару миллионов строк.
   pechkin
 
39 - 13.02.20 - 15:54
(38) выборка не считывает порционно.
не ужто ты такому учишь? хоть ИТС почитал
   unbred
 
40 - 13.02.20 - 15:56
(39) да он сам писал этот ИТС))
   unbred
 
41 - 13.02.20 - 15:57
(37) одна из догадок, не более. (скорее всего стороннего сайта)
   unbred
 
42 - 13.02.20 - 16:02
раз пошла такая пьянка, великие оптимизаторы, посоветуйте , как перепровести 5 доков за 4 года максимально быстро? (примерное 300-500 доков  в день в базе (сумма 5ти документов))
   hhhh
 
43 - 13.02.20 - 16:27
(42) транзакцию используйте. по 500 документов одной транзакции
   pechkin
 
44 - 13.02.20 - 16:33
(40) так на ИТС явно сказано что запрос.выполнить().выбрать() и выгрузить() - одинаково
   pechkin
 
45 - 13.02.20 - 16:34
(43) в 8 такое не работает на ускорение, только в 7
   VSpicy
 
46 - 13.02.20 - 17:08
(33) Это правильное оформление! Требуемое ГИБДД!
   hhhh
 
47 - 13.02.20 - 17:12
(45) да ладно. Всё там работает в восьмерке. До 100 раз можно получить ускорение.
   VSpicy
 
48 - 13.02.20 - 17:12
(33) У нас идет обмен из УАТ в Альфа-Авто, а уже из Альфы в ЕАИСТО.
   VSpicy
 
49 - 13.02.20 - 17:14
(33) А от ЕАИСТО получаем ошибку из-за неправильно оформленного госномера.
И приходится постоянно руками править в Альфе!
   Йохохо
 
50 - 13.02.20 - 17:17
(46) тебе указали на плохой алгоритм, мало ошибок ловишь
   DrWatson
 
51 - 13.02.20 - 17:25
(49) Убрать пробелы в момент выгрузки в ЕАИСТО. Пусть в базе остаётся с пробелами, так пользователям, наверное, удобнее.
   VSpicy
 
52 - 13.02.20 - 21:00
(51)А вот это мысль хорошая... Спасибо, надо будет подумать!


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.