Вопрос

Синхронизация чекбоксов на детали Средства связи

Всем доброго времени суток. Версия 7.10

На деталь Средства связи контакта добавили запреты на использование:

Изображение удалено.

Запреты должны быть связаны со стандартными колонками Контакта DoNotUseEmail, DoNotUseCall и так далее. Их тоже вывели на страницу:

Изображение удалено.

Далее подключил синхронизацию по схеме: https://community.terrasoft.ru/questions/sinhronizacia-kolonok-kartocki…

В атрибуты ContactPageV2 добавил вызов метода syncEntityWithCommunicationDetail, переопределил ContactCommunicationDetail, где в initMasterDetailColumnMapping добавил новые типы:

//Запреты на использование
						{
							"CommunicationType": "105728d2-d097-4dea-94be-713cd9c6f38c",
							"MasterEntityColumn": "DoNotUseEmail"
						},
						{
							"CommunicationType": "b6e11e60-8ce5-46d7-a7e9-1a356d762263",
							"MasterEntityColumn": "DoNotUseCall"
						},
						{
							"CommunicationType": "476feae6-8162-4997-904e-447a6d916371",
							"MasterEntityColumn": "DoNotUseFax"
						},
						{
							"CommunicationType": "1dc8b3d6-1028-4524-b3d8-8e05663b3bb3",
							"MasterEntityColumn": "DoNotUseSms"
						},
						{
							"CommunicationType": "71b3e7ae-efaf-474e-a76a-82d13ef376b0",
							"MasterEntityColumn": "DoNotUseMail"
						},

Проблема 1:

Синхронизация работает только в одну сторону. Если я выбираю пункт на детали Средств связи, или удаляю его, то чекбокс на странице Контакта отмечается. В противоположном случае - если я уберу отметку на чекбоксе, который на странице - изменений на детали не происходит.

Проблема 2 (возможно, проблема 1 следует из неё):

Синхронизация, даже если она работает,то  происходит не сразу. Чтобы изменения были видны, мне нужно сохранить страницу, выйти из неё и зайти заново.

Как правильно сделать синхронизацию для чекбоксов?

Нравится

2 комментария

В процессе изучения проблемы заметил, что id у пунктов из списка запретов (см. скриншот) меняются при каждой перезагрузке страницы, а в объектах BaseCommunication, ContactCommunication записей, как-то связанных с чекбоксами нет вовсе.

Добрый день, Денис.

Метод syncEntityWithCommunicationDetail не связан с кнопками "не использовать" на детали средства связи, поскольку работает с абсолютно другой коллекцией детали. Вам стоит смотреть в сторону создания своих сообщений sandbox для работы с методом doNotUseCommunication, который добавляет элемент в коллекцию RestrictionsCollection детали. Также обратите внимание на метод getRestrictionsItemConfig, который создает конфиг для каждой кнопки, связанной с запретом на использование.

>> Синхронизация, даже если она работает,то происходит не сразу

Это возникает по тому, что элементы, связанные с неиспользованием, синхронизируются в момент сохранения записи в событийных бп на стороне сервера.

Показать все комментарии