Зависимость операции от вида санкционирования расходов
Для росписи1-ассигнования, 2-Утвержденные ЛБО, 3-Переданные ЛБО, 4-Полученные ЛБО, 11-бюджетная роспись ГРБС, 12-бюджетная роспись РБС, 13-Полученные ПБСами ЛБО,14-Полученные РБСами ЛБО
Утвержденные по ГРБС ЛБО приравнены к ассигнованиям1 - 3401 3504 4401 4403 4404
2 - 3401 3504 4401 4403 4404
Переданные ЛБО3 - 3503 3504 3701 4404
Полученные ЛБО4 - 3503 3504 3801 3803 4001 4003 4404
Распределение ЛБО с ГРБС на РБС и ПБС - бюджетная роспись ГРБС11 - 3503 3504 3701 4404
Распределение ЛБО с РБС на ПБС - бюджетная роспись РБС12 - пусто
Полученные ПБСами ЛБО - распределение по ПБС. Эти строки могут входить как в роспись ГРБС, так и в роспись РБС13 - 3503 3504 3803 4003 4404
Полученные РБСами ЛБО ГРБС->РБС - распределеиние по РБС. Это та часть росписей ГРБС, которая передается на РБС или перекидывается между РБС14 - 3801 4001
Код: Выделить всё
функция ПолучитьОгрПоБухДокументу(Значение : строка; Коллекция: IVariables) : строка;
переменные
Операции : СтатическиеДанные;
сч : целое;
Огр : строка;
Документы : текст;
начало
//Выделение бухгалтерских документов:
//1 - Ассигнования
//2 - Утвержденные ЛБО (по ГРБС)
//3 - Переданные ЛБО (на РБС и ПБС)
//4 - Полученные ЛБО (РБСами и ПБСами)
//коды 5-10 пропущены, так как используются в лимитах
//11-бюджетная роспись ГРБС
//12-бюджетная роспись РБС
//13-аналог смет ПБС
//14-часть росписей ГРБС, которая передается на РБС
Результат := "";
Операции := СоздатьСтатическиеДанные;
Документы := СоздатьТекст;
попытка
Документы.РазделенноеЗначение := Значение;
Огр := "";
от сч := 0 до Документы.Количество - 1 делать
начало
выбрать СтрокаВЦелое(Документы.Стр(сч)) из
1,2 :
начало
// Утвержденные по ГРБС ЛБО приравнены к ассигнованиям
//берем проводку 503.01(Д) - 501.01(К)
Огр := Огр + "or((bapd.buhacc>=5030100)and(bapd.buhacc<5030200)and(bapc.buhacc>=5010100)and(bapc.buhacc<5010200))";
конец;
3 : //Переданные ЛБО
//в 25Н для финорганов есть проводки распределения: ГРБС->РБС 501.01(Д)-501.02(К), ГРБС->ПБС 501.01(Д)-501.03(К),
// РБС->ПБС 501.02(Д)-501.03(К), РБС->РБС 501.02(Д)-501.02(К). Определяем по ним передачу по дебетовым счетам
Огр := Огр + "or((bapd.buhacc>=5010100)and(bapd.buhacc<5010300))";
4 : // Полученные ЛБО
//в 25Н для финорганов есть проводки распределения: ГРБС->РБС 501.01(Д)-501.02(К), ГРБС->ПБС 501.01(Д)-501.03(К),
// РБС->ПБС 501.02(Д)-501.03(К), РБС->РБС 501.02(Д)-501.02(К). Определяем по ним получение по кредитовым счетам
Огр := Огр + "or((bapc.buhacc>=5010200)and(bapc.buhacc<5010400))";
// для подержки изменений в Бюджетном кодексе (3-х летнее планирование)
// Можно выделять следующие операции:
11: //Распределение ЛБО с ГРБС на РБС и ПБС 501.01(Д) - 501.02(К), 501.01(Д) - 501.03(К) - бюджетная роспись ГРБС
Огр := Огр + "or((bapd.buhacc>=5010100)and(bapd.buhacc<5010200))";
12: // Распределение ЛБО с РБС на ПБС 501.02(Д) - 501.03(К) - бюджетная роспись РБС
Огр := Огр + "or((bapd.buhacc>=5010200)and(bapd.buhacc<5010300)and(bapc.buhacc>=5010300)and(bapc.buhacc<5010400))";
13: // Полученные ПБСами ЛБО 501.01(Д) - 501.03(К), 501.02(Д) - 501.3(К) - распределение по ПБС. Эти строки могут входить как в роспись ГРБС, так и в роспись РБС
Огр := Огр + "or((bapc.buhacc>=5010300)and(bapc.buhacc<5010400))";
14: // Полученные РБСами ЛБО 501.01(Д) - 501.02(К), 501.02(Д)-501.02(К) ГРБС->РБС - распределеиние по РБС. Это та часть росписей ГРБС, которая передается на РБС или перекидывается между РБС
Огр := Огр + "or((bapc.buhacc>=5010200)and(bapc.buhacc<5010300))";
конец;
конец;
Операции.Запрос := "[PumpData]{" + nl +
"select distinct" + nl +
" bac.BuhOperationCLS" + nl +
"from" + nl +
" buhacccorr bac" + nl +
" left join buhaccplan bapc on (bac.creditaccref = bapc.id)" + nl +
" left join buhaccplan bapd on (bac.debitaccref = bapd.id)" + nl +
"where (1<>1)" + Огр + "}";
ПолучитьДанные(Операции, nil);
Результат := GetLimitStr(Операции, "BuhOperationCLS");
если Результат = "" тогда
Результат := "-1";
обязательно
УдалитьОбъект(Операции);
УдалитьОбъект(Документы);
конец;
конец;
Для лимитов для блоков ОФ: 5-Утвержденные ОФ,6-Переданные ОФ,7-полученные ОФ
у меня этот блок не отрабатывает Константы 32-16, 32-17, 32-18 должны браться из VarcharConst, но у меня там только пустая 32-17, остальных вообще нет.
На основании этих констант должно сформироваться ограничение по виду плана. Точнее наверно в этих константах и должен забит быть вид плана для ОФ.
Код: Выделить всё
функция ПолучитьОгрПоБухДокументу(Значение : строка) : строка;
переменные
сч : целое;
Документы : текст;
начало
//Выделение бухгалтерских документов:
//5 - Утвержденные объемы финансирования
//6 - Переданные объемы финансирования
//7 - Полученные объемы финансирования
Результат := "";
Документы := СоздатьТекст;
попытка
Документы.РазделенноеЗначение := Значение;
от сч := 0 до Документы.Количество - 1 делать
начало
выбрать СтрокаВЦелое(Документы.Стр(сч)) из
5 : Результат := Результат + "," + ПолучитьКонстантуКэш("", 32, 16, 2);
6 : Результат := Результат + "," + ПолучитьКонстантуКэш("", 32, 17, 2);
7 : Результат := Результат + "," + ПолучитьКонстантуКэш("", 32, 18, 2);
конец;
конец;
Если Результат <> '' тогда
Результат := Подстрока(Результат, 2, Длина(Результат) - 1);
обязательно
УдалитьОбъект(Документы);
конец;
конец;