v7: Бух.итоги в режиме запроса. #269836


#0 by svsrus
Сначала неполное описание процедуры ВыполнитьЗапрос ВыполнитьЗапрос Выборка итогов в различных разрезах. Синтаксис: ВыполнитьЗапрос(<НачалоПериода>, <КонецПериода>, <ФильтрПоСчетам>, Англоязычный синоним: DoQuery Параметры: <НачалоПериода> Необязательный параметр. Выражение типа дата, документ или позиция документа начала периода запроса. Если этот параметр не указан, будут вы­числяться начальные сальдо на момент, указан­ный в параметре <КонецПериода> <КонецПериода> Необязательный параметр. Выражение типа дата, документ или позиция документа конца периода запроса. Если этот параметр не указан, будут вычисляться начальные сальдо на момент, указанный в параметре  <НачалоПериода>. В описании явно видим "НА МОМЕНТ". Что подразумивается под моментом? Ведь реально мы после такого запроса получаем сальдо на дату документа. Для чего нужно: Возникла необходимость получения сальдо на мамент до проведения документа указанного в параметре КонецПериода. Причем документ уже проведен и соответственно сальдо считается с учетом этого документа. В частности такое может понадобиться для определения средней стоимости на момент до проведения документа. Кто-нибудь работал профессионально с бух.итогами. Как рассчитать сальдо на момент до проведения документа? Я сейчас вижу пока только один путь, расчитать бух.итоги на предыдущий день от даты документа, а в нужный день уже оперировать бух.итогами разбитыми по периоду "операция".
#1 by Рэйв
КонецПериода=СформироватьПозициюДокумента(НашДокГраница,-1);
#2 by svsrus
Хм... интересно. Надо попробовать. Но мне не совсем понятно, ВыполнитьЗапрос с таким концом периода расчитает сальдо только до этого документа? Остальные доки идущие после этого документа уже не учитываются. Я правильно понял? Пойду пробовать:)
#3 by IMHO
ВыполнитьЗапрос(ТекущийДокумент, ТекущийДокумент) СНД будет итогом на документ
#4 by Темный Эльф
А начальное сальдо нельзя? Обязательно конечное?
#5 by Рэйв
при раскладе как в не учитавается все НАЧИНАЯ с НашДокГраница
#6 by Doomer
Вы полностью задачу опишите, может ее подругому легче решить?
#7 by svsrus
Не верно! В СНД попадут итоги по этому документу. Без разницы. В данном случае начальное оно же и конечное:)
#8 by svsrus
сейчас попробую , потом объясню. А задача например рассчитать среднюю стоимость товара на момент проведения документа, при том, что документ уже проведен.
#9 by ОбдолбанныйВася
Вы уверены? По поводу СНД? Только что проверил, док проведен, в СНД ОН НЕ ПОПАДАЕТ....
#10 by svsrus
Спасибо Рэйв! Все гуд!!! Даже и не знал, что от этого много зависит. Вроде, по идее если в качестве КонецПериода подставлять документ, система сама должна рассчитывать его позицию. Ан нет.... Вот такие заморочки. Итак методика проверки: Сальдо на 01.05.07 36177,97 руб. Кол-во 6 штук. Вводим 3 документа датой 02.05.07 последовательно. 1.Расходная накладная (Продаем 2 штуки по средней стоимости 6029,66. 6029,66*2 = 12059,32 рубля). СНД после проведения = 36177,97-12059,32 = 24118,65 рубля. В кол-ве 4 штуки. 2.Поступление товара (Поступление 1 штуки по цене 15 000 рублей). СНД после проведения = 39118,65 рубля, в кол-ве 5 шт. 3. Расходная накладная (Продаем 2 штуки по сред.стоимости 7823,73 рубля, итого 15647,46 рублей). СНД после проведения дока 39118,65-15647,46 = 23471,19 рубля, кол-во 3 штуки. Код проверки: Получаем сообщения: Отгрузка товаров, продукции 000050/3 (02.05.07) КонецПериода - документ. СНД = 23471.19 , в количестве 3 Позиция документа: #20070502 527470000      6691ЯЯЯ КонецПериода - позиция документа. "СНД = 39118.65 , в количестве 5 Что и требовалось доказать! Круто!:)
#11 by ОбдолбанныйВася
Итак методика проверки: Сальдо на 01.05.07 36177,97 руб. Кол-во 6 штук. Вводим 3 документа датой 02.05.07 последовательно. 1.Расходная накладная (Продаем 2 штуки по средней стоимости 300. 300*2 = 600 руб). СНД после проведения = 3000 - 600 = 2400 руб. В кол-ве 8 штук. 2.Поступление товара (Поступление 1 штуки по цене 15 000 рублей). СНД после проведения = 17 400 руб, в кол-ве 9 шт. 3. Расходная накладная (Продаем 2 штуки по сред.стоимости 1933,33 руб, итого 2866,66 рублей)... Код проверки: Получаем сообщения: Отгрузка товаров, продукции 00000001 (02.05.07) КонецПериода - документ. СНД = 3000 , в количестве 10 Позиция документа: #20070502 706570000       982ЯЯЯ КонецПериода - позиция документа. "СНД = 3000 , в количестве 10 Что и требовалось доказать! почти (с)
#12 by ОбдолбанныйВася
>Сальдо на 01.05.07 3000 руб. Кол-во 10 штук.
#13 by ZolotarevAA
Пока работал с 7.7, везде юзали ТекущийДокумент и работало. Присоединяюсь к .
#14 by svsrus
Мда...?! Ну проверьте сходите... Только учтите, вы делаете ТекущийДокумент когда документ еще не проведен. Я же расчитваю бух.итоги, когда документ уже проведен. На всякий случай проверил.... Как видим при проведенном документе ТекщийДокумент не верно дает сальдо. Процедура Сформировать Отгрузка товаров, продукции 000050/3 (02.05.07) КонецПериода - документ. СНД = 23471.19 , в количестве 3 КонецПериода - позиция документа. "СНД = 39118.65 , в количестве 5 КонецПериода - ТекущийДокумент. "СНД = 23471.19 , в количестве 3
#15 by ZolotarevAA
Мне не надо ничего доказывать, лучше ошибку в своем коде найди.
#16 by svsrus
Извиняюсь... то результат будет такой же как и: БухИт.ВыполнитьЗапрос(,КонецПериода,"41.4",,,,,"СК");
#17 by svsrus
+++
#18 by AeDen
+1!!! Запомни одно. Умолчания во-первых никогда не оставляй, проставляй ВСЕ параметры, что-бы не трахаццо с переводом на sql, и период расчета итогов бери МИНИМАЛЬНО ВОЗМОЖНЫЙ. Хотя-бы затем, что-бы памяти чуть меньше ело, и запрос чуть быстрее выполнялся...
#19 by ZolotarevAA
Типовая бухгалтерия, документ Авансовый отчет, процедура, показывающая взаиморасчеты с подотчетным лицом на момент документа:        Предупреждение("На " + ДатаДок + " бухгалтерские итоги не рассчитаны!
#20 by ZolotarevAA
+19 Мне кажется, что все достаточно просто.
#21 by Папа Гапа
Тебе остается только заразить этими галюцинациями ... И будет фсё харашо!
#22 by PaulBC
Это все не в модуле проведения документа случайно надо? Если да, то ВыполнитьЗапрос(,ТекущийДокумент); (Если конечно у документа включено автоматическое удаление движений) Если нет, то
#23 by svsrus
А почему возникнут проблемы при переходе на SQL, если не указвать значения по умолчанию? Вроде вся конфигурация сплошь и рядом не использует указывание начальных значений, если они не обязательны. А зачем мне этот пример? Вообщем я разобрался. Можно использовать просто ВыполнитьЗапрос(Документ,,"41.1").
#24 by ZolotarevAA
Для того, чтобы появилась последняя строчка твоего поста.
#25 by AeDen
Был прикол, запрос не работал в сиквеле. В ДБФ отрабатывал, тока шум стоял. Не были рпоставлены параметры некоторые, остались по-умолчанию. Когда эти умолчания явно указал - запрос стал великолепно отрабатывать. Там много всякого может выплыть. И потом, запрос без начальной даты рационально использовать только в тех случаях, когда нужны данные за весь период ведения учета в системе. Иначе лучше ограничить временные интервалы, так-как это ведет к снижению периода выборки, а следовательно, и к увеличению скорости выполнения, и уменьшению объема потребляемой памяти.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С