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

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

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

  • *****
  • Сообщений: 1214
  • РЕПУТАЦИЯ: 333
  • КПД: 27%
  • Регистрация: 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

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

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

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

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

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

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

Оффлайн LexaK

  • *****
  • Сообщений: 1214
  • РЕПУТАЦИЯ: 333
  • КПД: 27%
  • Регистрация: 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
Просмотров: 7710
Последний ответ 24 Окт 2014, 13:30
от cska-fanat-kz
Запрос Параметры для "ИЗ"

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

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

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

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

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

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

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

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

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
91 Сообщений
Dethmontt Dethmontt
66 Сообщений
wise wise
63 Сообщений
MuI_I_Ika MuI_I_Ika
62 Сообщений
alex0402
58 Сообщений
ilyay ilyay
42 Сообщений
Сергей Федоров Сергей Федоров
32 Сообщений
magnifico61
25 Сообщений
ilnur75
22 Сообщений
Дмитрий Медведков
18 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal