Для начала, поясню механизм замены реквизитов, до нашей оптимизации. Нам необходимо было зайти в списанное ОС и там в пошаговом режиме у каждого нужного реквизита заменить данные. Все это делалось относительно долго, чтоб ускорить эту работу я предлагаю следующее.
Создать обработку, при выполнении которой произойдет автоматическая замена реквизитов с внебюджетных на бюджетные.
Приступим к практической части реализации проекта.
Открываем конфигуратор.
Находим ветку «Обработки» ,и создаем новую «ИзменениеРеквизитов».
В форме «Диалог» создадим следующие реквизиты:
- Реквизит выбор фирмы
- Выбор счета
- Выбор кбк
Дата выбытия берется на текущую дату, поясню почему предпалагется что документы были списаны текущей датой.
Реквизит «Выбор фирмы» нужен для выбора балансодержателя, так как в одной базе может вестись учет нескольких предприятий
Реквизит «Дата Изменения» это дата списания ОС, так как перед этим было произведено списание ОС конкретным документом. Так вот на дату этого документа в справочнике и ищем Ос, которые нужно изменить.
После выше описанных действий, откроем закладку «Модуль», и напишем следующий код:
Процедура ПриВыбореСчета()
Если ВыбЕПСБУ= СчетПоКоду("101.07.2.3") Тогда
СчетУчета = СчетПоКоду("101.07.1");
КБКУчета=ВыбКБК;
ИсточникПриобретения=Перечисление.КодВидаДеятельности.Бюджет;
СчетНачисленияАмортизации = СчетПоКоду("104.07.1");
СчетУчетаЗатрат = СчетПоКоду("401.01.1")
КонецЕсли;
Если ВыбЕПСБУ= СчетПоКоду("101.07.2.2") Тогда
СчетУчета = СчетПоКоду("101.07.1");
КБКУчета=ВыбКБК;
ИсточникПриобретения=Перечисление.КодВидаДеятельности.Бюджет;
СчетНачисленияАмортизации = СчетПоКоду("104.07.1");
СчетУчетаЗатрат = СчетПоКоду("401.01.1")
КонецЕсли;
КонецПроцедуры
//*******************************************
// Данная процедура выполняет перебор Справочника ОС по заданным условиям
// и в случаи выполнения услвий меняет реквизиты
Процедура Выполнить()
Если ИзменениеРеквизитов=1 Тогда
СпрОС=СоздатьОбъект("Справочник.ОсновныеСредства");
СпрОС.ИспользоватьВладельца(ВыбФирмы);
СпрОС.ВыбратьЭлементы();
н=0; // счетчик для подсчета общего количетсва элементов справочника
к=0; // счетчик для подсчета количества измененных элементов справочника
Сообщить("Начало обработки"+" "+ТекущаяДата()+" "+ ТекущееВремя());
Пока СпрОС.ПолучитьЭлемент()=1 Цикл
ТЭ=СпрОс.ТекущийЭлемент();
Если ТЭ.ЭтоГруппа()=0 Тогда
Если СпрОС.ДатаВыбытия.Получить(РабочаяДата())<>РабочаяДата() Тогда
Иначе
Если СпрОС.СчетУчета = ВыбЕПСБУ Тогда
ПриВыбореСчета();
к=к+1;
КонецЕсли;
н=н+1;
СпрОС.Записать();
КонецЕсли;
КонецЕСли;
КонецЦикла;
Сообщить("Всего объектов"+" "+н);
Сообщить("Изменено объектов"+" "+к);
Сообщить("Окончание обработки"+" "+ТекущаяДата()+" "+ ТекущееВремя());
Сообщить("Замена реквизитов завершена");
КонецЕсли;
КонецПроцедуры
Ну, вот и все. Все необходимые изменения произведены. Сохраняем и работаем.