Здравствуйте,
Подскажите, пожалуйста, как на странице редактирования Контакта сделать ссылочными поля

Телефон - что бы начинался звонок?
WEB типа - типа строка сделать ссылочным, бы при клике был переход по адресу ?
поле e-mail - что бы при клике, открывался почтовик?

Все это уже реализовано в детали "Средства связи"

Нравится

1 комментарий

Здравствуйте!

Обработчики нажатия на "иконки" на детали "Средство связи" реализована в схеме BaseCommunicationViewModel. Вам необходимо добавить "иконки" на страницу редактирования раздела "Контакты" (ContactPageV2) и реализовать обработчики нажатия на иконки по аналогии с BaseCommunicationViewModel.

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

Добрый день!
Задача такая - в разделе Заказы есть деталь Площадка - объект, куда необходимо доставить продукт. Площадок в заказе может быть несколько. Необходимо отобразить на карте объекты в выбранных заказах.

На странице OrderSectionV2 добавила кнопку "Показать площадку на карте", при этом в В define и function прописала "MapsUtilities", "MapsHelper".
Добавила функцию:

openShowOnMap: function() {
                                var items = this.getSelectedItems();//отмеченные галкой заказы - массив
                                var Farm = [];//массив площадок
                                var select = Ext.create("Terrasoft.EntitySchemaQuery", {
                                        rootSchemaName: "UsrPlatform1C"
                                });
                                select.addColumn("UsrPlatform");
                                select.addColumn("UsrOrder");
                                select.filters.add("UsrPlatformId", this.Terrasoft.createColumnInFilterWithParameters("UsrOrder", items));
                                select.getEntityCollection(function(result) {
                                        if (result.success) {
                                                Terrasoft.each(result.collection.getItems(), function(item) {
                                                        Farm.push(item.set("UsrPlatform").value);
                                                });
                                        }
                                });
                                var selectS = Ext.create("Terrasoft.EntitySchemaQuery", {
                                        rootSchemaName: "UsrFarm"
                                });
                                selectS.addColumn("Id");
                                selectS.addColumn("UsrName");
                                selectS.addColumn("UsrAdress");
                                selectS.addColumn("UsrCity");
                                selectS.addColumn("UsrRegion");
                                selectS.addColumn("UsrCountry");
                                selectS.addColumn("UsrGPSN");
                                selectS.addColumn("UsrGPSE");
                                selectS.filters.add("FarmId", this.Terrasoft.createColumnInFilterWithParameters("Id", Farm));
                                selectS.getEntityCollection(function(result) {
                                        if (result.success) {
                                                var mapsConfig = {
                                                        mapsData: []
                                                };
                                                result.collection.each(function(item) {
                                                                var address = [];
                                                        if (item.get("UsrCountry") && item.get("UsrCountry").displayValue) {
                                                                address.push(item.get("UsrCountry").displayValue);
                                                        }
                                                        if (item.get("UsrRegion") && item.get("UsrRegion").displayValue) {
                                                                address.push(item.get("UsrRegion").displayValue);
                                                        }
                                                        if (item.get("UsrCity") && item.get("UsrCity").displayValue) {
                                                                address.push(item.get("UsrCity").displayValue);
                                                        }
                                                        address.push(item.get("UsrAdress"));
                                                        var dataItem = {
                                                                caption: item.get("UsrName"),
                                                                content: "

"

+ item.get("UsrName") + "
"
+ address.join(", ") + "
",
                                                                address: item.get("UsrAdress") ? address.join(", ") : null,
                                                                //конвертирование полей долготы и широты
                                                                gpsN: parseFloat(item.get("UsrGPSN")),
                                                                gpsE:  parseFloat(item.get("UsrGPSE")),
                                                                updateCoordinatesConfig: {
                                                                        schemaName: "UsrFarm",
                                                                        id: item.get("Id")
                                                                }
                                                        };
                                                        mapsConfig.mapsData.push(dataItem);
                                                });
                                                MapsUtilities.open({
                                                        scope: this,
                                                        mapsConfig: mapsConfig
                                                });
                                        }
                                }, this);
                        }

При отладке кода выяснила, что фильтрация по выбранным заказам выполняется, получаем выбранные заказы и площадки в этих заказах.
А в запросе при выборе Адреса, Региона, Страны получаем данные ВСЕХ площадок, которые есть в базе данных, а не только полученных из предыдущего запроса. (скриншот во вложении). Помогите, пожалуйста, разобраться в чем ошибка в фильтрации в запросе!!!

Нравится

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

Здравствуйте, Юлия.

Причиной данного поведения является то, что функция, передаваемая аргументом в метод getEntityCollection, вызывается ассинхронно (то есть после выполнения sql запроса в базу данных).

И на момент добавления фильтра в строке:

selectS.filters.add("FarmId", this.Terrasoft.createColumnInFilterWithParameters("Id", Farm));

массив Farm пустой. Следовательно, фильтрация не отрабатывает. Рекомендую Вам смотреть в сторону использования метода Terrasoft.chain или же формировать второй запрос к базе данных в callback функции первого запроса, а если точнее то сразу после кода:

Terrasoft.each(result.collection.getItems(), function(item) {
            Farm.push(item.set("UsrPlatform").value);
        });

Илья, спасибо большое за Ваш ответ.

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

Добрый день!

Требуется убрать стадию "Распределение" из индикатора стадий в реестре лидов.
В справочнике "Стадия лида" стадию "Распределение" мы удалили, но на индикаторе стадий в реестре лидов лишний пункт остался.

Нравится

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

Добрый день!
Любой реестр может быть настроен индивидуально для каждого пользователя системы. Добавить или скрыть колонку можно через настройку колонок реестра, которая подробно описана в Академии.

В данном случае требуется скрыть не колонку, а одну из стадий, которая в этой колонке отображается. Удалять саму стадию нельзя.

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

Приветствую!
Мосле миграции из другой системы, где не следили за уникальностю записей, теперь много дубликатов контрагентов и контактов.
Есть ли возможность пакетно обрабатывать дубли или как-то автоматизировать этот процесс?

Дублей контрагентов - 390.
Дублей контактов - около 1500.

Нравится

5 комментариев

Добрый день!
Дубли в системе обрабатываются после проведения глобального поиска дублей. Найденные дубли группируются по похожести, для удобства обработки. Подробно о запуске глобального поиска и обработке его результатов рассказано в Академии.

Ксения, все верно.
После глобального поиска таких дублей обнаруживается столько, сколько я написал.
Меня интересует, есть ли способ обработки уже найденных дублей, чтобы не совершать 390 кликов "Select All" и 390 кликов "Merge". Так как не все дубли схлопнутся автоматически, возможны еще вариации из различных сотен кликов.
Потом настанет черед контактов, а их уже 1500.

Здравствуйте! Можно поинтересоваться как решили данную задачу?

Добрый день, Светлана!

В новой версии системы появилась кнопка "Выбрать все", что позволяет выбрать и обработать сразу все записи реестра сразу. Что касается именно объединения дублей, то этот процесс требует просмотра каждого индивидуального найденного дубля, для определения, является ли он действительно дублем (или просто однофамильцем и т.д.).

Спасибо!

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

Guid contactId = UserConnection.CurrentUser.ContactId; //id контакта текущего пользователя
string contactName = UserConnection.CurrentUser.ContactName; //имя контакта текущего пользователя
string contactmail = Terrasoft.Configuration.CommonUtilities.GetEntityTypedColumnValue(UserConnection, "Contact", "Email", contactId);
string contactdol = Terrasoft.Configuration.CommonUtilities.GetEntityTypedColumnValue(UserConnection, "Contact", "JobTitle", contactId);

мне нужно в карточке е-мейл узнать должность и е-мейл текущего пользователя.
при опубликовании, появляется ошибка:

Нравится

1 комментарий

Опубликовала без ошибок:
Guid contactId = UserConnection.CurrentUser.ContactId; //id контакта текущего пользователя
string contactName = UserConnection.CurrentUser.ContactName; //имя контакта текущего пользователя
string contactmail = Terrasoft.Configuration.CommonUtilities.GetEntityTypedColumnValue(UserConnection, "Contact", "Email", contactId);
string contactdol = Terrasoft.Configuration.CommonUtilities.GetEntityTypedColumnValue(UserConnection, "Contact", "JobTitle", contactId);

Все получилось!

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

Версия 3.3.2.120
Пропали "операции" на некоторых договорах. Те, что удалось обнаружить (не сходился баланс) - были одной датой, 18.01.2016. Обнаружили в сентябре.
Ежемесячно делается сверка, поэтому возможная проблема возникла недавно.

Некоторое время назад была перезагрузка сервера по электропитанию. После восстановления электропитания Oracle запустился сам, никаких дополнительных действий не производилось.

Регулярно импортируем в систему платежи, так что есть подозрение, что дал сбой этот механизм.

В резервной копии платежи видим. Поиск по номеру ничего не дает (была надежда, что кто-то перевесил его на другого абонента).

Есть ли способ определить причину возникновения проблемы?

Нравится

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

Здравствуйте!

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

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

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

