Имя: Пароль:
1C
1С v8
Разработка механизма бронирования
0 LienXo
 
22.06.18
08:38
Операторы осуществляют оформление документов на продажу, в принципе, неважно даже чего - билетов на проезд, в кинотеатр, мест на парковку... Главное, что бы как только произошла выборка товара в документ - он (товар) становился недоступен для выбора другого оператора. Сразу проводить документ - не комильфо, покупатель может отказаться - тогда бронь снимается. Пока рассматриваю вариант независимого РС, в который пишется бронь и чистится либо в момент проведения/закрытия без сохранения + регламентное задание раз в час. Может есть другие предложения?
1 mistеr
 
22.06.18
08:46
Можно накладывать объектную блокировку.
Меньше нагрузка на базу и меньше проблем с отвалившимися клиентами.
2 shuhard
 
22.06.18
08:48
(0) топик ни о чем
нет требований на многопользовательскую работу и отражение резервов

поэтому обсуждать архитектуру хранения данных бессмысленно
3 butterbean
 
22.06.18
08:48
(1) бред
(0) норм
4 shuhard
 
22.06.18
08:49
(0) ну и конечно независимый регистр без документа и версионирования для резервов не подходит
5 mistеr
 
22.06.18
08:50
(2) Ты не прочитал что ли? Все есть.
6 shuhard
 
22.06.18
08:52
(5) ты точно не читал, ничего нет
7 butterbean
 
22.06.18
08:52
(3)+ обязательно писать в этот РС время блокировки и менеджера, чтобы можно было корректно чистить потом
8 Cyberhawk
 
22.06.18
08:58
Резервировать при интерактивном подборе? *овнокод
9 Cyberhawk
 
22.06.18
08:58
Нужно как на сайтах кинотеатров или выбора мест в самолете - чтоб ты видел, что кто-то другой на это место тоже тыкает (выбрал в кандидаты к брони)
10 Cyberhawk
 
22.06.18
08:59
Но пока не бронь не зафинализирована, запрещать другому выбрать это же место никак нельзя
11 mistеr
 
22.06.18
09:12
(9) "чтоб ты видел, что кто-то другой на это место тоже тыкает" == резервирование

Запрещать или нет, это детали.
12 Cyberhawk
 
22.06.18
09:19
(11) Нужно иметь два статуса резерва: "возможно будет зарезервирован" и "уже зарезервирован". И конечно же твое второе предложение ошибочное.
13 kauksi
 
22.06.18
09:22
при открытии формы считывать доступные места в некий глобальный кэш, доступный всем пользователям, при клике - удалять его оттуда, при отмене - возвращать. также обновлять кэш при всяких операциях проведения заказа. Что использовать в качестве кэша - дело вкуса
14 unregistered
 
22.06.18
09:22
Если есть количественный учет, то необходим регистр накопления.
Делаете его подчиненным регистратору.
При вводе очередной строки (или по отдельной кнопке, или...[тут надо подумать - в какой именно момент производится бронирование]) выполняется запись в этот регистр.
Вне обработки проведения(!). Типа записать документ (Если Новый()), СоздатьНаборЗаписей, установить отбор по регистратору, заполнить бронируемыми данными, Набор.Записать().
Во всех отчетах и обработках подбора по остаткам учесть наличие забронированного товара в этом регистре (из остатков по основному регистру вычесть остатки из регистра забронированных товаров).

А при выполнении проведения документа проследите, чтобы у это регистра был признак Записывать = Истина, чтобы записался пустой набор записей, таким образом произведя очистку бронирования окончательно проданного товара.
15 kauksi
 
22.06.18
09:23
предполагается что размер кэша не более десятков или сотен позиций.
16 kauksi
 
22.06.18
09:24
(14) какой нафиг отбор по регистратору если 100 пользователей...
17 unregistered
 
22.06.18
09:24
(7) Чистка брони таким образом - отдельная головная боль.
Должны быть четко определены критерии бронирования и время (период) бронирования.
18 kauksi
 
22.06.18
09:25
обычная задача про занятость помещений и время...
19 unregistered
 
22.06.18
09:25
(16) А при чем тут вообще пользователи? Хоть 3, хоть 30, зоть 300, хоть 3000?
20 unregistered
 
22.06.18
09:27
(18) Да, если нет количественного учета.
Если каждый объект индивидуален и бронирование производится только в разрезе объекта.
Если объекты имеют количественный показатель, то это совершенно другая задача.
21 kauksi
 
22.06.18
09:29
(20)какой количественный учет? ты бредишь?
22 kauksi
 
22.06.18
09:29
тут места (ячейки) при выборе надо проверять занята ли уже или нет,
23 unregistered
 
22.06.18
09:31
(21) Автор ветки не конкретизировал задачу и слился.
Я всего лишь обратил на это внимание. Что задача может решаться другим способом - в зависимости от одного ма-а-а-а-а-ленького нюанса.
24 unregistered
 
22.06.18
09:32
(22) Про ячейки это ты сам придумал? У автора в (0) четко написано: "ТОВАР".
25 unregistered
 
22.06.18
09:33
+ к (24) И кто тут бредит?....
26 Сияющий в темноте
 
22.06.18
09:35
Сделайте как у Ржд,обращение к элементу(у них билет)временно его блокирует,и выполнить операцию может только тот,кто заблокировал,время прошло,снова доступно всем.
И,конечно,в регистр,где можно,во-первых,отразить все услуги,доступные для бронирования,а также писать временную и постоянную блокировку(когда продали,услуга остается в регистре до оказания,чтобы в случае отказа можно было вернуть статус,а не снова добавлять в регистр)
удачи
27 LienXo
 
22.06.18
09:35
(21) не слился. Я тут и все читаю, просто медленно.
28 Масянька
 
22.06.18
09:39
(0) В принципе - направление верное...
Посмотри, как сделан учет по партиям в типовых.
Резерв - регистр (естественно, если товар в регистре - не доступен). Проведен док-т - в регистр. Нет оплаты, отказ и пр. - отмена док-та - очистка регистра (товар становится доступен).
Особое внимание - ко всяким нюансам и исключениям.
29 LienXo
 
22.06.18
09:42
(18) задача та. Где почитать про ее реализацию :)
30 Genayo
 
22.06.18
09:42
(0) У вас атомарные операции - каждая бронь должна быть отдельным документом.
31 LienXo
 
22.06.18
09:45
(30) постоянное бронирование - да. Здесь уже отметили и правильно сформулировали - меня интересует бронь временная - до момента проведения документа.
32 kauksi
 
22.06.18
09:46
(25) задача про бронирование и доступность а не про торговлю в розницу.
(30) Вместо регистра предлагаю использовать глобальную переменную - КэшСвободныхМест - хоть структуру, хоть списокзначений, которую все могут читать и записывать. Снимается проблема грязного чтения и конфликта блокировок как в случае регистра сведений. Регистр накопления не взлетит ибо нужен регистратор.
33 kauksi
 
22.06.18
09:51
и вообще уже есть 1с Театр https://solutions.1c.ru/catalog/theatre/features - посмотрите там
34 Genayo
 
22.06.18
09:53
(31) Так проводите каждый документ как вам надо, согласно статуса - постоянная, временная.
35 LienXo
 
22.06.18
09:53
(33) отдельное спасибо, посмотрю.
36 Genayo
 
22.06.18
09:54
(31) У вас по сути каждая строка "табличной части" должна быть отдельным документом.
37 gSha
 
22.06.18
09:54
понятно, что у ржд все на порядок сложнее, так как их система работала когда скорости каналов были типа 300 бит в секунду , и ленты крутились в одну сторону,  а места продавались в первые часы открытия продажи тысячами..
так, что можете про них не вспоминать, так как это космос на самом деле.
Сейчас они действительно все решают через мощности, как следствие по тупизне в первые минуты , они могут соперничать только с победой - той равной нет.
38 unregistered
 
