Правила переноса остатков на счетах из "БП КОРП" в "БГУ"

Готовые правила переноса остатков на счетах из «Бухгалтерия предприятия КОРП» в «Бухгалтерия Государственного Учреждения»
Сформированы и протестированы на релизах систем:
«Бухгалтерия предприятия КОРП» релиз 2.0.66.71;
«Бухгалтерия Государственного Учреждения» релиз 2.0.61.21;
«Конвертация данных» релиз 2.1.8.2.

Всем доброго времени суток!

Недавно в связи с реструктуризацией и сменой деятельности компании пришлось организовать перенос остатков с Хозрасчетных счетов системы "Бухгалтерия предприятия КОРП" на Бюджетные счета системы "Бухгалтерия Государственного Учреждения" последнего релиза.

Список счетов по которым выполнялся перенос данных:

ВЗАИМОРАСЧЕТЫ:
Счет 60.01 в БП на счет 302.26 в БГУ;
Счет 60.02 в БП на счет 206.26 в БГУ;

Счет 62.01 в БП на счет 205.31 в БГУ;
Счет 62.02 в БП на счет 205.31 в БГУ.

МАТЕРИАЛЫ:
Счет 10.01 в БП на счет 105.36 в БГУ;
Счет 10.03 в БП на счет 105.33 в БГУ;
Счет 10.05 в БП на счет 105.36 в БГУ;
Счет 10.06 в БП на счет 105.36 в БГУ;
Счет 10.08 в БП на счет 105.34 в БГУ;
Счет 10.09 в БП на счет 105.35 в БГУ;

 

ОСНОВНЫЕ СРЕДСТВА
Счет ОС в БП: 01.01;
Счет амортизации ОС в БП: 02.1

Перенос производится в разрезе групп ОС:

Здания: на счет учета в 101.12; счет амортизации в БГУ 104.12;
Машины и оборудование (кроме офисного): на счет учета в 101.34; счет амортизации в БГУ 104.34;
Транспортные средства: на счет учета в 101.35; счет амортизации в БГУ 104.35;
Производственный и хозяйственный инвентарь: на счет учета в 101.36; счет амортизации в БГУ 104.36;
Другие виды основных средств: на счет учета в 101.38; счет амортизации в БГУ 104.38;

ПРОЧИЕ РАСЧЕТЫ С РАЗНЫМИ ДЕБИТОРАМИ И КРЕДИТОРАМИ
Счет 76.09 в БП на счет 302.21 в БГУ.

ПРОЧИЕ РАСХОДЫ БУДУЩИХ ПЕРИОДОВ
Счет 97.21 в БП на счет 401.50 в БГУ.

СПЕЦОДЕЖДА В ЭКСПЛУАТАЦИИ
Счет МЦ.02 в БП на счет 27 в БГУ.

ИНВЕНТАРЬ И ХОЗ. ПРИНАДЛЕЖНОСТИ В ЭКСПЛУАТАЦИИ
Счет МЦ.04 в БП на счет 27 в БГУ.

НДС ПО АВАНСАМ И ПРЕДОПЛАТАМ
Счет 76.АВ в БП на счет 210.11 в БГУ.

Краткое описание и общий алгоритм правил.
Основным ПВД является "ПроизвольныйАлгоритмВыгрузки". В нем организовано выполнение алгоритмов формирования исходящей информации.

Код ПВД:

////////////////////////////////////////////////////////////////////////////
//ВЗАИМОРАСЧЕТЫ
//+Остатки по счету 60.01 в БП во Ввод начальных остатков по счету 302.26 в БГУ
СчетБП = "60.01"; СчетБГУ = "302.26"; С1 = Истина; С2 = Истина; С3 = Ложь;
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузку);
//-

//+Остатки по счету 60.02 в БП во Ввод начальных остатков по счету 206.26 в БГУ
СчетБП = "60.02"; СчетБГУ = "206.26"; С1 = Истина; С2 = Истина; С3 = Ложь;
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузку);
//-

//+Остатки по счету 62.01 в БП во Ввод начальных остатков по счету 205.31 в БГУ
СчетБП = "62.01"; СчетБГУ = "205.31"; С1 = Истина; С2 = Истина; С3 = Ложь;
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузку);
//-

//+Остатки по счету 62.02 в БП во Ввод начальных остатков по счету 205.31 в БГУ
СчетБП = "62.02"; СчетБГУ = "205.31"; С1 = Истина; С2 = Истина; С3 = Ложь;
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузку);
//-
////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////
//МАТЕРИАЛЫ
//+Остатки по счету 10.01 в БП во Ввод начальных остатков по счету 105.36 в БГУ
СчетБП = "10.01"; СчетБГУ = "105.36"; С1 = Истина; С2 = Истина; С3 = Ложь;
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузку);
//-

//+Остатки по счету 10.03 в БП во Ввод начальных остатков по счету 105.33 в БГУ
СчетБП = "10.03"; СчетБГУ = "105.33"; С1 = Истина; С2 = Истина; С3 = Ложь;
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузку);
//-

//+Остатки по счету 10.05 в БП во Ввод начальных остатков по счету 105.36 в БГУ
СчетБП = "10.05"; СчетБГУ = "105.36"; С1 = Истина; С2 = Истина; С3 = Ложь;
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузку);
//-

//+Остатки по счету 10.06 в БП во Ввод начальных остатков по счету 105.36 в БГУ
СчетБП = "10.06"; СчетБГУ = "105.36"; С1 = Истина; С2 = Истина; С3 = Ложь;
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузку);

//+Остатки по счету 10.08 в БП во Ввод начальных остатков по счету 105.34 в БГУ
СчетБП = "10.08"; СчетБГУ = "105.34"; С1 = Истина; С2 = Истина; С3 = Ложь;
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузку);
//-

//+Остатки по счету 10.09 в БП во Ввод начальных остатков по счету 105.35 в БГУ
СчетБП = "10.09"; СчетБГУ = "105.35"; С1 = Истина; С2 = Истина; С3 = Ложь;
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузку);
//-
//////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////
//ОСНОВНЫЕ СРЕДСТВА
//+Остатки по счету 01.01 с типом ОС:
//Здания;
//Сооружения;
//Капитальные вложения в арендованное имущество;
//Прочие объекты, требующие государственной регистрации, относимые статьей 130 ГК РФ к недвижимости
//в БП во Ввод начальных остатков по счету 101.12 в БГУ
ГруппаУчетаОС = Перечисления.ГруппыОС.Здания; СчетУчетаБГУ = "101.12"; СчетАмортизацииБГУ = "104.12";
КодСчетаАмортизацииОС = "02.1"; КодСчетаОС = "01.01";
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузкуОС);
//-

//+Остатки по счету 01.01 с типом ОС "Машины и оборудование (кроме офисного)"
//в БП во Ввод начальных остатков по счету 101.12 в БГУ
ГруппаУчетаОС = Перечисления.ГруппыОС.МашиныИОборудование; СчетУчетаБГУ = "101.34"; СчетАмортизацииБГУ = "104.34";
КодСчетаАмортизацииОС = "02.1"; КодСчетаОС = "01.01";
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузкуОС);
//-

//+Остатки по счету 01.01 с типом ОС "Транспортные средства"
//в БП во Ввод начальных остатков по счету 101.35 в БГУ
ГруппаУчетаОС = Перечисления.ГруппыОС.ТранспортныеСредства; СчетУчетаБГУ = "101.35"; СчетАмортизацииБГУ = "104.35";
КодСчетаАмортизацииОС = "02.1"; КодСчетаОС = "01.01";
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузкуОС);
//-

//+Остатки по счету 01.01 с типом ОС "Производственный и хозяйственный инвентарь"
//в БП во Ввод начальных остатков по счету 101.36 в БГУ
ГруппаУчетаОС = Перечисления.ГруппыОС.ПроизводственныйИХозяйственныйИнвентарь; СчетУчетаБГУ = "101.36"; СчетАмортизацииБГУ = "104.36";
КодСчетаАмортизацииОС = "02.1"; КодСчетаОС = "01.01";
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузкуОС);
//-

