Имя: Пароль:
1C
 
Ошибка в запросе
,
0 pro3ri
 
17.09.15
18:18
Добрый вечер!
Есть запрос:
Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Товары.Номенклатура,
    |    Товары.Количество КАК КолДок,
    |    ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстатокДт, 0) КАК СумОст,
    |    ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстатокДт, 0) КАК КолОст,
    |    ХозрасчетныйОстатки.Счет
    |ИЗ
    |    (ВЫБРАТЬ
    |        РеализацияТоваровТовары.Номенклатура КАК Номенклатура,
    |        СУММА(РеализацияТоваровТовары.Количество * РеализацияТоваровТовары.ЕдиницаИзмерения.Коэффициент) КАК Количество
    |    ИЗ
    |        Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
    |    ГДЕ
    |        РеализацияТоваровТовары.Ссылка = &Ссылка
    |        И РеализацияТоваровТовары.Номенклатура.ВидНоменклатуры <> &ВидУслуга
    |    
    |    СГРУППИРОВАТЬ ПО
    |        РеализацияТоваровТовары.Номенклатура) КАК Товары
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
    |                &Момент,
    |                Счет = &Счет,
    |                ,
    |                Подразделение = &Подразделение
    |                    И Субконто1 В
    |                        (ВЫБРАТЬ РАЗЛИЧНЫЕ
    |                            РеализацияТоваровТовары.Номенклатура
    |                        ИЗ
    |                            Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
    |                        ГДЕ
    |                            РеализацияТоваровТовары.Ссылка = &Ссылка
    |                            И РеализацияТоваровТовары.Номенклатура.ВидНоменклатуры <> &ВидУслуга)
    |                    И &Субконто2) КАК ХозрасчетныйОстатки
    |        ПО Товары.Номенклатура = ХозрасчетныйОстатки.Субконто1";


    Запрос.УстановитьПараметр("Подразделение", Подразделение);
    Запрос.УстановитьПараметр("Счет", ?(ВидОперации = Перечисления.ВидыОперацийРеализации.Продажа, ПланыСчетов.Хозрасчетный.Товары, ПланыСчетов.Хозрасчетный.ТМЦПринятыеНаХранение));
    Если ВидОперации = Перечисления.ВидыОперацийРеализации.ПередачаКонтрагенту Тогда
    
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"&Субконто2","Субконто2 = &Субконто2");
        Запрос.УстановитьПараметр("Субконто2", Контрагент);
    Иначе
        Запрос.УстановитьПараметр("Субконто2", Истина);
    
    КонецЕсли;
    
    Запрос.УстановитьПараметр("ВидУслуга", Перечисления.ВидыНоменкклатуры.Услуга);
    Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
        Запрос.УстановитьПараметр("Момент", Неопределено);
    Иначе
        Запрос.УстановитьПараметр("Момент", МоментВремени());
    КонецЕсли;
    Запрос.УстановитьПараметр("Ссылка", Ссылка);

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

Почему в результате Хозрасчетный.счет не выдает ничего, ведь я его задаю через условие?
1 pro3ri
 
17.09.15
18:20
поправка, ХозрасчетныйОстатки.Счет не выдает ничего
2 DTXyupyup
 
17.09.15
18:21
Шта?

ВЫБРАТЬ РАЗЛИЧНЫЕ
    |                            РеализацияТоваровТовары.Номенклатура
    |                        ИЗ
    |                            Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
    |                        ГДЕ
    |                            РеализацияТоваровТовары.Ссылка = &Ссылка
    |                            И РеализацияТоваровТовары.Номенклатура.ВидНоменклатуры <> &ВидУслуга)
    |                    И &Субконто2

И было бы неплохо заполнить третий параметр виртуальной таблицы.
3 pro3ri
 
17.09.15
18:24
(2) это какой, все заполнены
4 DTXyupyup
 
17.09.15
18:30
Третий же
5 Михаил Козлов
 
17.09.15
18:31
Попробуйте фильтр по номенклатуре в остатках РБ убрать.
6 pro3ri
 
17.09.15
18:32
(0) + если меняю подразделение на Первое все ок https://s.mail.ru/3iePmq5P75vA/img-2015-09-17-20-30-40.png и регистр бу https://s.mail.ru/2vDFs68g3Qvm/img-2015-09-17-20-33-13.png
7 Апош
 
17.09.15
18:34
задолбал с картинками. словами не умеешь пользоваться?
8 pro3ri
 
17.09.15
18:38
(4) Если ВидОперации = Перечисления.ВидыОперацийРеализации.ПередачаКонтрагенту Тогда
    
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"&Субконто2","Субконто2 = &Субконто2");
        Запрос.УстановитьПараметр("Субконто2", Контрагент);
    Иначе
        Запрос.УстановитьПараметр("Субконто2", Истина);
    
    КонецЕсли;
9 Апош
 
17.09.15
18:42
(8) вот он какой, третий параметр виртуальной таблицы.
10 pro3ri
 
17.09.15
18:51
(0) + если меняю запрос на этот (убрал подразделение):
"ВЫБРАТЬ
    |    Товары.Номенклатура,
    |    Товары.Количество КАК КолДок,
    |    ЕСТЬNULL(ХозрасчетныйОстатки.СуммаОстатокДт, 0) КАК СумОст,
    |    ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстатокДт, 0) КАК КолОст,
    |    ХозрасчетныйОстатки.Счет
    |ИЗ
    |    (ВЫБРАТЬ
    |        РеализацияТоваровТовары.Номенклатура КАК Номенклатура,
    |        СУММА(РеализацияТоваровТовары.Количество * РеализацияТоваровТовары.ЕдиницаИзмерения.Коэффициент) КАК Количество
    |    ИЗ
    |        Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
    |    ГДЕ
    |        РеализацияТоваровТовары.Ссылка = &Ссылка
    |        И РеализацияТоваровТовары.Номенклатура.ВидНоменклатуры <> &ВидУслуга
    |    
    |    СГРУППИРОВАТЬ ПО
    |        РеализацияТоваровТовары.Номенклатура) КАК Товары
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
    |                &Момент,
    |                Счет = &Счет,
    |                ,
    |                Субконто1 В
    |                        (ВЫБРАТЬ РАЗЛИЧНЫЕ
    |                            РеализацияТоваровТовары.Номенклатура
    |                        ИЗ
    |                            Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
    |                        ГДЕ
    |                            РеализацияТоваровТовары.Ссылка = &Ссылка
    |                            И РеализацияТоваровТовары.Номенклатура.ВидНоменклатуры <> &ВидУслуга)
    |                    И &Субконто2) КАК ХозрасчетныйОстатки
    |        ПО Товары.Номенклатура = ХозрасчетныйОстатки.Субконто1";

все работает.. https://s.mail.ru/3f6XXDxfwsvA/img-2015-09-17-20-50-06.png - результат. Кажется дело в том, что в рб нет приходов по подразделению Второе....
11 pro3ri
 
17.09.15
19:03
вопрос решен всем спасибо!
добавил проверку в код и ошибка ушла:

Если Выборка.КолДок>Выборка.КолОст Тогда
            
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "Превышение остатка по " + Выборка.Номенклатура + " на " + (Выборка.КолДок-Выборка.КолОст);
                Сообщение.Сообщить();
                Отказ = Истина;
            
            КонецЕсли;