22.06.18
09:56
(32) > задача про бронирование и доступность а не про торговлю в розницу

Это стало ясно только после поста (29). До этого момента автор мееееедлееееенно читал )))

Замечания (14)(20)(23)(24)(25) снимаются.
39 LienXo
 
22.06.18
09:57
(36) тоже мысль. подумаю. спасибо.
40 mistеr
 
22.06.18
09:57
(32) "Глобальная переменная" это что, в терминах платформы? Где хранится?
41 LienXo
 
22.06.18
09:58
(38) прошу прощения, но телефон стали с утра разрывать.
42 kauksi
 
22.06.18
09:58
43 Serg_1960
 
22.06.18
10:01
(0) Sorry, но Ваша тема, мягко говоря, не претендует на оригинальность. Если её, не изменяя сути, представить несколько в другом виде. В своё время решал проблему:

Оптовый склад; менеджеры по сбыту собирают заявки от покупателей на следующий день; при подборе в документ, менеджер оперативно видит остатки на складе, резерв по уже проведенным документам и бронирование позиций в редактируемых (но ещё не записанных и не проведенных) документах других менеджеров. Соответственно, менеджер, в диалоге с покупателем, может согласовать заказ на аналоги или, в диалоге с другими менеджерам, согласовать использование ими аналогов вместо конфликтной позиции (пока покупатель у них на телефоне).

В редактируемом документе менеджера, ранее выбранные позиции, оперативно подсвечиваются в зависимости от выбора их из свободного остатка, подбор из аналогов или как конфликтные(спорные) позиции, которые требуют взаимного согласования.

Соответственно пока заявка оформлена, но ещё не согласована/отгружена, - она может быть оперативно пересмотрена (как со стороны покупателя, так и по инициативе менеджера).

Всего три регистра, обработка подбора и чат-сообщений.
44 LienXo
 
22.06.18
10:03
(43) я на оригинальность и не претендую, а прошу совета. Любая подсказка - большое спасибо.
45 Serg_1960
 
22.06.18
10:05
Если представить, что "билет на спектакль" - это штучный товар, который поступает на склад в количестве одной штуки, то торговля билетами в театре ничем не отличается от оптовой торговли. Почему акцентирую внимание на этом? потому что можно искать решения в "не смежных" областях.
46 gSha
 
22.06.18
10:05
все зависит исключительно от нагрузки .. чем она выше и чем медленнее каналы обновления информации о доступности, тем ее сложнее решить. С некоторого момента там без решения задач систем массового обслуживания не обойтись.
47 kauksi
 
22.06.18
10:06
(45) задача не продать пачку билетов, а продавать в конкурентном режиме билеты на определенные места
48 gSha
 
22.06.18
10:11
кинотеатры и ржд сейчас задачу решают через временный резерв , который открывается на время и если не закрыт оплатой , то снимается.
Самолеты например продают на софте который слава богу не 1с. Т.е. сколько он там может держать открытых сессий не знаю, но точно выдерживает нагрузку в десятки тысыч одновременных подключений. (но круче ржд все равно думаю ни у кого не было .. именно в силу зон и кучи поездов)
49 LienXo
 
22.06.18
10:15
(48) слава богу мне столько единовременных не надо - от силы 10, так что надеюсь 1С будет достаточно :)
50 kauksi
 
22.06.18
10:16
(48) ну вот и открылась ниша где можно запилить свою нетленку на 1с с вставками на ассемблере для скорости ))
51 mistеr
 
22.06.18
10:16
(42) А без видео ссылка есть, текстом? Или своими словами опиши. Напомню на всякий случай, нам нужно нечто, доступное всем сессиям.
52 Serg_1960
 
22.06.18
10:16
(47)

Билет на место: свободен/забронирован/продан/разбронирован/возвращён(свободен)...

