Языком запросов разместить N яблок на складах с М ячеек

27.08.09

Разработка - Запросы

Как языком запросов разместить N яблок на складах с М ячеек.
UPD: размещение нескольких номенклатурных позиций на нескольких ячеистых складах
Написать статью побудила эта тема http://infostart.ru/blogs/1242/
ВЫБРАТЬ
"Вакуум 1" КАК Наименование,
10 КАК СвободныхЯчеек,
1 КАК Приоритет
ПОМЕСТИТЬ втСклады

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
"Вакуум 2",
20,
2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
"Вакуум 3",
10,
3
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Склады.Наименование,
Склады.СвободныхЯчеек,
Склады.Приоритет КАК Приоритет,
ЕСТЬNULL(СУММА(СкладыЯчеек.СвободныхЯчеек), 0) + 1 КАК ПерваяЯчейка,
ЕСТЬNULL(СУММА(СкладыЯчеек.СвободныхЯчеек), 0) + Склады.СвободныхЯчеек КАК ПоследняяЯчейка
ПОМЕСТИТЬ втСкладыЯчейки
ИЗ
втСклады КАК Склады
ЛЕВОЕ СОЕДИНЕНИЕ втСклады КАК СкладыЯчеек
ПО (СкладыЯчеек.Приоритет < Склады.Приоритет)

СГРУППИРОВАТЬ ПО
Склады.Наименование,
Склады.СвободныхЯчеек,
Склады.Приоритет
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
"Сферический конь 1" КАК Наименование,
25 КАК Количество,
1 КАК Приоритет
ПОМЕСТИТЬ втНоменклатура
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
"Сферический конь 2",
10,
2
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Номенклатура1.Наименование,
Номенклатура1.Приоритет КАК Приоритет,
ЕСТЬNULL(СУММА(Номенклатура2.Количество), 0) + 1 КАК ПерваяПозиция,
ЕСТЬNULL(СУММА(Номенклатура2.Количество), 0) + Номенклатура1.Количество КАК ПоследняяПозиция
ПОМЕСТИТЬ втНоменклатураПорядокРазмещения
ИЗ
втНоменклатура КАК Номенклатура1
ЛЕВОЕ СОЕДИНЕНИЕ втНоменклатура КАК Номенклатура2
ПО (Номенклатура2.Приоритет < Номенклатура1.Приоритет)

СГРУППИРОВАТЬ ПО
Номенклатура1.Наименование,
Номенклатура1.Количество,
Номенклатура1.Приоритет
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СкладЯчейки.Наименование КАК СкладНаименование,
Номенклатура.Наименование КАК НоменклатураНаименование,
ВЫБОР
КОГДА Номенклатура.ПерваяПозиция > СкладЯчейки.ПоследняяЯчейка
ТОГДА 0
КОГДА Номенклатура.ПоследняяПозиция < СкладЯчейки.ПерваяЯчейка
ТОГДА 0
КОГДА Номенклатура.ПоследняяПозиция >= СкладЯчейки.ПоследняяЯчейка
И Номенклатура.ПерваяПозиция ТОГДА СкладЯчейки.ПоследняяЯчейка - СкладЯчейки.ПерваяЯчейка + 1
КОГДА Номенклатура.ПоследняяПозиция >= СкладЯчейки.ПоследняяЯчейка
И Номенклатура.ПерваяПозиция > СкладЯчейки.ПерваяЯчейка
ТОГДА СкладЯчейки.ПоследняяЯчейка - Номенклатура.ПерваяПозиция + 1
КОГДА Номенклатура.ПоследняяПозиция < СкладЯчейки.ПоследняяЯчейка
И Номенклатура.ПерваяПозиция ТОГДА Номенклатура.ПоследняяПозиция - СкладЯчейки.ПерваяЯчейка + 1
КОГДА Номенклатура.ПоследняяПозиция < СкладЯчейки.ПоследняяЯчейка
И Номенклатура.ПерваяПозиция > СкладЯчейки.ПерваяЯчейка
ТОГДА Номенклатура.ПоследняяПозиция - Номенклатура.ПерваяПозиция + 1
ИНАЧЕ 0
КОНЕЦ КАК ЗанятоНоменклатурой
ИЗ
втСкладыЯчейки КАК СкладЯчейки,
втНоменклатураПорядокРазмещения КАК Номенклатура
ГДЕ
ВЫБОР
КОГДА Номенклатура.ПерваяПозиция > СкладЯчейки.ПоследняяЯчейка
ТОГДА 0
КОГДА Номенклатура.ПоследняяПозиция < СкладЯчейки.ПерваяЯчейка
ТОГДА 0
КОГДА Номенклатура.ПоследняяПозиция >= СкладЯчейки.ПоследняяЯчейка
И Номенклатура.ПерваяПозиция ТОГДА СкладЯчейки.ПоследняяЯчейка - СкладЯчейки.ПерваяЯчейка + 1
КОГДА Номенклатура.ПоследняяПозиция >= СкладЯчейки.ПоследняяЯчейка
И Номенклатура.ПерваяПозиция > СкладЯчейки.ПерваяЯчейка
ТОГДА СкладЯчейки.ПоследняяЯчейка - Номенклатура.ПерваяПозиция + 1
КОГДА Номенклатура.ПоследняяПозиция < СкладЯчейки.ПоследняяЯчейка
И Номенклатура.ПерваяПозиция ТОГДА Номенклатура.ПоследняяПозиция - СкладЯчейки.ПерваяЯчейка + 1
КОГДА Номенклатура.ПоследняяПозиция < СкладЯчейки.ПоследняяЯчейка
И Номенклатура.ПерваяПозиция > СкладЯчейки.ПерваяЯчейка
ТОГДА Номенклатура.ПоследняяПозиция - Номенклатура.ПерваяПозиция + 1
ИНАЧЕ 0
КОНЕЦ > 0

УПОРЯДОЧИТЬ ПО
СкладЯчейки.Приоритет,
Номенклатура.Приоритет

 

 

 

Вступайте в нашу телеграмм-группу Инфостарт

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    259225    1430    421    

1165

WEB-интеграция Запросы Программист 1С 8.3 Абонемент ($m)

Post1C - это внешняя обработка, которая превращает 1С в полноценный инструмент для тестирования REST API. Всё управление сосредоточено в одном окне: настройка запроса, выполнение, просмотр ответа и генерация кода - без переключения между формами. Аналог Postman, но работающий в привычной среде 1С.

1 стартмани

02.04.2026    2251    68    priem_nv    23    

65

Инструментарий разработчика Запросы Программист 1С 8.3 1С:Библиотека стандартных подсистем Абонемент ($m)

Представляю новую версию подсистемы работы со схемой запроса, которая завершает её эволюцию от библиотеки по работе со схемой запроса до объектной реализации модели запроса 2. Теперь есть выбор между классическим и текучим стилем написанию кода - оба варианта взаимозаменяемы. Ключевое улучшение - использование объектов в качестве источников данных, значений полей и параметров в условиях виртуальных таблиц, а также новые операторы позиционирования в схеме

1 стартмани

29.03.2026    1804    kalyaka    16    

24

Инструментарий разработчика Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

QueryConsole1C — расширение, включающее консоль запросов с поддержкой исполняемых представлений — аналогов виртуальных таблиц, основанных на методах программного интерфейса ЗУП. Оно позволяет выполнять запросы с учётом встроенной бизнес-логики, отлаживать алгоритмы получения данных и автоматически генерировать код на встроенном языке 1С.

1 стартмани

16.05.2025    11269    148    zup_dev    30    

83

Инструментарий разработчика Запросы Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Абонемент ($m)

В данной публикации рассказывается о решении, которое позволяет находить сразу все ошибки в тексте запроса за раз, а не только самую первую.

2 стартмани

05.03.2025    6537    21    XilDen    12    

29

Обновление 1С Запросы Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Абонемент ($m)

Данный инструмент помогает анализировать доработанную конфигурацию после обновления на новый релиз и находить «битые» тексты запросов, в которых участвуют несуществующие в новом релизе метаданные.

3 стартмани

06.02.2025    5806    36    XilDen    26    

42

Запросы Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

В статье приведена удобная возможность отладки исполняемого запроса динамического списка.

03.12.2024    13045    artemusII    11    

27
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. bxz 421 27.08.09 12:30 Сейчас в теме
немного изменил: теперь размещается не одна номенклатура а несколько
2. serge_focus 4 31.03.12 02:03 Сейчас в теме
Спасибо за оригинальное решение ;)
3. CheBurator 3234 22.04.17 06:30 Сейчас в теме
ввиду отсутствия http://infostart.ru/blogs/1242/ - хорошо бы дать пояснения
Для отправки сообщения требуется регистрация/авторизация