|
v7: Пример использования нестандартных функций в языке запросов 1с 7.7 | ☑ | ||
---|---|---|---|---|
0
DmitriyDI
15.11.13
✎
11:04
|
Есть запрос
"//{{ЗАПРОС(Сформировать) |Период с НачДата по КонДата; |Обрабатывать НеПомеченныеНаУдаление; |ПериодВыгрузки = Документ.ВыгрузкаКУ.ПериодВыгрузки; |ПериодАктуальности = Документ.ВыгрузкаКУ.ПериодАктуальности; |Функция ПериодД = ФункцияПериодЗапроса(ПериодВыгрузки,ПериодАктуальности); |" ; ну и соответственно функция Функция ФункцияПериодЗапроса(Период1,Период2) Если ПустоеЗначение(Период2) = 0 Тогда Период1 = Период2; КонецЕсли; Возврат(Период1); КонецФункции Как сделать так чтобы это работало в 7ке в 8ке есть такая конструкция как Выбрать когда тогда иначе, она бы сюда пододшла. |
|||
1
VladZ
15.11.13
✎
11:06
|
1с++ тебя спасет.
|
|||
2
DmitriyDI
15.11.13
✎
11:09
|
(1) неужели это невозможно сделать на базе языка запросов 7чного ?
|
|||
3
mikecool
15.11.13
✎
11:10
|
(2) почитай книжку про запросы в 77
|
|||
4
mikecool
15.11.13
✎
11:11
|
+3 в запросе есть функция, которая может считаться Когда(Условие)
|
|||
5
DmitriyDI
15.11.13
✎
11:13
|
(4) на как ее сюда прикрутить ? там ведь только условие, а нет когда тогда иначе
|
|||
6
DmitriyDI
15.11.13
✎
11:16
|
блин даже Ёпрст пришел! сейчас что-нибудь скажет =)
|
|||
7
mikecool
15.11.13
✎
11:19
|
(5) почитать книжку, потому как справка в 77 убогая
|
|||
8
Ёпрст
15.11.13
✎
11:20
|
Свои функции можешь использовать только в условии, в Когда() у функции и в качестве аргументов некоторых "штатных" функций.
Т.е шруппировку или переменную не слепишь. |
|||
9
Skom
15.11.13
✎
11:22
|
+(8) только такой подход крайне сильно снижает скорость работы.
|
|||
10
DmitriyDI
15.11.13
✎
11:23
|
Т.е. вот так Сумма(ФункцияПериодЗапроса(ПериодВыгрузки,ПериодАктуальности) работало бы если было бы число, но тут дата, нет ведь никакой функции работы с датами в 7ке
|
|||
11
mikecool
15.11.13
✎
11:25
|
(10) а ты в 8ке часто делал Сумма(Дата)?
|
|||
12
Skom
15.11.13
✎
11:26
|
(11) я в каждой обработке так делаю.
|
|||
13
Skom
15.11.13
✎
11:26
|
+(12) даже если мне это и не надо
|
|||
14
DmitriyDI
15.11.13
✎
11:27
|
(13) очень смешно, правда. (11) да я вот и спрашиваю, есть что-нибудь кроме суммы, для даты
|
|||
15
Ёпрст
15.11.13
✎
11:34
|
Всё можно сделать и для даты..
Тупо перевод в секунды и привет. |
|||
16
Ёпрст
15.11.13
✎
11:34
|
В результате в запросе будет число, на выходе, конвертишь обратно в дату и привет.
|
|||
17
mikecool
15.11.13
✎
11:35
|
(15) омг, а нафига такой изврат? учитывая, что ты чорными запросами скорее всего уже и не пользуешься
|
|||
18
Mikeware
15.11.13
✎
11:36
|
(17) для тех, кому религия не позволяет использовать нормальные запросы.... :-)
Т.е. он может писать нормальный код, а может - кошерный :-) |
|||
19
Ёпрст
15.11.13
✎
11:38
|
(17) еще как получится
Число('23.01.2013') = 2456316 Дата (2456316) = 23.01.13 В запросе достаточно | Функция МояСуперДата = Максимум( Число('23.01.2013')); и на выходе через Дата получить дату |
|||
20
DmitriyDI
15.11.13
✎
11:39
|
(18) нормальное решение этого запроса можно предложить) ? (15) я понял, можно сделать все, главное знать как
|
|||
21
Ёпрст
15.11.13
✎
11:40
|
(20) прямой запрос написать.
|
|||
22
Ёпрст
15.11.13
✎
11:40
|
а так, и как в (19) будет работать
|
|||
23
DmitriyDI
15.11.13
✎
11:40
|
(22) спасибо большое) пошел пилить запрос)
|
|||
24
Ёпрст
15.11.13
✎
11:41
|
У тя будет
|Функция ПериодД = Максимум(ФункцияПериодЗапроса(ПериодВыгрузки,ПериодАктуальности)); Функция ФункцияПериодЗапроса(Период1,Период2) Если ПустоеЗначение(Период2) = 0 Тогда Период1 = Период2; КонецЕсли; Возврат Число(Период1); КонецФункции |
|||
25
Ёпрст
15.11.13
✎
11:42
|
На выходе, через Дата(Запрос.ПериодД) будешь иметь дату.
|
|||
26
DmitriyDI
15.11.13
✎
11:42
|
(25) ура)! еще раз спасибо)!
|
|||
27
mikecool
15.11.13
✎
11:43
|
(25) вот же изврат )))
|
|||
28
varelchik
15.11.13
✎
12:19
|
(19)Мда....
Никогда не занимался таким извратом. Хотя помница в 80-е годы были фичи у программируемых калькуляторов что-то типа такого. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |