Ранее мы описали проблему (ч.1), поставили задачу (ч.2), спроектировали решение (ч.3), познакомились с платформой разработки (ч.4).
Сегодня принимаемся за разработку Заказа покупателя. Заказ должен содержать основные данные: Покупатель, Номер/Дата заказа, Дата исполнения заказа, Общая сумма. Также заказ включает таблицу с перечнем заказываемых изделий: в каждой строке: Код/Наименование изделия, Количество, Цена единицы, Сумма. Этого достаточно, чтобы описать наши обязательства перед покупателем.
Но нам нужно добавить данные для решения нашей внутренней задачи планирования материалов. Для этого нужно добавить в каждую строку: Ссылку на Технологическую карту, количество дней производства, максимальную дату начала производства (чтобы успеть произвести изделие до даты исполнения заказа, нужно начать производство не позднее, чем дата исполнения минус плановый срок производства).
Поскольку в момент ввода заказа мы имеем всю необходимую информацию о дате начала производства и требуемых материалах, предусмотрим сразу занесение соответствующих данных в планируемый расход материалов со склада. Для этого нужно в заказе создать еще одну табличную часть с перечнем необходимых материалов. Для каждой строки заказа будет создано несколько строк в перечне материалов (в соответствии с техкартой) с указанием количества и даты, когда материал будет взят со склада.
Таким образом у нас возникает: 1) График производства 2)График потребности материалов и комплектующих.
Займемся реализацией в системе. Создаём новый тип документа «Заказ покупателя». Мы уже знаем, как это делать (см.ч.4). В структуре документа добавляем (с помощью всплывающего меню) новую часть документа «products» с типом «таблица».
На вкладке «Поля документа» добавляем необходимые поля для таблицы заказа. Для каждого поля не забываем указывать его принадлежность к части «products», иначе поля по умолчанию будут добавлены к части «header» и появятся не в табличной части документа, а в заглавной.
Теперь добавим новые поля на форму документа. (добавление полей на вкладке «Поля документа» создает эти поля в базе данных, ими уже можно пользоваться в бизнес-логике системы, но визуальное представление на форме требует отдельного определения).
На вкладке «Формы документа» создаем новое Datawindow(DW).
Datawindow – это составная часть формы(элемент формы). Форма может быть простой, состоящей из одного DW, как форма карточки «Единица измерения», или форма может быть сложной, как «Заказ покупателя» - состоит из трех частей: Заглавная, Изделия, Материалы. Здесь мы создаем DW для таблицы изделий, поэтому указываем часть документа «products». После указания необходимых параметров нажимаем OK и попадаем в режим определения полей, которые должны быть отражены на форме. В дальнейшем всегда можно будет вернуться к этому режиму и добавить необходимые поля, но если сейчас ничего не добавить, то форма будет совершенно пустая:
Поскольку мы определили форму именно для части документа «products», то здесь мы можем добавить только поля из этой части. Добавляем, нажимаем Сохранить и попадаем в режим визуального редактирования новой формы – определяем название колонок, порядок, ширину колонок, формат, цвет, шрифт итд. В том числе открываем/запрещаем ручной ввод данных в каждое поле. В таблице заказа вручную можно вводить только поле «Количество». Остальные данные «подтягиваются» из справочника.
Теперь у нас есть карточка «Заказ покупателя» с табличной частью. Займемся подключением справочников. Если к полю документа подключен справочник, то пользователь двойным щелчком мыши или по всплывающему меню вызывает появление окна справочника, в котором он выберет один элемент (вообще-то можно выбрать и несколько, но об этом потом, при случае). После того, как пользователь выбрал элемент, в документ возвращается любое необходимое (ранее предусмотренное) количество полей из выбранного элемента. Например при выборе Покупателя можно вернуть не только его Код/Название, но и телефон и адрес.
Я уже создал ранее справочник «Организация». Посмотрим, как его подключить к заказу. В настройке типа документа «Заказ покупателя» на вкладке «Справочники» в области «поле документа» выбираем то поле, откуда пользователь будет вызывать справочник, и справа в области «название справочника» выбираем справочник «Организация».
Далее определяем из какого поля справочника в какое поле документа будут «подтягиваться» данные: В области «Заполняемые поля документа» добавляем поле заказа. Из области «Поля справочника» захватываем и перетаскиваем поле из «Организации».
Теперь, если мы дважды щелкнем по полю «Покупатель» (или выберем выбор справочника из всплывающего над этим полем меню), - появится окно выбора организации-покупателя. Чтобы пользователь понимал, какое поле предусматривает вызов справочника, я буду везде в формах «рисовать» соответствующие поля с голубой заливкой.
В следующем выпуске определим «Технологическую карту» и продолжим создавать «Заказ покупателя».