Найти тему

Разрабатываю систему планирования материалов (часть 7). Программирование на .Net / С#. No-Code заканчивается, начинается Low-Cod

Ранее я описал проблему (ч.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. Вот как выглядит код программы (опускаю заголовочные строки и обрамляющий класс. Если кому-то захочется дойти до всех деталей – платформа Алеф бесплатная, свою разработку тоже чуть позже выложу – если заинтересуетесь – напишите мне, я ускорюсь):

Document - это тот документ (Заказ), в контексте которого запущен данный код. doc - это переменная, содержащая объект-ссылку на документ (Техкарта), который найден командой FindDocument
Document - это тот документ (Заказ), в контексте которого запущен данный код. doc - это переменная, содержащая объект-ссылку на документ (Техкарта), который найден командой FindDocument

Вот как в настройках документа этот код привязывается к событию сохранения документа:

Привязка кода к событию "Перед сохранением документа"
Привязка кода к событию "Перед сохранением документа"

Итого, у нас есть планируемое выбытие материалов. Для полной задачи планирования движения материалов нам нужно реализовать еще три потока данных: 1)планируемое поступление материалов, 2)фактическое поступление материалов и 3)фактическое выбытие материалов.

В следующих сериях займемся реализацией этих потоков.