8.х Запрос по регистру ТоварыВНТТ

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

  1. TopicStarter Overlay
    Elli
    Offline

    Elli Опытный в 1С

    Регистрация:
    20 май 2008
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    УТ 10.3 Составляю запрос, надо получить даные из регистра "ТоварыВНТТ", группировать по складам и документам, никак не пойму, как группировать по документам. Пробовала вставить в запрос регистратор, вылетает ошибка
    (Суммы в регистре нет, поэтому приходится перемножать цену на количество)

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

    freedown

    Регистрация:
    8 июн 2007
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Нехватает периодичности по регистратору:

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

    Elli Опытный в 1С

    Регистрация:
    20 май 2008
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Спасибо, но я все равно не понимаю, а как группировку по регистратору сделать?
  4. TopicStarter Overlay
    Elli
    Offline

    Elli Опытный в 1С

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

    Elli Опытный в 1С

    Регистрация:
    20 май 2008
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Почему то, когда убрала строки

    Код:
    |ГДЕ	|	ТоварыВНТТОстаткиИОбороты.Период МЕЖДУ &ДатаНачала И &ДатаКонца
    
    данные выводятся, не понимаю почему, как же установить условие по периоду и по складу, подскажите пожалуйста
  6. freedown
    Offline

    freedown

    Регистрация:
    8 июн 2007
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Отбор по дате и по складу тоже лучше запихнуть в скобки (так работать быстрее будет).

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

    В остальном затрудняюсь ответить. Ваш код выглядит красиво и вроде как всё правильно. Проверьте в отладчике значения переменных ДатаНачала и ДатаКонца, которые вы передаете в запрос, и есть ли движения в регистре именно за этот период.
  7. TopicStarter Overlay
    Elli
    Offline

    Elli Опытный в 1С

    Регистрация:
    20 май 2008
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Спасибо, с вашей помощью все получилось :unsure:
    У меня формируется отчет по розничным точкам в разрезе документов приход и расход Розничных сумм, B) а можно еще вопросик? как можно добавить в этот отчет еще Суммы Закупочные, из регистра Партии товаров?
  8. TopicStarter Overlay
    Elli
    Offline

    Elli Опытный в 1С

    Регистрация:
    20 май 2008
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Может надо это в запрос дописать регистр ПартииТоваров, или написать еще один запрос и привыводе Розничных сумм обращаться к новому запросу с параметрами(документ - регистратор, склад )
  9. freedown
    Offline

    freedown

    Регистрация:
    8 июн 2007
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Лучше сделать это в самом запросе через левое соединение.
  10. TopicStarter Overlay
    Elli
    Offline

    Elli Опытный в 1С

    Регистрация:
    20 май 2008
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    сделала так: но формируется оооочень медленно

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

    Elli Опытный в 1С

    Регистрация:
    20 май 2008
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Подскажите пожалуйста

    Розничные суммы по накладным увеличилисть во столько раз, сколько строк в документе, а закупочные вообще не выводятся

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