Возник вопрос по технической возможности реализации следующего процесса.
Хочется изменить логику работы кнопки резервирование, следующим образом.
Предпосылки: существует развитая система складов на предприятии, которые в случае необходимости обмениваются товаром. Возможность резервирования интересует только в привязке к складу, т.к. по бизнес-логике логистик одного склада не может ставить в резерв товар с другого склада. Но для последующей заявки на другой склад нужно знать и о наличии товара на другом складе.
Вариант реализации:
По нажатии кнопки Резервирование получаем окно со списком товара из счета и колонками(Доступно-Резерв) - в разбивке по Складам предприятия, с соответствующим кол-вом?
Далее пользователь с помощью интерфейсных элементов(допустим - ЧекБокс или выделение цветом при указании на позицию с нажатым Ctrl или Alt) указывет позиции в резерв.
-кнопки управления
- Резерв - список отобранных позиций помещается в резерв.
- Отмена - окно закрывается никаких действий со списком товара не производиться.
Вопрос возможна ли такая реализация? И какие интерфейсные элементы для выбора позиций возможны?
Если покажете кратко куда копать в сторону реализации буду очень благодарен.
Нравится
Добрый день, Руслан!
Прошу прощения за задержку с ответом.
Первое, с чем необходимо однозначно определиться - это физическая структура таблицы для хранения информации о резерве. В Вашем случае в этой таблице необходимо добавить поле Склад, чтобы иметь информацию о том, с какого склада зарезервирован товар.
Насколько я понимаю, при нажатии на кнопку "Резервирование", необходимо создать окно с сеткой данных с переменным количеством столбцов - по числу складов, необходимо каким-то образом иметь возможность для каждого склада отметить, что указанное количество будет зарезервировано.
В качестве хранилища данных в памяти можно выбрать MemoryDataset. В нем сравнительно удобно можно создать нужное количество полей (тип полей можно сделать BoolDataField). Отмечать, для каких складов резервируется продукт, можно признаками (CheckBox'ами в реестре), а сам реестр сделать редактируемым.
Отмечать с помощью цвета тоже можно, но регулируется лишь цвет фона ячейки, и то только для версий 3.2.0.х и выше.
При показе окна необходимо будет открыть набор данных (MemoryDataset), вручную вставить в него нужное количество записей, показать такое окно пользователю, а когда он завершит с ним работу, считать значения признаков в полях MemoryDataset и осуществить проверку и резервирование продукта.
Итак, необходимые компоненты:
- MemoryDataset
- Окно с DataGrid, у которого свойство IsEditable = true
- В процессе подготовки окна осуществить добавление нужного количества Bool-полей в MemoryDataset и колонок в DataGrid
- Затем осуществить заполнение MemoryDataset данными
- Пользователь будет осуществлять редактирование реестра путем установки признаков (визуально похожи на CheckBox)
Желаю успехов!