Проект внедрения ERP в АПС
← Проектная документация
АПС ERP

07_Технические решения и доработки

Спецификации обработок, расширений и технических решений проекта.

Назначение раздела

Здесь размещаются материалы, которые описывают конкретные доработки, обработки, расширения и технические решения проекта.

Спецификация обработки АПС_ЗапускРемонтаВагонов

Спецификация обработки "АПС_ЗапускРемонтаВагонов"

1. Назначение

Обработка предназначена для запуска и контроля цепочки документов ремонта вагонов в 1С:ERP.

Основная идея:

Номер вагона + работа + модель

-> заказ клиента

-> заказ на производство

-> этап производства

-> реализация

Обработка не является отдельным контуром учета вагонов. Она служит рабочим экраном для создания и контроля типовых документов ERP.

2. Основные принципы

  1. Номер вагона хранится строкой в дополнительном реквизите заказа клиента.
  1. Модель вагона хранится в характеристике номенклатуры.
  1. Работа выбирается из справочника "Номенклатура".
  1. Клиент, договор и подразделение подбираются по настройкам обработки в зависимости от выбранной работы.
  1. Незаполненные реквизиты создаваемых документов должны заполняться стандартно, как при ручном вводе документа или вводе на основании.
  1. Табличная часть обработки является рабочим списком и экраном контроля, а не основным учетным регистром.

3. Состав обработки

Имя обработки:

АПС_ЗапускРемонтаВагонов

Синоним:

Запуск ремонта вагонов

Формы:

Форма

ФормаЗапуска

4. Основная форма

Основная форма содержит командную панель и вкладки:

Цепочки

Настройки

Команды основной формы:

Запустить цепочку

Создать реализацию

Обновить представления

Сохранить настройки

4.1. Вкладка "Цепочки"

Назначение вкладки - показать созданные или контролируемые цепочки документов.

Реквизит формы:

Цепочки: ТаблицаЗначений

Колонки таблицы:

КолонкаТипНазначение
НомерВагонаСтрока, 20Номер ремонтируемого вагона
РаботаСправочникСсылка.НоменклатураРабота по ремонту
ХарактеристикаСправочникСсылка.ХарактеристикиНоменклатурыМодель вагона
ЗаказКлиентаДокументСсылка.ЗаказКлиентаСозданный или подобранный заказ клиента
ЗаказНаПроизводствоДокументСсылка.ЗаказНаПроизводство2_2Созданный или подобранный заказ на производство
ЭтапПроизводстваДокументСсылка.ЭтапПроизводства2_2Созданный или подобранный этап производства
РеализацияДокументСсылка.РеализацияТоваровУслугСозданная реализация
КомментарийСтрока, 250Служебное сообщение, ошибка или пояснение

Дополнительный реквизит формы:

Сообщение: Строка

Назначение: показывать результат последней операции или диагностическое сообщение.

4.2. Вкладка "Настройки"

Назначение вкладки - задать правила заполнения документов по выбранной работе.

Реквизит формы:

Настройки: ТаблицаЗначений

ВидЦены: СправочникСсылка.ВидыЦен

ПодразделениеДиспетчер: СправочникСсылка.СтруктураПредприятия

Колонки таблицы:

КолонкаТипНазначение
РаботаСправочникСсылка.НоменклатураРабота, для которой действует настройка
КлиентСправочникСсылка.ПартнерыКлиент/партнер для заказа клиента
ДоговорСправочникСсылка.ДоговорыКонтрагентовДоговор, который нужно заполнить в заказе клиента
ПодразделениеСправочникСсылка.СтруктураПредприятияПодразделение-отправитель для заказа клиента
СкладСправочникСсылка.СкладыСклад для незаполненных строк обеспечения этапа производства

Отдельный реквизит "Вид цены" задается один раз на вкладке настроек и используется при заполнении строк заказа клиента.

Отдельный реквизит "Подразделение диспетчер" задается один раз на вкладке настроек и используется в заказе на производство.

Склад задается в строке настройки по работе и используется после формирования этапа: если в табличной части `ОбеспечениеМатериаламиИРаботами` склад не заполнен, обработка подставляет склад из настройки.

Выбор договора в строке настроек должен зависеть от клиента в этой же строке: форма выбора договоров открывается с отбором по реквизиту `Партнер`.

При изменении клиента договор в строке очищается, чтобы не остался договор от другого клиента.

Настройки сохраняются при изменении полей, при закрытии формы и отдельной командой "Сохранить настройки".

Правило подбора настройки:

Настройка ищется по точному совпадению колонки "Работа" с работой из окна запуска.

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

5. Форма запуска

Форма запуска открывается отдельным окном по команде "Запустить цепочку".

Форма:

ФормаЗапуска

Назначение: получить параметры создания цепочки.

Поля формы:

ПолеТипОбязательностьНазначение
НомерВагонаСтрока, 20ДаНомер ремонтируемого вагона
РаботаСправочникСсылка.НоменклатураДаРабота ремонта
ХарактеристикаСправочникСсылка.ХарактеристикиНоменклатурыНет/условноМодель вагона
СоздаватьЗаказКлиентаБулевоДаСоздавать заказ клиента
СоздаватьЗаказНаПроизводствоБулевоДаСоздавать заказ на производство
СоздаватьЭтапПроизводстваБулевоДаСоздавать этап производства

Команды формы:

ОК

Отмена

Поведение:

  1. При нажатии "Запустить цепочку" на основной форме открывается форма запуска.
  1. При нажатии "ОК" форма запуска возвращает структуру параметров.
  1. При нажатии "Отмена" форма запуска закрывается без создания документов.
  1. После успешного возврата параметров основная форма запускает создание цепочки.

6. Команда "Запустить цепочку"

6.1. Пользовательский сценарий

  1. Пользователь нажимает "Запустить цепочку".
  1. Открывается отдельное окно "Параметры запуска".
  1. Пользователь указывает:
  1. Пользователь нажимает "ОК".
  1. Обработка создает выбранные документы.
  1. В таблицу "Цепочки" добавляется строка с номером вагона, работой, моделью и ссылками на созданные документы.

6.2. Проверки перед созданием

Минимальные проверки:

Номер вагона заполнен

Работа заполнена

Если номер вагона не заполнен:

Сообщение = "Укажите номер вагона."

Если работа не заполнена:

Сообщение = "Выберите работу из справочника Номенклатура."

6.3. Создание строки цепочки

Перед созданием документов добавляется строка в таблицу "Цепочки":

НомерВагона = номер из формы запуска

Работа = работа из формы запуска

Характеристика = характеристика из формы запуска

Далее строка дозаполняется ссылками на созданные документы.

7. Создание заказа клиента

Документ:

Документ.ЗаказКлиента

Условие создания:

СоздаватьЗаказКлиента = Истина

Алгоритм:

  1. Создать объект документа.
  1. Найти настройку по работе.
  1. Вызвать стандартное заполнение документа:

Заказ.Заполнить(ДанныеЗаполнения)

Данные заполнения содержат, если найдены:

Партнер

Клиент

Договор

ДоговорКонтрагента

ПодразделениеОтправитель

  1. Установить дату документа.
  1. Заполнить комментарий.
  1. Записать номер вагона в дополнительный реквизит "Номер вагона".
  1. Заполнить подразделение-отправитель из настройки по работе.
  1. Добавить строку работы в табличную часть: номенклатура, характеристика, количество 1, количество упаковок 1, подразделение, вид цены.
  1. Попытаться заполнить цену строки типовым механизмом ERP по выбранному виду цены.
  1. Записать документ.
  1. Вернуть ссылку в колонку "ЗаказКлиента".

7.1. Дополнительный реквизит "Номер вагона"

Номер вагона должен попадать в дополнительный реквизит заказа клиента.

Имя доп. реквизита:

Номер вагона

Набор доп. реквизитов:

Документ_ЗаказКлиента

Алгоритм:

  1. Найти свойство в `ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения`.
  1. Если свойство не найдено, создать его.
  1. Найти строку в табличной части `ДополнительныеРеквизиты` заказа клиента.
  1. Если строки нет, добавить строку.
  1. Записать значение номера вагона.

Если доп. реквизит создать или заполнить не удалось, номер вагона дописывается в комментарий документа.

8. Создание заказа на производство

Документ:

Документ.ЗаказНаПроизводство2_2

Условие создания:

СоздаватьЗаказНаПроизводство = Истина

Алгоритм:

  1. Создать объект документа.
  1. Вызвать стандартное заполнение на основании заказа клиента:

ЗаказНаПроизводство.Заполнить(Новый Структура("Основание", ЗаказКлиента))

  1. Установить дату.
  1. Заполнить комментарий.
  1. Заполнить `ДокументОснование` заказом клиента, если такой реквизит есть.
  1. Использовать строки и реквизиты, которые перенес стандартный механизм ввода на основании.
  1. Если после штатного заполнения табличная часть `Продукция` пустая, добавить строку продукции по работе из цепочки: номенклатура, характеристика, количество 1, количество упаковок 1, дата потребности.
  1. Подразделение-диспетчер в шапке заказа на производство заполнять из шапки настроек обработки.
  1. Подразделение-получатель в строке `Продукция` брать из подразделения-отправителя заказа клиента. Если в заказе клиента нет `ПодразделениеОтправитель`, использовать его `Подразделение`; если и оно пустое, использовать подразделение из строки настроек.
  1. Заполнить спецификацию строки продукции типовым механизмом ERP по номенклатуре и характеристике строки.
  1. Установить статус `КПроизводству`.
  1. Провести документ.
  1. Вернуть ссылку в колонку "ЗаказНаПроизводство".

9. Создание этапа производства

Документ:

Документ.ЭтапПроизводства2_2

Условие создания:

СоздаватьЭтапПроизводства = Истина

Алгоритм:

  1. После проведения заказа на производство сформировать этапы штатным механизмом ERP, аналогично команде "Сформировать" в структуре заказа на производство.
  1. Для формирования использовать данные заказа на производство и его строки продукции со спецификацией.
  1. Параметры формирования:

Резервировать материалы = Нет

Производить полуфабрикаты при наличии на складе = Нет

Передать этапы к выполнению = Да

  1. Этапы должны создаваться и проводиться типовым механизмом формирования этапов.
  1. После формирования этапов заполнить склад в табличной части `ОбеспечениеМатериаламиИРаботами`: если строка обеспечения имеет пустой склад, взять склад из настройки по работе.
  1. Перевести сформированные этапы в статус `Начат`. Если в конкретной базе такого значения перечисления нет, использовать ближайший доступный статус `КВыполнению`.
  1. В колонку "ЭтапПроизводства" записывать первый сформированный этап по заказу на производство.
  1. Ручное резервное создание этапа не использовать: неполноценный этап может не открываться штатной формой ERP.
  1. Если штатное формирование недоступно или не вернуло этап, оставить колонку "ЭтапПроизводства" пустой, записать причину в комментарий строки и показать диагностическое сообщение пользователю.

Уточнение по фактическому расходу материалов:

  1. На первом этапе не использовать динамическое формирование заказов как обязательный механизм цепочки ремонта. Оно относится к планированию обеспечения, но не упрощает факт списания материалов в этапе.
  1. Если в рабочей базе этап требует цеховую кладовую, фактический процесс должен идти через типовую передачу материалов в производство.
  1. Пользователь корректирует обеспечение этапа под факт, устанавливает действие `Отгрузить`, оформляет передачу материалов в производство, затем заполняет вкладку `Расход` командой `Заполнить отгруженными`.
  1. В расход этапа не должны автоматически попадать все нормативные строки спецификации. В расход попадает только фактически отгруженное/переданное количество.

10. Создание реализации

Документ:

Документ.РеализацияТоваровУслуг

Команда:

Создать реализацию

Сценарий:

  1. Пользователь выделяет одну или несколько строк в таблице "Цепочки".
  1. Нажимает "Создать реализацию".
  1. Обработка создает один документ реализации по выделенным строкам.

Алгоритм:

  1. Получить выделенные строки.
  1. Если выделенных строк нет, использовать текущую строку.
  1. Создать один объект документа реализации.
  1. Не фиксировать один общий заказ клиента в шапке реализации, если выбрано несколько строк по разным заказам.
  1. Установить дату.
  1. Заполнить комментарий со списком номеров вагонов.
  1. Добавить работы из выбранных строк в табличную часть реализации.
  1. В каждой строке реализации заполнить свой заказ клиента из строки цепочки.
  1. Записать документ.
  1. Записать ссылку реализации в каждую выбранную строку.

10.1. Заказ клиента в строках реализации

Требование:

Заказ клиента должен заполняться в детальных строках реализации, а не только в шапке.

Назначение: одна реализация может объединять несколько заказов клиента, если они совместимы по организации, клиенту, договору, валюте и прочим ключевым реквизитам.

При добавлении строки реализации необходимо заполнить, если реквизит существует:

СтрокаТЧ.ЗаказКлиента = ЗаказКлиента

Возможные варианты имени реквизита в ERP:

ЗаказКлиента

Заказ

ЗаказПокупателя

Точное имя нужно подтвердить на рабочей базе ERP.

