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

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

AndreiPiter

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Андрей
Задача 1.12
« Ответ #30 : Май 18, 2011, 10:49:21 am »
Попалась эта задача на экзамене, в ней только один Отчет ОстаткиТоваров. Хочу обратить внимание, что колонка Резерв всегда последняя (после складов), решал эту задачу ранее и необратил на это внимание, заметил только на экзамене когда Резерв отсортировался между колонками Оптовый и Транзитный.
 Исправил своё предъидущее решение.
Вложения:
AP_1.12_2.dt

Lukashov_as

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Лукашов Андрей Сергеевич
Задача 1.12
« Ответ #31 : Июнь 11, 2011, 11:17:21 am »
кажется работает
Вложения:
1_12_lukashov.dt


Urfin

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Urfin
Задача 1.12
« Ответ #32 : Июнь 18, 2011, 04:22:44 pm »
Доброго дня. Посмотрел решения некоторых из участников, возник такой вопрос: если товар резервируется менеджером1 с приоритетом 1 в кол-ве 1 шт и менеджером2 с приоритетом 2 в кол-ве 2 шт, а продает его менеджер 3 с приоритетом 3 в кол-ве 3 шт, то получается, что на момент проведения этой расходной накладной в регистре резервов будут 2 записи:
 + Менеджер 1, 1 шт,
 + Менеджер 2, 2 шт. И получается, что при проведениии расходной накладной, мы не можем сделать запись:
 - Менеджер 3, 3 шт, т.к. такой регистр в ноль никогда не закроется. Получается, что нужно делать
 - Менеджер 1, 1 шт,
 - Менеджер 2, 2 шт. В общем что-то вроде(или не вроде, а так и есть) списания по партиям. Вопрос только как их отсортировать? сделал по возрастанию приоритета. Или я что-то неправильно понял в условии задачи. Еще такой момент, при построении запроса к доступным резервам, следует учитывать что можно забирать товары не только менеджеров с более низким приоритетом, но и текущего менеджера.
 Еще что-то не пойму, как проще в отчете резервы сделать сортировку по приоритету, может кто подскажет?
 Прикрепляю свое решение, буду признателен за критику.

 Спасибо.

 Добавлено (13.06.2011, 19:58)
 ---------------------------------------------
 Проясните, пжл, ситуацию с менеджерами и закрытием регистра в ноль, описал в предыдущем посте.

Добавлено (18.06.2011, 16:22)
---------------------------------------------
Еще такой вопрос: считается ли нормальным использование одного общего модуля с флагами клиент и сервер одновременно?
 Общий модуль РаботаСДокументами:

 // Вызывается из форм документов приходная и расходная
 Процедура РассчитатьСуммуТабличнойЧасти(СтрокаТабличнойЧасти) Экспорт

    СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
    
 КонецПроцедуры   

 // Вызывается из модулей документов Приходная и расходная, перед записью
 Функция РассчитатьСуммуДокумента(Объект) Экспорт
    
    Возврат Объект.СписокНоменклатуры.Итог("Сумма");
    
 КонецФункции


Вложения:
1-12_Urfin.dt
« Последнее редактирование: Июнь 13, 2011, 07:58:30 pm от Urfin »

nforcenf

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Попов Владимир
Задача 1.12
« Ответ #33 : Июнь 18, 2011, 04:52:16 pm »
Urfin,
Quote
продает его менеджер 3 с приоритетом 3 в кол-ве 3 шт,
Если у тебя этот менеджер ничего не резервировал то и движений у тебя никаких не будет по регистру резервов вообще, зачем они тебе. Я так считаю. Он не обязательно должен снимать чужие резервы - в условие эт явно не сказано. А если уж и делаешь снятие, то неважно как ты будешь делает твое типа списание "по партии" - в задачи не сказано об этом, то есть сам выбирай. По поводу кода: [Обработка проведения расходной накладной]
 1. В 1-й таблица запроса группировку перепутал - группируешь по Количеству. dry
 2. Временная таблица 2 - группировка излишняя у тебя табличная часть сгруппированна к этому моменту, таблица остатков вообще самогруппируема.
 3. Временная таблица 3 - то же самое - группировка избыточна.
