Вход | Регистрация
 
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 или кнопку "Обновить" в браузере.