|   |   | 
| 
 | Замена префикса у всех номеров документов. | ☑ | ||
|---|---|---|---|---|
| 0
    
        lirt82 01.08.17✎ 08:08 | 
        Наваял обработку, она должна перебирать все доки если находит в номере дока первый символ как букву тогда должна взять из реквизита формы НовыйПрефикс и заменить первые три символа на новый префикс из поля реквизита НовыйПрефикс, в результате выполнения у меня ошибка был номер 000000001 а после выполнения обработки становиться БУХБУХБУХ1, подскажите как исправить, должен быть номер БУХ000001.     | |||
| 1
    
        lirt82 01.08.17✎ 08:08 | 
        Наваял обработку, она должна перебирать все доки если находит в номере дока первый символ как букву тогда должна Процедура КнопкаВыполнитьНажатие(Кнопка)
 Если НЕ ЗначениеЗаполнено(НовыйПрефикс) Тогда Предупреждение("Укажите новый префикс!"); Возврат КонецЕсли; //переберем все документы содержащие префикс (буквы) Запрос=Новый Запрос; Текст=""; Для Каждого Документ Из Метаданные.Документы Цикл Текст=Текст+"ВЫБРАТЬ Ссылка ИЗ Документ."+Документ.Имя+" ОБЪЕДИНИТЬ "; КонецЦикла; Запрос.Текст=Лев(Текст,СтрДлина(Текст)-СтрДлина(" ОБЪЕДИНИТЬ ")); Выборка=Запрос.Выполнить().Выгрузить(); //выгрузили в ТЗ Для каждого Стр Из Выборка Цикл //ищем префикс содержащий буквы, если первый символ в номере это буква тогда убираем префикс и добавляем свой Док = Стр.Ссылка.ПолучитьОбъект(); ИщемБуквы = Найти("АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ", Лев(Док.Номер, 1)); Если ИщемБуквы = 0 Тогда Продолжить; Иначе НовыйНомерДока = СтрЗаменить(Док.Номер, Лев(Док.Номер, 3), НовыйПрефикс); Док.Номер = НовыйНомерДока; Док.Записать(); Сообщить(Док); Выборка.Удалить(Стр); КонецЕсли; КонецЦикла; КонецПроцедуры | |||
| 2
    
        Lexey_ 01.08.17✎ 08:19 | 
        (1) вопрос-то какой?     | |||
| 3
    
        lirt82 01.08.17✎ 08:21 | 
        в результате выполнения этого кода был номер 000000001 а после выполнения обработки становиться БУХБУХБУХ1, а должен быть номер БУХ000001     | |||
| 4
    
        1dvd 01.08.17✎ 08:22 | 
        //НовыйНомерДока = СтрЗаменить(Док.Номер, Лев(Док.Номер, 3), НовыйПрефикс);
 НовыйНомерДока = НовыйПрефикс + Сред(Док.Номер, СтрДлина(Док.Номер)+1); | |||
| 5
    
        1dvd 01.08.17✎ 08:23 | 
        (4)* пардон, не так
 НовыйНомерДока = НовыйПрефикс + Сред(Док.Номер, СтрДлина(НовыйПрефикс )+1); | |||
| 6
    
        mehfk 01.08.17✎ 08:24 | 
        (0) >> ...подскажите как исправить...
 Наваять правильную обработку. | |||
| 7
    
        DrZombi гуру 01.08.17✎ 08:35 | 
        Используй 
 ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>) УстановитьНовыйНомер (SetNewNumber) Синтаксис: УстановитьНовыйНомер(<ПрефиксНомера>) Параметры: <ПрефиксНомера> (необязательный) Тип: Строка. Префикс устанавливаемого номера. Значение по умолчанию: Пустая строка. Описание: Устанавливает новый номер документа для заданного префикса номера. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). Примечание: Для документов с нумерацией в пределах периода, номер устанавливается в пределах периода, соответствующего установленной дате документа. Если дата - пустая, процедура установит номер в пределах периода соответствующего пустой дате. Пример: РасходнаяНакладная.УстановитьНовыйНомер(ПрефиксИБ); | |||
| 8
    
        catena 01.08.17✎ 08:36 | 
        За 8 лет ни разу СтрЗаменить не применял??     | |||
| 9
    
        DrZombi гуру 01.08.17✎ 08:37 | 
        +(0)Познай для себя
 Глобальный контекст (Global context) ОбновитьНумерациюОбъектов (RefreshObjectsNumbering) Синтаксис: ОбновитьНумерациюОбъектов(<Метаданные>) Параметры: <Метаданные> (необязательный) Тип: Массив; ОбъектМетаданных: | |||
| 10
    
        lirt82 01.08.17✎ 08:47 | 
        (7) то что нужно:-)     | |||
| 11
    
        lirt82 01.08.17✎ 11:09 | 
        Сделал так
 Для каждого Стр Из Выборка Цикл Док = Стр.Ссылка.ПолучитьОбъект(); Док.УстановитьНовыйНомер(НовыйПрефикс); Док.Записать(); Сообщить(Док); КонецЦикла; теперь если у документа был номер БУХ000001, то в поле реквизита я поставил ККК, после обработки номер стал БУХККК001, не совсем правильно | |||
| 12
    
        lirt82 01.08.17✎ 11:10 | 
        было БУХ000001 а должно стать ККК000001     | |||
| 13
    
        Дмитрий 01.08.17✎ 11:18 | 
        (12) УстановитьНовыйНомер() тебе и числовую часть перенумерует.
 смотри (5), если у тебя старый и новый префиксы одинаковой длины | |||
| 14
    
        Ц_У 01.08.17✎ 11:21 | 
        смотри подписку на событие установки номера 
 префиксбазы + префиксорганизации + префикс + номер | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |