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