Товар: в свободном остатке/забронирован(заявлен) и временно недоступен/отгружен/заявка не подтверждена/возврат от покупателя...

В чём принципиальная разница?
53 kauksi
 
22.06.18
10:17
(0) во нашел http://catalog.mista.ru/public/201081/ скачай. допили. делов то
54 mistеr
 
22.06.18
10:18
(43) И где хранятся подобраные в документ, но не записанные позиции?
55 kauksi
 
22.06.18
10:18
ну или http://catalog.mista.ru/public/194751/ для ретроградов типа Серг_1960 ))
56 Куникулус
 
22.06.18
10:19
(0) Почему не делать документ резервирования, а потом когда уже пройдет продажа- продажу?
57 LienXo
 
22.06.18
10:21
(56) ну почему не делать. в (36) уже предложили. Буду думать.
58 LienXo
 
22.06.18
10:21
(53) и (55) поглядим. Делов то достаточно, но будем почитать :)
59 mistеr
 
22.06.18
10:25
(53) Что-то там не видно временного резерва...
60 Куникулус
 
22.06.18
10:26
(57) ТЫ написал:
> Сразу проводить документ - не комильфо, покупатель может отказаться - тогда бронь снимается.

Если будет документ резервирования/заказа, а продажа только потом, то почему бы не проводить?
61 kauksi
 
22.06.18
10:29
(52) в ваших понятиях место - это товар? элемент номенклатуры?
не путайте место и билет. На одно место можно продать хоть 100 билетов. а оно одно
62 Serg_1960
 
22.06.18
10:30
(55) Вах, я ретроград :) Хмм... ну да, как-то так :)

У меня РИБ на восьмерке работала по расписанию, когда этого ещё не было в типовых конфигурациях, ни РИБ, ни регламентов. А оперативным резервированием в онлайн-режиме в редактируемых документах и функционал соответствующего окружения - мало кто и сейчас этим похвастаться может.
63 LienXo
 
22.06.18
10:31
(60) проводить основной документ не хочется. Счас начнут ворчать - но не хочется нарушать нумерацию. А вот к табличной части основного привязать документы резерва и играть с ними теоретически возможно. Поэтому как вариант отложил.
64 Малыш Джон
 
22.06.18
10:32
(60) +1

На данном участке процесса - два этапа: резервирование и подтверждение/отказ.
Не вижу почему нельзя сделать на эти два события два документа.

К тому же сюда хорошо ложаться движения по регистру накопления. Резервирование +1, подтверждение/отказ -1.
65 Малыш Джон
 
22.06.18
10:32
*ложатся
66 gSha
 
22.06.18
10:35
вообще, я бы сделал независимый регистр от документа, но поддерживать его сложнеее , т.е. если ошибки в проектировании будут, то можно круто налететь .., а так вообще сейчас с документа можно писать что угодно в регистры и в любой последовательности .. просто надо понимать, нужны ли будут эти навороты ..
67 Малыш Джон
 
22.06.18
10:38
(66) при разработке "на лету" без подробного планирования можно действительно "налететь".
Достаточно очередному падавану пропустить строчку

НаборЗаписей.Отбор.блаблабла.Установить();

и всё - регистра нет
68 kauksi
 
22.06.18
10:38
да уймитесь вы с документом резерва. Количество всегда =1. нужно учитывать занятость позиций, ячеек склада/банка/стоянки, места театра, а не билеты. Занято/нет. а не остаток мест на складе ))
69 Малыш Джон
 
22.06.18
10:40
(68) это сейчас оно =1, а через месяц начнется

"а вот мы тут придумали.. пусть места составные будут..."
70 kauksi
 
22.06.18
10:40
(69) ну ... комплектация мест
71 Serg_1960
 
22.06.18
10:41
(68) Замени слово "резервирование" на "бронирование" если не нравится. Но в типовых конфигурация чаще используются резервирование и документы резервирования, чем использование термина "бронирование" :)
72 gSha
 
