Имя: Пароль:
1C
1С v8
Оперативный учёт.
,
0 Dmitry017
 
13.04.13
21:35
Решаю задачки из книжки по подготовке к спецу по платфрме. Набросал план решения (что нужно сделать чтобы решить задачу). В кратце набросал. В принципе всё подробно не описано. Но тем не менее, можете подсказать, есть ли какие-то принципиальные ошибки в алгоритме? Например, не те измерения у регистра и т.д.?
Задача 1.12
Задача 1.12.
Компания занимается оптовой торговлей. Принята следующая схема работы: поступление товаров отражается документом «Приходная накладная». По предварительной договоренности с покупателем .менеджер может оформить резерв (документ «Резервирование товара»), причем наличие товара в этот момент не важно, товар может отсутствовать. Непосредственно отгрузка товара покупателю отражается документом «Расходная накладная», при этом происходит снятие резерва.
Учет товаров ведется в разрезе складов. В документах «Приходная накладная» и Расходная накладная» склад только один (склад - реквизит шапки).
При проведении расходной накладной необходимо проверить наличие товара на складе и «свободного» (будет описано далее) товара. В том случае, когда товара недостаточно, документ не проводится и выводится соответствующее сообщение об ошибке.
У каждого менеджера есть приоритет, чем больше приоритет, тем более ответственный менеджер и тем важнее его продажи. Таким образом, если два менеджера одновременно зарезервировали один и тот же товара, то менеджер с большим приоритетом может продать товар, зарезервированный менеджером с меньшим приоритетом. Менеджер с низким приоритетом продать чужой резерв не имеет права. Таким образом, «свободный» товар менеджера определяется как товар на всех складах минус резерв всех остальных менеджеров с приоритетом большим либо таким же, как и у текущего менеджера.
Приоритет устанавливается для каждого менеджера индивидуально и может меняться н& чаще чем 1 раз в месяц. При продаже необходимо использовать приоритет менеджера, актуальный на дату продажи.
Себестоимость товара рассчитывается как средняя по складу.
Необходимо создать отчеты по состоянию остатков и резервов на дату.
1 Dmitry017
 
13.04.13
21:35
Алгоритм
1.    Документ РезервированиеТовара. Товара может и не быть, но он должен быть зарезервирован
2.    Отгрузка товара происходит как снятие с резерва
3.    Склад – реквизит документа
4.    РегистрСведений ПриоритетыМенеджеров.
Измерение: Контрагенты. Ресурс: Приоритет
5.    При проведении расходной накладной необходимо проверить наличие товара на складе и «свободного» (будет описано далее) товара.
6.    Себестоимость товара рассчитывается как средняя по складу
7.    РегистрНакопления Резервы. Измерение: Номенклатура, Контрагент. Измерение: Количество
8.    РегистНакопления ОстаткиНоменклатуры. Измерение: Номенклатура, Склад, ресурс: Количество, Стоимость
2 Classic
 
13.04.13
21:44
И чё?
3 Dmitry017
 
13.04.13
21:45
я правильно эти 2 регистра определил?
7.    РегистрНакопления Резервы. Измерение: Номенклатура, Контрагент. Измерение: Количество
8.    РегистНакопления ОстаткиНоменклатуры. Измерение: Номенклатура, Склад, ресурс: Количество, Стоимость
4 Dmitry017
 
13.04.13
21:48
7.    РегистрНакопления Резервы. Измерение: Номенклатура, Контрагент. ресурс: Количество
5 asady
 
13.04.13
21:57
(4) в измерения засунь менеджера
6 Dmitry017
 
13.04.13
21:59
спасибо
7 asady
 
13.04.13
22:02
(6) а вот зачем туда контрагента пихнул?
обычно документ резерва юзают в качестве измерения
8 asady
 
13.04.13
22:03
(1) а ты часом менеджеров с контрагентами не путаешь?
почему у тебя РС называется приоритетыменеджеров а в измерении у него контрагент?
9 Dmitry017
 
13.04.13
22:11
Дада. спутал. Спасибо
10 Dmitry017
 
13.04.13
22:14
(7) То есть передать Ссылку на документ? А как потом определять приоритеты менеджеров, если менеджера не будет в измерениях? Это запрос к документу придётся делать, а это как я читал очень тормознутая вещь
11 asady
 
13.04.13
22:21
(10) РН Резервы:
Измерения: Номенклатура, ДокументРезерва, Менеджер
12 Dmitry017
 
13.04.13
22:23
(11) Я понял, спасибо. Но только одно не могу понять, всё вроде будет работать и без данных ДокментРезерва, это избыточная информация. Поясните пожалуйста, зачем она нужна.
Если я не прав что информация избыточная, поправьте
13 Dmitry017
 
13.04.13
22:45
В условии написано:
При проведении расходной накладной необходимо проверить наличие товара на складе и «свободного» (будет описано далее) товара. В том случае, когда товара недостаточно, документ не проводится и выводится соответствующее сообщение об ошибке.
У каждого менеджера есть приоритет, чем больше приоритет, тем более ответственный менеджер и тем важнее его продажи. Таким образом, если два менеджера одновременно зарезервировали один и тот же товара, то менеджер с большим приоритетом может продать товар, зарезервированный менеджером с меньшим приоритетом. Менеджер с низким приоритетом продать чужой резерв не имеет права. Таким образом, «свободный» товар менеджера определяется как товар на всех складах минус резерв всех остальных менеджеров с приоритетом большим либо таким же, как и у текущего менеджера.


Вот с получением информации об остатках товаров на складах всё понятно, а как получить информацию в запросе о резервах менедджеров, да и в соответствии с их приоритетами, вот это не совсем понятно. Есть предположение добавить ресурс Приоритет в регистр накопления Резервы, но мне кажется, что это было бы глупо, т.к. приоритет уже находится в регистре сведений. Как быть?
   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
       |ПОМЕСТИТЬ ВТТовары
       |ИЗ
       |    Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
       |ГДЕ
       |    РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    ОстаткиНоменклатурыОстатки.Номенклатура,
       |    ОстаткиНоменклатурыОстатки.КоличествоОстаток,
       |    ОстаткиНоменклатурыОстатки.СтоимостьОстаток
       |ПОМЕСТИТЬ ВТОстатки
       |ИЗ
       |    РегистрНакопления.ОстаткиНоменклатуры.Остатки(
       |            &МоментВремени,
       |            Номенклатура В
       |                    (ВЫБРАТЬ
       |                        ВТТовары.Номенклатура
       |                    ИЗ
       |                        ВТТовары КАК ВТТовары)
       |                И Склад = &Склад) КАК ОстаткиНоменклатурыОстатки
       |;
       |
       |////////////////////////////////////////////////////////////////////////////////
       |ВЫБРАТЬ
       |    РезервыОстатки.Номенклатура,
       |    РезервыОстатки.Менеджер,
       |    РезервыОстатки.КоличествоОстаток
       |ИЗ
       |    РегистрНакопления.Резервы.Остатки(
       |            &МоментВремени,
       |            Номенклатура В
       |                    (ВЫБРАТЬ
       |                        ВТТовары.Номенклатура
       |                    ИЗ
       |                        ВТТовары КАК ВТТовары)
       |                И Менеджер = &Менеджер) КАК РезервыОстатки";

   Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
   Запрос.УстановитьПараметр("Склад", Склад);
   Запрос.УстановитьПараметр("Ссылка", Ссылка);
   Запрос.УстановитьПараметр("Менеджер", Менеджер);
14 Dmitry017
 
13.04.13
22:54
Если что, вот выгруженная база http://zalil.ru/34436250
Подскажите, пожалуйста, кто что знает. Задача вроде типовая, ничего сложного. Но начинающему трудно сориентироваться
15 asady
 
13.04.13
23:05
(12)  а как ты отделишь резервы вообще от резервов по конкретному документу резерва при отгрузке?
16 Мимохожий Однако
 
14.04.13
09:04
Что именно у тебя не получилось? Задача типовая. Контрольный пример даёт нужный результат?
17 shuhard
 
14.04.13
09:16
(14) не парься,
в ближайший год сертификат ты не получишь
18 Dmitry017
 
14.04.13
10:25
(17) да я первоначально для себя поднатаскатья хочу.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой