Имя: Пароль:
1C
1С v8
Какую лучше сделать структуру хранения?
0 zAngrYz
 
19.12.12
18:07
Поставили задачку:
Нужно вести в программе учет маршрутов торговых представителей.
1) За одним клиентом закреплено несколько торговых, по 1 по каждой группе товаров (подразделению).
2) Нужно вести историю, т.е. нужно узнать на определенный момент какие торговые были за клиентом.
3) Маршруты регулярно перекраиваются 2 раза в год серьезные изменения. Проще забить весь маршрут с 0. И если клиент не указан у всех торговых одной группы товаров, то по данным у клиента не должно быть ответственного по этой группе.
4) 1 торговый может ездить к клиенту несколько раз в неделю.

Не могу придумать адекватную схему БД. Варианты использованные раньше рушатся с каждым условием.
1 Нуф-Нуф
 
19.12.12
18:09
периодический регистр сведений, ептыть
2 pessok
 
19.12.12
18:09
РС
3 exwill
 
19.12.12
18:10
(1) Он разрушится.
4 shuhard
 
19.12.12
18:10
(1) + 1
да ещё подчиненный Рг
5 Нуф-Нуф
 
19.12.12
18:12
(3) сделать запасной
6 Нуф-Нуф
 
19.12.12
18:12
(4) и хранить их в периферийных базах
7 Нуф-Нуф
 
19.12.12
18:12
не, ну правда ведь мы песдаты адинеснеги :)
8 pessok
 
19.12.12
18:13
(7) нету на мисте больше специалистов. одни тролли!
9 Нуф-Нуф
 
19.12.12
18:14
(8) ответ на сабж дан в (1) а дальше не грех и потроллить :)
10 pessok
 
19.12.12
18:15
11 NcSteel
 
19.12.12
18:17
А лучше регистр накопления остаточный. И делать приход маршрута, когда добавили контрагента в маршрут. И расход , когда убрали контрагента с маршрута.
12 Нуф-Нуф
 
19.12.12
18:19
(10) ну там то откровенный тупизм. ему мягким по теплому написано "В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере" - нет он продолжает долбить клювом. хотя полоска под ником не маленькая
13 zAngrYz
 
20.12.12
11:02
(1) Периодический регистр это первое, что приходит на ум, но... нужны уточнения
Маршрут не может меняться чаще чем 1 раз вдень (на самом деле ещё реже)
Как отразить, что торговый не ходит больше к клиенту?
И в этот же день другим документом, что к этому клиенту ходит другой торговый
14 zAngrYz
 
20.12.12
11:03
Хотелось бы предложение по структуре регистра. Уже 3 раз приходится переделывать(((
15 zAngrYz
 
21.12.12
18:17
Ясно, по троллили, по ржали, а советов 0.
Может, всё таки у кого-нибудь, будет идея внятной и рабочей схемы?
16 FIXXXL
 
21.12.12
18:52
(13) делай адекватную периодичность
"больше не ходит" - срез последних с сравнением по дате
17 mistеr
 
21.12.12
21:30
(15) Может все-таки кто-то сперва представит свой вариант и пояснит что не срослось?
18 zAngrYz
 
21.12.12
22:08
(17) Попытка улучшить, обычно хуже свежего взгляда, но вот вариант:
РС, периодичность день
Измерения:
 Клиент
 Подразделение
Ресурс
 Торговый
 День посещения

Документ назначение маршрута, при проведении проверяется маршрут с предыдущим, если клиент больше не включен в маршрут, то для (клиент, подразделение), торговый заполняется пустым значением

Хорошо:
1) По клиенту видим всех его торговых (бывших и текущих)
2) По торговому видим всех клиентов, с днем посещения.
3) Если назначить в маршруте клиента, который закреплен ранее за другим ТП, клиент переходит к другому торговому, автоматически.

Плохо:
1) Нельзя сделать несколько раз в неделю
2) Нельзя отметить, что к клиенту торговый ходит раз в 2 недели
3) Если сделать 2 документа установки маршрута с переходом 1 клиента от 1 торговому к другому, то второй документ не проводится, т.к. запись в регистре с такими ключевыми записями существует.
19 mistеr
 