Вручную через штатный подбор ERP может быть ограничение "Нельзя выбрать товары больше, чем по одному заказу". Обработка не должна использовать этот подбор для сценария нескольких заказов; она должна формировать строки реализации программно и заполнять заказ клиента в каждой строке.

Чтобы пользователь видел заказ клиента в реализации, в форме документа нужно включить видимость колонки через `Еще -> Изменить форму -> Товары -> Заказ клиента`. Если колонки нет в пользовательской настройке формы, ее нужно вывести расширением формы реализации.

10.2. Проверки совместимости строк

Перед созданием одной реализации по нескольким строкам желательно проверять:

Организация

Партнер / клиент

Договор / соглашение

Валюта

Склад

Налогообложение НДС

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

11. Добавление работы в документ

Общая процедура добавляет строку в табличную часть `Товары`, если такая табличная часть есть.

Заполняемые поля:

Номенклатура

Характеристика

ХарактеристикаНоменклатуры

Количество = 1

КоличествоУпаковок = 1

ВидЦены / ВидЦеныПродажи = вид цены из настроек обработки

Цена = расчет типовым механизмом ERP по виду цены, если цену удалось подобрать

Требуется уточнить для ERP:

  1. В каких документах табличная часть называется `Товары`.
  1. Где нужно использовать другую табличную часть: `Продукция`, `Материалы`, `Работы`, `Услуги`.
  1. Какие поля обязательны для строки: вид номенклатуры, ставка НДС, назначение, подразделение, статья калькуляции и т.д.

12. Стандартное заполнение как при ручном вводе

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

Общая процедура:

ЗаполнитьДокументКакПриРучномВводе(ДокументОбъект, ДанныеЗаполнения)

Логика:

  1. Попытаться выполнить:

ДокументОбъект.Заполнить(ДанныеЗаполнения)

  1. Если заполнение с данными не удалось, попытаться выполнить:

ДокументОбъект.Заполнить(Новый Структура)

  1. Если и это не удалось, продолжить ручное заполнение известных реквизитов.

13. Ошибки и диагностика

При ошибке создания цепочки:

  1. Строка в таблице "Цепочки" остается.
  1. В колонку "Комментарий" записывается подробное представление ошибки.
  1. В поле "Сообщение" выводится краткое сообщение:

Не удалось создать цепочку. Подробности записаны в комментарий строки.

При ошибке создания реализации:

Не удалось создать реализацию: <текст ошибки>

14. Текущее состояние реализации

Реализовано:

  1. Основная форма с вкладками "Цепочки" и "Настройки".
  1. Отдельная форма запуска.
  1. Открытие формы запуска отдельным окном.
  1. Возврат параметров запуска по кнопке "ОК".
  1. Создание строки цепочки.
  1. Создание заказа клиента.
  1. Попытка создания доп. реквизита "Номер вагона".
  1. Заполнение номера вагона в доп. реквизит заказа клиента.
  1. Создание заказа на производство.
  1. Создание этапа производства.
  1. Создание реализации по выделенным строкам.
  1. Стандартное заполнение документов через `Заполнить(...)`.
  1. Подбор клиента, договора и подразделения по таблице настроек.
  1. Сохранение таблицы настроек и вида цены между сеансами.
  1. Отбор договоров в настройках по клиенту строки.

15. Требует уточнения

  1. Точные обязательные реквизиты заказа клиента в рабочей базе.
  1. Какой справочник использовать в настройке как "Клиент": `Партнеры` или `Контрагенты`.
  1. Какой договор использовать: `ДоговорыКонтрагентов` или другой объект ERP.
  1. Нужна ли организация в таблице настроек.
  1. Нужно ли соглашение с клиентом в таблице настроек.
  1. Нужно ли склад/направление деятельности.
  1. Точная табличная часть заказа клиента для работ.
  1. Точная табличная часть заказа на производство для работ.
  1. Точная табличная часть этапа производства для работ.
  1. Точная табличная часть реализации для работ.
  1. Точное имя реквизита заказа клиента в строке реализации.
  1. Нужно ли проводить документы сразу или только записывать.
  1. Нужно ли открывать созданный документ после создания.
  1. Нужно ли создавать одну реализацию по нескольким заказам клиента или только по одному.
  1. Точное имя колонки вида цены в строках заказа клиента, если в рабочей базе оно отличается от `ВидЦены` / `ВидЦеныПродажи`.
  1. Достаточно ли отбора договоров по `Партнер`, или на рабочей базе дополнительно нужен отбор по организации/контрагенту.

16. Предлагаемые следующие доработки

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