v7: Функция КонОст(...) КОГДА(......); Что за "когда"? #804070


#0 by live in sky dreams
В некоторых вопросах разработчиков встречается это самое "КОГДА" используемое в функциях.. Мне подумалось, что функция срабатывает, если выполняется условие после "КОГДА". Проверил на сборе остатков из регистра. ... ... ... ... Функция Остаток1 = КонОст(Количество) КОГДА (Склад В СписокСкладов1); Функция Остаток2 = КонОст(Количество) КОГДА (Склад В СписокСкладов2); ... Он мне просто вываливает остаток по всем имеющимся складам и в "Остаток1" и в "Остаток2". Я же думал, что остаток по складам из "списка1" будет в Остаток1 а остаток по складам из "списка2" будет в "Остаток2". Ну логично было так предположить.. В СП по функции молчок. Перерыл интернету - там про "Когда" мало кто пишет, а если пишет - то просто в части вопроса этого самого "когда" не касающегося. Что это за звэр? Как его готовить? Где можно почитать?
#1 by mishaPH
а что не так? КОгда используется в запросе, когда надо получить цифру с условием котороне нельзя применять к другим переменным или функциям. например в одном запросе надо получить цифры по разным складам тогда Условие применяется ко всем. Функция Остаток1 = КонОст(Количество) КОГДА (Склад В СписокСкладов1); Функция Остаток2 = КонОст(Количество) КОГДА (Склад В СписокСкладов2); 1 запрос но данные по суммам из разных условий. чтобы не городить разные запросы или склады выводитьв группировки а потом отсеивать не нужное
#2 by aka AMIGO
"Когда" - увидишь, когда запустишь конструктор запроса, на вкладке "Функция" У меня есть только одно применение
#3 by aka AMIGO
+2 функция КолвоМонт отбирает из документов по условию значения реквизита Монт=1 Всё остальное она не затрагивает, это-не-условие
#4 by Злопчинский
Или я туплюИли в ответах нет по существу вопроса ТС
#5 by aka AMIGO
Копипаст из СП: Англоязычный синоним: Function <ИмяФункции> = <ТипФункции>(<Параметр>|<УточненныйПараметр>) [When(<Условие>)]; Назначение: Вычислить функцию и включить ее результат в запрос. Параметры: <ИмяФункции> - имя, присваиваемое функции; <ТипФункции> - ключевое слово одной из встроенных функций языка; <Параметр> - имя внутренней переменной, параметр вызова функции; <УточненныйПараметр> - конкретизация внутренней переменной, параметр вызова функции. <Условие> - условие вычисления функции (необязательно).
#6 by aka AMIGO
ты не тупишь. Ответа нет
#7 by aka AMIGO
кстати, в ЖКК стр 812 про функцию и "когда" кой-что есть, но составители, видимо, не посчитали важным это слово, только и написали несколько строк
#8 by live in sky dreams
Спасибо за ответ, но из него я не понял механику.. :( Построитель запроса в клюшках сути КОГДА не раскрывает, более того, считаю, что построитель больше с толку сбивает, чем помогает. Читал СП, знаю, что функция "документированная" и не тайная.. Но не понял как пользоваться. В контексте моего вопроса как использовать КОГДА правильно? Есть 2 списка значений с разными наборами складов в них. Как мне получить остатки по ГруппаСкладов1 и ГруппаСкладов2 используя КОГДА? Вообще это реально или в обходе группировок основного запроса уже отдельными "запросиками" собирать остатки просаживая "FPS"?
#9 by aka AMIGO
Если лень лезть в ЖКК, или под рукой его нет:
#10 by aka AMIGO
:( увы, не знаю.. По-идее, твой код должен работать
#11 by live in sky dreams
Я читал в электронном виде и оттуда был уверен что мой код должен работать, но увы, в 2 колонках показатели остатков идентичный, хотя склады в списках значений разные
#12 by пипец
и чо ? ты весь запрос покажи и проверь универсальным отчетом по регистру - ты уверен что они у тебя разные ?
#13 by пипец
навеяло - доктор я весь больной, ткну пальцем в ногу больно, ткну в голову, больно ...
#14 by Ёпрст
И ниже, видать еще в коде Условие(Склад в Выбсклад); :)))))))))))))))))))))))))))))
#15 by live in sky dreams
кто разные? Остатки по складам? Конечно уверен. Угу, естественно, а еще ниже ТекстЗапроса = ""; А еще ниже: //Я вас любил. Любовь, еще, быть может.. ))))))))
#16 by Масянька
Совсем внизу напиши: Но пусть она Вас больше не тревожит. И отпустит.
#17 by live in sky dreams
Не.. Нет объявлено таких переменных ))
#18 by linoblack
имхо, когда относится только к переменной в функции, т.е. Функция Остаток1 = КонОст(Количество) КОГДА (Количество что то там);
#19 by live in sky dreams
Это противоречит выражению в , которое автор, по всей видимости, использует в продакшне и оно работает. Ну мне так показалось..
#20 by Масянька
Из типовой:
#21 by linoblack
оно не работает скорее всего. а так, как я написал - работает 100% я так обороты разделяю двумя функциями на, например, продажи и возвраты. без "когда" будет общее количество, т.к. возврат это   тоже как бы продажа но с отрицательным количеством.
#22 by linoblack
#23 by live in sky dreams
Формирование текста запроса: "ГруппыСкладов" - список значений, тип значения: текст. Содержит список наименований групп складов. Так же используется как условие отбора из таблицы значений ("ГрцппаСклада", "Склад"). Каждой группе соответствует 1 или более складов. функция ВернутьСписокСкладовГруппы(ИмяГруппыСклада) как раз и возвращает список значений со складами, соответствующими указанной группе. Отладчиком проверял - да, возвращает верно, в зависимости от указанной группы. Должно же С#КА работать!!!! :(
#24 by live in sky dreams
("ГрцппаСклада", "Склад") = ("ГруппаСклада", "Склад") В коде нет этой ошибки, просто сюда руками писал
#25 by Масянька
ВернутьСписокСкладовГруппы - что возвращает: строку или ссылку?
#26 by aka AMIGO
Отличие есть у типовой и у ТС, такое: в типовой функции подсчитывают 3 разные суммы: расход, приход, КонОст в коде тс - дважды: КонОст ИМХО - видимо, в этом засада..
#27 by live in sky dreams
СписокЗначений; хм... попробую убрать расчет резерва, посмотрим
#28 by aka AMIGO
Внешняя функция для подсчета остатков по двум группам складов, вставленная в Запрос - может решить задачу. Запрос тупо подсчитывает конОст общий..
#29 by FIXXXL
семерошный язык запросов писал видимо чувак, который или не слышал про скуль или скуль ему чем-то насолил надо же такую хрень навертеть...
#30 by aka AMIGO
Ну, что делать.. приходится пользоваться тем, что есть, раз больше 7-ка не поддерживается
#31 by aka AMIGO
посмотри тут пример применения внешней функции, её имя - ВернутьСумму(...)
#32 by aka AMIGO
+31 а здесь вообще круть неимоверная:
#33 by Ёпрст
Не надо ничего убирать. Выведи сюда ТекстЗапроса.
#34 by Ёпрст
Хотя не надо. У тя вся проблема в функции ВернутьСписокСкладовГруппы. в Тексте запроса всегда один и тот же список значений будет.
#35 by Ёпрст
отсюда, результат запроса для этих функций - одинаковый.
#36 by Ёпрст
>>>Содержит список наименований групп складов. Это тоже пять! Список должен, как минимум, содержать список Элементов справочника, а не наименований.
#37 by Ёпрст
ну и сз должны быть видимы извне, т.е явно объявлены , как внешние переменные модуля.
#38 by Масянька
Я бы сказала, что это пять с плюсом :) С#КА - это про тебя запрос думает :)
#39 by aka AMIGO
Может-же человек оговориться?
#40 by Масянька
Не мелочись - кол :)
#41 by aka AMIGO
+39 но не проверить СЗ при первом запуске - это промах..
#42 by Злопчинский
Нет - я не плачу! И - не рыдаю! Я всем доступно объясняю...
#43 by Масянька
Поэт в России больше, чем поэт (С) Поэт в России - одинэсник :))))
#44 by Builder
Не поленился, накидал запрос. Все работает, выдает разные остатки. Так что у ТС явно что то не то с запросом и с логикой построения групп складов.
#45 by Злопчинский
так что ли?
#46 by Builder
У ТС?
#47 by Злопчинский
не факт. иногда ткань пространства-времени переклинивает и любого может выбросить в параллельную реальность с немного другими законами.. а у себя, здесь, мы отражаемся именно в таком качестве... ;-)
#48 by Builder
Заметно....
#49 by Масянька
Бегемотик! Миленький! Выдыхай! (С)
#50 by Злопчинский
Первый признак сумашсетвия - что сумашедший не видит своего сумашествия... так что ты это.. внимательнее ... к себе.. ;-)
#51 by Масянька
Это - если смотреть с одной стороны. А если смотреть в параллельной реальности - кто из вас псих? А вполне вероятно, что и оба нормальны. Просто параллельные реальности не пересекаются.
#52 by toypaul
"ГруппыСкладов" - список значений, тип значения: текст. Содержит список наименований групп складов. схрена ли тогда Склад, который элемент справочника должен быть в списке строк? это вопрос раз и два - коли такой охренительный запрос на 7ке пишешь - не удивляйся если что-то работать не будет.
#53 by live in sky dreams
Спасибо всем :) И тем, кто реально старался помочь и вангам :) Особенно улыбнули вангования про строки вместо элементов, хотя вроде текст запроса и логику работы функций расписал, хотя, это ж читать нужно..... Пятница, да ну нах еще читать что-то ))) А кроме шуток - админ по надобности ребутнул серв и циферки заиграли достоверностью. В запросе ошибок не было(кто не увидел в был текст запроса с описанием что там откуда куда). Вот я и думаю, а могли быть глюки из-за утечки памяти или чего-то в этом роде? P.S.: Аптайм серва виндового (терминал, базы локально файловые) 16 дней.
#54 by Злопчинский
хм.. на файловых с таким вроде не сталкивался
#55 by Ёпрст
брехня
#56 by Ёпрст
сервант тут не причем, максимум, нужно было жуколов закрыть к едрени фени и табло в нём
#57 by live in sky dreams
а жуколов то каким боком?
#58 by пипец
+ ну как вариант запускался не тот отчет, который правился в конфигураторе , то есть его более ранняя версия, чудес не бывает (с) ЗЫ а то в продолжение темы анекдотов про выбор жены ))) - сколько дважды два ? * а сколько нужно (с)
#59 by Злопчинский
жуколов через вычисленяи в табло может поменять ...
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

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