Попробуйте ещё проверить наличие данных операций в системе под пользователем с правами администратора, так как, если такую проверку выполняли под обычным пользователем (без прав администратора), то, возможно, что у этого пользователя не было прав на конкретные записи.

Алла, спасибо за ответ!

А не скажете, где почитать про "логгирование записей"?

См. тут на стр. 147.

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

В продукте sales enterprice 7.8 при добавлении записей на деталь Предложения нужно убрать возможность выбора типа Предложения. Сейчас эта возможность реализована в базовом функционале, так как в кастомном разделе Предложения есть несколько страниц редактирования.

Видимо, нужно переопределить какие-то методы.
Как можно реализовать такой кейс?

Нравится

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

Вопрос в том, как внести в изменения в меню, которое генерируется методом getEditPages.
Метода getEditPages мы не нашли - хотя по сути понятно, что он делает, это просто получение списка типов.

Нам нужно в меню кнопки "Добавить" на детали не выводить меню из типов разных схем редактирования, а сразу открывать определенную схему страницы редактирования.

Проблема ещё в том, что getEditPages используется во многих методах, поэтому также интересует вопрос, как этот метод правильно переопределить, чтобы это не повлияло на другие процессы?

Сопутствующий вопрос, который может помочь решить данную задачу - как вообще удалить из списка типов лишний пункт?

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

В продукте sales enterprice 7.8 нужно добавить на страницу раздела "Звонки" поле с типом "файл" для сохранения одной записи звонка.
В конфигурации , в объекте раздела "Звонки" я добавила поле с типом "файл". В мастере раздела это поле недоступно для добавления в схему.
Как добавить это поле на страницу редактирования раздела "Звонки"?

Нравится

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

Добрый день

Если мне нужно скопировать данные заголовка из одной е-мейл-активности в другую, то:
defValues.Add("Title",Page.TitleEdit.Value.ToString());
А как скопировать данные из html body ?

Нравится

12 комментариев

Так же само. Если из контрола не берётся, то можно из поля в DataSource.

на странице карточки е-мейл есть BodyEdit, но нет HTMLBodyEdit. В DataSource колонки HTMLBody и Body имеются. Поэтому, не могу также скопировать данные , как в примере defValues.Add("Title",Page.TitleEdit.Value.ToString()); .

Значит, из DataSource.

написала так:

defValues.Add("HtmlBody", Page.DataSource.ActiveRow.GetTypedColumnValue("HtmlBody"));

получилось!

У меня вопрос: а каким образом можно добавить некоторый текст перед скопированным HtmlBody ? Ну хотя бы логику подскажите... заранее спасибо

Это же обычная строка и с ней можно манипулировать как угодно, в том числе и «склеить» с констатой.

спасибо, получилось склеить.

еще вопрос: между строками, к-ые склеила, нужно, чтобы был переход на другую строку (т.е. не все было на одной строке).

не работает:
string s = "From: /n Sent: ";

в итоге выводит на одной строке, без перехода на другую: From: /n Sent: .

/n - это надо объявить где-то?

Это же HTML. Тут переход тегами делается.

<br /> 

подскажите, а выделение жирным с помощью какого тега делается?

<b></b>

Смотрите учебник по HTML, там ещё много других интересных тегов.

А про копирование Файлов из одной е-мейл активности в другую где можно посмотреть?

Я Вам уже писал, поищите внимательно по этому же сайту и по исходникам конфигурации.

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

В продукте sales enterprice версии 7.8 пытаюсь по аналогии с бизнес-процессом визирования счета сделать бизнес-процесс визирования продажи, но при попытке сохранения схемы бизнес-процесса выдает ошибку (на скриншоте).

Пробовали на разработческой версии, и на демо-версии. На обеих версиях возникает такая ошибка после того, как в элементе "Читать ответственного" обращаюсь к предыдущему в схеме элементу "Читать продажу.Первый элемент результирующей коллекции.Ответственный" и пытаюсь сохранить схему бизнес-процесса.

Где настраиваем визирование продажи неправильно?

Нравится

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

Анастасия,
По скриншотам трудно определить причину ошибки. Напишите в тех. поддержку письмо с подробным описанием.

"Зарицкий Олег" написал:

Анастасия,

По скриншотам трудно определить причину ошибки. Напишите в тех. поддержку письмо с подробным описанием.

Олег, тогда, возможно, подскажете, откуда берется RecordId в бизнес-процессе визирования счета, договора и заказа. Достаточно ли просто скопировать бизнес-процесс визирования? Или нужна дополнительная настройка например, в системных настройках или справочниках?

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