|
v7: Бухгалтерия 7.7 Конечное сальдо по заданным счету, контрагенту и договору? | ☑ | ||
---|---|---|---|---|
0
Mikhail Volkov
05.02.19
✎
18:04
|
Попросили в отчете добавить колонку с остатками. В каждой строке отчета есть контрагент и его договор. Сейчас остатки они смотрят по ОСВ по счету. Смотрел ОСВ, но ничего не понял: как получить Конечное сальдо по заданным счету, контрагенту и договору?
|
|||
1
Джинн
05.02.19
✎
18:11
|
Бухзапросом не предлагать?
|
|||
2
azernot
05.02.19
✎
18:11
|
Через бухгалтерские итоги! Ваш Кэп.
Лучше сразу, при построении отчёта через запрос к бухгалтерским итогам. Но можно и через функции типа СКК()-СКД() |
|||
3
HawkEye
05.02.19
✎
18:34
|
(0) а чем остатки в ОСВ не нравятся? не те цифры показывают? ))
|
|||
4
Mikhail Volkov
05.02.19
✎
18:46
|
(3) Нравятся, но хотят их видеть сразу в одном отчете "Реестр договор".
(2) А сам запрос как? (1) Не знаю как... |
|||
5
DobrovVadym
05.02.19
✎
19:03
|
(4)а если в ОСВ задать развертывание по договорам? Возможно их только сальдо конечное интересует, а в ОСВ попадают и те контрагенты и договора, у которых есть сальдо начальное и обороты?
|
|||
6
DobrovVadym
05.02.19
✎
19:05
|
Контрагент ведь и по 60, и по 62, и по 76 счету может быть. Их все вместе интересуют? Или раздельно? Или чтобы выбирать можно было?
|
|||
7
zak555
05.02.19
✎
19:49
|
В 7ке один договор может быть на нескольких счетах: 60,62,76
|
|||
8
Mikhail Volkov
05.02.19
✎
19:52
|
(6) Счета только 76 .К .1 и 76 .К .4 в зависимости от вида договора. В каждой строке отчета "Реестр договор" есть контрагент и его договор. Нужно добавить колонку Остаток. Нужна функция получения Конечного сальдо по заданным счету, контрагенту и договору. Как?
|
|||
9
Looking
05.02.19
✎
21:48
|
(8)счета не типовые, как называются? по какому критерию осуществляют деление по субсчетам? разделят по субсчетам, то скорее всего и сальдо нужно раздельное? иначе зачем делят по ним? счета активно-пассивные?
примерно в таком ключе Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты,,1); Ит.ИспользоватьСубконто(ВидыСубконто.Договоры,,1); Ит.ВыполнитьЗапрос(НачДата, КонДата, СписокСчетов); Ит.ВыбратьСчета(); Пока Ит.ПолучитьСчет()=1 Цикл Ит.ВыбратьСубконто(1); Пока Ит.ПолучитьСубконто(1)=1 Цикл Ит.ВыбратьСубконто(2); Пока Ит.ПолучитьСубконто(2)=1 Цикл СКД=Ит.СКД("С"); СКК=Ит.СКК("С"); КонецЦикла; КонецЦикла; КонецЦикла; |
|||
10
azernot
05.02.19
✎
23:38
|
БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
БухИт.Актуальность(1); БухИт.ПериодМ(ДатаРасчета); АвансВыданный = БухИт.СКД(СчетПоКоду("60.2"),,, ТекКонтрагент.ТекущийЭлемент(), ТекДоговор.ТекущийЭЛемент()); Задолженность = БухИт.СКК(СчетПоКоду("60.1"),,, ТекКонтрагент.ТекущийЭлемент(), ТекДоговор.ТекущийЭЛемент()); и т.п. |
|||
11
Mikhail Volkov
06.02.19
✎
07:17
|
(10) Ваш вариант более привлекателен в сравнении с (9):
//******************************************* //+МВ 06.02.2018 Функция Остаток(Договор) Счет = ?(Договор.Вид = Перечисление.ПС_ВидыДоговоров.ДоговорВзноса,СчетПоКоду("76 .К .1"),СчетПоКоду("76 .К .4")); ТипСуммы = ?(Договор.ВалютаДоговора.Код = "643",1,2); Субконто1 = Договор.Контрагент.ТекущийЭлемент(); Субконто2 = Договор; БухИт = СоздатьОбъект("БухгалтерскиеИтоги"); БухИт.Актуальность(1); БухИт.ПериодМ(КонДата); Если ПустоеЗначение(Договор.ВалютаДоговора) = 1 Тогда ОстатокНач = БухИт.СКД(Счет,,, Субконто1, Субконто2); ОстатокКон = БухИт.СКК(Счет,,, Субконто1, Субконто2); Сообщить("Счет: "+Счет+", Субконто1: "+Субконто1+", Субконто2: "+Субконто2+", ОстатокКон = "+ОстатокКон+", КонДата = "+КонДата); Иначе ОстатокНач = БухИт.СКД(Счет,ТипСуммы,Договор.ВалютаДоговора, Субконто1, Субконто2); ОстатокКон = БухИт.СКК(Счет,ТипСуммы,Договор.ВалютаДоговора, Субконто1, Субконто2); Сообщить("Счет: "+Счет+", ТипСуммы: "+ТипСуммы+", Валюта: "+Договор.ВалютаДоговора+", Субконто1: "+Субконто1+", Субконто2: "+Субконто2+", ОстатокКон = "+ОстатокКон); КонецЕсли; Возврат ОстатокКон - ОстатокНач; КонецФункции //******************************************* но результат нулевой: Счет: 76.К.1, Субконто1: Погодина Е.Ю., Субконто2: Заключение договора 01276, ОстатокКон = 0, КонДата = 31.01.19 Счет: 76.К.1, Субконто1: Медведева Ю.Г., Субконто2: Заключение договора 01277, ОстатокКон = 0, КонДата = 31.01.19 Счет: 76.К.1, Субконто1: Сыркина Н.Г., Субконто2: Заключение договора 01278, ОстатокКон = 0, КонДата = 31.01.19 Счет: 76.К.1, Субконто1: Карягина Т.Н., Субконто2: Заключение договора 01279, ОстатокКон = 0, КонДата = 31.01.19 А по ОСВ он есть. Что-то упустил? |
|||
12
Mikhail Volkov
06.02.19
✎
07:56
|
(9) 76 .К .1 - Личные сбережения, 76 .К .4 - Займы
Мне нужен Остаток в каждом конкретном случае по одному счету, одному Субконто1, одному Субконто2. Зачем циклы? |
|||
13
Looking
06.02.19
✎
08:02
|
(12)"Мне нужен Остаток в каждом конкретном случае по одному счету, одному Субконто1, одному Субконто2. Зачем циклы?"
Вы собираетесь по каждому контрагенту запрос к базе делать? Не проще ли сделать 1 запрос по всем контрагентам и затем по его результатам сформировать список с остатками? У Вас сейчас список по справочнику заполняется? Раз в нем остатков нет? А в моем варианте список контрагентов появляется из запроса к остаткам, без обращения к справочнику. |
|||
14
Looking
06.02.19
✎
08:10
|
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты,,1); Ит.ИспользоватьСубконто(ВидыСубконто.Договоры,,1); Ит.ВыполнитьЗапрос(НачДата, КонДата, СписокСчетов); Ит.ВыбратьСчета(); Пока Ит.ПолучитьСчет()=1 Цикл Ит.ВыбратьСубконто(1); Пока Ит.ПолучитьСубконто(1)=1 Цикл Ит.ВыбратьСубконто(2); Пока Ит.ПолучитьСубконто(2)=1 Цикл Контрагент=Ит.Субконто(1); Договор=Ит.Субконто(2); СКД=Ит.СКД("С"); СКК=Ит.СКК("С"); КонецЦикла; КонецЦикла; КонецЦикла; |
|||
15
Looking
06.02.19
✎
08:10
|
+(14)добавил
Контрагент=Ит.Субконто(1); Договор=Ит.Субконто(2); |
|||
16
Looking
06.02.19
✎
08:11
|
+(15)то есть контрагент и договор берутся не из справочников, а из обращения к итогам
|
|||
17
Looking
06.02.19
✎
08:19
|
поправлюсь
Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты,,1); Ит.ИспользоватьСубконто(ВидыСубконто.Договоры,,1); Ит.ВыполнитьЗапрос(НачДата, КонДата, СписокСчетов); Ит.ВыбратьСчета(); Пока Ит.ПолучитьСчет()=1 Цикл Ит.ВыбратьСубконто(1); Пока Ит.ПолучитьСубконто(1)=1 Цикл Контрагент=Ит.Субконто(1); СКДПоКонтрагенту=Ит.СКД("С"); СККПоКонтрагенту=Ит.СКК("С"); Таб.ВывестиСекцию("СтрокаКонтрагента"); Ит.ВыбратьСубконто(2); Пока Ит.ПолучитьСубконто(2)=1 Цикл Договор=Ит.Субконто(2); СКДПоДоговору=Ит.СКД("С"); СККПоДоговору=Ит.СКК("С"); Таб.ВывестиСекцию("СтрокаДоговора"); КонецЦикла; КонецЦикла; КонецЦикла; |
|||
18
Mikhail Volkov
06.02.19
✎
08:27
|
(13) Да, именно так, по каждому контрагенту и договору запрос к базе делать. Потому что мне нужен остаток для другого отчета (а не ОСВ).
|
|||
19
Looking
06.02.19
✎
08:31
|
(18)
Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контрагент,2); Ит.ИспользоватьСубконто(ВидыСубконто.Договоры,Договор,2); Ит.ВыполнитьЗапрос(КонДата, КонДата, СписокСчетов); Ит.ВыбратьСчета(); Пока Ит.ПолучитьСчет()=1 Цикл СКДПоДоговору=Ит.СКД("С"); СККПоДоговору=Ит.СКК("С"); Таб.ВывестиСекцию("СтрокаДоговора"); КонецЦикла; |
|||
20
HawkEye
06.02.19
✎
08:44
|
(18) если хочешь делать именно так, то запрос все равно надо делать один, а к конкретному контрагенту/договору обращаться через последний (третий) параметр в получитьСубконто()
|
|||
21
Looking
06.02.19
✎
08:49
|
(20)спасибо!
|
|||
22
Pit0n_08
06.02.19
✎
09:27
|
Тренироваться в кодинге - вещь хорошая, но почему бы просто не использовать стандартный отчет "Анализ субконто"?
|
|||
23
Mikhail Volkov
06.02.19
✎
09:45
|
(13) > У Вас сейчас список по справочнику заполняется? Раз в нем остатков нет?
Оказалось, что Договор не справочник, который поставляется в Субконто2, а Документ кредитного договора. Заменил в (11) на: Спр = СоздатьОбъект("Справочник.Договоры"); Спр.ИспользоватьВладельца(Договор.Контрагент); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Если Спр.ТекущийЭлемент().ПС_Документ = Договор Тогда Субконто2 = Спр.ТекущийЭлемент(); Прервать; КонецЕсли; КонецЦикла; Спр = 0; И все заработало! Спс. |
|||
24
HawkEye
06.02.19
✎
09:49
|
(23) я так понимаю скорость работы отчета тебя не сильно волнует, да? ))
|
|||
25
Mikhail Volkov
06.02.19
✎
10:23
|
(24) Это 7-ка, в ней летает все!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |