разделить на части реквизит

1. waitklassik 18.09.18 22:09 Сейчас в теме
Народ помогите. Есть документ в нем реквизит с типом строка в котором оператор прописывает например Москва Камаз К117АЕ, задача чтобы по нажатию кнопки разделить реквизит на 3 части и заполнить 3 новых реквизита Город марка машины и гос. номер, как это лучше сделать?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
3. user856012 13 18.09.18 23:53 Сейчас в теме +0.5 $m
(2) Ответ, безусловно, правильный, но... судя по тому, что автор его не знает, одно название функции ему слабо поможет, тут нужен образец готового кода, например:
Если НЕ ПустаяСтрока(СтарыйРеквизит) Тогда
   МассивРеквизитов = СтрРазделить(СтарыйРеквизит," ",Ложь);
   РеквизитГород = МассивРеквизитов[0];
   Если МассивРеквизитов.Количество() > 0 Тогда
      РеквизитМарка = МассивРеквизитов[1];
   КонецЕсли;
   Если МассивРеквизитов.Количество() > 1 Тогда
      РеквизитГосНомер = МассивРеквизитов[2];
   КонецЕсли;
КонецЕсли;
Показать

Тут кроме собственно разделения реквизита введена простейшая проверка на корректность его заполнения (наличие как минимум 2-х пробелов), но как показывает опыт, в таких случаях все варианты фантазии пользователей предугадать невозможно.

P.S. Надеюсь, имена реквизитов автор сможет подправить под свою конфигурацию.
antonio_i; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Alexey_ 27 18.09.18 22:34 Сейчас в теме
(1)СтрРазделить() по пробелу
3. user856012 13 18.09.18 23:53 Сейчас в теме +0.5 $m
(2) Ответ, безусловно, правильный, но... судя по тому, что автор его не знает, одно название функции ему слабо поможет, тут нужен образец готового кода, например:
Если НЕ ПустаяСтрока(СтарыйРеквизит) Тогда
   МассивРеквизитов = СтрРазделить(СтарыйРеквизит," ",Ложь);
   РеквизитГород = МассивРеквизитов[0];
   Если МассивРеквизитов.Количество() > 0 Тогда
      РеквизитМарка = МассивРеквизитов[1];
   КонецЕсли;
   Если МассивРеквизитов.Количество() > 1 Тогда
      РеквизитГосНомер = МассивРеквизитов[2];
   КонецЕсли;
КонецЕсли;
Показать

Тут кроме собственно разделения реквизита введена простейшая проверка на корректность его заполнения (наличие как минимум 2-х пробелов), но как показывает опыт, в таких случаях все варианты фантазии пользователей предугадать невозможно.

P.S. Надеюсь, имена реквизитов автор сможет подправить под свою конфигурацию.
antonio_i; +1 Ответить
4. login1020 133 19.09.18 01:33 Сейчас в теме
(1) чтобы избежать ошибок ввода оператора (забыли пробел, поставили 2 и т.д.) лучше сделать 3 поля, и в каждое вводить своё значение, будет намного надёжнее, чем надеяться на грамотность оператора.
x2z7yy; Stref75; +2 Ответить
5. gkhvgkh 19.09.18 07:16 Сейчас в теме
Строку разбить не проблема - выше уже подсказали как.
А что касается занесения новых значений - тут делайте лучше отдельные поля, желательно с проверкой на отсутствие пробелов и лишних символов.
6. antonio_i 80 19.09.18 07:32 Сейчас в теме
(5) Так можно вывести 3 поля, а поле ввода оставить, и перед записью все 3 реквизиты заполнять. Добавить проверки, и будет всем хорошо - оператор будет вписывать как привык, и будет видеть в итоге заполнение реквизитов. Можно и отдельную команду для заполнения сделать.
7. gkhvgkh 19.09.18 07:44 Сейчас в теме
(6) путей решения несколько, от самых простых - до самых изощренных. Тут уж все зависит от профессионализма и лени )) Главное чтобы функционал выполнялся.

А так задача то простая, справится даже новичок в программировании 1С.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот