Имя: Пароль:
1C
1С v8
v8: Как вставить свою функцию в запрос?
,
0 Cerera
 
02.05.12
14:28
Вот есть запрос, а есть функция на языке 1с, которая принимает некоторые параметры. Как по синтаксису правильно вставить функцию в запрос или это невозможно? вообще как решить данную проблему?
1 Stim
 
02.05.12
14:29
зачем? задачу можно решить другими методами
2 МихаилМ
 
02.05.12
14:29
в общем - невозможно (как в 77)
3 Alex S D
 
02.05.12
14:29
условный текст запроса сделай
4 Дикообразко
 
02.05.12
14:30
(2) архитектурно реализация в СКД очень похожа
5 Ненавижу 1С
 
гуру
02.05.12
14:31
показывай функцию
6 Cerera
 
02.05.12
14:31
(4)а у мен как раз есть СКД. и отчет в ней написан. но нужно вставить кое-что а это сложно без функции
7 Cerera
 
02.05.12
14:31
(1)а как её решить7
8 Кокос
 
02.05.12
14:33
тут функции не вставить. но не знаю что нельзя решить без функций.
9 Stim
 
02.05.12
14:33
(7) гугли вычислямые поля в СКД
10 Alex S D
 
02.05.12
14:34
чтобы решить нужно условие задачи.. че за функция?
11 Cerera
 
02.05.12
14:35
Функция которая вычисляет количество рабочих дней между датами

// Функция возвращает число рабочих дней между заданными датами по регламентированному производственному календарю
//
//Параметры:
// ДатаНач      - начальная дата
// ДатаКон      - конечная дата
//
Функция ЧислоРабочихДней(ДатаНач, ДатаКон) Экспорт
   
   Запрос = Новый  Запрос;
   Запрос.УстановитьПараметр("ДатаНач",             ДатаНач);
   Запрос.УстановитьПараметр("ДатаКон",             ДатаКон);
   Запрос.УстановитьПараметр("РабочийДень",         Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий);
   Запрос.УстановитьПараметр("ПредпраздничныйДень", Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный);
   
   Запрос.Текст = "
   |ВЫБРАТЬ
   |    ЕстьNull(СУММА(ВЫБОР
   |            КОГДА РегламентированныйПроизводственныйКалендарь.ВидДня = &РабочийДень
   |                ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = &ПредпраздничныйДень
   |                ТОГДА 1
   |            ИНАЧЕ 0
   |        КОНЕЦ),0) КАК ЧислоРабочихДней
   |ИЗ
   |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
   |ГДЕ
   |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНач И &ДатаКон
   |    //РегламентированныйПроизводственныйКалендарь.Год = &Год";
   
   Выборка = Запрос.Выполнить().Выбрать();
   
   Если Выборка.Следующий() Тогда
       Возврат Выборка.ЧислоРабочихДней;
   КонецЕсли;
   
   Возврат 0;
   
КонецФункции


а мне надо в отчет вставить её
12 marvak
 
02.05.12
14:36
13 mozzga
 
02.05.12
14:37
(9) прав, вычисляемые поля тебе помогут
14 Ненавижу 1С
 
гуру
02.05.12
14:42
(11) вставь подзапросом
15 КМ155
 
02.05.12
14:45
(11) слабак, ни каких функций не надо:
ВЫБРАТЬ
   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) КАК ДатаКалендаря,
   1 КАК Id
ПОМЕСТИТЬ СтРабДней
ИЗ
   РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
ГДЕ
   (РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
           ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный))
   И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНач И &ДатаФин
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   1 КАК Id,
   РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты.Документ
ПОМЕСТИТЬ Обороты
ИЗ
   РегистрНакопления.РасчетыПоРеализацииВУсловныхЕдиницахОрганизации.Обороты(&ДатаНач, &ДатаФин, Регистратор, ) КАК РасчетыПоРеализацииВУсловныхЕдиницахОрганизацииОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Обороты.Документ,
   СтРабДней.ДатаКалендаря
ИЗ
   Обороты КАК Обороты
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ СтРабДней КАК СтРабДней
       ПО Обороты.Id = СтРабДней.Id
16 Cerera
 
02.05.12
15:05
(15)спасибо. только вот проверить надо работает ли. тогда я признаю что я слабак если не получится
17 Defender aka LINN
 
02.05.12
15:07
(11) Юзай производственный календарь и будет тебе щастье
18 Cerera
 
02.05.12
15:08
(17)дак в (11)и так производственный календарь используется
19 Defender aka LINN
 
02.05.12
15:40
(18) Тогда не понимаю, в чем проблема. Сделай соединение, да и все.
20 Cerera
 
02.05.12
16:10
(19)так там компоновка данных используется
Программист всегда исправляет последнюю ошибку.