AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Администрирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.12.2008, 16:12   #1  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Доброго времени суток коллеги. Все вы знаете, что в CRM 4.0 "слияние" стало проще и доступнее, но отчего-то данная ф-ция доступна не для всех системных объектов. Особенно обидно то, что она недоступна для таких объектов как "Счет" или "Заказ". Как это исправить? Внимание - прямое вторжение в базу! Делаем бекапы.
В таблице MetadataSchema.Entity находим запись нужного объекта и значение атрибута IsMailMergeEnabled ставим True, после чего перезагружаем сайт через iisreset. Теперь можно создавать шаблон и выгружать данные из объектов данного типа. Феномен пока изучен слабо, но проблем обнаружено не было. Была попытка сделать подобное через импорт-экспорт кастомизаций. В исходные XML файлы данный атрибут попадает, но его изменение, отчего-то не принесло результатов.

Так же вы могли обратить внимание, что существует альтернативный механизм вызова этой ф-ции: у сущности Quote значение атрибута - False и кнопка слияния доступна только на форме объекта и не доступна из списка. Тем не менее, мы можем создавать шаблоны слияния для объектов данного типа и пользоваться, в общем-то теми же средствами. Как реализовать слияние в подобном ключе?

Для этого в разделе настроек находим и открываем для редактирования объект Mail Merge Tamplate, как оказалось он вполне настраиваемый. В списке атрибутов находим "templatetypecode" типа picklist - именно он определяет тип связанной с шаблоном сущности и, что удивительно, позволяет добавлять новые опции! Вот только есть заковырка - после добавление новой опции система валится при попытке создать новый шаблон. Проблема в численном значении опции. Дело в том, что система не позволяет задавать любой идентификатор через интерфейс. Придется согласиться с предлагаемым значением, после чего залезть в базу, найти таблицу MetadataSchema.AttributePicklistValue и в ней руками исправить код пиклиста созданной нами опции. Код рассчитывается как <object type code> / 1000: если код сущности 1088, то код опции должен быть 1,088. После изменения перезагружаем систему и шаблоны слияния заработают нормально.

Осталась последняя сложность: добавить кнопку слияния на форму объекта. Попытка сделать ее по аналогии с формой Quote не увенчалась успехом. Отчего-то код исполняемый по этой кнопке отказывается работать с другими объектами, хотя и выглядит вполне универсальным. Приведенное ниже решение - некий обходной маневр - гибрид того кода, который вызывает слияние из списка записей и того, что работает в форме. Код универсален и должен работать с любой сущностью.
Код:
              <ToolBar ValidForCreate="0" ValidForUpdate="1">
                  <Button Icon="/_imgs/ico_mailmerge.gif" JavaScript='
                      var oArgs = new Object();

                      var oIds = new Array(1);
                      oIds[0] = crmForm.ObjectId;

                      oArgs.TotalRecords = 1;
                      oArgs.SelectedRecords = 1;
                      oArgs.Ids = oIds;
                      oArgs.GridXml    = "";

                      openStdDlg(prependOrgName("/_grid/cmds/dlg_webmailmerge.aspx?mergetype=3&objectTypeCode=") + CrmEncodeDecode.CrmUrlEncode(crmForm.ObjectTypeCode), oArgs, 600, 600);'>
                      <Titles>
                          <Title LCID="1033" Text="Mail Merge" />
                      </Titles>
                      <ToolTips>
                          <ToolTip LCID="1033" Text="Convert form to the Word document" />
                      </ToolTips>
                  </Button>
              </ToolBar>
Ну и последним вопросом, наверно, остается вопрос почему механизма 2 и какой выбрать. Как мне кажется, разница между шаблонами для Lead и Quote заключается в том, что шаблон Quote еще и генерирует строки "продуктов для предложения" в документе. Как это делается уже обсуждалось на форуме, так что не буду повторяться. Видимо здесь и возникла сложность - трудно или и вовсе не возможно создать такой шаблон слияния, который позволил бы генерировать отдельные документы для каждого набора Quote + QuoteDetail. Если помните сейчас создается 1 документ с шапкой из данных Quote и в нем генерируются строки таблицы для данных из QuoteDetail. Итого: если нужно делать слияние множества объектов - используйте 1й подход, если есть необходимость использовать в слиянии данные из связанных объектов - используйте второй.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional

Последний раз редактировалось Артем Enot Грунин; 24.12.2008 в 14:38. Причина: Один фиг один написал
За это сообщение автора поблагодарили: Dissident (1), SLK (1), Сабитов Андрей (2).
Старый 15.09.2009, 13:26   #2  
datfi is offline
datfi
Участник
 
240 / 15 (1) ++
Регистрация: 20.08.2009
Адрес: Россия, Сыктывкар
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Доброго времени суток коллеги. Все вы знаете, что в CRM 4.0 "слияние" стало проще и доступнее, но отчего-то данная ф-ция доступна не для всех системных объектов. Особенно обидно то, что она недоступна для таких объектов как "Счет" или "Заказ". Как это исправить? Внимание - прямое вторжение в базу! Делаем бекапы.
В таблице MetadataSchema.Entity находим запись нужного объекта и значение атрибута IsMailMergeEnabled ставим True, после чего перезагружаем сайт через iisreset. Теперь можно создавать шаблон и выгружать данные из объектов данного типа. Феномен пока изучен слабо, но проблем обнаружено не было. Была попытка сделать подобное через импорт-экспорт кастомизаций. В исходные XML файлы данный атрибут попадает, но его изменение, отчего-то не принесло результатов.

Так же вы могли обратить внимание, что существует альтернативный механизм вызова этой ф-ции: у сущности Quote значение атрибута - False и кнопка слияния доступна только на форме объекта и не доступна из списка. Тем не менее, мы можем создавать шаблоны слияния для объектов данного типа и пользоваться, в общем-то теми же средствами. Как реализовать слияние в подобном ключе?

Для этого в разделе настроек находим и открываем для редактирования объект Mail Merge Tamplate, как оказалось он вполне настраиваемый. В списке атрибутов находим "templatetypecode" типа picklist - именно он определяет тип связанной с шаблоном сущности и, что удивительно, позволяет добавлять новые опции! Вот только есть заковырка - после добавление новой опции система валится при попытке создать новый шаблон. Проблема в численном значении опции. Дело в том, что система не позволяет задавать любой идентификатор через интерфейс. Придется согласиться с предлагаемым значением, после чего залезть в базу, найти таблицу MetadataSchema.AttributePicklistValue и в ней руками исправить код пиклиста созданной нами опции. Код рассчитывается как <object type code> / 1000: если код сущности 1088, то код опции должен быть 1,088. После изменения перезагружаем систему и шаблоны слияния заработают нормально.

Осталась последняя сложность: добавить кнопку слияния на форму объекта. Попытка сделать ее по аналогии с формой Quote не увенчалась успехом. Отчего-то код исполняемый по этой кнопке отказывается работать с другими объектами, хотя и выглядит вполне универсальным. Приведенное ниже решение - некий обходной маневр - гибрид того кода, который вызывает слияние из списка записей и того, что работает в форме. Код универсален и должен работать с любой сущностью.
Код:
              <ToolBar ValidForCreate="0" ValidForUpdate="1">
                  <Button Icon="/_imgs/ico_mailmerge.gif" JavaScript='
                      var oArgs = new Object();

                      var oIds = new Array(1);
                      oIds[0] = crmForm.ObjectId;

                      oArgs.TotalRecords = 1;
                      oArgs.SelectedRecords = 1;
                      oArgs.Ids = oIds;
                      oArgs.GridXml    = "";

                      openStdDlg(prependOrgName("/_grid/cmds/dlg_webmailmerge.aspx?mergetype=3&objectTypeCode=") + CrmEncodeDecode.CrmUrlEncode(crmForm.ObjectTypeCode), oArgs, 600, 600);'>
                      <Titles>
                          <Title LCID="1033" Text="Mail Merge" />
                      </Titles>
                      <ToolTips>
                          <ToolTip LCID="1033" Text="Convert form to the Word document" />
                      </ToolTips>
                  </Button>
              </ToolBar>
Ну и последним вопросом, наверно, остается вопрос почему механизма 2 и какой выбрать. Как мне кажется, разница между шаблонами для Lead и Quote заключается в том, что шаблон Quote еще и генерирует строки "продуктов для предложения" в документе. Как это делается уже обсуждалось на форуме, так что не буду повторяться. Видимо здесь и возникла сложность - трудно или и вовсе не возможно создать такой шаблон слияния, который позволил бы генерировать отдельные документы для каждого набора Quote + QuoteDetail. Если помните сейчас создается 1 документ с шапкой из данных Quote и в нем генерируются строки таблицы для данных из QuoteDetail. Итого: если нужно делать слияние множества объектов - используйте 1й подход, если есть необходимость использовать в слиянии данные из связанных объектов - используйте второй.
Использовал для связки Заказ-продукты для заказа второй вариант. При создании нового шаблона слияния есть выбор по отдельности Заказ и Продукты для заказа. Но не добился того что бы получилась связка как с Quote.
>Код рассчитывается как <object type code> / 1000: если код сущности 1088, то код опции должен быть 1,088.
при замене атрибута на 1,088 выдает ошибку и дает только вставить 1088.

Я где то что то упустил?
Старый 15.09.2009, 13:41   #3  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Проблема в численном значении опции. Дело в том, что система не позволяет задавать любой идентификатор через интерфейс. Придется согласиться с предлагаемым значением, после чего залезть в базу, найти таблицу MetadataSchema.AttributePicklistValue и в ней руками исправить код пиклиста созданной нами опции
Вы упустили это
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 15.09.2009, 13:45   #4  
datfi is offline
datfi
Участник
 
240 / 15 (1) ++
Регистрация: 20.08.2009
Адрес: Россия, Сыктывкар
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Вы упустили это
Я залез напрямую в базу... и там уже при попытке изменить выдает ошибку, скорее всего из за того что тип атрибута int. Мне сменить этот тип?
Старый 15.09.2009, 16:38   #5  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Посмотрел еще раз. Судя по всему, нужен просто код сущности. На 1000 делить ничего не надо. Не помню почему я так решил. Возможно до каких-то апдейтов было иначе, может просто я ошибся.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional

Последний раз редактировалось Артем Enot Грунин; 15.09.2009 в 16:40.
За это сообщение автора поблагодарили: Савран Роман (1).
Старый 17.03.2010, 11:08   #6  
miraj is offline
miraj
Участник
 
35 / 10 (1) +
Регистрация: 02.03.2010
Здравствуйте, нашел эту важную тему и дополнительные вопросы появились..

1. А где можно посмотреть код сущности? У предложения этот код = 1 084, у заказа и счета я не смог найти ((

2. Тут дан совет: "после чего залезть в базу, найти таблицу MetadataSchema.AttributePicklistValue и в ней руками исправить код пиклиста созданной нами опции." Подскажите пожалуйста, куда именно нужно зайти, чтобы изменить код пиклиста, я открыл эту таблицу, но не могу найти там параметров созданной мной опции. Скрин приложил

Старый 17.03.2010, 17:20   #7  
miraj is offline
miraj
Участник
 
35 / 10 (1) +
Регистрация: 02.03.2010
так, с этим вопросом вроде разобрался, остался еще один ))

Вы пишете: "Осталась последняя сложность: добавить кнопку слияния на форму объекта. Попытка сделать ее по аналогии с формой Quote не увенчалась успехом. Отчего-то код исполняемый по этой кнопке отказывается работать с другими объектами, хотя и выглядит вполне универсальным. Приведенное ниже решение - некий обходной маневр - гибрид того кода, который вызывает слияние из списка записей и того, что работает в форме. Код универсален и должен работать с любой сущностью."

А каким образом и где именно прописать этот код? Нужно прибегать к экспортированию настроек?
Старый 17.03.2010, 17:44   #8  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
Надо экспортировать ISV.config и там для соответствующего объекта дописать этот код
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ronald Lemmen: Mail-merge alternative: Reports exporting to Word files Blog bot Dynamics CRM: Blogs 0 16.01.2009 18:05
Microsoft Dynamics CRM Team Blog: Troubleshooting the Microsoft Dynamics CRM E-mail Router Blog bot Dynamics CRM: Blogs 0 09.01.2009 06:03
Microsoft Dynamics CRM Team Blog: Workflow E-mail Utilities Blog bot Dynamics CRM: Blogs 0 16.12.2008 23:05
Mail Merge Сабитов Андрей Dynamics CRM: Функционал 12 11.09.2008 12:22
Microsoft Dynamics CRM Team Blog: Microsoft Dynamics CRM E-mail Router and Exchange 2007: Keeping it Secure Blog bot Dynamics CRM: Blogs 0 14.07.2008 13:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:50.