Всем доброго времени суток!
Недавно в связи с реструктуризацией и сменой деятельности компании пришлось организовать перенос остатков с Хозрасчетных счетов системы "Бухгалтерия предприятия КОРП" на Бюджетные счета системы "Бухгалтерия Государственного Учреждения" последнего релиза.
Список счетов по которым выполнялся перенос данных:
ВЗАИМОРАСЧЕТЫ:
Счет 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-х основных алгоритмов формирования исходящих данных, которые формируют информацию в зависимости от типа переносимых остатков:
- ПолучитьИсходящиеДанныеИВыполнитьВыгрузку;
- ПолучитьИсходящиеДанныеИВыполнитьВыгрузкуОС;
- ПолучитьИсходящиеДанныеНДС.
В конце каждого алгоритма после формирования исходящих данных выполняется переход на соответствующее ПКО:
- ВводНачальныхОстатков;
- ВводНачальныхОстатковВходящийНДС;
- ВводНачальныхОстатковОС.
Замечание.
Т.к. при формировании данной конвертации полагался на определенные требования своей кампании, для применения ее в Вашем конкретном случае необходим анализ данных и корректировка Вашим специалистом. Т.е. данную конвертацию рекомендуется использовать как базу для создания переноса по Вашим конкретным критериям, иначе при выполнении процедур на данных правилах "по умолчанию" могут возникнуть ошибки.
Ну и естественно перед загрузкой данных ОБЯЗАТЕЛЬНО делайте копию базы.
Вступайте в нашу телеграмм-группу Инфостарт
 
                                    