Помощь - Поиск - Пользователи - Календарь
Полная версия: Запрос по регистру ТоварыВНТТ
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 8.x" > (8.х) Конфигурирование на платформе "1С:Предприятие 8.x"
Elli
УТ 10.3 Составляю запрос, надо получить даные из регистра "ТоварыВНТТ", группировать по складам и документам, никак не пойму, как группировать по документам. Пробовала вставить в запрос регистратор, вылетает ошибка
(Суммы в регистре нет, поэтому приходится перемножать цену на количество)

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

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

cry_1.gif cry_1.gif

FreeDown
Нехватает периодичности по регистратору:

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


Попробуйте так.
Elli
Спасибо, но я все равно не понимаю, а как группировку по регистратору сделать?
Elli
Код
Макет = ОтчетОбъект.ПолучитьМакет("Отчет1");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыВНТТОстаткиИОбороты.Период,
| ТоварыВНТТОстаткиИОбороты.Регистратор КАК Регистратор,
| ПРЕДСТАВЛЕНИЕ(ТоварыВНТТОстаткиИОбороты.Регистратор),
| ТоварыВНТТОстаткиИОбороты.Склад КАК Склад,
| ПРЕДСТАВЛЕНИЕ(ТоварыВНТТОстаткиИОбороты.Склад),
| ТоварыВНТТОстаткиИОбороты.Номенклатура,
| ПРЕДСТАВЛЕНИЕ(ТоварыВНТТОстаткиИОбороты.Номенклатура),
| ТоварыВНТТОстаткиИОбороты.ЦенаВРознице,
| ТоварыВНТТОстаткиИОбороты.КоличествоПриход,
| ТоварыВНТТОстаткиИОбороты.КоличествоРасход,
| ТоварыВНТТОстаткиИОбороты.КоличествоПриход * ТоварыВНТТОстаткиИОбороты.ЦенаВРознице КАК ПриходСумма,
| ТоварыВНТТОстаткиИОбороты.КоличествоРасход * ТоварыВНТТОстаткиИОбороты.ЦенаВРознице КАК РасходСумма
|ИЗ
| РегистрНакопления.ТоварыВНТТ.ОстаткиИОбороты(, , Регистратор, , ) КАК ТоварыВНТТОстаткиИОбороты
|ГДЕ
| ТоварыВНТТОстаткиИОбороты.Период МЕЖДУ &ДатаНачала И &ДатаКонца
|
|СГРУППИРОВАТЬ ПО
| ТоварыВНТТОстаткиИОбороты.Склад,
| ТоварыВНТТОстаткиИОбороты.Регистратор,
| ТоварыВНТТОстаткиИОбороты.Период,
| ТоварыВНТТОстаткиИОбороты.Номенклатура,
| ТоварыВНТТОстаткиИОбороты.ЦенаВРознице,
| ТоварыВНТТОстаткиИОбороты.КоличествоПриход,
| ТоварыВНТТОстаткиИОбороты.КоличествоРасход
|
|УПОРЯДОЧИТЬ ПО
| Склад,
| Регистратор
|ИТОГИ
| СУММА(ПриходСумма),
| СУММА(РасходСумма)
|ПО
| Склад,
| Регистратор";

//Запрос.УстановитьПараметр("ВыбСклад", ВыбСклад);
Запрос.УстановитьПараметр("ДатаКонца", КонецДня(ДатаКонца));
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);

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

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьСклад = Макет.ПолучитьОбласть("Склад");
ОбластьРегистратор = Макет.ПолучитьОбласть("Регистратор");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();

ВыборкаСклад = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаСклад.Следующий() Цикл
ОбластьСклад.Параметры.Заполнить(ВыборкаСклад);
ТабДок.Вывести(ОбластьСклад, ВыборкаСклад.Уровень());

ВыборкаРегистратор = ВыборкаСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаРегистратор.Следующий() Цикл
ОбластьРегистратор.Параметры.Заполнить(ВыборкаРегистратор);
ТабДок.Вывести(ОбластьРегистратор, ВыборкаРегистратор.Уровень());

ВыборкаДетали = ВыборкаРегистратор.Выбрать();

Пока ВыборкаДетали.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);
ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетали.Уровень());
КонецЦикла;
КонецЦикла;
КонецЦикла;

ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);


Ничего не выдает, почему то выборка по складу уже пустая, хотя обороты есть
Elli
Почему то, когда убрала строки

Код
|ГДЕ	|	ТоварыВНТТОстаткиИОбороты.Период МЕЖДУ &;ДатаНачала И &;ДатаКонца


данные выводятся, не понимаю почему, как же установить условие по периоду и по складу, подскажите пожалуйста
FreeDown
Отбор по дате и по складу тоже лучше запихнуть в скобки (так работать быстрее будет).

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





В остальном затрудняюсь ответить. Ваш код выглядит красиво и вроде как всё правильно. Проверьте в отладчике значения переменных ДатаНачала и ДатаКонца, которые вы передаете в запрос, и есть ли движения в регистре именно за этот период.
Elli
Спасибо, с вашей помощью все получилось luxhello.gif
У меня формируется отчет по розничным точкам в разрезе документов приход и расход Розничных сумм, wub.gif а можно еще вопросик? как можно добавить в этот отчет еще Суммы Закупочные, из регистра Партии товаров?
Elli
Может надо это в запрос дописать регистр ПартииТоваров, или написать еще один запрос и привыводе Розничных сумм обращаться к новому запросу с параметрами(документ - регистратор, склад )
FreeDown
Лучше сделать это в самом запросе через левое соединение.
Elli
сделала так: но формируется оооочень медленно

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


И вообще суммы не те стали, даже по рознице sm_razz.gif
Elli
Подскажите пожалуйста

Розничные суммы по накладным увеличилисть во столько раз, сколько строк в документе, а закупочные вообще не выводятся
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2008 Invision Power Services, Inc.