|   |   | 
| 
 | 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-е годы были фичи у программируемых калькуляторов что-то типа такого. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |