Консультация онлайн # 161356

Раздел: [неизвестная рассылка]
Автор вопроса: Gwm1956
Дата: 25.02.2009, 10:44 Консультация неактивна
Поступило ответов: 3
Необходимо условие запроса (1С версия 8.1) поместить функцию, написанную пользователем, примерно такую:

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

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

Ответ # 1, Костюк Игорь Викторович (Посетитель)

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

Приложение:


Костюк Игорь Викторович

Посетитель
25.02.2009, 12:41
Нет оценки ответа

Ответ # 2, М.Денис (Посетитель)

Здравствуйте, Gwm1956!
Пусть ваша функция фозвращает Истина или Ложь
Это простой запрос по взаиморачетам. В зависимости положения преключателя выбираются те контрагены, для которых или
ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаУпрНачальныйОстаток >= ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаУпрКонечныйОстаток
или ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаУпрНачальныйОстаток < ВзаиморасчетыКомпанииОстаткиИОбороты.СуммаУпрКонечныйОстаток

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


М.Денис

Посетитель
25.02.2009, 12:51
Нет оценки ответа

Ответ # 3, Кормщиков Юрий (Посетитель)

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

Кормщиков Юрий

Посетитель
25.02.2009, 14:04
Нет оценки ответа

Мини-форум консультации # 161356


Нет сообщений в мини-форуме
Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.