Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
Ну вот, перенумераторов полно, а найти что надо не могу. Уже скачала пару обработок, но ничего не подходит. Может кто тут лучше ориентируется и подскажет.
Нужно в ЗУП изменить номера документов сократив их на 5 нулей не меняя номер документа.
Например,
старый номер - КЛ0000000009
нужно получить - КЛ0009.
Есть на сайте такая обработка?
(типовая обр-ка с диска Универсальные подбор и обработка документов" не помогла (или я не сумела правильно настроить))
Нужно в ЗУП изменить номера документов сократив их на 5 нулей не меняя номер документа.
Например,
старый номер - КЛ0000000009
нужно получить - КЛ0009.
Есть на сайте такая обработка?
(типовая обр-ка с диска Универсальные подбор и обработка документов" не помогла (или я не сумела правильно настроить))
По теме из базы знаний
- Приведение номера к длине (справочники, документы)
- RG-Soft: Загрузка данных декларации по НДС
- Синхронизация хранилища 1С и git-репозитория с применением OneScript и Gitsync. Методика и пошаговая инструкция для создания скрипта и его регулярного запуска
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- Распространенные ошибки разработчиков, приводящие к проблемам производительности
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
выборка = Документы.ИмяВидаДокумента.Выбрать();
Пока выборка.Следующий() Цикл
поз = Найти(выборка.Номер,"00000");
Если поз > 0 Тогда
док = выборка.ПолучитьОбъект();
док.Номер = Лев(выборка.Номер,поз-1)+Сред(выборка.Номер,поз+5);
док.Записать();
КонецЕсли;
КонецЦикла;
ПоказатьКак нибудь так можно, но не проверял. Единственно - лучше период выборки указывать явно, и сразу продумать действия, если 5 нулей не найдется.
а я бы по другому сделал. вот, не проверял:
Процедура НекаяПроцедура()
Документы = ПолучитьВыборку();
Отказ = Ложь;
НачатьТранзакцию();
Пока Документы.Следующий() Цикл
ОбработкаПрерыванияПользователя();
ДокументОбъект = Документы.Ссылка.ПолучитьОбъект();
ДокументОбъект.ОбменДанными.Загрузка = Истина;
ДокументОбъект.Номер = ПривестиНомерКДлине(ДокументОбъект.Номер, 12, СтрДлина(Документы.Префикс), 6);
Попытка
ДокументОбъект.Записать();
Исключение
Сообщить(ОписаниеОшибки());
Отказ = Истина;
Прервать;
КонецПопытки;
КонецЦикла;
Если Отказ Тогда
ОтменитьТранзакцию();
Иначе
ЗафиксироватьТранзакцию();
КонецЕсли;
КонецПроцедуры
Функция ПривестиНомерКДлине(ИсходныйНомер, ДлинаИсходногоНомера, ДлинаПрефикса, ДлинаНомераРезультата)
НомерБезПрефикса = Прав(ИсходныйНомер, ДлинаИсходногоНомера-ДлинаПрефикса);
Пока Лев(НомерБезПрефикса, 1)="0" Цикл
НомерБезПрефикса = Сред(НомерБезПрефикса, 2, ДлинаИсходногоНомера);
Если ПустаяСтрока(НомерБезПрефикса) Тогда Прервать; КонецЕсли; //Конец строки
КонецЦикла;
НомерБезПрефикса = СокрЛП(НомерБезПрефикса);
КоличествоНулей = ДлинаНомераРезультата-СтрДлина(НомерБезПрефикса)-ДлинаПрефикса;
Если КоличествоНулей<0 Тогда ВызватьИсключение "Ошибка"; КонецЕсли;
Возврат Префикс+?(КоличествоНулей=0,"",Формат(0, "ЧЦ="+(КоличествоНулей)+"; ЧН=; ЧВН=; ЧГ="))+НомерБезПрефикса;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот