|
v7: Фильтрация результатов запроса. КАК? | ☑ | ||
---|---|---|---|---|
0
IrinaBrik
12.10.11
✎
09:34
|
здравствуйте!
работаю с бух.итогами в режиме запроса. необходимо: рассчитать показатели субсчетов 10го счета http://i.imgur.com/D7Sbn.png для каждого из контрагентов. использую субконто "Контрагенты"... делаю: БИ.ИспользоватьСубконто(ВидыСубконто.Контрагенты); БИ.ВключатьСубсчета(1, 0); БИ.ВыполнитьЗапрос(НачДата, КонДата, "10", "20, 23, 25, 26, 44, 91, 16",,1,,1); БИ.ВыбратьСубконто(1); Пока БИ.ПолучитьСубконто(1) = 1 Цикл ДО = БИ.ДО("10.1"); //к примеру КонецЦикла; дело в том, что БИ.ДО("10.1") и БИ.ДО() дают один и тот же результат, а мне надо получить сумму именно по субсчету(!!) как быть? |
|||
1
Азат
12.10.11
✎
09:35
|
может, в том, что в БИ.ДО() параметром будет тип суммы, а не счет?
Салаго, читай СП! |
|||
2
Азат
12.10.11
✎
09:35
|
+ БИ.ВыбратьСчет() Пока БИ.ПолучитьСчет() = 1 Цикл
|
|||
3
Chum
12.10.11
✎
09:36
|
ВыбратьСчета, ВыбратьСубсчета и т.д.
|
|||
4
Guk
12.10.11
✎
09:36
|
во-первых, надо указать страну. например, в РФ не на всех субсчетах 10 есть контрагент. во-вторых, надо прочитать инструкцию по работе с бухзапросами...
|
|||
5
Креатив
12.10.11
✎
09:39
|
(4)+ Лучше сразу конфигурацию.
|
|||
6
G-Re
12.10.11
✎
09:40
|
БИ.ИспользоватьСубКонто(-1);
БИ.ВыбратьСчета(); Пока БИ.ПолучитьСчет()=1 Цикл КонецЦикла; |
|||
7
zak555
12.10.11
✎
09:41
|
||||
8
chief accountant
12.10.11
✎
10:22
|
(7) +1
|
|||
9
IrinaBrik
12.10.11
✎
10:22
|
(1) верно, мой косяк. сама помнила про это и все равно пишу :/
(4) все читала, должно работать. по-моему дело в запросе (7) не баян, тот вариант не работает. пишу БИ = СоздатьОбъект("БухгалтерскиеИтоги"); БИ.ИспользоватьСубконто(ВидыСубконто.Номенклатура,,1,0); БИ.ИспользоватьКорСубконто(,,1,0); БИ.ВключатьСубсчета(-1,0); БИ.ВыполнитьЗапрос(НачДата, КонДата, "10.8", "60.1,20,23,25,26,44,91",,2,,1); БИ.ВыбратьСубконто(1); Пока БИ.ПолучитьСубконто(1) = 1 Цикл БИ.ВыбратьКорСубконто(1); Пока БИ.ПолучитьКорСубконто(1) = 1 Цикл сообщить(БИ.ДО()); КонецЦикла; КонецЦикла; результата - ноль. тоже самое и без вложенного цикла по КорСубконто |
|||
10
Креатив
12.10.11
✎
10:34
|
(9)Конфигурация какая? Ты уверена, что у тебя на 10.8 есть субконто номенклатура? Может там материалы?
|
|||
11
IrinaBrik
12.10.11
✎
10:42
|
(9)
на 10.8(и других нужных мне субсчетах) два субконто - "материалы" и "места хранения". я это уже исправила, использую нужные субконто, но все равно результат запроса пустой. вдобавок мне надо сперва отбирать по поставщикам и потом считать субсчета для каждой группы материалов |
|||
12
Креатив
12.10.11
✎
11:08
|
(11)Ещё попробуй вместо строчек с кодами счетов передавать списки значений со счетами.
А в выполнитьзапрос в типе итогов вместо 2 поставь 3(про запас). БИ.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты,,1,0) так понятней. Кстати, на 20, 23, 25 и 26 субконто контрагенты обычно отсутствует. |
|||
13
IrinaBrik
12.10.11
✎
11:09
|
(10)
поправила субконто в запросе (9) - работает! НО - мне надо сперва группировать по контрагентам, а потом для каждого из них рассчитывать субчета. сейчас наоборот - сперва субсчета, а потом по разбивка по контрагентам. должно получиться: контрагент1 Группа_материалов1(счет 10.1) 345.56 контрагент1 Группа_материалов2(счет 10.3) 745.78 контрагент1 Группа_материалов3(счет 10.4) 798.6 контрагент2 Группа_материалов1(счет 10.1) 200.64 контрагент2 Группа_материалов2(счет 10.2) 212.46 ... и так далее ума не приложу, как изменить тот запрос для такого.. |
|||
14
zak555
12.10.11
✎
11:44
|
(13) что ты поправила ?
|
|||
15
IrinaBrik
12.10.11
✎
12:29
|
(14)
полностью убрала субконто "Номенклатура" + не использую КорСубконто - заменила субконто Контрагентов на МестаХранения (отдельные циклы для установления соотвествия) сейчас буду писать алгоритм для обхода субсчетов - или вручную или через большое условие |
|||
16
zak555
12.10.11
✎
13:24
|
(9) вместо ДО использовать КорКО
|
|||
17
IrinaBrik
12.10.11
✎
13:46
|
(16)но мне необходимо из результатов такого запроса:
БИ.ВыполнитьЗапрос(НачДата, КонДата, "10.8, 16.1", "60.1,20,23,25,26,44,91",,2,,1); получить сумму: Д10.8+16.1 К60.1 не пойму как... |
|||
18
zak555
12.10.11
✎
14:46
|
(17) очень просто
для начала распиши ВСЕ возможные проводки |
|||
19
Креатив
12.10.11
✎
17:33
|
(17)И каждый раз после изменения кода выкладывай его сюда. Потому как догадываться, что конкретно ты изменила сложно.
|
|||
20
zak555
12.10.11
✎
17:35
|
(19) это слишком просто будет
|
|||
21
IrinaBrik
13.10.11
✎
07:15
|
(18)
проводки: 1 Д10.8+16.1 К60.1 2 Д20,23,25 К 10.8 3 Д26 К 10.8 4 Д91 К 10.8 5 Д44 К 10.8 или вот в таблице http://i.imgur.com/D7Sbn.png и например, текущий код запроса для проводки Д10.8+16.1 К60.1: БИ = СоздатьОбъект("БухгалтерскиеИтоги"); ПроизвДО = 0; БИ.ИспользоватьСубконто(ВидыСубконто.МестаХранения); БИ.ВключатьСубсчета(-1,0); БИ.ВыполнитьЗапрос(НачДата, КонДата, "10.1, 16.1", "60.1,20,23,25,26,44,91",,2,,1); БИ.ВыбратьСубконто(1); Пока БИ.ПолучитьСубконто(1) = 1 Цикл БИ.ВыбратьСчета(); БИ.ПолучитьСчет(,"10.1"); БИ.ВыбратьКорСчета(); БИ.ПолучитьКорСчет(,"60.1"); ПроизвДО = ПроизвДО + БИ.КорДО(); //раз БИ.ВыбратьСчета(); БИ.ПолучитьСчет(,"16.1"); БИ.ВыбратьКорСчета(); БИ.ПолучитьКорСчет(,"60.1"); ПроизвДО = ПроизвДО + БИ.КорДО(); //два Сообщить(ПроизвДО); КонецЦикла так считает! но получается мне так каждую проводку расписывать? у меня их много и такой расчет займет много времени.. |
|||
22
IrinaBrik
13.10.11
✎
07:18
|
(21)
там опечаталась, проводка не Д10.8+16.1 К60, а Д10.1+16.1 К60 |
|||
23
G-Re
13.10.11
✎
09:29
|
(22) Сделай ПолучитьСчет() и ПолучитьКорСчет(),
Внутри этого цикла сделай, например, ТЗ с реквизитами ДТ, КТ, Сумма. Ну а дальше анализируй эту ТЗ. (Можно ТЗ и не делать, а анализировать в цикле, счета ведь известны БИ.Счет, БИ.КорСчет). Нужные тебе корреспонденции для суммирования куда-нибудь запиши, например, в справочную ТЗ, чтобы в тексте не было констант. Убери также константы из запроса, но это уже макияж. |
|||
24
IrinaBrik
13.10.11
✎
09:48
|
>корреспонденции для суммирования куда-нибудь запиши, например, в справочную ТЗ, чтобы в тексте не было констант
вот это интересно, но пока нужно чтобы работал, потом сделаю верно а как убрать константы из запроса? заменить их на СЗ? |
|||
25
zak555
13.10.11
✎
12:22
|
(21) другое дело
аналитика на счёте 16.1 какая ? |
|||
26
IrinaBrik
13.10.11
✎
12:37
|
(25) субконто по группам материалов, но это не принципиально
|
|||
27
zak555
13.10.11
✎
13:10
|
(26) т.е. на твои 10.Х и 16.1 имеют только аналитику Материалы ?
|
|||
28
IrinaBrik
13.10.11
✎
14:04
|
(27) верно
|
|||
29
zak555
13.10.11
✎
14:13
|
(28) что такое группа материалов ?
|
|||
30
zak555
13.10.11
✎
15:27
|
что-то типа того :
СЗ_МатериалыГруппы = СоздатьОбъект("СписокЗначений"); //заполняем БИ = СоздатьОбъект("БухгалтерскиеИтоги"); БИ.ИспользоватьСубконто(ВидыСубконто.Материалы,,1); БИ.ВключатьСубсчета(-1,-1); БИ.ВыполнитьЗапрос(НачДата, КонДата, "10.1, 16.1", "60.1,20,23,25,26,44,91",,2,,1); ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Аналитика", "Справочник.Материалы"); ТЗ.НоваяКолонка("ПолученоОтКомпаний", "Число", 15, 2); ТЗ.НоваяКолонка("СписаноПроиводство", "Число", 15, 2); ТЗ.НоваяКолонка("СписаноУправление", "Число", 15, 2); ТЗ.НоваяКолонка("СписаноПрочие", "Число", 15, 2); ТЗ.НоваяКолонка("СписаноКоммерческие", "Число", 15, 2); БИ.ВыбратьСубконто(1); СЗ_МатериалыГруппыРазмерСписка = СЗ_МатериалыГруппы.РазмерСписка(); Для н = 1 по СЗ_МатериалыГруппыРазмерСписка Цикл Аналитика = СЗ_МатериалыГруппы.ПолучитьЗначение(н); ТЗ.НоваяСтрока(); ТЗ.Аналитика = Аналитика; Если БИ.ПолучитьСубконто(1,, Аналитика) = 0 Тогда Продолжить; КонецЕсли; БИ.ВыбратьКорСчета(); Пока БИ.ПолучитьКорСчет() = 1 Цикл Если БИ.КорСчет = СчетПоКоду("60.1") Тогда ТЗ.ПолученоОтКомпаний = БИ.КорКО(1); //.... КонецЕсли; КонецЦикла; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |