gifts2017

Согласование (подсистема). Для любого справочника и документа в 1С. Встраивается в любые конфигурации

Опубликовал Антон Иванов (BlizD) в раздел Программирование - Практика программирования

Подсистема для согласования в 1С. Для настройки нового согласования не требуется программировать, все делается в режиме исполнения. Открытый код. Бизнес-процессы. Документооборот. Проект выложен на GitHub.

Адрес проекта на GitHub

https://github.com/BlizD/BPS

Подсистема подходит для тех, кому

  • надоело, что люди то и дело бегают по кабинетам, только ради подписей;
  • необходимо видеть: кто, когда и как согласовал тот или иной объект в базе 1С;
  • требуется сократить время согласования (договора, заявки на расходования денежных средств или чего-либо еще).

Программа позволяет согласовывать любые документы и справочники в базе 1С. Согласование происходит последовательно, т.е. сначала согласовывает первый рецензент, если он согласовал затем следующий и так далее.

Существуют следующие статусы:

  • “Не утверждено”,
  • “В процессе согласования”,
  • “Утверждено”,
  • “Отменено”,
  • “Возвращено на доработку”.

При создании задач рецензентам не указывается конкретный пользователь, а заполняется только РольАдресации + ПодразделениеАдресации. Допустим, что согласовать должен

Роль адресации

Подразделение адресации

Бухгалтер

Бухгалтерия

Тогда задача будет создана для Бухгалтера из Бухгалтерии. А конкретных пользователей необходимо указать в регистре «Регистр адресации»

Пользователь

Роль адресации

Подразделение адресации

Петрова Мария Ивановна

Бухгалтер

Бухгалтерия

Казимирова Валентина Захаровна

Бухгалтер

Бухгалтерия

Таким образом задачу для согласования будут видеть сразу два пользователя и выполнить задачу может любой из них. Это особенно полезно, когда один сотрудник уходит в отпуск и необходимо указать пользователя, который его замещает. В этом случае достаточно добавить новую запись в регистр адресации и все старые и все новые задачи сразу будут видны новому пользователю.

Преимущества

  • полностью открытый код;
  • независимая конфигурация;
  • независима от БСП (для не типовых конфигураций это важно);
  • встраивается в любые конфигурации (ниже смотрите список проверенных конфигураций);
  • работает в тонком клиенте (в обычном приложении тоже работает);
  • для настройки нового согласования не требуется программировать, все делается в режиме исполнения;
  • очень простая настройка нового согласования, необходимо пройти всего 4 шага и согласование можно использовать;
  • можно настроить согласования для любого справочника и любого документа в базе 1с;
  • рассылка уведомлений на почту;
  • значительное сокращения времени согласования, а зачастую время согласования сокращается в разы;
  • всегда видно кто должен согласовать, а также кто и когда согласовывал ранее;
  • возможность запретить проведение документа пока он не согласован;
  • возможность запретить использование объекта бд пока он не согласован;
  • легко встраивать в другие бизнес-процессы в 1с;
  • не нужна отдельная база, в которой идет согласование, все происходит в одной базе.

Видео

  • Настройка нового согласования

  • обзор подсистемы согласования

  • как встроить подсистему в типовую конфигурацию

  • как настроить учетную запись для отправки уведомлений:

Подсистема полностью реализована на управляемых формах, работает в тонком клиенте.

Примеры использования подсистемы

Пример 1

Необходимо, чтобы заявку на расходования денежных средств согласовывали, прежде чем ее можно будет провести. При этом необходимы следующий маршрут согласования:

  • всегда согласовывать с «Руководителем по закупкам»;
  • если контрагент/партнер относится к группе поставщиков, тогда необходимо согласовать с «Бухгалтером поставщиков»;
  • если контрагент/партнер относится к группе покупателей, тогда необходимо согласовать с «Бухгалтером покупателей»;
  • если сумма заявки больше 10000, тогда согласовывать с коммерческим директором;
  • если сумма заявки больше 50000, тогда согласовывать с финансовым директором;
  • если сумма заявки больше 100000, тогда согласовывать с генеральным директором.

Пример 2

В системе договора могут создавать любые пользователи, необходимо настроить согласование договора по следующему маршруту:

  • если контрагент/партнер относится к группе поставщиков, тогда необходимо согласовать с «Бухгалтером поставщиков»;
  • если контрагент/партнер относится к группе покупателей, тогда необходимо согласовать с «Бухгалтером покупателей»;
  • всегда согласовывать с юристом;
  • если договор в условных единицах, тогда согласовать с коммерческим директором;

 

Часто задаваемые вопросы (FAQ)

Вопрос: можно ли встроить подсистему в нетиповую конфигурацию?

Ответ: да, можно,  для этого необходимо, чтобы в конечной конфигурации было следующее:

  • Справочник.Пользователи;
  • Параметр сеанса «ТекущийПользователь»;
  • У конфигурации должно стоять или свойство «Управляемое приложение» или свойство «Управляемое и обычное приложения», т.к. все формы управляемые.

Вопрос: можно ли вызывать форму «Статусы согласований» прямо из элемента справочника или документа?

Ответ: да, можно. Если у Вас используются управляемые формы тогда необходимо:

  • зайти в конфигуратор;
  • найти общую команду «бпсСтатусСогласования»;
  • нажать правую кнопку мыши выбрать свойство;
  • в свойстве “Тип параметра команды” указать составной тип данных и выбрать нужный объект.

Скрин №1

Если у Вас используются обычные формы и конфигурация типовая, тогда необходимо:

  • взять из поставки обработку «бпсСтатусСогласования.epf»;
  • нажать «Сервис – Дополнительные печатные формы и обработки – Печатные формы»
  • нажать добавить, далее указать обработку;
  • в табличную часть добавить те объекты, для которых должна вызываться данная обработка;
  • теперь по кнопке печать будет доступен вызов этой обработки.

Если у Вас используются обычные формы и конфигурация не типовая, тогда необходимо в каждую форму элемента справочника/документа необходимо вручную вставить код, пример кода можно посмотреть в обработке «ПримерКодаДляДобавленияКнопкиВОбычнуюФорму.epf»(из поставки).

Вопрос: можно ли указать статус допустим «Оплачено» для документа?

Ответ: да, можно, для этого необходимо:

  • зайти в справочник «Статусы объектов» и добавить элемент с наименованием «Оплачено» записать и закрыть;
  • далее открыть обработку «Статусы согласований» нажать на кнопку «Установить статус» и выбрать статус “Оплачено”.

Роли

  • (БПС) Пользователь – необходимо указать для всех пользователей;
  • (БПС) Редактирование регистра адресации – право необходимо для редактирования регистра “Регистр адресации”;
  • (БПС) Редактирование документа регистрация статуса объектов – право необходимо для того, чтобы можно было вручную указывать статус для объекта 1с;
  • (БПС) Полные права – доступ ко всем объектам подсистемы согласования, а также необходима для настройки согласования.

Что происходит автоматически

  • уведомления рассылаются с помощью регламента (раз в минуту);

Что планируется добавить в будущем, если подсистема будет пользоваться успехом

  • возможность перенаправлять задачу согласования другому рецензенту;
  • возможность настраивать шаблон для формирования текста пояснения, которое указывается при старте согласования и отправке уведомлений на почту (например: включать валюту документа, менеджера, сумму и т.п. в пояснение);
  • возможность согласовать через ответное письмо, без входа в 1с;
  • чтобы подразделение адресации автоматически подбиралось из шапки документа/справочника, а не указывалось «жестко» в предмете согласования;
  • возможность использовать подсистему «Согласование» в конфигурациях, где включено ограничение доступа на уровне записей;
  • запрет использования элемента справочника пока он не согласован.

