Автор Тема: Задача 1.12  (Прочитано 55524 раз)

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

sada

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Андрей
Задача 1.12
« Ответ #15 : Октябрь 26, 2010, 05:30:56 am »
ut2k5, :)) базу пока не смотрел, по менеждерам скажу, каждый менеджер может списать
 из регистра "Остаток" количество = ( ВесьОстаток - ЧужойРезервСБольшимПриоритетом ).
 После этого, он должен списать из регистра "Резервы" только свои резервы в по принципу min(КолПродаем,КолРезервировали).

Если списывать чужие резервы то получится, кроме того, что он чужой товар продал, он еще и информацию о том какой товар нужен другим менеждерам с меньшим приоритетом тоже удалл :)))

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

« Последнее редактирование: Октябрь 26, 2010, 07:26:18 am от Андрей »

ut2k5

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Максим
Задача 1.12
« Ответ #16 : Октябрь 26, 2010, 08:39:41 am »
sada, спасибо это как раз то что я хотел услышать, потому как и сам такого мнения, именно вот так min(КолПродаем,КолРезервировали) и сделал smile
 ты когда сдаешь, не в среду ли?...


sada

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Андрей
Задача 1.12
« Ответ #17 : Октябрь 26, 2010, 08:49:53 am »
ut2k5, нет, рано еще :)))

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 1.12
« Ответ #18 : Октябрь 26, 2010, 10:33:18 am »
sada, Давай сдавай, ты готов уже=)

ut2k5

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Максим
Задача 1.12
« Ответ #19 : Октябрь 26, 2010, 04:53:04 pm »
sada, присоединяюсь к SergTH000, давай сдавай smile
 обещал что в октябре будешь спецом smile я завтра иду пробовать....

pako_amadi

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Pavel Amadi
Задача 1.12
« Ответ #20 : Декабрь 23, 2010, 03:19:26 am »
Мое решение с отчетами
Вложения:
1_12.dt

palax

  • Пользователь
  • **
  • Сообщений: 45
  • ФИО: Алексей
Задача 1.12
« Ответ #21 : Декабрь 23, 2010, 02:55:17 pm »
Quote (SergTH000)
SergTH000
, а зачем там итоги с минимумом?
 eek

Добавлено (23.12.2010, 14:55)
---------------------------------------------
pershinsergei, скачал твою базу, а там задача 1.18...


SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 1.12
« Ответ #22 : Декабрь 23, 2010, 03:06:02 pm »
palax, Привет=)
 Это одна из самых первых задач которую я решал так что не помню уже=) Ну вроде там одно и тоже можно Максимум можно минимум...

palax

  • Пользователь
  • **
  • Сообщений: 45
  • ФИО: Алексей
Задача 1.12
« Ответ #23 : Декабрь 23, 2010, 07:09:34 pm »
На экзамене была такая задача...решил вспомнить и пришел в ужас от того , что забыл как ее решал)))....Вот решил..

Добавлено (23.12.2010, 19:09)
---------------------------------------------

Quote (SergTH000)
palax, Привет=) Это одна из самых первых задач которую я решал так что не помню уже=) Ну вроде там одно и тоже можно Максимум можно минимум...
, Привет. привет Серега)))..Надо посмотреть, что ты там изобрел с минимум и мксимумом).
Вложения:
palax-1.12.dt

sergio0

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 1.12
« Ответ #24 : Апрель 03, 2011, 04:14:07 pm »
Проверьте мое решение кто-нибудь, ну пожалуйста smile
Вложения:
Sergio_1.12.dt

Danan

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Данияр
Задача 1.12
« Ответ #25 : Апрель 03, 2011, 05:54:41 pm »
sergio0,
 1) В запросе модуля расходной при создании временных таблиц не индексируются поля.
 2) В пакетном запросе по остаткам резервом, в условиях вирт таблицы РезервыОстатки можно добавить к условиям по номенклатуре такое условие:
 
Code
Менеджер.Приоритет>=&Приоритет
Это позволит отсечь при создании вирт таблицы остатки всех менеджеров с низкими приоритетами.
« Последнее редактирование: Апрель 03, 2011, 05:55:14 pm от Данияр »

sergio0

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 1.12
« Ответ #26 : Апрель 03, 2011, 09:46:04 pm »
Danan, Спасибо, что поглядел.
 
Quote (Danan)
1) В запросе модуля расходной при создании временных таблиц не индексируются поля.

 С этим согласен, а на экзамене могут снизить оценку за это?
 
Quote (Danan)
2) В пакетном запросе по остаткам резервом, в условиях вирт таблицы РезервыОстатки можно добавить к условиям по номенклатуре такое условие:
Code
Менеджер.Приоритет>=&Приоритет

 Это позволит отсечь при создании вирт таблицы остатки всех менеджеров с низкими приоритетами.

 У меня приоритеты хранятся в регистре сведений, а не являются реквизитами справочника, поэтому такое условие не сделать. Наверно имелось в виду, что нужно добавить условие на приоритет в виртуальную таблицу регистра сведений:
 
Code
РегистрСведений.ПриоритетыМенеджеров.СрезПоследних(&МоментВремени, Менеджер <> &Менеджер И Приоритет > &Приоритет)

 Или я опять туплю smile

А остальное все норм?


Danan

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Данияр
Задача 1.12
« Ответ #27 : Апрель 04, 2011, 05:40:48 am »
sergio0,
 1) На счет индексирования что то есть в требованиях экзамену. Просто когда индексация сделана во временных таблицах, запросы по этим таблицам строятся быстрее.
 2)Или ... Я писал про таблицу остатков. Приоритет конкретного менеджера можно заранее получить например методом рс ПолучитьПоследнее. И уже этот приоритет поставить в условиях обоих вирт таблиц что вероятно оптимизирует основной запрос.

В целом норм. Лично что то из ряда вон выходящего не увидел.

Quote (sergio0)
Проверьте мое решение кто-нибудь, ну пожалуйста

 Интересно чем это задача для тебя важна?

Danan

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Данияр
Задача 1.12
« Ответ #28 : Апрель 06, 2011, 10:25:49 am »
Quote (Danan)
2)Или ... Я писал про таблицу остатков. Приоритет конкретного менеджера можно заранее получить например методом рс ПолучитьПоследнее. И уже этот приоритет поставить в условиях обоих вирт таблиц что вероятно оптимизирует основной запрос.

sergio0, Я что то напутал, ты был прав. Такое условия сработает только на вирт таблицу рс.

Выкладываю свое решение. Получилось довольно много кода на языке запросов и на встроенном языке, но такова цена за гибкость в обработке проведения. Просто не хотелось валить все одну кучу.


Вложения:
Task_1_12..dt

vladislav

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Владислав
Задача 1.12
« Ответ #29 : Апрель 12, 2011, 01:25:27 pm »
Посмотрите мой запрос, там две виртуальные таблицы.
 1) Изначально смотрел Сколько менеджеров имеют приоритет меньше или равный текущему
 2) Затем запрос к ТЧ документа
 3) соединение с регистрами в параметрах регистра резерв на менеджера накладываем сложный фильтр, вот в принципе все
 
Code
ВЫБРАТЬ
  РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
  СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество
 ПОМЕСТИТЬ ВтДок
 ИЗ
  Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
 ГДЕ
  РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка

 СГРУППИРОВАТЬ ПО
  РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
 ;

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