Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 дек 2024, 23:22

Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов

Автор Andra, 29 авг 2022, 11:44

0 Пользователей и 1 гость просматривают эту тему.

Andra

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

Запрос.УстановитьПараметр("Договор", СсылкаНаОбъект.Договор);
Запрос.УстановитьПараметр("ДатаОстатков", СсылкаНаОбъект.Дата);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Долг = ВыборкаДетальныеЗаписи.СуммаОстаток;
Если Долг > 0 Тогда
ОбластьИтого.Параметры.Долг = "Долг клиента: " + Долг;
ИначеЕсли Долг < 0 Тогда
ОбластьИтого.Параметры.Долг = "Наш долг: " + Долг;
КонецЕсли;

LexaK

Andra,так что бы получить данные по выборке ее нужно "двигать" по записям, в ваше случае так
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда //переход на следующую запись, на первую
            Долг = ВыборкаДетальныеЗаписи.СуммаОстаток;           
            Если Долг > 0 Тогда
    ...
КонецЕсли;
если помогло нажмите: Спасибо!

Andra


LexaK

Andra, да, может не выводить, если нет данных
добавьте сообщение, пример
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда //переход на следующую запись, на первую
            Долг = ВыборкаДетальныеЗаписи.СуммаОстаток;           
            Если Долг > 0 Тогда
    ...
Иначе
    Сообщить("Задолженности по договору - Нет.");
КонецЕсли;
если помогло нажмите: Спасибо!

Andra

LexaK, это да, только у меня явно задолженность есть, но ее почему-то не выводит, может неправильный регистр выбрал.

LexaK

Andra, так в консоли запросов проверьте! есть такая обработка консоль запросов, скопируйте туда ваш запрос, установите параметры, выполните его
(сделайте для себя правилом, любые запросы которые вставляете в код программы, проверять в консоли запросов)
если помогло нажмите: Спасибо!

Andra


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск