Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
23 Июл 2017, 15:41
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Запрос к товару который продается кажду неделю  (Прочитано 476 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн John_Connor

  • **
  • Сообщений: 73
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-22
  • Сайт: 
  • Профессия: Ученик 1С
простая задача, нужно вытащить товар который стабильно продается каждую неделю
таблицаНеделя= ПолучитьТаблицуДатЗаПериод(НачДата, КонДата, "Неделя");
    таблицаМесяц= ПолучитьТаблицуДатЗаПериод(НачДата, КонДата, "Месяц") ;
    таблицаПолугодие= ПолучитьТаблицуДатЗаПериод(НачДата, КонДата, "Полугодие") ;

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

дальше ступор, не знаю что делать =(
 


Оффлайн Летящий в даль

  • **
  • Сообщений: 56
  • РЕПУТАЦИЯ: 12
  • КПД: 21%
  • 1с - это диагенез :D
  • Регистрация: 2016-05-16
  • Сайт: 
  • Профессия: Программист 1С
Можете прокомментировать код строк, чо он ваще должен по вашему делать??? что за белеберда непонятный код?

Оффлайн John_Connor

  • **
  • Сообщений: 73
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-22
  • Сайт: 
  • Профессия: Ученик 1С
этот г*вн*к*д  полностью выглядит так
//
Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнить(Кнопка)
   таблицаНеделя= ПолучитьТаблицуДатЗаПериод(НачДата, КонДата, "Неделя");
    таблицаМесяц= ПолучитьТаблицуДатЗаПериод(НачДата, КонДата, "Месяц") ;
    таблицаПолугодие= ПолучитьТаблицуДатЗаПериод(НачДата, КонДата, "Полугодие") ;

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


он должен определить продавалось номенклатура постоянно каждую неделю или нет, далее продовалась она каждый месяц или нет...

Оффлайн Летящий в даль

  • **
  • Сообщений: 56
  • РЕПУТАЦИЯ: 12
  • КПД: 21%
  • 1с - это диагенез :D
  • Регистрация: 2016-05-16
  • Сайт: 
  • Профессия: Программист 1С
он должен определить продавалось номенклатура постоянно каждую неделю или нет, далее продовалась она каждый месяц или нет...
странная постановка , ведь если она продавалась на неделе, логично же что она и в каком то месяце продавалась?? уточните что именно вы хотите получить какой тренд ???
Добавлено: 18 Авг 2016, 10:57

   таблицаНеделя= ПолучитьТаблицуДатЗаПериод(НачДата, КонДата, "Неделя");
    таблицаМесяц= ПолучитьТаблицуДатЗаПериод(НачДата, КонДата, "Месяц") ;
    таблицаПолугодие= ПолучитьТаблицуДатЗаПериод(НачДата, КонДата, "Полугодие") ;
что ваще такое ПолучитьТаблицуДатЗаПериод?

Оффлайн John_Connor

  • **
  • Сообщений: 73
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-22
  • Сайт: 
  • Профессия: Ученик 1С
вывести номенклатуру которая продавалось каждую неделю, постоянно с Дата1 по Дата2. Если в этом периоде неделя просушена , то проверяю а продавалась ли она каждый месяц с Дата1 по Дата2

Оффлайн LexaK

  • *****
  • Сообщений: 1246
  • РЕПУТАЦИЯ: 344
  • КПД: 28%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
простую задачу сначала надо разбить на простые (и для понимания тоже) этапы

1.Отбираем все обороты за заданный период + доп условия.
2.из этой выборки получаем максимальное количество (с группировкой День, Неделя, Месяц, ...)
3.из 1. и 2. получаем результат с количеством и товаром

вот как это выглядит на моем примере, вам только остается подставить свои данные и названия регистров/ресурсов
(ну уж если вы с этим справиться не сможете ... )

рассмотрен самый простой способ, есть еще куча других вариантов по получению максимальных движений, но это для более продвинутых прогеров.

//получаем общие записи оборота за период с Дата1 по Дата2 ( пример 01,01,2016 - 01,07,2016)
ВЫБРАТЬ
Рег.Период,
Рег.НоменклатурнаяГруппа,
Рег.СуммаОборот
поместить Таб
ИЗ
РегистрНакопления.РеализацияУслуг.Обороты(&Дата1, &Дата2, Неделя, ) КАК Рег   //обороты по неделям
;

//рассчитываем максимумы по Недельно
ВЫБРАТЬ
Таб.Период,
Максимум(Таб.СуммаОборот) как СуммаОборот
поместить Макс
из
Таб
сгруппировать по
Таб.Период
;

//получаем результат
выбрать
Рег.Период,
Рег.НоменклатурнаяГруппа,
Рег.СуммаОборот
из
Таб Рег
внутреннее соединение Макс
по Рег.Период = Макс.Период
и  Рег.СуммаОборот = Макс.СуммаОборот

упорядочить по
1,2


Если вам просто Обороты нужны, то почему не воспользоваться отчетом по оборотам?
там указываете в отборах нужную номенклатуру(список), период группировки (Неделя, Месяц,...)

мой пример для получения лидеров продаж.


Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн John_Connor

  • **
  • Сообщений: 73
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-22
  • Сайт: 
  • Профессия: Ученик 1С
спасибо за пример, но в моем случае он не подходит

Оффлайн SGIRG

  • **
  • Сообщений: 85
  • РЕПУТАЦИЯ: 27
  • КПД: 32%
  • Регистрация: 2014-03-26
  • Сайт: 
  • Профессия: Программист 8.1
Если продолжать дописывать Ваш код то выйдет примерно следующее:
ВЫБРАТЬ
    ТЗ.НачИнтервала
ПОМЕСТИТЬ ТЗ2
ИЗ
   &ТЗ КАК ТЗ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КОЛИЧЕСТВО(ТЗ2.НачИнтервала) КАК Количество
ПОМЕСТИТЬ КоличествоНедель
ИЗ
    ТЗ2 КАК ТЗ2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТЗ2.НачИнтервала,
    ПродажиОбороты.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ОборотыСИнтервалами
ИЗ
    ТЗ2 КАК ТЗ2
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&ДатаНП, &ДатаКп, Неделя, Номенклатура.ВидНоменклатуры <> &ВидНоменклатуры) КАК ПродажиОбороты
        ПО ТЗ2.НачИнтервала = ПродажиОбороты.Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КОЛИЧЕСТВО(ОборотыСИнтервалами.НачИнтервала) КАК Количество,
    ОборотыСИнтервалами.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ОборотыСКоличествомИнтервалов
ИЗ
    ОборотыСИнтервалами КАК ОборотыСИнтервалами
ГДЕ
    НЕ ОборотыСИнтервалами.Номенклатура ЕСТЬ NULL

СГРУППИРОВАТЬ ПО
    ОборотыСИнтервалами.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОборотыСКоличествомИнтервалов.Количество,
    ОборотыСКоличествомИнтервалов.ЗаявкаНаРасходованиеДенежныхСредств
ИЗ
    ОборотыСКоличествомИнтервалов КАК ОборотыСКоличествомИнтервалов
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ КоличествоНедель КАК КоличествоНедель
        ПО ОборотыСКоличествомИнтервалов.Количество = КоличествоНедель.Количество
Нажимайте "Спасибо", так приятнее))

Оффлайн LexaK

  • *****
  • Сообщений: 1246
  • РЕПУТАЦИЯ: 344
  • КПД: 28%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
Примерно такую таблицу надо получить?
это пример по одному оборудованию. у нас продается один раз в месяц
из таблицы видно в какую неделю в каком месяце было продано.

ПериодНеделя           ПериодМесяц           Номенклатура   СуммаНеделя   СуммаМесяц
04.01.2016 0:00:00   01.01.2016 0:00:00   Оборудование              7 033,91
11.01.2016 0:00:00   01.01.2016 0:00:00   Оборудование              7 033,91
18.01.2016 0:00:00   01.01.2016 0:00:00   Оборудование              7 033,91
25.01.2016 0:00:00   01.01.2016 0:00:00   Оборудование   7 033,91   7 033,91
01.02.2016 0:00:00   01.02.2016 0:00:00   Оборудование      
08.02.2016 0:00:00   01.02.2016 0:00:00   Оборудование      
15.02.2016 0:00:00   01.02.2016 0:00:00   Оборудование      
22.02.2016 0:00:00   01.02.2016 0:00:00   Оборудование      
29.02.2016 0:00:00   01.02.2016 0:00:00   Оборудование      
07.03.2016 0:00:00   01.03.2016 0:00:00   Оборудование                593,23
14.03.2016 0:00:00   01.03.2016 0:00:00   Оборудование                593,23
21.03.2016 0:00:00   01.03.2016 0:00:00   Оборудование                593,23
28.03.2016 0:00:00   01.03.2016 0:00:00   Оборудование   593,23             593,23
04.04.2016 0:00:00   01.04.2016 0:00:00   Оборудование              7 203,4
11.04.2016 0:00:00   01.04.2016 0:00:00   Оборудование              7 203,4
18.04.2016 0:00:00   01.04.2016 0:00:00   Оборудование              7 203,4
25.04.2016 0:00:00   01.04.2016 0:00:00   Оборудование   7 203,4           7 203,4
02.05.2016 0:00:00   01.05.2016 0:00:00   Оборудование              2 796,61
09.05.2016 0:00:00   01.05.2016 0:00:00   Оборудование              2 796,61
16.05.2016 0:00:00   01.05.2016 0:00:00   Оборудование              2 796,61
23.05.2016 0:00:00   01.05.2016 0:00:00   Оборудование              2 796,61
30.05.2016 0:00:00   01.05.2016 0:00:00   Оборудование   2 796,61   2 796,61
06.06.2016 0:00:00   01.06.2016 0:00:00   Оборудование              12 711,87
13.06.2016 0:00:00   01.06.2016 0:00:00   Оборудование              12 711,87
20.06.2016 0:00:00   01.06.2016 0:00:00   Оборудование              12 711,87
27.06.2016 0:00:00   01.06.2016 0:00:00   Оборудование   12 711,87   12 711,87
Помогло? - Нажми СПАСИБО!!!
                       :)


Теги:
 

Как можно подставлять цену из регистра сведений "Цены поставщиков" в документ"ПоступлениеТоваров" на актуальную дату? Необходимо использовать запрос в решении.

Автор Елена6666666666Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 8240
Последний ответ 24 Окт 2014, 13:30
от cska-fanat-kz
Запрос Параметры для "ИЗ"

Автор БерезинРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 2722
Последний ответ 15 Май 2013, 23:27
от Березин
Что быстрее: Загрузить табличную часть в запрос и там добавить колонки, или пробежаться циклом по ТЧ и добавить значения в колонки

Автор ZeedРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 790
Последний ответ 11 Июл 2016, 09:00
от vitasw
Запрос по обработке "Согласование заявок"

Автор DenielAkreedРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 501
Последний ответ 29 Сен 2016, 02:39
от DenielAkreed
8.2 Бух. Запрос с условием "комментарий содержит текст"

Автор bolobolРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 13
Просмотров: 15097
Последний ответ 02 Сен 2011, 01:14
от bolobol

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

oleg-x
105 Сообщений
alex0402
93 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
65 Сообщений
Golickoff Golickoff
49 Сообщений
ilyay ilyay
49 Сообщений
AIFrame
47 Сообщений
ab30ru
38 Сообщений
wise wise
34 Сообщений
Амал
30 Сообщений
lansy
22 Сообщений

* Кто онлайн

  • Точка Гостей: 213
  • Точка Скрытых: 0
  • Точка Пользователей: 7
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal