|
v7: Год в "черном" запросе | ☑ | ||
---|---|---|---|---|
0
lals
21.10.18
✎
11:35
|
Возможно ли получить год из даты в черном запросе чтобы установить группировку "Год" и или условие.
Варианты выгружать в ТЗ. не предлагать. хочется по другому. просто нет или да, если да то пожста подскажите как |
|||
1
exwill
21.10.18
✎
12:19
|
(0) В "черном" запросе возможно практически все. Читай описание языка SQL.
|
|||
2
Случайный прохожий
21.10.18
✎
12:44
|
В семерке нет функции "НачалоПериода"?
|
|||
3
exwill
21.10.18
✎
12:47
|
(2) Он хочет черный запрос.
|
|||
4
Duke1C
21.10.18
✎
16:10
|
Группировка <?> Упорядочить по ;
Синтаксис: Группировка <ИмяГруппировки>|<ПредопредГруппировка> [Упорядочить по <КонкретизацГруппировки>, ...][Без Упорядочивания][Без Групп][Все [ВошедшиеВЗапрос]]; Англоязычный синоним: Group <ИмяГруппировки>|<ПредопредГруппировка> [Order By КонкретизацГруппировки, ...][Without Groups][All [IncludedInQuery]]; Назначение: Установить порядок выборки информации. Параметры: <ИмяГруппировки> - имя внутренней переменной, задающей группировку; <ПредопредГруппировка> - ключевое слово одной из встроенных группировок; <КонкретизацГруппировки> - конкретизация переменной <ИмяГруппировки>, задающая порядок групп. Ключевые слова: Упорядочить по - параметры, следующие за данным ключевым словом, определяют упорядочивание строк в группировке. Без Упорядочивания - необязательное добавочное ключевое слово, которое преследует цель уменьшения времени формирования запроса, при условии, что ни упорядочивание, ни значения упорядочивания при использовании данного запроса не нужны. Без Групп - группы справочника не выводятся в запрос (для группировки по справочнику); Все - в запрос выводятся все значения, и нулевые тоже (используется для группировок по справочникам и временных группировок). ВошедшиеВЗапрос - уточняет предыдущее ключевое слово 'Все'. Использование данного слова подразумевает, что в каждую строку запроса будут включены значения данных (в том числе нулевые), для которых есть ненулевое значение хотя бы в одной строке запроса. Замечание: Предопределенные группировки: Документ (Document) - позволяет детализацию до документа; СтрокаДокумента (DocumentLine) - позволяет детализацию до строки документа; ПериодЖурнала (JournalPeriod) - группировка по времени ввода записи журнала расчетов или по времени ее действия. Группировки по дате: День (Day); Неделя (Week); Месяц (Month); Квартал (Quarter); Год (Year). Подробнее см. в документации, глава ''Язык Генерации Запросов'' |
|||
5
Duke1C
21.10.18
✎
16:11
|
+4 или Год нужно извлекать не из даты документа?
|
|||
6
lals
21.10.18
✎
16:54
|
(5) Нет год надо извлечь из реквизита справочника.
Суть вопроса надо перебрать справочник определить год рождения и сделать группировку по году (месяцу) рождения вот гдето так если бы не ругалось на ошибку "//{{ЗАПРОС(Сформировать) |Родитель = Справочник.Сотрудники.Родитель; |Должность = Справочник.Сотрудники.Должность; |Подразделение = Справочник.Сотрудники.Подразделение; |ТекущийЭлемент = Справочник.Сотрудники.ТекущийЭлемент; |Пол = Справочник.Сотрудники.Пол; |ГодРожд = ДатаГод(Справочник.Сотрудники.ДатаРожд); |МесяцРожд = ДатаМесяц(Справочник.Сотрудники.ДатаРожд); |Функция Счётчик = Счётчик(); |Условие(Родитель = ВыбРодитель); |"//}}ЗАПРОС ; |
|||
7
lals
21.10.18
✎
16:55
|
Как бы в функцию впихнуть
|
|||
8
2S
21.10.18
✎
16:57
|
Опиши свою функцию, какие проблемы?
|
|||
9
lals
21.10.18
✎
17:50
|
Запрос по справочнику чтобы отсортировать (отбирать) сотрудников по годам рождения, по месяцам рождения и прочие ее хотелки хотелось бы сделать запросом, но не получается в запросе получить датаГод от даты рождения сострдника.
|
|||
10
2S
21.10.18
✎
21:28
|
(9) еще как получается
пиши свою функцию, главное чтобы число возвращала, если не ошибаюсь |
|||
11
lals
22.10.18
✎
06:50
|
(10) Пишу -
|ДатаРождения= Справочник.Сотрудники.ДатаРожд; |Функция ГодРождения = ДатаГод(ДатаРождения); Вылетает с ошибкой Запрос[8] : Неожиданное выражение 'ДатаГод' |
|||
12
lals
22.10.18
✎
07:08
|
+(11) И вообще СП пишет Что список функций предопределен. Знать добавить туда ничего нельзя.
|
|||
13
Sserj
22.10.18
✎
07:09
|
(11)
Функция МояФункцияДатаГод(ДатаРождения) Возврат ДатаГод(ДатаРождения); КонецФункции ... |ДатаРождения= Справочник.Сотрудники.ДатаРожд; |Функция ГодРождения = МояФункцияДатаГод(ДатаРождения); ... |
|||
14
Sserj
22.10.18
✎
07:10
|
+(13)
Точнее в запросе |ДатаГод = МояФункцияДатаГод(Справочник.Сотрудники.ДатаРожд); |
|||
15
АгентБезопасной Нацио
22.10.18
✎
07:16
|
может, подключить 1с++ и не парить мозг?
|
|||
16
lals
22.10.18
✎
07:23
|
(16) 1 не хотелось бы
2 впервые столкнулся хотелось бы разобраться в механизме (13,14) спасибо ща буду пробовать |
|||
17
lals
22.10.18
✎
07:39
|
(13) Увы не хочет брать внешнюю функцию, верней ругается что не нашел
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда {D:\1CSOFT\EXTFORMS\КАДРОВЫЕВЫБОРКИ.ERT(27)}: ГодРождения = <<?>> МояФункцияГод(Справочник.Сотрудники.ДатаРожд); Запрос[8] : Неверно заданный путь 'МояФункцияГод' |
|||
18
АгентБезопасной Нацио
22.10.18
✎
08:10
|
(16) Штатный черный запрос семерки - ужасен. Хотя есть люди, творящие чудеса и на нем. Но "получение скиллов в черном запросе на клюшках" - имхо, неактуально уже. есть более удобные инструменты, хотя и не одобренные свыше...
|
|||
19
ptiz
22.10.18
✎
08:48
|
(17) Она определена выше запроса?
|
|||
20
lals
22.10.18
✎
08:57
|
(17) да
сразу была после затем перенес выше результат тот же щас вот попробовал |Функция ГодРождения = Сумма(МояФункцияГод(ДатаРождения)); ругаться не ругается но в функцию не заходит я там сообщить вставил |
|||
21
ptiz
22.10.18
✎
09:11
|
Проверил, вот так прекрасно заходит:
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |ОбрабатыватьДокументы все; |Сотрудники = Справочник.Сотрудники.ТекущийЭлемент; |ДатаРождения = Справочник.Сотрудники.ДатаРождения; |Функция СотрудникиАвансСумма = Сумма(Сотрудники.Аванс); |Функция ДатаРожденияСумма = Сумма(МояДатаГод(ДатаРождения)); |Группировка Сотрудники; |"//}}ЗАПРОС |
|||
22
lals
22.10.18
✎
09:21
|
блин тупой я и у меня заходит я "сообщить", поставил после оператора Возврат
|
|||
23
lals
22.10.18
✎
09:21
|
Все пошло как надо спасибо всем откликнувшимся
|
|||
24
lals
22.10.18
✎
12:20
|
Все в порядке да не очень когда дело дошло до того чтобы сделать группировку, то оказалось что группировку можно сделать только по тем переменным которые прямо указаны в запросе а то что получено функцией как бы не признается переменной для группировки
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Родитель = Справочник.Сотрудники.Родитель; |Должность = Справочник.Сотрудники.Должность; |Подразделение = Справочник.Сотрудники.Подразделение; |Сотрудник = Справочник.Сотрудники.ТекущийЭлемент; |Пол = Справочник.Сотрудники.Пол; |ДатаРождения= Справочник.Сотрудники.ДатаРожд; |Функция ГодРождения = Сумма(МояФункцияГод(ДатаРождения)); |Функция МесяцРождения = Сумма(МояФункцияМесяц(ДатаРождения)); |Функция Счётчик = Счётчик(); |Условие(Родитель = ВыбРодитель); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если ПризнакПола = 2 Тогда ТекстЗапроса = ТекстЗапроса + " |Условие(Пол = Перечисление.Пол.Женский);"; КонецЕсли; Если ПризнакПола = 3 Тогда ТекстЗапроса = ТекстЗапроса + " |Условие(Пол = Перечисление.Пол.Мужской);"; КонецЕсли; Если КритерийВыборки = 1 Тогда Если Выбрать.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса + " |Условие(ГодРождения = ВыбЧисло;"; КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |Группировка ГодРождения;"; ///здесь ругается что нет такой переменной ТекстЗапроса = ТекстЗапроса + " |Группировка Сотрудник Без Групп;"; ИначеЕсли КритерийВыборки = 2 Тогда Если Выбрать.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса + " |Условие(МесяцРождения = ВыбЧисло;"; КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |Группировка МесяцРождения;"; /// и тут ругается ТекстЗапроса = ТекстЗапроса + " |Группировка Сотрудник Без Групп;"; ИначеЕсли КритерийВыборки = 3 Тогда Если Выбрать.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса + " |Условие(Подразделение = Выбрать);"; // тут не ругается КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |Группировка Подразделение;"; ТекстЗапроса = ТекстЗапроса + " |Группировка Сотрудник Без Групп;"; ИначеЕсли КритерийВыборки = 4 Тогда Если Выбрать.Выбран() = 1 Тогда ТекстЗапроса = ТекстЗапроса + " |Условие(Должность = Выбрать);"; тут не ругается тоже КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |Группировка Должность;"; ТекстЗапроса = ТекстЗапроса + " |Группировка Сотрудник Без Групп;"; КонецЕсли; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; |
|||
25
lals
22.10.18
✎
12:22
|
+(24) может есть способ сделать группировку???
|
|||
26
1Сергей
22.10.18
✎
12:23
|
(25) почитай хелп про группировки в запросе
|
|||
27
lals
22.10.18
✎
12:37
|
А разве переменная полученая из функции не является внутренней переменной запроса?
|
|||
28
Ёпрст
22.10.18
✎
12:37
|
(27) нет
|
|||
29
Ёпрст
22.10.18
✎
12:38
|
делфй примитив select from group by ... делов то
|
|||
30
Ёпрст
22.10.18
✎
12:38
|
ну или тупо группировка датаРожд и пост обработка
|
|||
31
lals
22.10.18
✎
12:39
|
блин.....
придется выгружать в ТЗ а так не хотелось, (28) Вариантов обхода нет? |
|||
32
Ёпрст
22.10.18
✎
12:43
|
(31) в чорном, врят ли
|
|||
33
lals
22.10.18
✎
12:52
|
(32)Спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |