Имя: Пароль:
1C
1С v8
Операции сравнения на больше-меньше допустимы только для значений совпадающих пр
,
0 ktu78
 
04.09.15
17:20
Добрый день, коллеги.
При выполнении выборки запроса для проверки наличия ТМЦ на складе и в партии смотри код:

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

........

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

                
    Запрос.УстановитьПараметр("Ссылка",Ссылка);
    Запрос.УстановитьПараметр("Склад",Склад);
    Запрос.УстановитьПараметр("Партия",Партия);
    
    Возврат Запрос;    
КонецФункции


При проведении документа Перемещение ТМЦ выдается ошибка:

Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ПеремещениеТМЦ.МодульОбъекта(20)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)
Если Выборка.КоличествоСклад < Выборка.КоличествоДок Тогда

помогите пожалуйста, заранее благодарен
1 Господин ПЖ
 
04.09.15
17:21
у тебя там null
2 ДенисЧ
 
04.09.15
17:22
хм... А почему при левом соединении не используется ЕСТЬNULL?
3 Масянька
 
04.09.15
17:22
(0) Щас придет Ненавижу1С и он тебе популярно объяснит, что Неопределено <> NULL :)))))
4 sash-ml
 
04.09.15
17:22
isnull(ТМЦОстатки.КоличествоОстаток,0) КАК КоличествоСклад,
5 ktu78
 
04.09.15
17:31
Добавил в запрос

ЕСТЬNULL(ТМЦОстатки.КоличествоОстаток, 0) КАК КоличествоСклад,
                 |    ЕСТЬNULL(ПеремещениеТМЦСписокПеремещенийТМЦ.Количество, 0) КАК КоличествоДок

все равно выскакивает

Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ПеремещениеТМЦ.МодульОбъекта(20)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)
Если Выборка.КоличествоСклад < Выборка.КоличествоДок Тогда
6 Масянька
 
04.09.15
17:39
(5) А нету остатков... Вообще...
7 palsergeich
 
04.09.15
17:41
Религия не позволяет сделать остонову по ошибке и самому просмотреть что же там на самом деле то в переменных. Мб где то не NULL а НЕОПРЕДЕЛЕНО? Или вообще другой тип данных?
8 Господин ПЖ
 
04.09.15
17:41
и вообще... запрос в цикле... куда мама смотрит?
9 Брегорьян
 
04.09.15
17:41
экое громкое имя у регистра
10 palsergeich
 
04.09.15
17:42
Кстати да Оо и небось параметры вирт таблицы не стоят, а все в ГДЕ Оо.
11 ktu78
 
04.09.15
17:49
Пожалуйста не показывайте ваше остроумие, лучше помогите конкретно
12 ktu78
 
04.09.15
17:51
Применил такую конструкцию:
КС = Число (Выборка.КоличествоСклад);
КД = Число (Выборка.КоличествоДок);

Ничего не дает!

Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ПеремещениеТМЦ.МодульОбъекта(18)}: Преобразование значения к типу Число не может быть выполнено
            КС = Число (Выборка.КоличествоСклад);
13 Масянька
 
04.09.15
17:51
(11) Да нет никакого остроумия... Просто Неопределено <> NULL... Религия, блин, такая :(
14 Масянька
 
04.09.15
17:52
(12) Нет остатков. Нет. Сколько раз еще повторять?
15 Брегорьян
 
04.09.15
17:53
(11) соберись и скажи, чем помочь. пока собираешься всё поймёшь ;)
16 Господин ПЖ
 
04.09.15
18:10
>Просто Неопределено <> NULL

оно тут откуда - итогов нет + Число (Выборка.КоличествоСклад) сломалось бы

>Нет остатков

при пустом результате не попал бы в цикл Пока Выборка.Следующий() Цикл
17 Брегорьян
 
04.09.15
18:11
(16) автор врёт?
18 Масянька
 
04.09.15
18:14
(16) Рекомендую, прежде чем отвечать, читать всю (!!!) ветку.
19 Господин ПЖ
 
04.09.15
18:32
(18) ты себе совет даешь, на будущее что ли?
AdBlock убивает бесплатный контент. 1Сергей