//+Остатки по счету 01.01 с типом ОС "Другие виды основных средств"
//в БП во Ввод начальных остатков по счету 101.38 в БГУ
ГруппаУчетаОС = Перечисления.ГруппыОС.ДругиеВидыОсновныхСредств; СчетУчетаБГУ = "101.38"; СчетАмортизацииБГУ = "104.38";
КодСчетаАмортизацииОС = "02.1"; КодСчетаОС = "01.01";
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузкуОС);
//-
////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////
//Прочие расчеты с разными дебиторами и кредиторами
//+Остатки по счету 76.09 в БП во Ввод начальных остатков по счету 302.21 в БГУ
СчетБП = "76.09"; СчетБГУ = "302.21"; С1 = Истина; С2 = Истина; С3 = Ложь;
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузку);
//-
//////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////
//Прочие расходы будущих периодов
//+Остатки по счету 97.21 в БП во Ввод начальных остатков по счету 401.50 в БГУ
СчетБП = "97.21"; СчетБГУ = "401.50"; С1 = Истина; С2 = Ложь; С3 = Ложь;
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузку);
//-
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
//Спецодежда в эксплуатации
//+Остатки по счету МЦ.02 в БП во Ввод начальных остатков по счету 27 в БГУ
СчетБП = "МЦ.02"; СчетБГУ = "27"; С1 = Истина; С2 = Ложь; С3 = Истина;
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузку);
//-
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
//Инвентарь и хозяйственные принадлежности в эксплуатации
//+Остатки по счету МЦ.04 в БП во Ввод начальных остатков по счету 27 в БГУ
СчетБП = "МЦ.04"; СчетБГУ = "27"; С1 = Истина; С2 = Ложь; С3 = Истина;
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеИВыполнитьВыгрузку);
//-
//////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////
//НДС по авансам и предоплатам
//+Остатки по счету 76 .АВ в БП во Ввод начальных остатков НДС по счету 210.11 в БГУ
Счет = "76.АВ"; СчетБГУ = "210.11";
Выполнить(Алгоритмы.ПолучитьИсходящиеДанныеНДС);
//-
////////////////////////////////////////////////////////////////////////////


Отказ = Истина;

 

Так — же для демонстрации приведу код алгоритма "ПолучитьИсходящиеДанныеИВыполнитьВыгрузку":

зСубконто = "";
грСубконто = "";
Если С1 Тогда
зСубконто = зСубконто + " ХозрасчетныйОстатки.Субконто1 КАК Субконто1, ";
грСубконто = грСубконто + " ХозрасчетныйОстатки.Субконто1, ";
КонецЕсли;
Если С2 Тогда
зСубконто = зСубконто + " ХозрасчетныйОстатки.Субконто2 КАК Субконто2, ";
грСубконто = грСубконто + " ХозрасчетныйОстатки.Субконто2, ";
КонецЕсли;
Если С3 Тогда
зСубконто = зСубконто + " ХозрасчетныйОстатки.Субконто3 КАК Субконто3, ";
грСубконто = грСубконто + " ХозрасчетныйОстатки.Субконто3, ";
КонецЕсли;
Запрос = Новый Запрос("ВЫБРАТЬ
| ХозрасчетныйОстатки.Счет КАК Счет," + зСубконто + "
| ХозрасчетныйОстатки.Организация КАК Организация,
| СУММА(ХозрасчетныйОстатки.СуммаОстатокДт) КАК СуммаДт,
| СУММА(ХозрасчетныйОстатки.СуммаОстатокКт) КАК СуммаКт,
| СУММА(ХозрасчетныйОстатки.ВалютнаяСуммаОстатокДт) КАК ВалютнаяСуммаДт,
| СУММА(ХозрасчетныйОстатки.ВалютнаяСуммаОстатокКт) КАК ВалютнаяСуммаКт,
| СУММА(ХозрасчетныйОстатки.КоличествоОстатокДт) КАК КоличествоДт,
| СУММА(ХозрасчетныйОстатки.КоличествоОстатокКт) КАК КоличествоКт,
| ХозрасчетныйОстатки.Валюта КАК Валюта
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОстатков, Счет В ИЕРАРХИИ (&Счет), , Организация = &Организация) КАК ХозрасчетныйОстатки
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОстатки.Счет," + грСубконто + "
| ХозрасчетныйОстатки.Организация,
| ХозрасчетныйОстатки.Валюта");


Запрос.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду(СчетБП));
Запрос.УстановитьПараметр("ДатаОстатков", Параметры.ДатаВводаОстатков);
Запрос.УстановитьПараметр("Организация", Параметры.ВыгружаемаяОрганизация);

ЖурналПроводокЕПСБУ = Неопределено;
Выполнить(Алгоритмы.СоздатьЖурналПроводокЕПСБУ);
КорСчет = "000";
Период = Параметры.ДатаВводаОстатков;

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл

ИсходящиеДанные = Новый Структура("Дата, Организация, Комментарий");
ИсходящиеДанные.Дата  = Параметры.ДатаВводаОстатков;
ИсходящиеДанные.Комментарий = "Ввод остатков: " + Выборка.Организация +"/"+Выборка.Счет;
ИсходящиеДанные.Организация = Выборка.Организация;


Сторона   = "";
Если Выборка.Счет.Вид = ВидСчета.Активный Тогда
Сторона   = "Дт";
ИначеЕсли Выборка.Счет.Вид = ВидСчета.Пассивный Тогда
Сторона   = "Кт";
Иначе
Если Выборка.СуммаДт <> 0
ИЛИ Выборка.КоличествоДт <> 0
ИЛИ Выборка.ВалютнаяСуммаДт <> 0
Тогда
Сторона   = "Дт";
Иначе
Сторона   = "Кт";
КонецЕсли;
КонецЕсли;
Если Сторона = "Дт" Тогда
ВспСторона = "Кт";
Иначе
ВспСторона = "Дт";
КонецЕсли;

НовПроводка = ЖурналПроводокЕПСБУ.Добавить();
НовПроводка.Период = Период;
Если НЕ Выборка.Счет.Забалансовый Тогда
//Вспомогательный счет "000"
НовПроводка["Счет"+ВспСторона] = КорСчет;
КонецЕсли;
//Счет остатков
НовПроводка["Счет"+Сторона] = СчетБГУ;

НовПроводка["Сумма"] = ?(Сторона = "Дт",Выборка.СуммаДт,Выборка.СуммаКт);
НовПроводка["Организация"] = Выборка.Организация;

Если Выборка.Счет.Валютный Тогда
НовПроводка["Валюта"+Сторона] = Выборка.Валюта;
НовПроводка["ВалютнаяСумма"+Сторона] = ?(Сторона = "Дт",Выборка.ВалютнаяСуммаДт, Выборка.ВалютнаяСуммаКт);
КонецЕсли;
Если Выборка.Счет.Количественный Тогда
НовПроводка["Количество"+Сторона] =?(Сторона = "Дт",Выборка.КоличествоДт, Выборка.КоличествоКт);
КонецЕсли;

КоличествоСубконто = Выборка.Счет.ВидыСубконто.Количество();
Для Инд = 0 По КоличествоСубконто-1 Цикл
Попытка
НовПроводка["Субконто"+Сторона].Вставить(Выборка.Счет.ВидыСубконто[Инд].ВидСубконто,Выборка["Субконто"+(Инд+1)]);
Исключение
НовПроводка["Субконто"+Сторона].Вставить(Выборка.Счет.ВидыСубконто[Инд].ВидСубконто);
КонецПопытки;
КонецЦикла;

КонецЦикла;

Если ЖурналПроводокЕПСБУ.Количество() > 0 Тогда
ИсходящиеДанные.Вставить("ЖурналПроводокЕПСБУ",ЖурналПроводокЕПСБУ);
ИсходящиеДанные.Вставить("Счет", СчетБГУ);
ВыгрузитьПоПравилу(,,ИсходящиеДанные,,"ВводНачальныхОстатков");
ЖурналПроводокЕПСБУ.Очистить();
КонецЕсли;

 

Т.о. принцип работы выгрузки заключается в поэтапном выполнении 3-х основных алгоритмов формирования исходящих данных, которые формируют информацию в зависимости от типа переносимых остатков:

  • ПолучитьИсходящиеДанныеИВыполнитьВыгрузку;
  • ПолучитьИсходящиеДанныеИВыполнитьВыгрузкуОС;
  • ПолучитьИсходящиеДанныеНДС.

В конце каждого алгоритма после формирования исходящих данных выполняется переход на соответствующее ПКО:

  • ВводНачальныхОстатков;
  • ВводНачальныхОстатковВходящийНДС;
  • ВводНачальныхОстатковОС.

 

Замечание.

Т.к. при формировании данной конвертации полагался на определенные требования своей кампании, для применения ее в Вашем конкретном случае необходим анализ данных и корректировка Вашим специалистом. Т.е. данную конвертацию рекомендуется использовать как базу для создания переноса по Вашим конкретным критериям, иначе при выполнении процедур на данных правилах "по умолчанию" могут возникнуть ошибки.

Ну и естественно перед загрузкой данных ОБЯЗАТЕЛЬНО делайте копию базы.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *