Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 19:39

Архитектурный вопрос по заведению объекта "Документ"

Автор wsdeSXCD, 06 мая 2014, 09:40

0 Пользователей и 1 гость просматривают эту тему.

wsdeSXCD

Доброго времени суток!

Подскажите пожалуйста, как правильно построить архитектуру документа Документы.ЗаказДоставки:

Пишу самописную конфигурацию на 1С82(режим обычного приложения) для автоматизации сужбы доставки пиццерии.
Создал две роли: (Общие.Роли.МенеджерДоставки и Общие.Роли.ОператорДоставки) относящихся к подсистеме Общие.Подсистемы.Доставка.

Создал документ: Документы.ЗаказДоставки, который будет фиксировать заказ на изготовление блюда и его доставку.

Теперь необходимо сделать т.н. workflow документа "ЗаказДоставки": у заказа должен быть статус (Открыт; ВпроцессеПриготовления; ВпроцессеДоставки; Закрыт). Для каждого статуса характерна своя логика поведения документа:
Открыт:

  • Только что создан оператором доставки.
  • Оператором доставки может изменять что угодно
ВпроцессеПриготовления

  • Оператор доставки может только добавлять элементы в состав заказа, но не удалять их.
  • Менеджер доставки может изменять все.
ВпроцессеДоставки

  • Оператор доставки ничего не может редактировать, только просматривать.
  • Менеджер доставки отменить заказ по причине {пиццерия накосячила; клиент накосячил}.
Закрыт

  • Никто ничего не меняет, только просмотр.

Собственно, я затрудняюсь с описанием логики ПОведения (не проведения) документа:
Я создал у документа реквизит Реквизиты.ЗаказСостояние, у которого тип: ПеречислениеСсылка.СтатусЗаказаДоставки.
Теперь в каком месте / событии мне писать логику, в зависимости от поля Реквизиты.ЗаказСостояние?
Перетекание состояния (workflow) документа Документы.ЗаказДоставки должно быть его переПРОведением каждый раз при смене статуса? Или делать заказ проведенным только когда его статус Закрыт?
Когда менеджер хочет отменить заказ по причине {пиццерия накосячила; клиент накосячил}, мне состояние заказа поменять на "Закрыт" или просто отменить проведение документа?
Также планируется вести учет продуктов, из которых производятся блюда, соответсвенно мне нужно их будет как-то списывать... Когда их и в каком месте списывать?

cska-fanat-kz

1. Раз у вас описаны различные роли, то статус должен влиять на поведение формы - блокировать изменение реквизитов, контроль за изменением ТЧ состава заказа. Для этого применяются соответствующие события (например ПриОткрытии()).
2. Что происходит при проведении - должны сами решить. Один Бог знает что у вас за бизнес-логика и какие регистры завязаны с документом Заказ. Формировать движения сразу или при статусе "Закрыт" - сами решайте.
3. С отменой. Может еще один статус завести - "Отменен" и реквизит "ПричинаОтмены"? Опять же думайте сами.
4. Учет продуктов - ваще отдельная и обширная история.

Я имею ввиду что описанный проект - достаточно обширный и другие разрабы обычно берут за подобное немалые деньги.
Давайте последующую помощь будем осуществлять в формате "Я сделал вот так, не работает, что делать".
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

wsdeSXCD


cska-fanat-kz

Цитата: wsdeSXCD от 06 мая 2014, 11:16
Спасибо ОГРОМНОЕ Вам за ответ и потраченное на меня время.

Это Вы сейчас так обиделись или я чего-то не понял?
В любом случае зря...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

wsdeSXCD

Цитата: cska-fanat-kz от 06 мая 2014, 11:49
Это Вы сейчас так обиделись или я чего-то не понял?
В любом случае зря...

Нет, я сказал это без сарказма) по сути я благодарен Вам по двум причинам:

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

PS. Сейчас, понимая как решить свою задачу, я понимаю, что вопрос был неточно задан; а спрашивать я его должен был не у технарей, а у аналитиков/консалтеров.

cska-fanat-kz

Ну вот и славно, что все так хорошо закончилось ;)

Ваши вопросы (скажем так большинство) именно решаются в диалоге с заказчиком ибо напрямую зависят от его бизнес-процессов.
Более точно отвечать было просто невозможно из-за незнания вашей "кухни".
А вот если возникнут технические вопросы - велкам! )
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск