Новая задачка. Был раздел Продажи, его никто давно не запускал и не пользовался долгие годы. Сейчас его задействовали и оказалось что деталь продуктов в продаже не работает. Дебагер не появляется, вместо него:
Решил проверить в админке, запускаю сервис, такая ошибка(в логе отображается):
(E) Невозможно редактировать сервис 'Opportunities\Details\Offerings\wnd_OfferingInOpportunityDetailEdit'. Window'wnd_OfferingInOpportunityDetailEdit'. Компонент с именем 'edtQuantity' уже существует «Call Stack»
Удаление кеша - не помогло.
После нескольких попыток открыть решил проверить на других базах, сначала на рабочей, а потом на бекапе(самый ранний) - ошибка не пропала. Решил перезалить сервис с другой бд(другого клиента), при загрузке появляется ошибка(картинка выше)....
Получилось удалить сервес, но залить новый(рабочий), с другой бд не получилось - ошибка.
Достаточно было выгрузить сервис, открыть его в блокноте и найти дублирующий компонет. После чего достаточно было переименовать дубль и загрузить измененный сервис обратно.
Укажите какой продукт используете (CRM, XRM, Sales ...), а также прикрепите файл сервиса (сервис окна и сервис скрипта) который вызывает данную проблему.
(E) Невозможно редактировать сервис 'Opportunities\Details\Offerings\wnd_OfferingInOpportunityDetailEdit'. Window'wnd_OfferingInOpportunityDetailEdit'. Компонент с именем 'edtQuantity' уже существует «Call Stack»
Прикрепил сервисы для продукта Terrasoft XRM версии 3.4.130
Хочу обратить внимание, что окно wnd_OfferingInOpportunityDetailEdit наследуется от окна wnd_OfferingDetailEdit.
Возможно в окне wnd_OfferingInOpportunityDetailEdit был удален компонент edtQuantity, а затем добавлен, что привело к изменению ID компонента и появлению проблемы с окном редактирования.
"Терещук Павел" написал:Возможно в окне wnd_OfferingInOpportunityDetailEdit был удален компонент edtQuantity, а затем добавлен, что привело к изменению ID компонента и появлению проблемы с окном редактирования.
Также думал. Загрузил ваш сервис, но он тоже не открывается... Значит проблема в другом...
В архиве присутствует два сервиса окна, загрузите их оба.
Сначала откройте сервис окна wnd_OfferingDetailEdit, затем сервис окна wnd_OfferingInOpportunityDetailEdit
это уже проблемно, так как wnd_OfferingDetailEdit уже давно не похож на начальный образец.
ваш сервис перезапишет данные.
да и wnd_OfferingDetailEdit работает в норме
Сохраните свои сервисы wnd_OfferingDetailEdit, src_OfferingDetailEdit. После чего загрузите мои прикрепленные сервисы. Если после этого проблема исчезнет, значить проблема находится в сервисе wnd_OfferingDetailEdit.
Может в сервисе wnd_OfferingDetailEdit изменился идентификатор компонента, и по этой причине окно сервиса _OfferingDetailEdit не открывается.
Ооо, проблема решена, изменил местоположение поля edtQuantity(переместил на старое место в блок итогов), на старое место и сервис wnd_OfferingInOpportunityDetailEdit начал работать без ошибок
Видимо, дело было в том, что когда переместили унаследованное поле на новое место, то система пыталась на старом месте создать ещё одно поле из родительской страницы с таким же названием.
Как в новом подходе смены стадии (версии 7.8) можно некоторые стадии сделать недоступными в зависимости от некоторых условий (заполненность полей или наличие определенных данных)?
Также, как сделать недоступными некоторые кнопки в Case (например, невозможность Resolve при незаполненности Solution)?
Было бы хорошо при этом еще выдавать информацию, что именно мешает выполнению данной стадии
"Симута Роман Русланович" написал:Подробности - в документации разработчика
Спасибо за прогнозируемый ответ.
Но документацию изучили. Про добавление нового канала вопрос не стоял.
В первой же статье говорится только про добавление ActionsDashboard. Именно к ней я и задал уточняющий вопрос - Как в новом подходе смены стадии (версии 7.8) можно некоторые стадии сделать недоступными в зависимости от некоторых условий (заполненность полей или наличие определенных данных)?
Есть желание увеличить быстродействие системы. Выполняю запрос по поиску полей таблиц к которым существует много запросов, но на них нет индексов. И одна из таблиц выпадает AccountCommunication [Средства связи Юр. лиц]. Сам объект унаследовал структуру от объекта [Базовое средство связи]. Так вот получается, что в базовом объекте нет индексов на основные поля для поиска, такие как Id,[Position]. Есть какая-то причина отсутствия индексов на этих полях или их можно создать?
И как все-таки будет правильно, добавить индекс на базовый объект или в тот который унаследовал? Или при добавление в унаследованный объект в базовый он добавится автоматически?
Анастасия, с точки зрения БД родительский и дочерний объекты — это 2 разных таблицы. Следовательно, средствами Management Studio можно добавлять в дочернюю таблицу индексы, если в ходе анализа выяснилось, что это может увеличить производительность.
Сомневаюсь, что на Id стоит добавлять индекс, ведь это и так первичный ключ. А на второе — можно попробовать.
Анастасия, с точки зрения БД родительский и дочерний объекты — это 2 разных таблицы. Следовательно, средствами Management Studio можно добавлять в дочернюю таблицу индексы, если в ходе анализа выяснилось, что это может увеличить производительность.
Сомневаюсь, что на Id стоит добавлять индекс, ведь это и так первичный ключ. А на второе — можно попробовать.
Вот и мне не понятно... Индекс уникальный некластеризованый в БД на Id стоит, а приложение показывает, чтот у этого объкта на этом поле нет индекса.
"Астапеева Анастасия" написал:Есть желание увеличить быстродействие системы.
Желание или необходимость? :smile:
"Астапеева Анастасия" написал:Так вот получается, что в базовом объекте нет индексов на основные поля для поиска, такие как Id,[Position].
не думаю что поле Position - подходящая кандидатура для построения индекса (если я правильно понимаю, это порядковый номер в рамках 1 контрагента?)... кардинальность большая. Индексы хорошо строить по колонкам с практически уникальными значениями (опять же, если СУБД потом будет их использовать).
По-идее индекса по Id и AccountID должно быть вполне достаточно.
Индексов побольше налепить конечно никто не мешает, но будет ли достигнута цель - увеличить быстродействие... а то можно и наоборот сделать, индексы это не бесплатное приложение к таблице.
В общем, есть впечатление что не тут копаете, Анастасия... Могу посоветовать книгу, правда на английском... но может и русские версии уже есть: SQL Server 2008 Query Performance Tuning Distilled (2009)
версия СУБД может и немного старовата, но для CRM систем более чем сгодится.
В общем, есть впечатление что не тут копаете, Анастасия... Могу посоветовать книгу, правда на английском... но может и русские версии уже есть: SQL Server 2008 Query Performance Tuning Distilled (2009)
версия СУБД может и немного старовата, но для CRM систем более чем сгодится.
Денис, колонку можно (и нужно) сделать недоступной для редактирования на странице редактирования детали.
Посмотрите как это реализовано в детали "Продукт в заказе" (OrderProductDetailV2). Реализация недоступности поля для редактирования происходит в OrderProductPageV2.
Добрый день. Не совсем понятен механизм использования параметра placeholder в страницах редактирования, в частности интересует использование для элементов преднастроенной страницы (PreconfiguredPageV2)?
Здравствуйте, за такое поведение элементов в левой панели ответственны css стили, среди которых, в частности:
display: inline-block;
text-align: left;
padding-left: 1px;
Написанные под селектором .left-modules-container и некоторыми доп. условиями в разных вариациях в BasePageV2CSS.
Вы можете дописать такие же стили, или другие, для своих элементов, подключив пользовательские стили, и написав их на удобных вам в вашей ситуации селекторах.
Здравствуйте. Есть две даты. Первая это дата регистрации клиента а вторая - это дата первого звонка клиенту. В БП хочу вычислить сколько секунд уходит на то чтобы связаться с клиентом после регистрации. Для этого нужно посчитать эти секунды.
Когда я отнимаю от второй даты первую , то получаю параметр типа Timespan. И не могу его записать не в дату не у время в параметрах БП. То в какой параметр мне его можна записать?
Короче, вопрос в том. что мне нужно получить целое значение в секундах этого времени и записать в карточку контакта. Есть идеи как это реализовать?
Подскажите, каким образом можно добавить пункты в меню, которые выпадает по кнопке "Три точки" в детали? В частности, "участники активности"?
Надо оперативно менять поле, отображаемое на детали.
Здравствуйте.
Подскажите пожалуйста, как увеличить количество записей выводимых в списке справочного поля?
Имеется ввиду "быстрый" список, например поле Отрасль контрагента, выводиться 15 штук, а их много больше. Если начать вводить данные отфильтрованные отрасли отображаються, но нужно что бы по нажатию выводились все.
"Дашкевич К." написал:но нужно что бы по нажатию выводились все
Сейчас напишут про снижение производительности, а я прокомментирую про разбиение отраслей на группы и создание связанных справочников для удобства...
Но вопрос в принципе интересный, так, для общего развития с удовольствием узнаю ответ :)
Поскольку файл в базовом пакете, его невозможно изменить, можно только заместить. После замещения, компиляции и очистки кеша интернет браузера изменения должны применится.
А как заместить listview.js его нету в конфигурации, он лежит в папке с сайтом?
Я же написал, что это файл ядра. Все файлы ядра лежат в папке с сайтом.
"Дашкевич К." написал:
Алексей, если изменить в этом файле, что нужно сделать что бы сайт подхватил изменения?
Внести исправления в файл, перезапустить сайт/пул. Если исправления не подтянулись, тогда переименовать файл listview.js на listview_.js (например), перезапустить сайт/пул, переименовать в назад на listview.js перезапустить сайт/пул.
В sys-settings.js есть константа lookupRowCount. Именно она влияет на количество записей. Это js ядра, но сама константа записывается в глобальный объект Terrasoft.SysSettings.
Единственный, менее "кривой" вариант - это изменить значение в глобавльном объекте:
Terrasoft.SysSettings..lookupRowCount = 20
Учитывайте то, что изменения применятся ко всем lookup полям в системе
Задача состоит в следующем: есть страница Объекта недвижимости, на которой есть деталь "Строения" (со страницей добавления).
Есть ещё одна страница - Предложения, которая создаётся на основе страницы Объекта недвижимости, при создании копируется часть полей со страницы соответствующего Объекта. На той странице есть деталь строения (та же самая).
Необходимо скопировать туда и данные детали, отобразить колонки.
Как это возможно сделать? Я могу вытащить данные строений Объекта при помощи EntitySchemaQuery, но как правильно их подставить? InsrertQuery, насколько я понимаю, здесь не подходит - он сразу создаёт запись в базе, а существует вероятность, что пользователь не сохранит страницу Предложения после копирования.