|
v7: Как получить сумму сумм всех документов из выборки? | ☑ | ||
---|---|---|---|---|
0
MathaiShung
08.03.16
✎
18:48
|
В форме документа ПриходноКасовыйОрдер нужно чтобы поле сумма заполнялось автоматически на основании сумм Расходных Накладных.
Процедура ПриВыбореКлиента() Док=СоздатьОбъект("Документ.РасходнаяНакладная"); ДокСумма=Док.ПолучитьАтрибут("Сумма"); ДатаНач=РабочаяДата(); Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса= " |С ДатаНач; |Обрабатывать НеПомеченныеНаУдаление; |Без итогов; |Док = Документ.РасходнаяНакладная.ТекущийДокумент; |Контрагент = Документ.РасходнаяНакладная.Клиент; |Группировка Док упорядочить по Док.Клиент без групп все ВошедшиеВЗапрос; |Условие (Контрагент = Клиент); |" Запрос.Выполнить(ТекстЗапроса); Если Запрос.Группировка(Док)=0 Тогда Сумма=Итог(ДокСумма); ДокументОснование=Док.Вид()+" "+Док.НомерДок(); Иначе Пока Запрос.Группировка()=1 Цикл СуммаДок=Итог(ДокСумма); КонецЦикла; //Сумма=......... КонецЕсли; КонецПроцедуры |
|||
1
ДенисЧ
08.03.16
✎
18:50
|
Я один не протрезвел ещё и не понял, что хочет это создание?
|
|||
2
Злопчинский
08.03.16
✎
18:55
|
Сначала кзнать какие накладные неоплачены
Сформировать список Показать юзверю Юзверь отметит галочками требуемые суммы Сделать пко с суммой сумм Внимание Пко на эту сумму не значит что будут оплачены указанные юзверем накладные Пко на эту сумму означает что будет погашен долг клиента на указанную сумму, а на какие доки это разляжется и даже аванс может получиться - все зависит от тормознутости оператора и действий других пользователей |
|||
3
Злопчинский
08.03.16
✎
18:57
|
В общем случае поставленная задача есть фуфло
Ибо не надо искать накладные Достаточно получить долг клиента И все |
|||
4
Tatitutu
08.03.16
✎
19:00
|
Правильно сформулировать задачу
вот это удалить: // Док=СоздатьОбъект("Документ.РасходнаяНакладная"); //ДокСумма=Док.ПолучитьАтрибут("Сумма"); //ДатаНач=РабочаяДата(); ???? думаешь после есть документы ? Запрос ничего не вернет (как минимум указать другую дату , например дату договора) Запрос удалить. Переписать- добавить функцию сумму (сумм документов) Получить итог |
|||
5
MathaiShung
08.03.16
✎
19:01
|
(3) Нет, надо иенно чтоб общая сумма по накладным за текущий день подтягивалась при выборе контрагента, т.к сейчас это всё делается в ручную, а это очень неудобно на больших объёмах и в интенсивном режиме.
|
|||
6
MathaiShung
08.03.16
✎
19:04
|
(4) Мне нужно именно за текущую дату. Я и спрашиваю, как получить сумму сумм документов.
|
|||
7
Tatitutu
08.03.16
✎
19:06
|
Текущий день и РабочаяДата() - ??? не есть одно и тоже
|
|||
8
Tatitutu
08.03.16
✎
19:30
|
(7) сорри это 7.7 отвлекся
|
|||
9
Tatitutu
08.03.16
✎
19:31
|
(6) у запрос добавь Функцию сумма
|
|||
10
MathaiShung
08.03.16
✎
19:42
|
(9) Чтобы в запросе добавить такую функцию я так понимаю надо и переменную соответствующую добавлять. А у документа РасходнаяНакладная нет такого реквизита как общая сумма, есть только реквизит табличной части Сумма по каждому товару, то есть по каждому документу надо сначало общю сумму рассчитать. И как это всё в запрос запихнуть?
|
|||
11
Tatitutu
08.03.16
✎
20:06
|
(10) продолжай на верном пути
|
|||
12
nordbox
08.03.16
✎
20:15
|
ну коли идет пьянка..... )))
ну если у тебя есть док из запроса то наверное можно и сумму дока получить???? пьем дальше... ))) |
|||
13
MathaiShung
08.03.16
✎
20:22
|
(12) Сумму из одного документа получить не проблема, а вот как мне получить суммы из всех документов выборки чтобы их потом можно было просуммировать и полученное значение вставить в нужное поле?
|
|||
14
nordbox
08.03.16
✎
20:31
|
(13) Ты наверное вместе со спиртным еще и травой балуешься????
Поделись... ))) есть самый тупой школьный способ ДокИтог=ДокИтог+ДокСумма )))) и засовывай куда хочешь, в любое место если лень фукцию в запрос или отдельную написать |
|||
15
nordbox
08.03.16
✎
20:36
|
+14 В твоем случае
СуммаДок=0; Пока Запрос.Группировка()=1 Цикл СуммаДок=СуммаДок+ДокСумма; КонецЦикла; Сообщить(СуммаДок); |
|||
16
MathaiShung
08.03.16
✎
20:39
|
(15) Чё за бред? Так вообще хрень какая-то получится, а совсем не то что надо.
|
|||
17
Злопчинский
08.03.16
✎
20:43
|
(16) небред стоит ресурсов
Которые выражаются либо в личном затраченном времени Либо оплате специалисту |
|||
18
nordbox
08.03.16
✎
20:45
|
(16) Сам ты бред.
Это будет твоя сумма доков выборки |
|||
19
oslokot
08.03.16
✎
21:00
|
Эх,школота. держите реальное рабочее решение
//старт СуммаИтого=0 днк = создатьобъект("докумет.расходнаянакладная") док = днк.выбратьДокуметы(ДатаНач,ДатаКон) пока док.получитьдокумент() = 1 цикл если док.проведен() = 0 тогда продолжить конецесли если док.контрагент = пко.контрагент тогда СуммаИтого=СуммаИтого+док.Сумма; конецесли конеццикла пко.СуммаПоКлиентум = СуммаИтого //останов |
|||
20
hhhh
08.03.16
✎
21:06
|
(19) это рабочее?
|
|||
21
oslokot
08.03.16
✎
21:08
|
(20) думаю да, только подрихтовать децел нада)
|
|||
22
HawkEye
08.03.16
✎
23:26
|
весело тут у вас )))
|
|||
23
Злопчинский
08.03.16
✎
23:35
|
(22) а то!
Клюшки - веселое дело |
|||
24
MathaiShung
09.03.16
✎
12:21
|
(18) (19) Полная чушь! Что вы пишите откровенную бредятину? ДокСумма - это значения сумм по товарам из табличной части одного документа, СуммаДок - итоговые суммы каждого из документов в Цикле. И вы предлагаете их складывать??
|
|||
25
MathaiShung
09.03.16
✎
12:22
|
Как просуммировать значения перемнной, полученные в Цикле?
|
|||
26
Ёпрст
09.03.16
✎
12:38
|
(25)
Процедура ПриВыбореКлиента() Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса= " |Период С ДатаДок По ДатаДок; |Без итогов; |Печеньки = Документ.РасходнаяНакладная.Сумма; |Контрагент = Документ.РасходнаяНакладная.Клиент; |Функция ИтогоПеченьки = Сумма(Печеньки); |Группировка Контрагент без групп; |Условие (Контрагент = Клиент); |" Запрос.Выполнить(ТекстЗапроса); Сообщить("Итого печенек на за дату: "+Запрос.ИтогоПеченьки); КонецПроцедуры |
|||
27
MathaiShung
09.03.16
✎
12:42
|
(26) Так не получится - я уже писал об этом в (10)
|
|||
28
Злопчинский
09.03.16
✎
12:46
|
(27) Коллека (позвольте так вас называть) - обращаю внимание, что здесь конечно могут рассказать азы программирования, в т.ч. и как проссуммировать в цикле, но вообщем подразумевается что вы владеете хотя бы начальными навыками основ программирования...
|
|||
29
Масянька
09.03.16
✎
12:47
|
Афигеть...
Я смотрю, праздник удался... Очень... |
|||
30
Злопчинский
09.03.16
✎
12:47
|
(27) а ты попробуй (маловато скиллов у тебя чтобы давать заключения получится или нет)
|
|||
31
Ёпрст
09.03.16
✎
12:50
|
(27) ты это, неправ, если что
|
|||
32
MathaiShung
09.03.16
✎
12:50
|
(30) Я пробовал уже, ещё до того как здесь вопросы задавать - нет в документе Расходная накладная такого реквизита Сумма
|
|||
33
Ёпрст
09.03.16
✎
12:51
|
(32) в табличной части нету ? А какой есть ?
|
|||
34
Ёпрст
09.03.16
✎
12:52
|
тот и подставь
|
|||
35
Масянька
09.03.16
✎
12:52
|
(33) Автора Пэй Мэй плохо воспитывал :)
|
|||
36
MathaiShung
09.03.16
✎
12:53
|
(33) В табличной части есть. Но мне же нужно просуммировать не только Суммы в табличной части, но и суммы этих сумм по всем документам выборки.
|
|||
37
Масянька
09.03.16
✎
12:55
|
(36) Колоссально...
Слушай, возьми запрос Ё, скопируй, запусти, а потом - попробуй разобраться... |
|||
38
Ёпрст
09.03.16
✎
12:56
|
(36) ну так запусти (26) - получишь
|
|||
39
MathaiShung
09.03.16
✎
13:01
|
(38) Попробую конечно, но я изначально когда уже пытался такое сделать мне конструктор запросов не дал даже добавить эту переменную - пишет: "переменная другого типа данных!". Поэтому решил циклом попробовать. А возможно ли вообще то, что я хотел в (25) ?
|
|||
40
Злопчинский
09.03.16
✎
13:04
|
(39) вот смотри: писька Ёпрста - 96см, твоя - 1см... ты думаешь такая писька сама вырастает? ни с того ни с сего...?
|
|||
41
Ёпрст
09.03.16
✎
13:04
|
(39) можно всё, но для начала, проверить (26).
|
|||
42
Злопчинский
09.03.16
✎
13:05
|
(41) тихо, не спугни!
|
|||
43
MathaiShung
10.03.16
✎
21:08
|
(26) Всё правильно я говорил - не считается так сумма итогов по всем накладным из выборки. С такой функцией в запросе он просто возвращает итоговые суммы по каждой накладной в отдельности. Попытка засунуть результат этой функции внутрь новой функции Сумма приводит к ошибке, т.к. результатом является несколько параметров. Так как же всё таки посчитать Сумму Итоговых сумм Документов внутри запроса, или при обработке его результатов?
ДатаНач=РабочаяДата(); ДатаКон=РабочаяДата(); Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса= " |С ДатаНач По Датакон; |Обрабатывать НеПомеченныеНаУдаление; |Без итогов; |Док = Документ.РасходнаяНакладная.ТекущийДокумент; |Контрагент = Документ.РасходнаяНакладная.Клиент; |ТовСумм = Документ.РасходнаяНакладная.Сумма; |Функция ДокИтог = Сумма(ТовСумм); |Группировка Док упорядочить по Док.Клиент без групп все ВошедшиеВЗапрос; |Условие(Контрагент = Клиент); |"; Запрос.Выполнить(ТекстЗапроса); |
|||
44
zak555
10.03.16
✎
21:11
|
где бухзапрос?
|
|||
45
MathaiShung
10.03.16
✎
21:14
|
(44) Что за бух запрос?
|
|||
46
HawkEye
10.03.16
✎
22:08
|
(24) правильно, не слушай их... как их можно складывать? умножай их
|
|||
47
Злопчинский
10.03.16
✎
23:11
|
(43) Для начала проверить (26)
разобраться как считаются функции для группировок. разобраться что вернет функция на самом высоком уровне группировки - !!над всеми группировками!! - то есть в ИТОГЕ ЗАПРОСА. . При дальнейшем злостном ламерство-чайниковстве - автор будет забанен на некоторый срок, чтобы было время поучиться, а не заниматься фигней. |
|||
48
Злопчинский
10.03.16
✎
23:12
|
..+ изучить язык запросов, обратить внимание на Без Итогов
|
|||
49
MathaiShung
10.03.16
✎
23:47
|
(47) C итогами уже переделал, теперь непонятно как спозиционироваться на этой строке с итогами.
Тому что я спрашиваю нигде не учат - всё на практике приходится осваивать. |
|||
50
MathaiShung
10.03.16
✎
23:56
|
+(49) Всё, вопрос решён, сам додумал...
|
|||
51
Злопчинский
11.03.16
✎
00:08
|
(49) а кто тебя бесплатно будет учить? мы когда учились - инета не было как сейчас. Но как-то выучились...
|
|||
52
MathaiShung
11.03.16
✎
01:20
|
(51) Я и не претендую на обучение, тем более бесплатное. Здесь задаю исключительно практические вопросы только когда у самого не получается, т.к спросить больше не у кого - я думал для этого форумы и существуют. Если бы я всё сам знал, чего б я тут делал тогда вообще.
Сейчас и за платно никто учить особо не старается - у меня после прохождения базового курса в сертифицированном центре 1С вопросы возникают постоянно при столкновении реальными практическими задачами. Всё потому что обучение так себе - очень поверхностно, сумбурно и не даёт чёткого понимания логики и принципов работы объектной модели. |
|||
53
Злопчинский
11.03.16
✎
01:26
|
(52) ты (26) пробовал?
|
|||
54
MathaiShung
11.03.16
✎
01:35
|
(53) Да, всё получилось уже - после обработки результатов запроса получил нужную сумму
|
|||
55
MathaiShung
11.03.16
✎
01:37
|
(54) + ну не совсем ка в (26) конечно - с итогами получилось
|
|||
56
Злопчинский
11.03.16
✎
01:40
|
(55) и что тебя не устроило в двух операторах перед концом процедуры?
|
|||
57
MathaiShung
11.03.16
✎
01:43
|
В смысле..? Почему не устроило?
|
|||
58
Злопчинский
11.03.16
✎
01:48
|
(57) чем тебя не устроил вариант 26?
Конкретно - чем? |
|||
59
MathaiShung
11.03.16
✎
01:51
|
+(57) Я вот так сделал:
Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса= " |Период с (РабочаяДата()) по (РабочаяДата()); |Обрабатывать НеПомеченныеНаУдаление; |ОбрабатыватьДокументы Проведенные; |Док = Документ.РасходнаяНакладная.ТекущийДокумент; |Контрагент = Документ.РасходнаяНакладная.Клиент; |ТовСумм = Документ.РасходнаяНакладная.Сумма; |Функция ДокИтог = Сумма(ТовСумм); |Группировка Док упорядочить по Док.ДатаДок; |Условие(Контрагент = Клиент); |"; Запрос.Выполнить(ТекстЗапроса); Запрос.вНачалоВыборки(); Сумма=Запрос.ДокИтог; Теперь думаю над тем как количество накладных в выборке посчитать - Счётчик считатет кол-во товаров в табличной части, а не то что мне надо, а реквизита по которому можно было бы поле кол-ва документов задать у документа нету. |
|||
60
Builder
11.03.16
✎
01:53
|
Блин, спать пора, а тут самое интересное начинается..... :)
|
|||
61
Злопчинский
11.03.16
✎
01:55
|
Автор упорно не хочет сознаваться что вариант из 26 он даже не запускал
|
|||
62
Злопчинский
11.03.16
✎
01:57
|
(59) вставь функцию счетчик чере еумляут - и смотри
|
|||
63
MathaiShung
11.03.16
✎
01:58
|
(61) Как это не запускал? Я его сразу проверил
|
|||
64
Злопчинский
11.03.16
✎
01:59
|
(63) и что?
|
|||
65
MathaiShung
11.03.16
✎
02:01
|
(64) Я сначала неправильно представлял что именно возвращает результат запроса - про то, что итоги по каждой строке сами посчитаются в группировке Итог, поэтому хотел функциями посчитать сумму итогов по всем документам.
|
|||
66
MathaiShung
11.03.16
✎
02:03
|
(62) Что такое чере емуляут?
|
|||
67
Злопчинский
11.03.16
✎
02:03
|
(65) не надо лишних сущностей
Что тебе не понравилось в том итоге что выдал вариант в 26 ? |
|||
68
Злопчинский
11.03.16
✎
02:05
|
(66) ну как бы образованный человек должен хотя бы примерно представлять что такое умляуты - а программист одноэс обязан быть образованным хоть в чемто если не в программировании - пояндексишь
|
|||
69
MathaiShung
11.03.16
✎
02:07
|
(67) Он выдавал список итоговых сумм по каждой накладной, а мне нужно было получить одно число - их сумму
|
|||
70
Злопчинский
11.03.16
✎
02:10
|
(69) злостно врешь
Код в 26 выдает ЕДИНСТВЕННОЕ ЗНАЧЕНИЕ он не может выдавать список Еще раз вопрос Ты вариант в 26 запускал? Без своих добавок? Вариант 26 выводит единственное число - сумму всех сумм Тебе с 26 по 46 пост примерно настойчиво советовали воспользоваться вариантом 26 Еще раз вопрос Ты вариант 26 запускал? |
|||
71
MathaiShung
11.03.16
✎
02:12
|
(70) Запускал, говорю же
|
|||
72
MathaiShung
11.03.16
✎
02:15
|
+ (71) Только группировку походу поменял
|
|||
73
Злопчинский
11.03.16
✎
02:18
|
(71) Еще раз: ТЫ ЗЛОСТНО ВРЕШЬ.
в твоем ответе о том что ты запускал вариант 26 фигурирует: "Он выдавал список итоговых сумм по каждой накладной" в моем пояснении в (70) найстойчиво обращено внимание: "Код в 26 выдает ЕДИНСТВЕННОЕ ЗНАЧЕНИЕ он не может выдавать список " - ВЫДАЕТ ЕДИНСТВЕННОЕ ЗНАЧЕНИЕ, НЕ МОЖЕТ ВЫДАВАТЬ СПИСОК. ты утверждаешь - что код в (26) который ты запускал - выдает СПИСОК 1. Итого из (72): ты вариант из 26 - НЕ ЗАПУСКАЛ. При этом утверждал, что опубликованный вариант выдает неправильно. 2. К тому что тут пишут люди - и не я один - ты злостно не прислушивался/игнорировал - несмотря на то, что люди - по доброте душевной - пришли тебе помось. Что делать будем? |
|||
74
Злопчинский
11.03.16
✎
02:21
|
(72) Даже смена группировки в запросе в варианте 26 не привела бы к выдаче списка, т.е. снова врешь.
|
|||
75
MathaiShung
11.03.16
✎
02:25
|
(73) (74) Да ничего подобного! Какой смысл мне врать? Я его запускал вчера - получилось не сразу, были сначал ещё другие ошибки, потом по мере их исправления и незначительно модификации запроса стал выдавать список чисел. Сейчас тупо скопипастил вообще без изменений, проверил - вообще 0 выдаёт.
|
|||
76
Злопчинский
11.03.16
✎
02:37
|
Я встал с дивана...
|
|||
77
Злопчинский
11.03.16
✎
02:38
|
(75) снова злостно врешь
"незначительно модификации запроса стал выдавать список чисел." пример в 26 выдает единственное число. ты выданный тебе пример раздербанил в соответсии со своим миропониманием |
|||
78
KoZuB
11.03.16
✎
02:46
|
(77) Врал. Теперь не врет. в (26) "без итогов" лишнее.
|
|||
79
MathaiShung
11.03.16
✎
02:46
|
(77) Правильно, потому что я не бездумно копирую написанные примеры, а разбираюсь в их логиге. И потом всё равно этот запрос неправильно работает - он 0 выдаёт
|
|||
80
KoZuB
11.03.16
✎
02:48
|
(79) Ни... Не разобрался.
ЖКК. только ЖКК... |
|||
81
MathaiShung
11.03.16
✎
02:49
|
(78) Да, теперь всё правильно...
|
|||
82
KoZuB
11.03.16
✎
02:56
|
(39) Здесь ты ступил. В конструкторе ты пытался запихнуть в одну переменную различные типы: сумма и клиент. А нужно кнопку нажать "добавить переменную" и потом выбрать уже сумму
|
|||
83
Злопчинский
11.03.16
✎
02:56
|
(78) не врал. выдает единственное число - пусть даже 0.
то есть запрос работает, осталось поянть - где засада в запросе. если бы разбирался в логике - сразу бы обратил вниамние на БезИтогов и прочитал бы в СП что по этому поводу написано. А там панисано что Без итогов - для обхода следует использовать Запрос.Группировка() без параметров. Запрос.Группировка() - в примере 26 - не используется. Вывод - что-то с БезИтогов - не так. Убираем без итогов - получаем нужный результат. Епрст всегда кладет мелкие засады в свои примеры. По ним видно - разбирался ли человек с примером или нет, пытался ли вдумчиво к нему подходить или использовал по принципу "ща наляпаю вдруг получится". - не получилось. тем более - прочитать пост 37 - даже не мой! !!!!тем более - прочитать пост 48 - где я явно указал что следует обратить внимамние на Без итогов.!!! нет, автор тупо прет по тому пути, который сам для себя выбрал, митусится, кидается вправо-влево, по дороге которую советуют добрые дровосеки - не идет, хотя пришел с вопросом "где здесь правильная дорога?" |
|||
84
MathaiShung
11.03.16
✎
02:57
|
(82) Да, я знаю - уже разобрался. В семёрки для меня непривычный этот конструктор по началу был
|
|||
85
MathaiShung
11.03.16
✎
03:05
|
(83) Про без итогов - вот именно этим сегодня и занимался, после чего всё получилось, правда перед этим ещё много чего в запросе поперепробовал и поменял. В итоге понял таки ка что делается и в чём було неправильное представление, так что я считаю что не зря пошёл своим путем.
|
|||
86
Злопчинский
11.03.16
✎
03:09
|
(85) Понимаешь, проблема в чем - программирование не надо читать наискосок, через предложение, даже если это форум... здесь до состояния манной каши редко разжевывают. обычно дают вешки. внимательный человек - идет и смотри вешки. Невнимательному - похрен. конечно, трудно быть внимательным. это требует напряжения мозга. он этому противится. все с этим сталкиваются. поэтому надо тренироваться. здесь тебя 80 постов тренировали, а ты все уприался...
|
|||
87
Злопчинский
11.03.16
✎
03:10
|
(85) ну так 26 пост запустил с убранными без итогов, выдает правильный результат?
|
|||
88
Злопчинский
11.03.16
✎
03:14
|
надеюсь, что тренировка не прошла даром и нижеприведенный текст аffтар осилит запустить без отсебятины и пострается понять логику.
на сим ветка закрывается, автор отправляется в краткосрочный учебный отпуск до пнд Процедура ПриВыбореКлиента() Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса= " |Период С ДатаДок По ДатаДок; |Печеньки = Документ.Реализация.Сумма; |Контрагент = Документ.Реализация.Контрагент; |Функция ИтогоПеченьки = Сумма(Печеньки); |Функция СколькоПеченек = Счётчик(); |Группировка Документ; |Условие (Контрагент = Клиент); |"; Запрос.Выполнить(ТекстЗапроса); Сообщить("Итого печенек за дату: "+Запрос.ИтогоПеченьки); Запрос.Группировка(1); Сообщить("Итого печенек в кучке: "+Запрос.СколькоПеченек); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |