Источник:
http://ms-dynamics-crm.com.ua/2009/0...rm-4-workflow/
==============
Рано или поздно, но все сталкиваются с задачей создания
автонумерации для своих объектов. По умолчанию в
Microsoft Dynamics CRM 4.0 присутствует автонумерация для семи системных объектов (Контракты, Обращения, Статьи, Коммерческие предложения, Заказы, Счета, Кампании) и, к сожалению, для других сущностей такого нужного инструмента нет.
В этой статье я расскажу вам как создать такой автонумератор для любой сущности с помощью встроенного инструмента MS CRM –
workflow (бизнес-процесс).
Идея: создать бизнес-процесс, который будет срабатывать на событие «создание записи» для нужной сущности, в определенное поле устанавливать уникальное значение счетчика, т.е. присваивать уникальный номер.
Реализация автонумератора:
- Создаем новую сущность Auto Number - new_autonumber. В этой сущности у нас будет храниться счетчик для одной из сущностей.
- Добавляем новый атрибут типа int – new_nextnumber. Наш счетчик объектов, точнее следующий номер записи.
- Создаем новое отношениетипа 1..N, где основной объект – это наша сущность Auto Number, а связанный объект – выбираем ту сущность, для которой нам нужен счетчик. В моей случае – это кастомная сущность «Товарные издержки».
- Размещаем полученную связь (lookup) на нашей сущности и публикуем изменения.
Создаем новую записи счетчика (ИЗД) типа Auto Number, в которой указываем название счетчика сущности для себя и его следующее значение.
Теперь перейдет непосредственно к созданию бизнес-процесса – workflow
- Параметры – Бизнесс-процесс – Создать
- Название - «Автонумератор Товарной издержки», объект – наша сущность «Товарная издержка», Ок.
- Область применения – Организация, т.к. я хочу чтобы объекты, созданные пользователями из организации автоматически нумеровались, а не только мои

- Условие запуска – создание
- Теперь добавляем новые шаги (все будут на Обновить)
- Обновить: Товарная издержка и в нашей связи (лукапе) выбираем запись счетчика для издержки

- Новый шаг. Обновить: Товарная издержка. В поле test рядом с динамическим значением я добавил и просто статический текст: «ИЗД», вот такой самодельный префикс получился :). Правда, в начале, столкнулся с проблемой: при добавлении статического текста рядом с динамическим все поле становилось просто статическим. Решение было найдено: Ошибка WF1399 Workflow compilation failed

- Добавляем последний шаг. Обновить: autonumber (выбираем из связанных объектов сущность автонумератора). Устанавливаем в наше поле Next number (тип int) динамическое значение увелечивающееся на 1. Выбираем оператор Шаг по, вставляем в поле “значение по умолчанию” 1 - ОК.

Общий вид бизнес-процесса автонумератора
Сохраняем и
публикуем наш процесс и проверяем его работоспособность
Напомню, что workflow работают в асинхронном режиме и требуется некоторое время после создания записи для того, чтобы присвоился номер. Кстати, после синхронизации записей из Outlook номера будут созданы автоматически.
В ближайшие дни опишу вариант автонумерации для любой сущности с помощью plug-in.
Источник:
http://ms-dynamics-crm.com.ua/2009/0...rm-4-workflow/