Привожу код модуля документа, для тех, кому не судьба скачать:
Перем Ит;
Перем МСубконто[3];
//**********************************************************
Процедура СформироватьОперацию(ДК=0,СчетДвиж,Субконто_1,Субконто_2,Субконто_3,Сумма,Количество)
Операция.НоваяПроводка();
Операция.ПервичныйДокумент = "Закрытие счетов № " + НомерДок;
Операция.Количество = Количество;
Операция.Сумма = Сумма;
Если ДК = 0 Тогда
Если СчетДвиж.Забалансовый = 0 Тогда
Операция.Дебет.Счет = СчетТранзита;
Операция.Дебет.Субконто(1,Субконто1);
Операция.Дебет.Субконто(2,Субконто2);
Операция.Дебет.Субконто(3,Субконто3);
КонецЕсли;
Операция.Кредит.Счет = СчетДвиж;
Если МСубконто[1] <> 0 Тогда
Операция.Кредит.Субконто(МСубконто[1],Субконто_1);
КонецЕсли;
Если МСубконто[2] <> 0 Тогда
Операция.Кредит.Субконто(МСубконто[2],Субконто_2);
КонецЕсли;
Если МСубконто[3] <> 0 Тогда
Операция.Кредит.Субконто(МСубконто[3],Субконто_3);
КонецЕсли;
Иначе
Если СчетДвиж.Забалансовый = 0 Тогда
Операция.Кредит.Счет = СчетТранзита;
Операция.Кредит.Субконто(1,Субконто1);
Операция.Кредит.Субконто(2,Субконто2);
Операция.Кредит.Субконто(3,Субконто3);
КонецЕсли;
Операция.Дебет.Счет = СчетДвиж;
Если МСубконто[1] <> 0 Тогда
Операция.Дебет.Субконто(МСубконто[1],Субконто_1);
КонецЕсли;
Если МСубконто[2] <> 0 Тогда
Операция.Дебет.Субконто(МСубконто[2],Субконто_2);
КонецЕсли;
Если МСубконто[3] <> 0 Тогда
Операция.Дебет.Субконто(МСубконто[3],Субконто_3);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//**************************************************
Процедура ЗакрытьСчет(Счет)
КолСубконто = 0;
Для Б = 1 По 3 Цикл
МСубконто[Б] = 0;
КонецЦикла;
Для А = 1 По Счет.КоличествоСубконто() Цикл
//Оборотные субконто нас не интересуют!
Если Счет.ТолькоОбороты(А) = 0 Тогда
Ит.ИспользоватьСубконто(Счет.ВидСубконто(А),, 1);
КолСубконто = КолСубконто + 1;
МСубконто[КолСубконто] = А;
КонецЕсли;
КонецЦикла;
Ит.ВыполнитьЗапрос(ДатаДок, ДатаДок, Счет,,,1,, 1+4);
Если КолСубконто = 0 Тогда
Если (Ит.СКД() <> 0) или (Ит.СКД(3) <> 0) Тогда
СформироватьОперацию(0,Счет,,,,Ит.СКД(),Ит.СКД(3));
ИначеЕсли (Ит.СКК() <> 0) или (Ит.СКК(3) <> 0) Тогда
СформироватьОперацию(1,Счет,,,,Ит.СКК(),Ит.СКК(3));
КонецЕсли;
ИначеЕсли КолСубконто > 0 Тогда
Ит.ВыбратьСубконто(Счет.ВидСубконто(МСубконто[1]));
Пока Ит.ПолучитьСубконто(Счет.ВидСубконто(МСубконто[1])) = 1 Цикл
Если КолСубконто > 1 Тогда
//Для материальных счетов = итоговые проводки по сумме делаем сразу
Если (Счет.УчетПосумме(2) = 0) и (Счет.УчетПоКоличеству(2) = 1) Тогда
Если (Ит.СКД() <> 0) или (Ит.СКД(3) <> 0) Тогда
СформироватьОперацию(0,Счет,Ит.Субконто(1),,,Ит.СКД(),0);
ИначеЕсли (Ит.СКК() <> 0) или (Ит.СКК(3) <> 0) Тогда
СформироватьОперацию(1,Счет,Ит.Субконто(1),,,Ит.СКК(),0);
КонецЕсли;
ИначеЕсли (Счет.УчетПосумме(2) = 1) и (Счет.УчетПоКоличеству(2) = 0) Тогда
Если (Ит.СКД() <> 0) или (Ит.СКД(3) <> 0) Тогда
СформироватьОперацию(0,Счет,Ит.Субконто(1),,,0,Ит.СКД(3));
ИначеЕсли (Ит.СКК() <> 0) или (Ит.СКК(3) <> 0) Тогда
СформироватьОперацию(1,Счет,Ит.Субконто(1),,,0,Ит.СКК(3));
КонецЕсли;
КонецЕсли;
Ит.ВыбратьСубконто(Счет.ВидСубконто(МСубконто[2]));
Пока Ит.ПолучитьСубконто(Счет.ВидСубконто(МСубконто[2])) = 1 Цикл
Если КолСубконто > 2 Тогда
Ит.ВыбратьСубконто(Счет.ВидСубконто(МСубконто[3]));
Пока Ит.ПолучитьСубконто(Счет.ВидСубконто(МСубконто[3])) = 1 Цикл
Если (Ит.СКД() <> 0) или (Ит.СКД(3) <> 0) Тогда
СформироватьОперацию(0,Счет,Ит.Субконто(1),Ит.Субконто(2),Ит.Субконто(3),Ит.СКД(),Ит.СКД(3));
ИначеЕсли (Ит.СКК() <> 0) или (Ит.СКК(3) <> 0) Тогда
СформироватьОперацию(1,Счет,Ит.Субконто(1),Ит.Субконто(2),Ит.Субконто(3),Ит.СКК(),Ит.СКК(3));
КонецЕсли;
КонецЦикла;
Иначе
Если (Ит.СКД() <> 0) или (Ит.СКД(3) <> 0) Тогда
СформироватьОперацию(0,Счет,Ит.Субконто(1),Ит.Субконто(2),,Ит.СКД(),Ит.СКД(3));
ИначеЕсли (Ит.СКК() <> 0) или (Ит.СКК(3) <> 0) Тогда
СформироватьОперацию(1,Счет,Ит.Субконто(1),Ит.Субконто(2),,Ит.СКК(),Ит.СКК(3));
КонецЕсли;
КонецЕсли;
КонецЦикла;
Иначе
Если (Ит.СКД() <> 0) или (Ит.СКД(3) <> 0) Тогда
СформироватьОперацию(0,Счет,Ит.Субконто(1),,,Ит.СКД(),Ит.СКД(3));
ИначеЕсли (Ит.СКК() <> 0) или (Ит.СКК(3) <> 0) Тогда
СформироватьОперацию(1,Счет,Ит.Субконто(1),,,Ит.СКК(),Ит.СКК(3));
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
//**************************************************
Процедура ОбработкаПроведения()
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьПланСчетов(ОсновнойПланСчетов());
//Ит.ИспользоватьРазделительУчета(Фирма);
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
ЗакрытьСчет(СчетЗакрытия);
КонецЦикла;
Операция.Записать();
КонецПроцедуры