21.12.12
22:39
(18) Недостатки 1 и 2 легко устранить, если выделить график посещения в отдельную сущность. И заполнять наперед, как в ЗУПе. Тем более, если меняются раз в полгода.

По 3-му: а зачем два документа, почему не одним?
20 zAngrYz
 
22.12.12
00:53
(19) Как?
Пробовал посмотреть в документе - регистраторе, мягко сказать не удобно.
Вторая мысль - справочник с табличной частью, тут не уверен что всплывет.

Раз в пол года стабильная ремаршрутизация, но в любое время может добавиться-уйти отдельный клиент, перенестись на другое время, изменится график посещений и пр.

Как 1-м  документом?
По задумке 1 документ - 1 маршрут.
21 mistеr
 
22.12.12
02:15
(20) >Как?
Как лучше описать график, зависит от характера данных. Как вариант, посмотрите на графики в том же ЗУПе - справочник с ТЧ-шаблоном + РС с заполнением на каждый день. Это хорошо работает, если вариантов этих шаблонов существенно меньше, чем представителей. Типа "понедельник-среда-пятница" или "1-е и 15-е число месяца" и т.д.

>Как 1-м  документом?
>По задумке 1 документ - 1 маршрут.
Ну и в чем проблема? Одним документом устанавливаем, что с 1 января к этому клиенту ходит Петров. Другим устанавливаем, что с 1-го июня будет ходить Васечкин. Каждый док сделает по одной записи в РС.
22 zAngrYz
 
24.12.12
09:45
(21) Тогда получается, надо заполнять гафик, как календарь. Т.е. посещаем клиента по таким то числам, но тогда придется регулярно продлевать этот график, что не удобно.

Как обработать такую ситуацию:
Петров ходит с 1-го января, а с 1-го июня не ходит? Т.е. получается период, когда к клиенту не ходит никто.
И как полученное решение срастется с Вашим вариантом.
23 AnKa4
 
24.12.12
10:17
(0) Касательно п. 2. Т.е. система должна знать на указанную дату перечень торговых, закрепленных за клиентом (в независимости от дня недели посещения и периодичности посещения)? Или система должна знать какие торговые посещают клиента на указанную дату?
24 mistеr
 
24.12.12
10:33
>Петров ходит с 1-го января, а с 1-го июня не ходит? Т.е. получается период, когда к клиенту не ходит никто.
Торговый = пустая ссылка, например.
25 zAngrYz
 
24.12.12
14:36
(24) Так и сделано, но если вводится в один день маршрут сначала Петрова, потом Васечкина. Тогда Маршрут Васечкина не проводится, т.к. запись с такими ключевыми полями существует.
26 zAngrYz
 
24.12.12
14:42
(23) Не совсем понял, это одно и то же. Если торговый закреплен за клиентом, то он (торговый) к этому клиенту и ходит.
1) Нужно знать, что на 23 ноября, у клиента "ООО Ромашка" по "газ воде" ответственный Пупкин
2) Нужно знать, что по состоянию на 23 ноября Пупкин посещает "ООО Ромашка" по понедельникам четной недели и четвергам нечетной, т.е. следующие посещения: 29 ноября и 3 декабря.
27 zAngrYz
 
24.12.12
14:43
(26) т.е. наоборот 24 и 6
28 mistеr
 
24.12.12
15:08
(25) Ну, правильно. И что не нравится?
29 zAngrYz
 
24.12.12
16:29
(28) Не нравится, то, что не проводится документ.
30 mistеr
 
24.12.12
16:40
(29) Так в учете косяк, потому и не проводится! Не фиг в один день двоих назначать. А если этот день с посещением, то придут двое один за другим, представь. То что в ЗУПе нельзя человека в один день два раза на другую должность перевести, не смущает?

Обойти-то можно (периодичность - секунда), но это себе бомбу заложить на будущее.
31 zAngrYz
 
24.12.12
19:14
(30) Так то логических нарушений нет. У одного убрали клиента, другому добавили.
В чем проблема?

Другие есть варианты построения регистров? Чтобы не наступать на эти грабли
32 AnKa4
 
25.12.12
03:25
(26)Тогда один из вариантов
1) график посещения:
Измерения:
Клиент
Подразделение
ДатаПосещения - можно использовать Период, если не требуется хранить дату вступления графика в силу
Ресурсы:
Торговый

2)Изворачиваться с указанием всего необходимого для расчета даты на основании начальных данных:

Измерения:
Клиент
Подразделение
ДеньНеделиПосещения - номер дня недели
ПериодичностьПосещения - Перечисление КаждуюНеделю, КаждуюЧетнуюНеделю, КаждуюНечетнуюНеделю.
Ресурсы:
Торговый

3) Есть начальные данные для расчета как в 2), на основании их заполняется график, например каждый месяц как в 1), который можно подкорректировать. В итоге все данные будут браться из графика.
33 AnKa4
 
25.12.12
03:29
(31) Не надо убирать клиента явно. Просто с какой-то даты назначаем нового торгового клиенту. С этой даты Срез последних регистра будет показывать уже нового торгового у клиента.
34 zAngrYz
 
25.12.12
08:30
(33) А тогда как быть с если у торгового просто убирается клиент, например закрылся. Тогда этот клиент всё равно будет в маршруте
35 AnKa4
 
25.12.12
09:09
(34) Например. Есть запись в регистре что с 01.12.12 торговым агентом, который посещает ООО Ромашка по газ. воде по четвергам каждую неделю, является Иванов.
Если с 01.01.13 торговым агентом, который посещает ООО Ромашка по газ. воде по четвергам каждую неделю, станет Петров, то просто вносится запись: 01.01.13, ООО Ромашка, Газ. вода, четверг, КаждуюНеделю, Петров.
Т.е. если набор значений измерений записи одинаковый, то срез последних на этот набор измерений покажет Иванова с 01.12.12; Петрова - на дату с 01.01.13.
Просто так работает периодический РС.
36 AnKa4
 
25.12.12
09:10
(35) Невнимательно прочитал вопрос в (34).
37 AnKa4
 
25.12.12
09:25
(34) Если надо закрыть клиента, то тогда вытаскиваем запросом последние данные по этому клиенту
ВЫБРАТЬ
   НашРССрезПоследних.ДеньНеделиПосещения,
   НашРССрезПоследних.ПериодичностьПосещения
ИЗ
   РегистрСведений.НашРС.СрезПоследних(&Дата, Клиент = &Клиент И Подразделение = &Подразделение) КАК НашРССрезПоследних

Перебираем все эти варианты и для них устанавливаем на дату &Дата ресурс Торговый пустым значением.
38 zAngrYz
 
25.12.12
10:19
(37) и снова возвращаемся к (25)
39 AnKa4
 
25.12.12
10:33
(38) У вас (25) ссылается на структуру описанную в (18). Измерений там не достаточно. Т.е. ключ точно определяет конкретный маршрут.Если использовать структуру из (32) под 2) то такого быть не должно. Естественно, с учетом периодичности РС День, торговый на один и тот же маршрут не должен назначаться чаще чем один раз в день.
40 AnKa4
 
25.12.12
10:41
(39) + Торговый может быть равен как конкретной ссылке на объект так и пустой ссылке. Это ничего не меняет. Просто пустая ссылка будет говорить, что на маршрут не назначен ни один торговый.
(38) Если в (25) описан случай при котором сначала на маршрут назначили (ввели документ №001) с 26.12.12 Иванова, а потом передумали и решили поставить с этой даты Петрова и пытаются ввести документ №002 от 26.12.12 уже на Петрова, то тогда второй документ не проведётся. Для того чтобы провёлся №002 надо распроводить №001 и это правильно.
41 zAngrYz
 
25.12.12
11:26
(40) "Если в (25) описан случай при котором сначала на маршрут назначили (ввели документ №001) с 26.12.12 Иванова"
Не назначили Иванова, а сняли с маршрута.
", а потом передумали и решили поставить с этой даты Петрова и пытаются ввести документ №002 от 26.12.12 уже на Петрова, то тогда второй документ не проведётся. Для того чтобы провёлся №002 надо распроводить №001"
А вот Петрову как раз назначили. И с точки зрения задачи - это не верно.
2 + 2 = 3.9999999999999999999999999999999...