Всем доброго времени суток. Версия 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 следует из неё):
Синхронизация, даже если она работает,то происходит не сразу. Чтобы изменения были видны, мне нужно сохранить страницу, выйти из неё и зайти заново.
Как правильно сделать синхронизацию для чекбоксов?
Нравится
В процессе изучения проблемы заметил, что id у пунктов из списка запретов (см. скриншот) меняются при каждой перезагрузке страницы, а в объектах BaseCommunication, ContactCommunication записей, как-то связанных с чекбоксами нет вовсе.
Добрый день, Денис.
Метод syncEntityWithCommunicationDetail не связан с кнопками "не использовать" на детали средства связи, поскольку работает с абсолютно другой коллекцией детали. Вам стоит смотреть в сторону создания своих сообщений sandbox для работы с методом doNotUseCommunication, который добавляет элемент в коллекцию RestrictionsCollection детали. Также обратите внимание на метод getRestrictionsItemConfig, который создает конфиг для каждой кнопки, связанной с запретом на использование.
>> Синхронизация, даже если она работает,то происходит не сразу
Это возникает по тому, что элементы, связанные с неиспользованием, синхронизируются в момент сохранения записи в событийных бп на стороне сервера.