Разработка ведется на Bitbucket (пока закрытый репозитарий), основной функционал подсистемы покрыт тестами с помощью xUnitFor1c (http://infostart.ru/public/418168/).

Тестирование переноса в типовые конфигурации

Тестирование производилось на платформе: 8.3.8.1652

Конфигурация

Релиз

Результаты тестирования

Комментарий

УПП 1.3

1.3.51.1

Успешно

УТ 11

11.2.3.143

Успешно

Необходимо дополнительно внести код в модуль БизнесПроцессыИЗадачиСобытия.ЗаписатьВСписокБизнесПроцессов см. видео https://youtu.be/Mq0Bv66ywys, а также см. ниже

Бухгалтерия предприятия 3.0 3.0.43.239 Успешно
Консолидация ред. 2.1 2.1.3.1 Успешно
Комплексная автоматизация 2.0 2.0.3.169 Успешно Необходимо дополнительно внести код в модуль БизнесПроцессыИЗадачиСобытия.ЗаписатьВСписокБизнесПроцессов.См. ниже куда необходимо внести.
ЗУП ред. 2.5 2.5.101.2 Успешно

Для конфигураций УТ 11, Комплексная автоматизация 2.0 после того как перенесли подсистему в конфигурацию

дополнительно необходимо внести код в общий модуль "БизнесПроцессыИЗадачиСобытия" процедура ЗаписатьВСписокБизнесПроцессов:

//+ БПС_Согласование 2016-07-27
Если ТипЗнч(Источник) = Тип("БизнесПроцессОбъект.бпсСогласование") Тогда
	Возврат;
Конецесли;
//- БПС_Согласование 2016-07-27

Обновление от 15.11.2016

Проект выложени на GitHub

https://github.com/BlizD/BPS

Обновление от 25.09.2016

Выпущена версия "1.0.0.009" изменения:

  • Добавлена возможность указать свойство "Запретить использование объекта БД пока он не согласован" в справочник "Тип объекта БД".

  • Исправлены роли подсистемы "Согласования", чтобы корректно обновлялись вспомогательные данные в конфигурациях где используются БСП.

Обновление от 26.08.2016

Добавил видео обзор подсистемы согласования

Проверены следующие конфигурации: 
- Бухгалтерия предприятия 3.0 релиз 3.0.43.239 
- Консолидация ред. 2.1 релиз 2.1.3.1 
- Комплексная автоматизация 2.0 релиз 2.0.3.169

Скачать файлы

Наименование Файл Версия Размер
BPS_1.0.0.009 42
.zip 2,13Mb
25.09.16
42
.zip 1.0.0.009 2,13Mb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Антон Иванов (BlizD) 26.08.16 12:09
Добавил видео обзор подсистемы согласования
2. Антон Иванов (BlizD) 28.08.16 12:26
Проверены следующие конфигурации:

- Бухгалтерия предприятия 3.0 релиз 3.0.43.239
- Консолидация ред. 2.1 релиз 2.1.3.1
- Комплексная автоматизация 2.0 релиз 2.0.3.169


3. С К (kraynev-navi) 30.08.16 09:49
+ за хорошее документирование и видеоряд.
Второе видео по настройке часть 2. При согласовании на 2:12 согласующий не видит Объект БД который он согласует (Объект не найден). Либо либо неудачный пример и что-то не так с правами Бахшиева, либо что-то еще..
4. Антон Иванов (BlizD) 30.08.16 09:57
(3) kraynev-navi,
Добрый день.

Да, Вы, правы.
Просто у Бахшиева не были указаны права на документ "Заявка на расход денежных средств".
Будет время исправлю видео.

Спасибо, что сообщили.
5. Сергей Д (dddxddd) 21.09.16 16:10
>запрет использования элемента справочника пока он не согласован
особо ценно чтобы номенклатуру и поставщиков не плодили по 100500 шт за день...
6. Антон Иванов (BlizD) 21.09.16 16:55
(5) dddxddd,
Добрый день.

Постараюсь в ближайшее время добавить такую возможность.
7. Антон Иванов (BlizD) 25.09.16 17:26
(5)

Обновление от 25.09.2016

Выпущена версия "1.0.0.009" изменения:

  • Добавлена возможность указать свойство "Запретить использование объекта БД пока он не согласован" в справочник "Тип объекта БД".(ссылка на скриншот)
  • Исправлены роли подсистемы "Согласования", чтобы корректно обновлялись вспомогательные данные в конфигурациях где используются БСП
8. Антон Иванов (BlizD) 06.10.16 08:40
Добрый день

Изменена стоимость подсистемы с 3 SM до 1 SM.

Хорошего настроения и удачного дня!
9. Антон Иванов (BlizD) 15.11.16 20:51
Обновление от 15.11.2016

Проект выложен на GitHub

https://github.com/BlizD/BPS
10. Илья Брыляков (brylig) 18.11.16 11:33
Добрый день!
Поставил подсистему на УНФ 1.6.5.28. Возникло несколько вопросов:
1. Кроме раздела "Согласование" появился еще и раздел "Прочее (не переносить)". В нем на панели навигации есть три пункта - "Договоры контрагентов", "Заявка на оплату" и "Контрагенты". Подозреваю, что надо было более тонко настраивать параметры слияния конфигураций, хотя все делал строго по видеоинструкции.
2. Сломалась форма карточки пользователя в соответствующем справочнике. Теперь там нет параметров аутентификации в информационной базе. На скрине слева сломанная форма, справа - рабочая (иконку согласования поменял я сам).

3. В условиях согласования для справочников (если конкретно, то "Контрагенты") очень ограничен выбор реквизитов для контроля. В частности, нет доступа к дополнительным реквизитам справочника.

Конечно, вопрос можно решить с помощью произвольного условия, но это уже другой путь.
4. Ну и самое главное - так и не разобрался в настройках предмета согласования в части действий. Если делать все по инструкции, то после согласования я не могу провести документ, так как он заблокирован.

Для возможности его проведения я должен предусмотреть действие "Разблокировать объект БД" "При завершении если согласовано". При этом документ становится доступным для произвольного редактирования и повторного проведения без всякого дополнительного согласования. Как все-таки сделать так, чтобы после согласования документ возможно было провести, но нельзя редактировать, а редактирование становилось бы возможным только после отмены действующего согласования и требовало бы нового согласования перед повторным проведением.
11. Антон Иванов (BlizD) 18.11.16 12:49
(10) brylig,
Добрый день, Илья.

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

Это признаки того, что подсистема перенесена не верно, т.е. были перенесены еще служебные объекты:
http://f6.s.qip.ru/m9euvvHg.png

После того как в конфигурации сделали "Конфигурация - Сравнить объединить с конфигурации из файла" выбрали файл CF

Необходимо снять галочку со свойств, остальные галки не трогать.
http://f3.s.qip.ru/m9euvvHi.png

Необходимо сделать заново перенос подсистемы в вашу конфигурацию.

По остальным пунктам записал, как появится свободное время, обработаю их и отпишусь Вам.
12. Илья Брыляков (brylig) 19.11.16 01:26
13. Антон Иванов (BlizD) 27.11.16 11:56
Добрый день, Илья.

(10)
В условиях согласования для справочников (если конкретно, то "Контрагенты") очень ограничен выбор реквизитов для контроля. В частности, нет доступа к дополнительным реквизитам справочника.


В данный момент не могу обещать, что будет реализована такая возможность, потому что в различных конфигурациях дополнительные реквизиты и свойства реализованы по разному.
Сейчас, как, Вы, правильно заметили, это можно реализовать только через "Произвольное условие".

Ну и самое главное - так и не разобрался в настройках предмета согласования в части действий. Если делать все по инструкции, то после согласования я не могу провести документ, так как он заблокирован.
Для возможности его проведения я должен предусмотреть действие "Разблокировать объект БД" "При завершении если согласовано". При этом документ становится доступным для произвольного редактирования и повторного проведения без всякого дополнительного согласования. Как все-таки сделать так, чтобы после согласования документ возможно было провести, но нельзя редактировать, а редактирование становилось бы возможным только после отмены действующего согласования и требовало бы нового согласования перед повторным проведением.


Да, Вы, правы такая возможность полезна, записал в доработки, как будет реализована напишу.
14. Илья Брыляков (brylig) 27.11.16 17:57