У номер документ может начинаться с А,Б,В,М,ГГ,ПВМ и т.д.Например ПВМ123445, М123445 . Можно сделать так, чтобы все эти цифры в начале заменялись на одну цифру? Если можно приведите пожалуйста пример. Например на одну 9.
Так можно сделать, но так сложно перебрать все комбинации документов и еще могут новые добавляться.

```1c
    Если СтрЧислоВхождений(Сред(ДанныеДляПечати.Номер,1,1),"А") > 0 Тогда
    НомерДокумента=СтрЗаменить(СокрЛП(ДанныеДляПечати.Номер),"А","9");
    КонецЕсли;
```
---
```1c
    НовыйНомер = ";

    Для Счетчик = 1 По СтрДлина(Объект.Номер) Цикл

    Символ = Сред(Объект.Номер, Счетчик, 1);

    Если Символ = "1"
    или Символ = "2"
    или Символ = "3"
    или Символ = "4"
    или Символ = "5"
    или Символ = "6"
    или Символ = "7"
    или Символ = "8"
    или Символ = "9"
    Тогда
    НовыйНомер = НовыйНомер + Символ;

    КонецЕсли;

    КонецЦикла;

    НовыйНомер = "9" + НовыйНомер;

    Сообщить(НовыйНомер);
```
---
У номер документ может начинаться с А,Б,В,М,ГГ,ПВМ и т.д.Например ПВМ123445, М123445 . Можно сделать так, чтобы все эти цифры в начале заменялись на одну цифру? Если можно приведите пожалуйста пример. Например на одну 9.

длина номера как правило одинаковая (9,11,...), а после такой замены она станет разной в диапазоне объекта! Это так и надо?
---
да
---
попробуйте так

```1c
    //лкНомер = "12ПМЗ12345";
    лкНомер = "ПМЗ12345";
    лкЧасти = СтрРазделить(лкНомер,"0123456789");
    Если лкЧасти.Количество() > 0 Тогда
    //доп проверка, вообще на пусой номер
    лкНомер = СтрЗаменить(лкНомер, лкЧасти[0], "9");//по условию только первые буквы меняем
    КонецЕсли;

    сообщить(лкНомер);
```
---
выдает ошибку:
Процедура или функция с указанным именем не определена (СтрРазделить)
лкЧасти = <<?>>СтрРазделить(лкНомер,"0123456789"); (Проверка: Толстый клиент (обычное приложение))
У меня обычные формы. 8.3.12
---
ааа, это или отключите режим совместимости со старыми версиями
или переходите на более новую платформу
(ну не на 7,7 же всю жизнь программировать!)
---
```1c
    Функция ЗаменаНачальныхСимволовНаЦифру(Знач Стр, СимволЗамены)
    Цифры = "0123456789";
    МассивСтр = СтрРазделить(Стр, Цифры, Ложь);
    Если МассивСтр.Количество() > 0 Тогда
    Стр = "+СимволЗамены+Сред(Стр,СтрДлина(МассивСтр[0])+1);
    КонецЕсли;
    Возврат Стр;
    КонецФункции
```
---
Это типичная задача по программированию любого вуза(не айтишго даже), я бы даже сказал это задача из курса информатики средней школы.

потрудитесь решить ее сами и выложите решение тут, я порадуюсь

а то чесслово, совесть иметь надо не как у Лёни
Я не халявщик - я партёр
---
Я понял почему успешно работают подобные задачки...
Народ вокруг пыжится -вот какой я умный - я смог решить - смотрите...
И лентяи используют эту выставку самолюбования......
---
не всегда мотив помочь "халявщикам" лишь гордыня
некоторые первый раз его видят и искренне стараются помочь;
некоторым скучно и есть время размять мозг;
есть и добрые самаритяне, которые всегда кормят облезлых кошаков когда услышат "мяу".