« Последнее редактирование: Июнь 18, 2011, 05:05:06 pm от Попов Владимир »

Urfin

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Urfin
Задача 1.12
« Ответ #34 : Июнь 18, 2011, 05:13:00 pm »
nforcenf, Спасибо за комментарии и замечания.

nforcenf

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Попов Владимир
Задача 1.12
« Ответ #35 : Июнь 18, 2011, 05:29:40 pm »
Urfin,
 4. Временная таблица 4 - неправильный отбор таблицы ПриоритетыМенеджеров.СрезПоследних. Допустим вот у тебя в базе приоритеты на 1-е июня - Бельдыев приоритет 1, Головлев - 3. На склад пришло 10 холодильников. Бельдыев сделал резерв на 10 шт. Головлев отгрузить может, у него приоритет больше. Но теперь, ставим что - там когда - то давно у нас бельдыев был более важным - например 1 июня 2010 года у него был приоритет 5. Тогда Головлев не сможет ничего отгрузить. То есть иными словами если хоть в раз жизни у менеджера был приоритет больше других то никто никогда уже не сможет отгрузить его товар. Если непонятно, могу остановиться поподробнее на отборе таблицы срез последних.
« Последнее редактирование: Июнь 18, 2011, 05:30:59 pm от Попов Владимир »

Urfin

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Urfin
Задача 1.12
« Ответ #36 : Июнь 18, 2011, 06:09:27 pm »
nforcenf,
Quote (nforcenf)
Но теперь, ставим что - там когда - то давно у нас бельдыев был более важным - например 1 июня 2010 года у него был приоритет 5

 Да, ты прав, подскажи, пжл, как побороть?

nforcenf

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Попов Владимир
Задача 1.12
« Ответ #37 : Июнь 18, 2011, 07:26:13 pm »
Urfin,
Quote
Да, ты прав, подскажи, пжл, как побороть?
Вместо отбора внутри используем его после создания виртуальной таблицы:
 Было так:
 
Code
                |ИЗ
                 |    РегистрСведений.ПриоритетыМенеджеров.СрезПоследних(
                 |   &МоментВремени,
                 |   Приоритет >= &ТекущийПриоритет
                 |    И Менеджер <> &ТекущийМенеджер) КАК ПриоритетыМенеджеровСрезПоследних
                 |  ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РезервыНоменклатуры.Остатки(
                 |    &МоментВремени,
                 |    Номенклатура В
                 |     (ВЫБРАТЬ
                 |      расходная.Номенклатура
                 |     ИЗ
                 |      расходная КАК расходная)) КАК РезервыНоменклатурыОстатки
                 |  ПО ПриоритетыМенеджеровСрезПоследних.Менеджер = РезервыНоменклатурыОстатки.Менеджер
  
А станет так:
 
Code
  
                 |ИЗ
                 |    РегистрСведений.ПриоритетыМенеджеров.СрезПоследних(
                 |   &МоментВремени,) КАК ПриоритетыМенеджеровСрезПоследних
                 |  ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РезервыНоменклатуры.Остатки(
                 |    &МоментВремени,
                 |    Номенклатура В
                 |     (ВЫБРАТЬ
                 |      расходная.Номенклатура
                 |     ИЗ
                 |      расходная КАК расходная)) КАК РезервыНоменклатурыОстатки
                 |  ПО ПриоритетыМенеджеровСрезПоследних.Менеджер = РезервыНоменклатурыОстатки.Менеджер
                 |ГДЕ
                 |    ПриоритетыМенеджеровСрезПоследних.Менеджер <> &ТекущийМенеджер
                 |    И ПриоритетыМенеджеровСрезПоследних.Приоритет >= &ТекущийПриоритет

 

Urfin

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Urfin
Задача 1.12
« Ответ #38 : Июнь 18, 2011, 07:45:38 pm »
nforcenf, спасибо тебе!

 Еще такой вопрос, не относящийся конкретно к этой задаче, общий, не хочется создавать отдельную ветку, он вобщем-то простой..:при проверке остатков при проведении документов на предмет превышения, использую такой код:

 Если Выборка.Количество > Выборка.КоличествоОстаток тогда
    Отказ = Истина;
    Сообщение = Новый СообщениеПользователю();
    Сообщение.Текст = "Товара "+Выборка.Номенклатура+" недостаточно.";
    Сообщение.Поле = "СписокНоменклатуры["+Строка((Выборка.НомерСтроки-1))+"].Количество";
    Сообщение.УстановитьДанные(ЭтотОбъект);
    Сообщение.Сообщить();
          
    Продолжить;
          
 КонецЕсли;

 Но для этого в запросе приходится выбирать доп. поле "номер строки". Что скажете, не повлияет ли это на оценку?

nforcenf

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Попов Владимир
Задача 1.12
« Ответ #39 : Июнь 18, 2011, 09:11:30 pm »
Urfin,
Quote
но для этого в запросе приходится выбирать доп. поле "номер строки". Что скажете, не повлияет ли это на оценку?
Насчет оценки не знаю, не пробовал еще сдавать ни разу smile А вообще вряд ли влияет, наоборот правильнее когда номерстроки тоже получаешь и указываешь пользователю чего не хватает, главное не забыть сгруппировать это поле в запросе по табличной части(МИНИМУМ(НомерСтроки))

Para_1987

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Вячеслав
Задача 1.12
« Ответ #40 : Июль 12, 2011, 11:09:42 pm »
Вот мой вариант решения...задачка в общем то не сложная показалась имхо. поэтому жду критики
Вложения:
Para_1987_1.12.dt

gr0ck

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: gr0ck
Задача 1.12
« Ответ #41 : Июль 15, 2011, 12:22:42 pm »
SergTH000,
 Смотрел решение. Вот непонятно, в одном запросе из пакета
 
Code

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

 И в задании написано, что "свободный товар менеджера определяется как товар на всех складах минус резерв всех остальных менеджеров с приоритетом...
 Теперь вопрос:
 А разве не нужно учитывать еще и резерв самого этого менеджера? Который продает товар

Добавлено (15.07.2011, 10:37)
---------------------------------------------
AndreiPiter,
 Посмотрел, там ошибочка мелкая, условие не дописано. в расходной.
 Опять же по свободному резерву, ты так же делаешь как написано в задании, вычитаешь резервы остальных менеджеров, но почему остатки берешь по складу? Там сказано по всем складам

Добавлено (15.07.2011, 10:42)
---------------------------------------------
AndreiPiter,
 Да и на себестоимость ты забил

Добавлено (15.07.2011, 12:22)
---------------------------------------------
Да и вообще все плохо:)
 Пойду чай попью))))
 А в вашем решении не получается продать товар, который есть в остатках, но которого нет в резерве


gr0ck

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: gr0ck
Задача 1.12
« Ответ #42 : Июль 15, 2011, 12:40:15 pm »
Все, что-то сегодня не тот день... angry
 Пятница tongue
Вложения:
gr0ck1_12.dt

SergTH000

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Сергей
Задача 1.12
« Ответ #43 : Июль 15, 2011, 02:24:14 pm »
gr0ck, Уже не помню, но вроде как вот это
Quote
И ВсеРезервы.Менеджер <> &Менеджер
и учитывает...т.е. его резерв входит в реальные остатки на всех складах...
« Последнее редактирование: Июль 15, 2011, 02:25:19 pm от Сергей »

Denov

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Денис Рыженков
Задача 1.12
« Ответ #44 : Август 03, 2011, 08:25:39 pm »
Вот мое решение. Выполнено с использованием новой методики. Посмотрите кому не лень.
Вложения:
Denov_1.12.dt