|
v7: 2-й параметр метода ПолучитьПериод() | ☑ | ||
---|---|---|---|---|
0
wmonref
05.07.16
✎
14:54
|
День добрый. Есть следующая коннструкция:
БИ = СоздатьОбъект("БухгалтерскиеИтоги"); БИ.ИспользоватьСубконто(ВидыСубконто.Товары,ТМЦ1,1); БИ.ВыполнитьЗапрос(НачДата,КонДата,Счет,,,1,"Операция",1); БИ.ВыбратьСубконто(ВидыСубконто.Товары); Если БИ.ПолучитьСубконто(ВидыСубконто.Товары) = 1 Тогда БИ.ВыбратьПериоды(); текПериод = КонДата; Пока текПериод >= НачДата Цикл Если БИ.ПолучитьПериод(, текПериод) = 1 Тогда Сообщить(БИ.Операция); Сообщить(текПериод); КонецЕсли; текПериод = текПериод - 1; КонецЦикла; КонецЕсли; Суть: Использую 2-й параметр метода ПолучитьПериод() - значение даты начала периода, на который нужно спозиционироваться - который позволяет получить периоды на конкретную дату. Хочу получить документы от последнего к первому, т.е. в обратном порядке. Все работает, однако есть одно "но". Если на определенную дату (текПериод) есть несколько документов то выборка получает только первый документ. Собственно вопрос: как получить все документы за текПериод? |
2 9 10 |
||
1
Builder
05.07.16
✎
15:28
|
Продам СП, дорого.
ПолучитьПериод(<?>,) Синтаксис: ПолучитьПериод(<Номер>,<ДатаНачалаПериода>) Назначение: Получить из выборки следующий период. Выборка должна быть предварительно открыта при помощи метода ''ВыбратьПериоды''. Возвращает 1 - следующий период выбран успешно; 0 - следующий период не выбран (отсутствует). Метод как бы намекает на использование его в цикле. Пока БИ.ПолучитьПериод(, текПериод) = 1 Цикл КонецЦикла; |
4 6 |
||
2
NikVars
05.07.16
✎
15:33
|
(0) У тебя нет выборки по периодам. Ты выбираешь по операциям.
|
3 |
||
3
Builder
05.07.16
✎
16:06
|
(2) В данном случае "Операция" и есть период, тут все правильно. ТС нужны документы.
Но код обработки странноватый... |
|||
4
wmonref
05.07.16
✎
16:16
|
(1) Попробуйте, пожалуйста, выполнить этот код :
текПериод = КонДата; Пока текПериод >= НачДата Цикл БИ.ВыбратьПериоды(); Пока БИ.ПолучитьПериод(, текПериод) = 1 Цикл Сообщить(БИ.Операция); Сообщить(текПериод); КонецЦикла; текПериод = текПериод - 1; КонецЦикла; |
5 9 |
||
5
Builder
05.07.16
✎
17:07
|
(4) Я похож на тестировщика?
Зачем мне выполнять чужой г..нокод? Зафига тут цикл по периодам? Какой тайный смысл обработки? |
|||
6
wmonref
05.07.16
✎
18:37
|
А что-ж вы так занервничали??
Дело в том что если использовать ПолучитьПериод(, текПериод) в цикле то получается бесконечный цикл... Объясню смысл данной обработки: требуется найти некоторые товары и получить для них дату и номер последнего документа прих. накладная (для этого и нужно "обратное получение периода"). Сейчас использую обработку типа: Прих = Создатьобъект("Документ.ПрихНалоговаяНакладная"); Прих.ОбратныйПорядок(1); Прих.УстановитьФильтр(1,0); Прих.ВыбратьДокументы(,ТекущаяДата()); Пока Прих.ПолучитьДокумент() = 1 Цикл Прих.ВыбратьСтроки(); Пока Прих.ПолучитьСтроку() = 1 Цикл Если Прих.Тмц1 = Товар Тогда //нашли нужный товар КонецЕсли; КонецЦикла; КонецЦикла; что, естественно, не есть хорошо... Вот и хочу оптимизировать работу программы |
9 |
||
7
wmonref
07.07.16
✎
10:55
|
Ап
|
|||
8
zenik
07.07.16
✎
11:02
|
Запросом и быстрее и красивше...
|
|||
9
Абыр
07.07.16
✎
11:07
|
10 |
|||
10
wmonref
07.07.16
✎
15:30
|
11 |
|||
11
Абыр
07.07.16
✎
15:59
|
(10) обратного порядка для выбора периодов не предусмотрели
Как в бухгалтерии удобнее и быстрее выбрать остатки товара по док. поставки? |
12 |
||
12
wmonref
08.07.16
✎
09:55
|
(11) ОК, поставлю вопрос по другому :)
Как получить все документы на <ДатаНачалаПериода> используя метод ПолучитьПериод(<Номер>,<ДатаНачалаПериода>)??? Потому что в "стандартном" использовании этого метода возвращается только первый документ за заданный период... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |