|
Выбор оптимальной ячейки 🠗 (Волшебник 22.03.2024 13:11) | ☑ | ||
---|---|---|---|---|
0
DeadFlowers
22.03.24
✎
09:23
|
Задание: есть склад, в котором заказы хранятся в ячейках. Заказы могут быть "маленькими" и "обычными" (т.е. в 1 ячейку можно поместить 2 маленьких заказа или 1 обычный).
Необходимо, чтобы система автоматически выбирала ячейку в зависимости от типа заказа. Если заказ обычный то тут все понятно, но вот с маленькими проблема. Мне нужен запрос, который бы подобрал оптимальную ячейку для маленького заказа (то есть, чтобы система отсеяла все занятые ячейки (т.е. в которых либо 2 маленьких либо 1 обычны |
|||
1
DeadFlowers
22.03.24
✎
09:23
|
(0) обычный заказ. А выбрала либо ячейку с 1 маленьким заказом, либо пустую.
|
|||
2
DeadFlowers
22.03.24
✎
09:27
|
(0) p.s.
ячейки хранятся в справочнике, а хранящиеся заказы в регистре сведений (в регистре реквизит ячейка со ссылочным типом на 1) |
|||
3
Волшебник
22.03.24
✎
09:28
|
используйте СКД
|
|||
4
Волшебник
22.03.24
✎
10:12
|
Предлагаю Вам решить другую задачу:
Есть большой склад с ячейками, стеллажами, проходами. Компьютер знает карту склада. Есть товары с количеством и с привязкой к ячейкам. Есть задания на комплектацию заказов и пучок кладовщиков. Нужно сгруппировать задания по кладовщикам и рейсам следующим образом: 1. Каждому кладовщику в рейс предписывается взять разноцветные корзины (цвета не должны пересекаться в рамках рейса) для комплектации N заказов, например, сразу 4 заказов. 2. Система строит оптимальный маршрут по складу, чтобы обойти все требуемые ячейки и набрать нужное количество товара для каждого заказа (в каждую корзину). 3. Кладовщик начинает рейс и идёт по маршруту, отмечая по пути, что он взял, а что не удалось собрать (временно пропускаем или выдаём адрес ближайшей ячейки, где товар должен быть) 4. Рейс заканчивается, собрано N заказов, они идут далее на отгрузку. Учесть, что после начала рейса товара в ячейке может не хватить для другого рейса, т.е. должно быть резервирование на рейс, если его не было под заказ. |
|||
5
Ненавижу 1С
гуру
22.03.24
✎
10:17
|
(0) запрос: выбрать ячейки и количество по большим и маленьким заказам в них. Сгруппируйте по ячейкам с условием, что количество больших равно 0 и количество маленьких меньше 2
|
|||
6
Волшебник
22.03.24
✎
10:21
|
(4) ах, да... Всё надо сделать одним отчетом на СКД
(5) А Вы скучны |
|||
7
shuhard
22.03.24
✎
10:26
|
(0) class Склад:
def __init__(self): self.ячейки = {'маленькие': [], 'обычные': []} def добавить_заказ(self, тип_заказа): if тип_заказа == 'маленький': self.ячейки['маленькие'].append(тип_заказа) elif тип_заказа == 'обычный': self.ячейки['обычные'].append(тип_заказа) def выбрать_ячейку(self, тип_заказа): if тип_заказа == 'маленький' and len(self.ячейки['маленькие']) > 0: return 'Выбрана ячейка для маленького заказа' elif тип_заказа == 'обычный' and len(self.ячейки['обычные']) > 0: return 'Выбрана ячейка для обычного заказа' else: return 'Нет подходящих ячеек для данного типа заказа' # Пример использования склад = Склад() склад.добавить_заказ('маленький') склад.добавить_заказ('обычный') print(склад.выбрать_ячейку('маленький')) print(склад.выбрать_ячейку('обычный')) Это простой пример, который можно доработать и оптимизировать в соответствии с более конкретными требованиями вашей системы складского управления. |
|||
8
Кондер
22.03.24
✎
10:27
|
Я бы вообще начал с приоритета размещения у ячеек. Ячейки должны иметь оптимальный маршрут обхода при размещении товара и его отборе
|
|||
9
DeadFlowers
22.03.24
✎
10:29
|
(6) Мне нужен не отчет, мне нужен именно запрос, тк ячейка это поле формы и у меня есть кнопка оптмимальный подбор
|
|||
10
АгентБезопасной Нацио
22.03.24
✎
10:33
|
(4) Не указана "грузоподъемность кладовщика"
(6) для дополнительного веселья: 5. Заказы собирать в порядке планового времени убытия машин в рейсы. 6. при этом заказы рейса собирать в порядке загрузки в машину 7. порядок загрузке обратен порядку доставки 8. порядок доставки определяется задачей коммивояжера с учетом ограничений дорожного графа, грузоподъемностью и вместительностью ТС, предельным временем работы водителя и окном приемки каждого клиента. |
|||
11
Кондер
22.03.24
✎
10:43
|
(10) ну все правильно, только задача про размещение
|
|||
12
Волшебник
22.03.24
✎
10:48
|
(10) Да-да, Вы всё правильно поняли. А то тут свободную ячейку не могут подобрать... Тьфу
|
|||
13
PLUT
22.03.24
✎
11:20
|
(0)
Деза от GPTДля решения этой задачи вам нужно написать запрос, который выполнял бы следующие действия: 1. Отбор всех ячеек, в которых либо 2 маленьких заказа, либо 1 обычный 2. Определение свободных ячеек среди отобранных в пункте 1. 3. Выбор оптимальной ячейки для маленького заказа из свободных ячеек. Пример запроса на SQL для поиска оптимальной ячейки для маленького заказа: sql
SELECT ячейка FROM склад WHERE (тип = 'маленький' AND (SELECT COUNT(*) FROM склад WHERE ячейка = склад.ячейка) < 2) OR тип = 'обычный' GROUP BY ячейка HAVING COUNT(*) < 2 Этот запрос отбирает ячейки, в которых либо уже есть обычный заказ, либо не более одного маленького заказа, и после этого выбирает из них свободные ячейки для маленького заказа. |
|||
14
Волшебник
22.03.24
✎
10:59
|
(13) запрос кривой, не выполнится.
|
|||
15
АгентБезопасной Нацио
22.03.24
✎
11:14
|
(8) ячейки не могут "иметь маршрут". Это маршрут должен "иметь ячейки".
|
|||
16
shuhard
22.03.24
✎
11:30
|
(14) GPT просил передать, что он так не думает =)
|
|||
17
АгентБезопасной Нацио
22.03.24
✎
11:38
|
(16) а он уже научился думать?
|
|||
18
DeadFlowers
22.03.24
✎
11:41
|
(13) Через SQL довольно понятно, спасибо!
Однако не понимаю как это реализовать через запрос 1С. Непонятно SELECT COUNT(*) FROM склад WHERE ячейка = склад.ячейка (именно как посчитать количество записей) И HAVING COUNT(*) < 2 |
|||
19
АгентБезопасной Нацио
22.03.24
✎
11:43
|
(18) так может вам программиста позвать?
|
|||
20
FIXXXL
22.03.24
✎
11:46
|
(18) у тебя условий по факту:
0 - пустая, можно брать 0,5 - один "маленький" - только для "маленького" 1 - полна ячейка - не занимать |
|||
21
PLUT
22.03.24
✎
12:42
|
(18)
бездушный робот грабит спровочникине бездушный робот, а биоробот написал пример: спровочник Ячейки: ячейка А Б В Г Регистръ сведений: ячейка заказ тип А заказ1 маленький А заказ2 маленький Г заказ4 маленький Б заказ3 обычный Результат: ячейка Г Запрос: ВЫБРАТЬ
Ячейки.ячейка КАК ячейка, ЕСТЬNULL(Регистр.тип, "пустая") КАК тип, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Регистр.заказ) КАК Количество ПОМЕСТИТЬ Размещение ИЗ Ячейки КАК Ячейки ЛЕВОЕ СОЕДИНЕНИЕ Регистр КАК Регистр ПО Ячейки.ячейка = Регистр.ячейка СГРУППИРОВАТЬ ПО Регистр.тип, Ячейки.ячейка ; ВЫБРАТЬ первые 1 Размещение.ячейка КАК ячейка ИЗ Размещение КАК Размещение ГДЕ Размещение.тип <> "обычный" И Количество < 2 УПОРЯДОЧИТЬ ПО тип, Количество УБЫВ |
|||
22
АгентБезопасной Нацио
22.03.24
✎
12:13
|
(21) "Ячейка Г" - хорошо звучит!
"переместить товар Х для клиента П в ячейку Г". Хотя, может у них и "товар - Г"... А вообще, я бы решал в общем виде - ячейка с минимумом оставшегося объема (ну и максимумом критерия оптимальности - например, порядка обхода) . Тогда и ячейки можно будет ставить любого размера, и заказы любого размера... а для ячеек с размером 1 и заказами объемом 0.5 и 1 - задача сводится к задаче ТС. |
|||
23
PLUT
22.03.24
✎
12:15
|
(22) и так сойдет :)
ХХП
|
|||
24
DeadFlowers
22.03.24
✎
12:45
|
(21) большое спасибо! все получилось
|
|||
25
Волшебник
22.03.24
✎
12:47
|
(24) У Вас что реально тип задаётся строкой? Ну Вы блин даёте...
|
|||
26
Волшебник
22.03.24
✎
12:48
|
(24) А регистр называется Регистр, да?
Что у Вас там получилось-то? |
|||
27
DeadFlowers
22.03.24
✎
12:48
|
(25) нет, у меня тип это булево значение небольшой, переделал под себя
|
|||
28
DeadFlowers
22.03.24
✎
12:48
|
(26) ну так я же не копировал запрос, мне нужна была логика
|
|||
29
Волшебник
22.03.24
✎
12:50
|
(28) Ага, врите дальше
|
|||
30
Web00001
22.03.24
✎
13:05
|
(29)А что ему делать? Оправдываться, что оскорбил чувства ВР придя на форум просить помощи по недостаточно сложному вопросу?
|
|||
31
Злопчинский
22.03.24
✎
13:08
|
(12) (10) вы еще в ТС оптимальную укладку грузовых мест забыли... ;-)
|
|||
32
Волшебник
22.03.24
✎
13:11
|
(30) Каяться за мёртвые цветы
|
|||
33
Ненавижу 1С
гуру
22.03.24
✎
13:51
|
(28) еще в (5) написал
|
|||
34
Волшебник
22.03.24
✎
14:40
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |