Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
MVP 2010, 2011
- Консалтинг
- Проектирование
- Разработка
- Обучение
MVP 2010, 2011
Формат полного имени
Запись от Артем Enot Грунин размещена 30.08.2009 в 21:11
Как вы знаете, CRM, в настройках организации, позволяет задавать формат полного имени, который в дальнейшем будет использоваться для отображения имен в полях лукапов для справочников Контактов, Интересов и Пользователей. Казалось бы, логично использовать настройку только для генерации страниц, но MS, тем не менее хранит результирующую строку в базе. В результате, при смене формата полного имени уже существующие записи системы не обновляются, о чем система честно нас предупреждает. С выходом 4.0 в системе появились более пригодные для российского пользователя форматы "Фамилия, Имя Отчество" и "Имя Отчество Фамилия". Поэтому тут же возникло желание убрать из представлений лишний столбец с отчеством и обновить старые записи. Писать код было лениво, обновлять записи бизнес процессом показалось утомительно, а SQL запрос, учитывая что не все поля имени могли быть заполненными выходил весьма зловещим. К счастью, нашлось простое решение. Как выяснилось, CRM для заполнения этого поля использует хранимую функцию
Выглядит она жутковато, но зато сама умеет выполнять все проверки упрощая для нас написание запроса, например, такого:
Данный, вариант, возможно не самый оптимальный с точки зрения времени выполнения, так как всякий раз при вызове ф-ция вычитывает из базы текущий формат, однако запрос универсален и на обновление 10150 контактов наш средний по своим характеристикам сервер потратил не более 2-3 секунд.
Код:
dbo.fn_GetFullName(<first name>, <second name>, <middle name>)
Код:
UPDATE ContactBase SET fullname = dbo.fn_GetFullName(firstname, secondname, middlename)
Всего комментариев 0