Ранее я описал проблему (ч.1), поставил задачу (ч.2), спроектировал решение (ч.3), познакомил вас с платформой разработки (ч.4), начал разработку заказа покупателя (ч.5), Разработал Техкарту (ч.6).
Теперь, когда у меня есть Техкарта, возвращаюсь к разработке Заказа, где, как мы помним, из таблицы заказанных изделий с помощью данных Техкарты нужно получить таблицу потребности в материалах. Я уже создал в Заказе еще одну табличную часть «materials» точно так, как ранее я создал в Заказе часть «products» (см. часть 5). К сожалению, для заполнения этой части не обойтись без программирования. Приложения с основными функции CRUD (Create-Read-Update-Delete) с удобными списками документов, формами и справочниками можно создавать без единой строчки кода. Но реально-полезные приложения обычно сложнее, чем просто CRUD – приходится прорабатывать детали на уровне программирования. Для этого платформа снабжена богатым API - интерфейсом прикладного программирования. No-Code заканчивается, начинается Low-Code.
Итак, имею перечень изделий и техкарт => нужно получить перечень требуемых материалов. Для этого пишу такую программу:
1) Для каждого изделия из таблицы Заказа «products» нахожу соответствующую Техкарту.
2) Для каждого материала из таблицы Техкарты «materials» добавляю новую строку в таблицу Заказа «materials» и переношу в новую строку код изделия (из заказа) и код материала (из техкарты). Количество материала (из техкарты) умножаю на количество соответствующих изделий (из заказа). В поле «Дата(в производство)» переношу значение из поля таблицы Заказа «products» «в производство не позднее».
Этот фрагмент кода привязываю к событию Заказа «перед сохранением документа» и voila – готово! При внесении любых изменений в Заказ и сохранении документа таблица потребности материалов обновляется:
Для написания кода программы использую бесплатную Visual Studio 2015 Community Edition. Вот как выглядит код программы (опускаю заголовочные строки и обрамляющий класс. Если кому-то захочется дойти до всех деталей – платформа Алеф бесплатная, свою разработку тоже чуть позже выложу – если заинтересуетесь – напишите мне, я ускорюсь):
Вот как в настройках документа этот код привязывается к событию сохранения документа:
Итого, у нас есть планируемое выбытие материалов. Для полной задачи планирования движения материалов нам нужно реализовать еще три потока данных: 1)планируемое поступление материалов, 2)фактическое поступление материалов и 3)фактическое выбытие материалов.
В следующих сериях займемся реализацией этих потоков.