Консультация № 161356
25.02.2009, 10:44
0.00 руб.
0 3 3
Необходимо условие запроса (1С версия 8.1) поместить функцию, написанную пользователем, примерно такую:

Функция МояФункция(пар1,пар2)
Если ??
Возврат 1
Иначе
Возврат 0
КонецЕсли
Конец функции;

Как это сделать практически?

Обсуждение

Неизвестный
25.02.2009, 12:41
общий
это ответ
Здравствуйте, Ув. пользователь!
Не совсем понятна форумлировка вопроса. Попробую предположить, что надо выполнить стороннюю функцию в теле запроса. Пока не встречал такой возможности. А вот описать функцию операторами запроса можно.
Например, такой вот кусочек запроса реализует функцию
Функция ДопустимаяСуммаЗадолженности()
Если РасшифровкаПлатежаДок.Ссылка.Оплачено Тогда
Возврат 0
Иначе
Возврат РасшифровкаПлатежаДок.ДоговорКонтрагента.ДопустимаяСуммаЗадолженности;
КонецЕсли;
КонецФункции


Приложение:
ВЫБОР
КОГДА РасшифровкаПлатежаДок.Ссылка.Оплачено
ТОГДА 0
ИНАЧЕ РасшифровкаПлатежаДок.ДоговорКонтрагента.ДопустимаяСуммаЗадолженности
КОНЕЦ КАК ДопустимаяСуммаЗадолженности,
Неизвестный
25.02.2009, 12:51
общий
это ответ
Здравствуйте, Gwm1956!
Пусть ваша функция фозвращает Истина или Ложь
Это простой запрос по взаиморачетам. В зависимости положения преключателя выбираются те контрагены, для которых или
ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаУпрНачальныйОстаток >= ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаУпрКонечныйОстаток
или ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаУпрНачальныйОстаток < ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаУпрКонечныйОстаток

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВзаиморасчетыКомпанииОстаткиИОбороты.Контрагент,
| СУММА(ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаУпрНачальныйОстаток) КАК СуммаНачальныйОстаток,
| СУММА(ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаУпрКонечныйОстаток) КАК СуммаКонечныйОстаток
|ИЗ
| РегистрНакопления.ВзаиморасчетыКомпании.ОстаткиИОбороты(&ДатаНачала, &ДатаКонца, , , ) КАК ВзаиморасчетыКомпанииОстаткиИОбороты
|
|СГРУППИРОВАТЬ ПО
| ВзаиморасчетыКомпанииОстаткиИОбороты.Контрагент
|
|ИМЕЮЩИЕ
| (&Переданныйпараметр
| И СУММА(ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаУпрНачальныйОстаток) >= СУММА(ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаУпрКонечныйОстаток)
| ИЛИ (НЕ &Переданныйпараметр)
| И СУММА(ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаУпрНачальныйОстаток) < СУММА(ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаУпрКонечныйОстаток))"

Неизвестный
25.02.2009, 14:04
общий
это ответ
Здравствуйте, !
Здравствуйте, Gwm1956!
В тексте запроса, правая кнопка мыши - Конструктор запроса. на вкладке "Таблицы и поля" справа окно "Поля" , правая кнопка добавить. Откроется окно. Справа вверху - Функции языка запросов - оттуда вставляешь "Операторы" - "Прочие операторы" "ВЫБОР" - готово!
Форма ответа