8.х Ошибка в запросе

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Elli, 29 май 2008.

  1. TopicStarter Overlay
    Elli
    Offline

    Elli Опытный в 1С

    Регистрация:
    20 май 2008
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Выдается синтаксическая ошибка в строке
    ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор = &ВыбРегистратор<<?>>,


    Код:
    Функция СебестоимостьДок(ВыбРегистратор,ВыбСклад) Экспорт
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |	ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор КАК Регистратор,
    |	ПартииТоваровНаСкладахОстаткиИОбороты.Склад КАК Склад,
    |	ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьПриход КАК СтоимостьПриход,
    |	ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьРасход КАК СтоимостьРасход
    |ИЗ
    |	РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(, , Регистратор, , ) КАК ПартииТоваровНаСкладахОстаткиИОбороты
    |ГДЕ
    |	ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор = &ВыбРегистратор,
    |	ПартииТоваровНаСкладахОстаткиИОбороты.Склад = &ВыбСклад
    |ИТОГИ
    |	СУММА(СтоимостьПриход),
    |	СУММА(СтоимостьРасход)
    |ПО
    |	Регистратор";
    
    Запрос.УстановитьПараметр("ВыбРегистратор",ВыбРегистратор);
    Запрос.УстановитьПараметр("ВыбСклад",ВыбСклад);
    ТЗ = Новый ТаблицаЗначений;
    ТЗ = Запрос.Выполнить().Выгрузить();
    Возврат ТЗ;
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/конецфункции')">КонецФункции	</span>
    
    
    Процедура Отчет1(ТабДок, ВыбСклад, ДатаКонца, ДатаНачала) Экспорт
    Макет = ОтчетОбъект.ПолучитьМакет("Отчет1");
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |	ТоварыВНТТОстаткиИОбороты.Период,
    |	ТоварыВНТТОстаткиИОбороты.Регистратор КАК Регистратор,
    |	ПРЕДСТАВЛЕНИЕ(ТоварыВНТТОстаткиИОбороты.Регистратор),
    |	ТоварыВНТТОстаткиИОбороты.Склад КАК Склад,
    |	ПРЕДСТАВЛЕНИЕ(ТоварыВНТТОстаткиИОбороты.Склад),
    |	ТоварыВНТТОстаткиИОбороты.Номенклатура,
    |	ПРЕДСТАВЛЕНИЕ(ТоварыВНТТОстаткиИОбороты.Номенклатура),
    |	ТоварыВНТТОстаткиИОбороты.ЦенаВРознице,
    |	ТоварыВНТТОстаткиИОбороты.КоличествоПриход,
    |	ТоварыВНТТОстаткиИОбороты.КоличествоРасход,
    |	ТоварыВНТТОстаткиИОбороты.КоличествоПриход * ТоварыВНТТОстаткиИОбороты.ЦенаВРознице КАК ПриходСумма,
    |	ТоварыВНТТОстаткиИОбороты.КоличествоРасход * ТоварыВНТТОстаткиИОбороты.ЦенаВРознице КАК РасходСумма
    |ИЗ
    |	РегистрНакопления.ТоварыВНТТ.ОстаткиИОбороты(&ДатаНачала,&ДатаКонца,Регистратор, ,Склад В ИЕРАРХИИ(&ВыбСклад)) КАК ТоварыВНТТОстаткиИОбороты
    |
    |СГРУППИРОВАТЬ ПО
    |	ТоварыВНТТОстаткиИОбороты.Период,
    |	ТоварыВНТТОстаткиИОбороты.Регистратор,
    |	ТоварыВНТТОстаткиИОбороты.Склад,
    |	ТоварыВНТТОстаткиИОбороты.Номенклатура,
    |	ТоварыВНТТОстаткиИОбороты.ЦенаВРознице,
    |	ТоварыВНТТОстаткиИОбороты.КоличествоПриход,
    |	ТоварыВНТТОстаткиИОбороты.КоличествоРасход
    |
    |УПОРЯДОЧИТЬ ПО
    |	Склад,
    |	Период,
    |	Регистратор
    |ИТОГИ
    |	СУММА(ПриходСумма),
    |	СУММА(РасходСумма)
    |ПО
    |	ОБЩИЕ,
    |	Склад,
    |	Регистратор";
    
    Запрос.УстановитьПараметр("ВыбСклад", ВыбСклад);
    Запрос.УстановитьПараметр("ДатаКонца", КонецДня(ДатаКонца));
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    
    Результат = Запрос.Выполнить();
    
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьОбщийИтог = Макет.ПолучитьОбласть("ОбщиеИтоги");
    ОбластьСклад = Макет.ПолучитьОбласть("Склад");
    ОбластьРегистратор = Макет.ПолучитьОбласть("Регистратор");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    
    ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    ВыборкаОбщийИтог.Следующий();		// Общий итог
    ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог);
    ТабДок.Вывести(ОбластьОбщийИтог, ВыборкаОбщийИтог.Уровень());
    
    ВыборкаСклад = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаСклад.Следующий() Цикл
    ОбластьСклад.Параметры.Заполнить(ВыборкаСклад);
    ТабДок.Вывести(ОбластьСклад, ВыборкаСклад.Уровень());
    ВыборкаРегистратор = ВыборкаСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаРегистратор.Следующий() Цикл
    ТС = СебестоимостьДок(ВыборкаРегистратор.Регистратор,ВыборкаСклад.Склад);
    ОбластьРегистратор.Параметры.Заполнить(ВыборкаРегистратор);
    ТабДок.Вывести(ОбластьРегистратор, ВыборкаРегистратор.Уровень());
    КонецЦикла;
    КонецЦикла;
    
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    КонецПроцедуры
    
    Я новичок, :unsure: , не пойму Что тут надо сделать
  2. GRUV
    Offline

    GRUV Опытный в 1С

    Регистрация:
    7 ноя 2007
    Сообщения:
    106
    Симпатии:
    0
    Баллы:
    26
    Код:
    "ГДЕ
    |    ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор = &ВыбРегистратор
    |    И ПартииТоваровНаСкладахОстаткиИОбороты.Склад = &ВыбСклад"
    
    
  3. TopicStarter Overlay
    Elli
    Offline

    Elli Опытный в 1С

    Регистрация:
    20 май 2008
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Спасибо, понятно, называется смотрю в книгу, а вижу фиг знает что.
    Мне почему то первый запрос возвращает данные непонятно как, вроде запрос простой, а даже в консоли возвращает таблицу, где строки задваиваются - первая строка без склада, вторая такая-же, но с правильным складом. В консоли получается в виде дерева, сначала итоги по регистратору (без склада), потом строка со складом.
    Таже и в других аналогичных запрсах, например, только по складу:
    Код:
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |	ПартииТоваровНаСкладахОстаткиИОбороты.Склад КАК Склад,
    |	СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьПриход) КАК СтоимостьПриход,
    |	СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьРасход) КАК СтоимостьРасход
    |ИЗ
    |	РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(, , , ,Склад = &ВыбСклад ) КАК ПартииТоваровНаСкладахОстаткиИОбороты
    |
    |СГРУППИРОВАТЬ ПО
    |	ПартииТоваровНаСкладахОстаткиИОбороты.Склад
    |
    |УПОРЯДОЧИТЬ ПО
    |	Склад
    |ИТОГИ
    |	СУММА(СтоимостьПриход),
    |	СУММА(СтоимостьРасход)
    |ПО
    |	Склад";
    
    тоже 2 строки в консоли, в итоге ТС.Итог("СтоимостьПриход") возвращает задвоенную сумму, как же правильно получить суммы по складуи общие из этого запроса?

Поделиться этой страницей