халявщики-манипуляторы знают эти мотивы и жиреют от своей лени, я предпочитаю их "избивать".
у каждого свои недостатки)
---
мне кажется вы слишком суровы. Учится человек, сначала спрашивает, потом сам будет делать
---
мне кажется вы слишком суровы. Учится человек, сначала спрашивает, потом сам будет делать

Что же мешает ему , хотя бы ник "человеческий" заиметь ? То, что и не собирается - потом что-то делать ?
---
есть и добрые самаритяне, которые всегда кормят облезлых кошаков когда услышат "мяу"
о да.. даже "мяу" необязательно... иначе совесть потом загрызет, вот ведь что.
---
Если порядок букв не важен т.е. АБ = БА то получите сумму по номеру буквы в алфавите и сложите до простого числа. типа А = 1, И = 10, т.е. АИ = 1 + 10 = 11 = 1 + 1 = 2
---
```1c
    НовыйНомер = ";

    Для Счетчик = 1 По СтрДлина(Объект.Номер) Цикл

    Символ = Сред(Объект.Номер, Счетчик, 1);

    Если Символ = "1"
    или Символ = "2"
    или Символ = "3"
    или Символ = "4"
    или Символ = "5"
    или Символ = "6"
    или Символ = "7"
    или Символ = "8"
    или Символ = "9"
    Тогда
    НовыйНомер = НовыйНомер + Символ;

    КонецЕсли;

    КонецЦикла;

    НовыйНомер = "9" + НовыйНомер;

    Сообщить(НовыйНомер);
```
---
спасибо
---
Глупости, получите "не уникальные" номера!
---
По мне так лучше сравнивать КодСивола.
КодСимвола(0) = 48, КодСимвола(9) = 57
Вот и сравнивайте. У чего код символа не в этом диапазоне - меняйте.
---
```1c
    Строка = "АБВ12345, ГД789";
    Буквы = "АБВГД....";
    Цифра = "9";
    Результат = ";
    Для Каждого С ИЗ СтрРазделить(Строка, Буквы,Ложь) Цикл
    Результат = Результат + ?(ПустаяСтрока(Результат), С, Цифра + С);
    КонецЦикла;
```

Кто мне расскажет, работает этот код или нет? )))

ЗЫ: Алгоритм меняет последовательность букв "АБВ..." на одну цифру. Но можно менять и "цифры в начале" (че-та не понял, что это значит).
---
Кто мне расскажет, работает этот код или нет? )))
код работает. Только не так как ожидается.
ЗЫ: Алгоритм меняет последовательность букв "АБВ..." на одну цифру.
он меняет буквы только внутри строки (буквы окруженные цифрами). Вначале строки буквы удаляются, то цифра "9" не будет подставляться. И в конце, если строка оканчивается на буквы, то цифра "9" не будет подставлена.
Для строки Строка = "АБВ12345, ГД789";
Результат будет ориентировочно "12345, 9789".
Тот же результат будет и для строки: "АБВ12345, ГД789АБВ"
Но можно менять и "цифры в начале" (че-та не понял, что это значит).
Это вообще откуда?
---
Это вообще откуда? Из первого сообщения темы.
---
а, так это банальная опечатка. Буквы на цифру имелось ввиду. Там по примеру понятно.
---
там в качестве примера код приведен? Читая, я, например, понимаю так, что все буквы, идущие подряд, должны превратиться в какую-то одну цифру. 1С раньше не особо умела работать с потоком символов, но теперь научилась. Так что все это можно свести к созданию буфера из символов строки, получению оттуда очередного символа, и если он не цифра, то или установить одну цифру вместо этой буквы, или, если перед этим была буква, то ничего не делать. Ну и сбрасывать флаг буквы, если это была не буква.

Со строками в С хорошо работать, ибо они там просто массивы символов (*char)
---
судя по (10) "У меня обычные формы", какой стрим?
---
а формы тут ни при чем, на сколько я знаю. Главное - платформа 8.3.10 и выше.
---
там же "Процедура или функция с указанным именем не определена (СтрРазделить) " Совместимость явно ниже. Скорее всего 8.2