22.06.18
10:43
(67) и такое видел в своей практике .. там правда целый отдел такую строчку добавил .. правда , я после этого написал эпическое письмо на имя своего директора ..с преддожением уволить начальника айти )) правда дальше чем поржать дело не пошло, но е-ли по восстановлению было чоень много ... потерял все описание для ювелирки.. а оно там мерзкое.
73 kauksi
 
22.06.18
10:44
(71)Хорошо. озвучу ваш бред. Ячеистый склад в ЕРП. Туда положить по одному билету. Формой выбора 10 кассиров кликая мышкой создают документ резерва, в попытке проведения которого  создается резерв, который при оплате снимается. Нравицца?
74 Малыш Джон
 
22.06.18
10:48
(72) ну у меня такой личный опыт есть) В пору своего падаванства точно так же затёр регистр. Гребли конечно не очень много, компания очень трепетно относилась к безотказности работы, поэтому бекапились сведения каждый час. Но минут на 20 я работу всей службы доставки остановил)
75 gSha
 
22.06.18
10:48
вы не внимательно прочитали, что написал Серг .. он блокировал какое то количество единиц, пока документ был еще не проведен, как он это делал не важно, но по сути все одно и тоже .. тут проблема лишь в том, что будеет ли вы считать то что продаете уникальным или же нет ...
у нас вот любят считать что места это конкретный объект , например кресло или квартира ..
в сапе это не так .. продается область с определенными свойствами .. т.е. если у области есть имя, то дальше когда область продемонстрировано, то идет связь с конкретным местом .. но в базах нет дури о том, что место а продано 50 раз, а записано будет, что продано, что то там .. а это что то там связано к конерктным поименнованным объектом.
76 Serg_1960
 
22.06.18
10:50
(73) Не нравицца. Мне Ваша манера и тон не "нравицца".

А если по теме, то бронирование устанавливается на период - не успели оплатить - билет в свободном доступе.
77 gSha
 
22.06.18
10:51
(74) а там не было бэкапов .. плюс свалили на меня .. я три или четыре дня из каких то логов восстанавливал данные (а эт овообщето сеть ювелирная была), а потом  снова поймал это место, так как потерял данные повторно .. а вот потом уже выяснил, что связка проектировщик+программист+отдел тестирования запустил такую ерунду в базу .. хотя вот я наверно при альцгеймере такое не сделаю.
78 craxx
 
22.06.18
10:53
(0) Я когда делал свою гостиничную конфигу - регистр накопления использовал. Очень удобно с ним работать
79 craxx
 
22.06.18
10:55
(0) если интересны подробности, велком в скайп germodachter
80 LienXo
 
22.06.18
10:56
(78) пока собираю варианты, но за приглашение спасибо. Если припрет - загляну обязательно.
81 Serg_1960
 
22.06.18
10:58
(Уже уходя) Некоторые зашорены до безобразия.

Расслабьтесь, абстрагируйтесь.

Представьте что вы на 1С реализовали морской бой и все видят эти клеточки, по которым любой может стрелять, но только один раз (в одну воронку снаряд дважды не попадает). Кстати это интересное утверждение, ибо не один снаряд дважды не стреляет :)) Расслабились? Теперь можете сообща далее писать ТЗ :)
82 kauksi
 
22.06.18
11:05
(81) резервирование - это завершенный процесс бронирования (выбора мест). Так понятнее? Если в терминах морсокго боя - то место куда уже попал снаряд. А бронирование - это выбор куда стрельнуть, чтобы не попадать два раза...
83 Малыш Джон
 
22.06.18
11:32
(81) +1

программировать надо начинать не в 1С, а сначала весь процесс продумать и в проектировщике(ну или на бумаге) схему процесса нарисовать
84 Малыш Джон
 
22.06.18
11:33
(82) :) наверное имел в виду "резервирование - это результат процесса бронирования"))
85 Адинэснег
 
22.06.18
11:41
(0) ну без блокировок все равно не взлетит
я бы сделал бронирование при оформлении заказа до 10 минут
неперешедшие брони в состояние заказа аннулирует Фоновое задание
86 Адинэснег
 
22.06.18
11:46
перед оформлением заказа проверять, не сняло ли ФЗ твою бронь... делать на РН, заблокировал, провёл, проверил остаток, ушел в минус - отказ транзакции, в ноль - ок.
87 1sanekmaloi1
 
22.06.18
13:03
(86)кто в этот РН будет писать? Открыт новый док, не записан не проведен, открывается форма подбора и клацается на Номенклатура1 в эту секунду для всех остальных должно появится отказ при дабл клике на N-минут/
88 Cyberhawk
 
22.06.18
14:01
(84) Нет, процесс бронирования не обязательно завершается резервированием
89 Cyberhawk
 
22.06.18
14:02
(87) Пусть пишут в независимый РС "Блокировки номенклатуры"
90 1sanekmaloi1
 
22.06.18
14:21
(89)Я не против.
91 Serg_1960
 
22.06.18
17:11
Хех. Привыкли все работать по предоплате и перестали понимать, что бронирование - это резервирование без оплаты(до оплаты).
92 Garykom
 
гуру
22.06.18
17:22
(0) Если товар уникальный (кол-во везде 1) то банально реквизит в справочник товаров с выбором оператора, который забронировал.
93 gSha
 
22.06.18
17:26
ну для билетов это не катит, там ведь зал один, а сеансов много . Т.е. там уже какая то составная ерунда появляется. Типа время, номер сеанса, номер кресла.
94 Garykom
 
гуру
22.06.18
17:38
(93) Эта составная ерунда прекрасно влезает в один товар
95 lodger
 
22.06.18
17:40
(94) ага, особенно круто при этом вести ценообразование, ведь на одно время, номер сеанса и номер кресла может быть назначен один или другой фильм с разными ценами.
96 Garykom
 
гуру
22.06.18
17:45
(95) Не тупи, Товар = фильм, зал, дата, время (сеанс) + № кресла
97 runoff_runoff
 
22.06.18
17:46
документ может быть не проведен, но иметь движения, если что
98 Garykom
 
гуру
22.06.18
17:47
(96)+ Этот товар называется "Билет", который уникально определяет все прочие реквизиты "куда и за что"
99 lodger
 
22.06.18
17:51
(96) ага, а потом жаба не задавит содержать справочник номенклатуры растущий со скоростью около 45000 элементов в сутки (это для кинотеатра где около 4500 кресел и около 10 сеансов за день).
100 Garykom
 
гуру
22.06.18
17:56
(99) Какая нафик разница что растет справочник или регистр?

Все равно билеты должны иметь уникальные номера, а что имеет уникальный код?
101 lodger
 
22.06.18
18:05
(100) пересечение измерений, куда мы положим 0 или 1, можно подумать еще и 2.
102 Garykom
 
гуру
22.06.18
18:10
(101) А уникальные номера как будешь делать?
103 mistеr
 
22.06.18
18:16
Не о том думаете, народ. Как бронировать любой товар или места, давно известно. Вопрос ТС про временное, "мягкое" резервирование. Как его ставить. Когда и как проверять. Когда и как снимать.
104 lodger
 
22.06.18
18:19
(103) я бы забабахал ТЗ, которое одновременно живет на сервере и на каждом клиенте.

каждый клиент захватывая объект стучит в сервер.
сервер добавляет его в ТЗ и рассылает остальным клиентам.
105 mehfk
 
22.06.18
19:02
(0) Есть готовое решение для кинотеатров. Не дешевое, но дешевле, чем решения не на 1С. Если есть интерес, пиши, мой ник псина народ ру.
106 LienXo
 
22.06.18
19:41
Всем участвовавшим большое спасибо. На выходных есть о чем подумать. Предлагающим свои готовые решения откажу сразу, без обид.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн