Добрый день.
В кредитных организациях бухгалтерам лень создавать новые счета при принятии к учету ОС, а если их много - то еще ленивее.
Предлагаю расширение, в котором две функции для копирования документа принятия к учету и размножить строку в табличной части "ОС".
1. Копирование документа
При копировании: создается в справочнике ОС новое ОС, также создаются новые счета учета и амортизации на 1 единицу больше от оригинала, с проверкой на уже имеющееся (если уже имеется, то опять увеличивается на единицу).
Только при копировании убран функционал, который затирал счета учета и амортизации при изменении "Местонахождения ОС" в шапке документа.
2. Размножить строки
все так же, как и в пункте 1, только изменение "Местоположения ОС" вызовет стандартный функционал.
3. Перед записью пробегается цикл, который меняет наименования счетов, если они отличаются от наименования ОС (бухгалтер перед записью открыл карточку ОС и поменял наименование).
Код не выдержит никакой критики :), для примера:
//Для создания нового кода счета учета нужен следующий номер Произвольного сегмента
&НаСервере
Функция ПолучитьПроизвольныйСегмент(НомерСчета, ПроизвольныйСегмент)
ПродолжатьПрс = Истина;
Пока ПродолжатьПрс Цикл // если уже такой сегмент есть в кучке нужных нам счетов, то увеличиваем номер
ПроизвольныйСегмент = СледующийНомер(ПроизвольныйСегмент);
Если ПроверитьНомерСчета(НомерСчета, ПроизвольныйСегмент) Тогда
ПродолжатьПрс = Истина;
Иначе
ПродолжатьПрс = Ложь;
КонецЕсли;
КонецЦикла;
Возврат ПроизвольныйСегмент;
КонецФункции
//увеличение кода представленного строкой на 1 единицу
&НаСервере
Функция СледующийНомер(НомерСчета)
НомерСчета = СокрЛП(НомерСчета);
Позиция = СтрНайти(НомерСчета,"0",НаправлениеПоиска.СКонца);
ПоследняяЦифра = ?(СтрДлина(НомерСчета) - Позиция <= 0,"0",Прав(НомерСчета,СтрДлина(НомерСчета) - Позиция));
КолЦифр = СтрДлина(ПоследняяЦифра);
НовоеЧисло = Строка(Число(ПоследняяЦифра) + 1);
Если Не КолЦифр = СтрДлина(НовоеЧисло) Или ПоследняяЦифра = "0" Тогда
Позиция = Позиция - 1;
КонецЕсли;
НомерСчетаНовый = Лев(НомерСчета, Позиция);
НомерСчетаНовый = НомерСчетаНовый + НовоеЧисло;
Возврат НомерСчетаНовый;
КонецФункции
//проверка есть ли такой сегмент
//КодШаблон нужен чтобы полученный сегмент был из одной кучки счетов
&НаСервере
Функция ПроверитьНомерСчета(НомерСчета, ПроизвольныйСегмент)
Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1
| АХДКОСчетаАналитическогоУчета.ПроизвольныйСегмент КАК Код
|ИЗ
| Справочник.АХДКОСчетаАналитическогоУчета КАК АХДКОСчетаАналитическогоУчета
|ГДЕ
| АХДКОСчетаАналитическогоУчета.Код ПОДОБНО &КодШаблон
| И АХДКОСчетаАналитическогоУчета.ПроизвольныйСегмент = &ПроизвольныйСегмент
| И НЕ АХДКОСчетаАналитическогоУчета.ПометкаУдаления");
Запрос.УстановитьПараметр("КодШаблон",Лев(НомерСчета,7) + "%");
Запрос.УстановитьПараметр("ПроизвольныйСегмент",ПроизвольныйСегмент);
Данные = Запрос.Выполнить().Выбрать();
Если Данные.Следующий() Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
Расширение написано на конфигурации Административно-хозяйственная деятельность банка версия 3.0.132.32.