Книга знаний

1С:Предприятие / v8 / Объекты конфигурации / Бухгалтерский учет

v8: Перенос остатков по счетам БУ из 7.7 в 8.0

Пример обработки для переноса остатков по счетам БУ из конфигурации 1С:7.7 Бухгалтерский учет в 1С.8.0 БухгалтерияПредприятия Автор статьи:
Последняя редакция №1 от 07.02.08
URL: http://kb.mista.ru/article.php?id=636

Ключевые слова: ОЛЕ, операция, перенос остатков


На форуме довольно часто появляются вопросы по проблемам переноса остатков по счета БУ из 7.7 в 8.0

Хочу поделиться кусочком кода для такого переноса:


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

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика