Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: не отрабатывает условие в запросе . Что я делаю не так?

v7: не отрабатывает условие в запросе . Что я делаю не так?
Я
   Владимир1С
 
08.06.20 - 13:44
ПЕРИОД С ДатаНачала По ДатаКонца;
Валюта=Регистр.Касса.Валюта, Регистр.РасчетныйСчет.Валюта ;
Сум=Регистр.Касса.Наличность, Регистр.РасчетныйСчет.безнал ;
СумКрт=Регистр.Касса.КартаСум;
СумРС=Регистр.РасчетныйСчет.безнал ;
Док=Регистр.Касса.ТекущийДокумент, Регистр.РасчетныйСчет.ТекущийДокумент;
мп = Регистр.Касса.ТекущийДокумент.МестоПродажи;
Группировка Валюта Упорядочить по Валюта.Наименование;
Группировка Док;Условие (МестоПродажи=мп);
Функция НОст=НачОст(Сум);
Функция НОстКрт=НачОст(СумКрт);
Функция НОстРС=НачОст(СумРС);
Функция КОст=КонОст(Сум);    
Функция КОстКрт=КонОст(СумКрт);    
Функция КОстРС=КонОст(СумРС);    
Функция ПрихСумм=Приход(Сум);
Функция ПрихСуммКрт=Приход(СумКрт);
Функция ПрихСуммРС=Приход(СумРС);
Функция РасхСумм=Расход(Сум);
Функция РасхСуммКрт=Расход(СумКрт);
Функция РасхСуммРС=Расход(СумРС);
   Ёпрст
 
1 - 08.06.20 - 13:46
ТекущийДокумент выкини, для начала везде из кода
   Ёпрст
 
2 - 08.06.20 - 13:46
И.. при вычислении остатка..эта шляпа не будет работать
   Владимир1С
 
3 - 08.06.20 - 14:00
Ладно, хорошо, итоги не будет рассчитывать. Что и как изменить, чтобы условие по МестуПродажи учитывалось?
   tgu82
 
4 - 08.06.20 - 14:11
(3) Я понимаю так: Если речь про оборотный запрос то вполне можно через ТекущийДокумент а вот если
запрос по остаткам то тогда МестоПродажи должно быть измерением регистра а не только реквизитом документа.
   Владимир1С
 
5 - 08.06.20 - 14:33
(4) Спасибо
   Cthulhu
 
6 - 08.06.20 - 14:45
по такому условию ты выдерешь только данные из регистра Касса.
выкинь из запроса регистр РасчетныйСчет
в условии переставь Регистр.Касса.ТекущийДокумент.МестоПродажи=МестоПродажи
остатки по-документно ты не получишь. хотя можно извратиться - сразу после выполнения запроса (до перебора результат) ты можешь получить текущие начальные и конечные остатки за весь период. и потом, перебирая группировку по документам - можешь вычислять текущий конечный остаток по текущему начальному остатку плюс оборот
   Cthulhu
 
7 - 08.06.20 - 15:07
ТекстЗапроса = "ПЕРИОД С ДатаНачала По ДатаКонца; Валюта = Регистр.Касса.Валюта; Сум = Регистр.Касса.Наличность; СумКрт = Регистр.Касса.КартаСум; Группировка Валюта Упорядочить по Валюта.Наименование; Группировка Документ; Условие ( Регистр.Касса.ТекущийДокумент.МестоПродажи = МестоПродажи ); Функция НОст = НачОст(Сум); Функция НОстКрт = НачОст(СумКрт); Функция КОст = КонОст(Сум); Функция КОстКрт = КонОст(СумКрт); Функция ПрихСумм = Приход(Сум); Функция ПрихСуммКрт = Приход(СумКрт); Функция РасхСумм = Расход(Сум); Функция РасхСуммКрт = Расход(СумКрт); Функция РасхСуммРС = Расход(СумРС);"
Запрос = СоздатьОбъект("Запрос");
Если Запос.Выполнить("ПЕРИОД С ДатаНачала По ДатаКонца; Валюта = Регистр.Касса.Валюта; Сум = Регистр.Касса.Наличность; СумКрт = Регистр.Касса.КартаСум; Группировка Валюта Упорядочить по Валюта.Наименование; Группировка Документ; Условие ( Регистр.Касса.ТекущийДокумент.МестоПродажи = МестоПродажи ); Функция НОст = НачОст(Сум); Функция НОстКрт = НачОст(СумКрт); Функция КОст = КонОст(Сум); Функция КОстКрт = КонОст(СумКрт); Функция ПрихСумм = Приход(Сум); Функция ПрихСуммКрт = Приход(СумКрт); Функция РасхСумм = Расход(Сум); Функция РасхСуммКрт = Расход(СумКрт);") <> 1 Тогда Возврат КонецЕли;
НОст = Запрос.НОст; НОстКрт = Запрос.НОстКрт;
Пока Запрос.Группировка("Валюта")<>0 Цикл
  ТекВалюта = Запрос.Валюта;
  Пока Запрос.Группировка("Документ")<>0 Цикл
    ТекДок = Запрос.Документ;
    ТекНОст = НОст; ТекКОст = НОст + Запрс.ПрихСумм - Запрс.РасхСумм;
    ТекНОстКрт = НОстКрт; ТекКОстКрт = НОстКрт + Запрс.ПрихСуммКрт - Запрс.РасхСуммКрт;
    НОст = ТекКОст; НОстКрт = ТекКОстКрт;// накопление остатков ...

    // ....... тут всякое-разно что надо, только остатки брать из вычисленных Тек-переменных, а не тянут из запроса

    // (обороты, конечто. тянуть прямо из запроса типа Запрос.ПрихСумм и т.п. .......

  КонецЦикла;
КонецЦикла;
// ну, можно для надежности сравнить накопленные остатки с конечными, типа вот так:

Ошибка = ""; Если ТекКОст <> Запрос.КОст Тогда Ошибка
="Накопленный Кон.Ост.нал.сумы("+ТекКОст+") отличается от итога по регистру Касса ("+Запрос.КОст+")" КонецЕсли;
Если ТекКОстКрт <> Запрос.НОстКрт Тогда Ошибка = Ошибка+ ?(ПустоеЗначение(Ошибка)<>1,"; ","")
+"Накопленный Кон.Ост.карт.сумы("+ТекКОстКрт+") отличается от итога по регистру Касса ("+Запрос.КОстКрт+")" КонецЕсли;
Если ПустоеЗначение(Ошибка)<>1 Тогда Сообщить("ВНИМАНИЕ!.. "+Ошибка+" !..","!!!") КонецЕсли;
// ну, как-то так ...
   tgu82
 
8 - 08.06.20 - 15:28
(6) И все-таки я думаю что сделать местопродажи измерением - более правильно. Хотя если взять типовой тис-вский отчет по кассе с флагом движения по документам то там практически так и получается. Но все-ж таки Касса является Измерением а не только реквизитом документа
   Владимир1С
 
9 - 08.06.20 - 15:54
(8) МестоПродажи уже измерение, так правильнее и легче.
   tgu82
 
10 - 08.06.20 - 16:10
(9) Ну да. И запрос строится без проблем
   Cthulhu
 
11 - 08.06.20 - 16:33
(8): ради одного бантика лопатить регистр - не правильно (да и добавление измерения сопряжено с массовым перепроведением чтобы заполнить это измерение - а это гимор, причем далеко не всегда возможный. так что в общем случае ответ - "нет, неправильно".
(9): ахренеть. разве МестоПродажи в условии запроса - не переменная?.. если нет - тогда у тебя тупо все неправильно )))
   tgu82
 
12 - 08.06.20 - 16:40
(11) Но если нужнны какие остатки на начало по МестоПродажи - то как их получить если это не измерение? На конец - да можно.
   Cthulhu
 
13 - 08.06.20 - 16:43
(12): добавить условие, выполнить запрос и получить из результатов. и на начало и на конец.
   Cthulhu
 
14 - 08.06.20 - 16:52
(13) несчастливый номер, да. остатки продаж по местам продажи - тот самый скрипач, который не нужен. если кому-то этот параметр нужен - значит у него вывих понятийного аппарата и дефект когнитивной функции.
   Владимир1С
 
15 - 08.06.20 - 17:48
(14) жизнь бывает разная....
   AAA
 
16 - 08.06.20 - 19:48
а что мешает сделать местом продажи измерение "Касса" ? По моему она для этого примерно и служит
Зачем еще какое то место продажи?
   Злопчинский
 
17 - 08.06.20 - 21:25
(16) нахрен не надо так деалть.
заведи несколько касс
каждая касса соответствует своему месту продажи.
и это соответсвует реальности - взяли денежки из кассы "торговая точка1" и принесли в кассу "центральный офис"

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.