//Перед использованием укажите значения переменных: знОрганизация = Организация; КонПериода = ТекущаяДата(); // СКД - Сальдо Конечное Дебетовое Функция СКД(Счет, ДатаО = Неопределено) Если ДатаО = Неопределено Тогда ДатаО = КонецДня(КонПериода) КонецЕсли; СчетПЛ = ПланыСчетов.Хозрасчетный.НайтиПоКоду(Счет); Если СчетПЛ = ПланыСчетов.Хозрасчетный.ПустаяСсылка() Тогда Возврат "Нет счета!"; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстатки.СуммаОстатокДт, | ХозрасчетныйОстатки.СуммаОстатокКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&DatO, Счет В ИЕРАРХИИ(&Scet), , Организация = &Organ) КАК ХозрасчетныйОстатки |"; Запрос.УстановитьПараметр("DatO", Новый Граница(ДатаО, ВидГраницы.Включая)); Запрос.УстановитьПараметр("Scet", СчетПЛ); Запрос.УстановитьПараметр("Organ", знОрганизация); Результат = Запрос.Выполнить(); Результат = Результат.Выбрать(); Если Результат.Следующий() Тогда Возврат Результат.СуммаОстатокДт; Иначе Возврат 0; КонецЕсли; КонецФункции // СКК - Сальдо Конечное Кредитовое Функция СКК(Счет, ДатаО = Неопределено) Если ДатаО = Неопределено Тогда ДатаО = КонецДня(КонПериода) КонецЕсли; СчетПЛ = ПланыСчетов.Хозрасчетный.НайтиПоКоду(Счет); Если СчетПЛ = ПланыСчетов.Хозрасчетный.ПустаяСсылка() Тогда Возврат "Нет счета!"; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстатки.СуммаОстатокДт, | ХозрасчетныйОстатки.СуммаОстатокКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&DatO, Счет В ИЕРАРХИИ (&Scet), , Организация = &Organ) КАК ХозрасчетныйОстатки"; Запрос.УстановитьПараметр("DatO", Новый Граница(ДатаО, ВидГраницы.Включая)); Запрос.УстановитьПараметр("Scet", СчетПЛ); Запрос.УстановитьПараметр("Organ", знОрганизация); Результат = Запрос.Выполнить(); Результат = Результат.Выбрать(); Если Результат.Следующий() Тогда Возврат Результат.СуммаОстатокКт; Иначе Возврат 0; КонецЕсли; КонецФункции
ТекЗнач = СКД("04.01")-СКК("05")+СКД("08.05");
РабДата=Лев(СокрЛП(РабочаяДата),10); //НачПрошлогоМесяца=Лев(СокрЛП(НачалоМесяца(ДобавитьМесяц(РабочаяДата, -1 ))),10); НачПрошлогоМесяца=Лев(СокрЛП(НачалоМесяца(РабочаяДата)),10); НачМесяца=Лев(СокрЛП(НачалоМесяца(РабочаяДата)),10); МойЗапрос = " |S_elect SC172.DESCR, RG38027.SP38025, _1SJOURN.DOCNO, LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) AS DATADOC, SUM(RG38027.SP38026) AS Ost |FROM RG38027, SC172, _1SJOURN, DH38011 |WHERE (RG38027.SP38024 = SC172.ID) AND (CONVERT (DATETIME , RG38027.PERIOD) = CONVERT (DATETIME , '"+НачПрошлогоМесяца+"')) AND |(RG38027.SP38025 = _1SJOURN.IDDOC) AND (RG38027.SP38025 = DH38011.IDDOC) |AND (DH38011.SP38005 = ' 3Z ') |GROUP BY SC172.DESCR, RG38027.SP38025, _1SJOURN.DOCNO, _1SJOURN.DATE_TIME_IDDOC | |U_nion ALL | |S_elect SC172.DESCR, RA38027.SP38025, _1SJOURN.DOCNO, LEFT(_1SJOURN.DATE_TIME_IDDOC, 8) AS DATADOC, SUM(RA38027.SP38026*(1-2*RA38027.DEBKRED)) AS Ost |FROM RA38027, SC172, _1SJOURN, DH38011 |WHERE (RA38027.SP38024 = SC172.ID) AND (RA38027.IDDOC=_1SJOURN.IDDOC) AND |(CONVERT (DATETIME , LEFT(_1SJOURN.DATE_TIME_IDDOC,8)) <= CONVERT (DATETIME , '"+РабДата+"')) AND |(CONVERT (DATETIME , LEFT(_1SJOURN.DATE_TIME_IDDOC,8)) > CONVERT (DATETIME , '"+НачМесяца+"')) AND |(RA38027.SP38025 = _1SJOURN.IDDOC) AND (RA38027.SP38025 = DH38011.IDDOC) |AND (DH38011.SP38005 = ' 3Z ') |GROUP BY SC172.DESCR, RA38027.SP38025, _1SJOURN.DOCNO, _1SJOURN.DATE_TIME_IDDOC |HAVING SUM(RA38027.SP38026*(1-2*RA38027.DEBKRED)) > 0 |ORDER BY SC172.DESCR"; Connection = Новый COMОбъект("ADODB.Connection"); //Connection.Provider = Провайдер; Connection.ConnectionString = мдСтрокаПодключения; //Сообщить(МойЗапрос); Попытка Connection.Open(); Исключение Сообщить("Подключение - bad!"); КонецПопытки; RS = Новый COMОбъект("ADODB.Recordset"); //RS.CursorType = 3; RS.Open(МойЗапрос, Connection ); ТЗ=Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("КонтрагентНаименование", ПолучитьОписаниеТиповС(50),"Контрагент",30); ТЗ.Колонки.Добавить("ИДДокумента", ПолучитьОписаниеТиповС(10)); ТЗ.Колонки.Добавить("НомерДок", ПолучитьОписаниеТиповС(10),"№ заявки",10); ТЗ.Колонки.Добавить("ДатаДок", ПолучитьОписаниеТиповС(10),"дата заявки",10); ТЗ.Колонки.Добавить("СуммаОстаток", ПолучитьОписаниеТиповЧ(10, 2),"Сумма",15); Пока RS.EOF() = 0 Цикл КонтрагентНаименование = RS.Fields("DESCR").Value; ИДДокумента = RS.Fields("SP38025").Value; НомерДок = RS.Fields("DOCNO").Value; ДатаДок = RS.Fields("DATADOC").Value; СуммаОстаток = Число(RS.Fields("Ost").Value); Если СуммаОстаток = 0 Тогда RS.MoveNext(); Продолжить; КонецЕсли; Стр=ТЗ.Добавить(); Стр.КонтрагентНаименование = КонтрагентНаименование; Стр.ИДДокумента = ИДДокумента; Стр.НомерДок = НомерДок; Стр.ДатаДок = Дата(ДатаДок); Стр.СуммаОстаток = СуммаОстаток; RS.MoveNext(); КонецЦикла;
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстатки.СуммаОстатокДт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &Счет, , | Субконто1 = &Контрагент И Организация = &Организация И Субконто2 = &Договор) КАК ХозрасчетныйОстатки"; // Считаем что на счете ведется аналитика только в разрезе контрагентов // и договоров. Запрос.УстановитьПараметр("Период", Период1); Запрос.УстановитьПараметр("Контрагент", Контрагент); Запрос.УстановитьПараметр("Договор", Договор); Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.РасчетыСПокупателями); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Документ = Документы.ОперацияБух.СоздатьДокумент(); Документ.Дата = РабочаяДата; Документ.Организация = Организация; Документ.Содержание = "Погашение дебиторской задолженности"; Проводка = Документ.Движения.Хозрасчетный.Добавить(); Проводка.СчетДт = ПланыСчетов.Хозрасчетный.РасчетыСПокупателями; Проводка.СчетКт = ПланыСчетов.Хозрасчетный.ПрочиеРасходы; Проводка.СубконтоДт.Контрагенты = Контрагент; Проводка.СубконтоДт.Договоры = Договор; Проводка.Сумма = Выборка.СуммаОстатокДт; Документ.СуммаОперации = Выборка.СуммаОстатокДт; Форма = Документ.ПолучитьФорму(); Форма.Открыть(); КонецЕсли;
"ВЫБРАТЬ | ХозрасчетныйОстатки.Счет, | ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОстатки.Счет), | ХозрасчетныйОстатки.ВалютнаяСуммаОстатокДт КАК ВалютнаяСуммаОстатокДт, | ХозрасчетныйОстатки.Счет.Порядок КАК СчетПорядок, | ХозрасчетныйОстатки.Валюта КАК Валюта, | ПРЕДСТАВЛЕНИЕ(ХозрасчетныйОстатки.Валюта) |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет.Валютный И Счет.Вид = &Активный, ,) КАК ХозрасчетныйОстатки |УПОРЯДОЧИТЬ ПО | СчетПорядок |ИТОГИ | СУММА(ВалютнаяСуммаОстатокДт) |ПО | Валюта"; Запрос.УстановитьПараметр("Активный", ВидСчета.Активный); Запрос.УстановитьПараметр("Дата", Дата);
Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | ХозрасчетныйОстатки.Субконто1, | ХозрасчетныйОстатки.Организация, | ХозрасчетныйОстатки.СуммаОстаток, | ХозрасчетныйОстатки.КоличествоОстаток |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &Счет, , ) КАК ХозрасчетныйОстатки"; Запрос.УстановитьПараметр("Период", КонецДня(ДатаОтчета)); Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.ТоварыНаСкладах); РезультатЗапроса = Запрос.Выполнить();
Процедура УстановитьСубконто(Счет, Субконто, ИмяСубконто, ЗначениеСубконто) Экспорт Если Счет = Неопределено ИЛИ Счет.Пустая() Тогда Возврат; КонецЕсли; Если ТипЗнч(ИмяСубконто) = Тип("Число") Тогда Если ИмяСубконто > Счет.ВидыСубконто.Количество() Тогда Возврат; КонецЕсли; ВидСубк = Счет.ВидыСубконто[ИмяСубконто - 1].ВидСубконто; Иначе ВидСубк = ПланыВидовХарактеристик[Метаданные.НайтиПоТипу(ТипЗнч(Счет)).ВидыСубконто.Имя][ИмяСубконто]; Если Счет.ВидыСубконто.Найти( ВидСубк) = Неопределено Тогда Возврат; КонецЕсли; КонецЕсли; Если ВидСубк.ТипЗначения.СодержитТип(ТипЗнч(ЗначениеСубконто)) Тогда Субконто.Вставить(ВидСубк, ЗначениеСубконто); Иначе Сообщить("Неверное значение """ + ЗначениеСубконто + """ для вида субконто <" + ВидСубк + ">"); КонецЕсли; КонецПроцедуры
// где Выборка - Выборка из результата запроса Проводка = Движения.Международный.Добавить(); Проводка.Период = ДатаЗакрытияПериода; Проводка.СчетДт = Выборка.Счет; Проводка.СчетКт = ПланыСчетов.Международный.СуммарныеДоходыИРасходы; Проводка.Организация = Организация; Проводка.Сумма = Выборка.СуммаОстатокКт; Проводка.Содержание = "Закрытие счетов в конце финансового года"; Проводка.НомерЖурнала = "Рег"; НомерСубконто = 0; Для каждого ВидСубконто Из Проводка.СчетДт.ВидыСубконто Цикл НомерСубконто = НомерСубконто + 1; ЗначениеСубконто = Выборка["Субконто"+НомерСубконто]; Если ЗначениеЗаполнено(ЗначениеСубконто) Тогда УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт, НомерСубконто, ЗначениеСубконто); КонецЕсли; КонецЦикла;