Добавление поля посредством TSAdmin

Всех приветствую!

Хочу предоставить краткое руководство по добавлению дополнительного поля через Администратор Terrasoft.

Данный способ более универсален, так как позволяет создать дополнительные поля для карточек всех разделов, однако более трудоемкий и требующий специальных знаний в области программирования.
1. Запустите Администратор Terrasoft CRM (TSAdministrator.exe).

2. В дереве сервисов найдите и откройте сервис таблицы, в которой хранятся данные раздела контрагенты: [ Accounts \ General \ Main Grid \ tbl_Account].

3. В данную таблицу добавьте новое поле, используя контекстное меню, как показано на скриншоте ниже:

Для данного поля установите такие параметры, как на скриншоте ниже:

4. Сохраните изменения внесенные в данный сервис.

5. В дереве сервисов найдите и откройте запрос на выборку раздела контрагенты: [Accounts \ General \ Main Grid \ sq_Account].

6. В группу Select, используя контекстное меню добавьте новую основную колонку, как показано на скриншоте ниже.

7. Для данной колонки установите параметры, как показано на рис. ниже.

8. Сохраните изменения внесенные в данный сервис.

9. В дереве сервисов найдите и откройте сервис набора данных для раздела контрагенты [Accounts \ General \ Main Grid \ ds_Account].

10. Используя контекстное меню, добавьте в данный датасет новое поле типа ‘Поле дата/время’

11. Для данного поля установите параметры, как показано на скриншоте ниже.

12. Сохраните изменения внесенные в данный датасет.

13. В дереве сервисов найдите и откройте сервис окна карточки раздела контрагенты [Accounts \ General \ Main Grid \ wnd_AccountEdit].

14. На закладке ‘Визуальные’ для группы компонентов (FrameGroup) fmData создайте новую группу компонентов fmAddFields следующим образом: кликните правой кнопкой мышки на названии fmData и из контекстного меню выберите Новый -> FrameGroup, как на рис. ниже.

15. Для данного компонента установите свойство Name = fmAddFields. Используя кнопку ‘со стрелкой’, выделенную на рис. ниже красным прямоугольником, переместите созданный компонент fmAddFields вверх.

16. Для созданной группы компонентов fmAddFields добавьте новый компонент DateTimeDataControl для отображения поля ‘Дата основания’, кликнув правой кнопкой мышки на данной группе и из контекстного меню выберите Новый -> DateTimeDataControl.

17. Для данного компонента на закладке Свойства установите параметры, как показано на скриншоте ниже.

18. Сохраните внесенные изменения в сервисе wnd_AccountEdit.
19. Запустите Terrasoft и убедитесь в создании данного поля для карточки контрагента, как показано на скриншоте ниже.

Обратите внимание, перед внесением каких-либо изменений в рабочую базу данных (конфигурацию) настоятельно рекомендую создать её резервную копию (backup).

С уважением,
Белецкий Арсений
Группа компаний Terrasoft

Нравится

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

Альтернативный способ, если в конфигурации есть FieldMaker:

FieldMaker

1. Запустите FieldMaker (TSClient.exe /wnd=wnd_FieldMaker).
2. Добавьте поле.
3. Запустите Terrasoft и убедитесь в создании данного поля.

Арсений, предлагаю дополнить описание информацией о том, как отредактировать окно реестра Контрагентов wnd_AccountsGridArea. Пользователям будет очень полезно видеть колонку с новым полем в реестре.

Максим и Саша, кнопка "Пыщь" в FieldMaker порадовала )).

Скажите, Арсений, на вашем примере мы добавляем конкретно "Дата создания", а можно ли этим же методом добавить поле под другим названием? Допустим DateTimeDataControl=наименование курса?

Конечно, можно. Судя по названию, это должен быть TextDataControl. И на всех этапах, где это нужно, выбирать соответствующий тип. Но FieldMaker'ом проще.

Добрый день!

Вопрос, который был в начале этой темы решен.
Сейчас стоит задача немного усовершенствовать - как добавить поле, информация в которое подтягивается?

Пример тут - http://prntscr.com/a7qwmh

Не совсем понятно, что вы имеете ввиду под 'полем, информация в которое подтягивается'.

Если нужно, например, при добавлении новой записи автоматически заполнять поле некоторым значением по умолчанию, то в обработчике OnDatasetAfterAppend датасетлинка в карточке редактирования прописать строку:

dlData.Dataset('TerritoryID') = 'ID нужной записи из справочника [Территории]'

Если речь идет об автозаполнении поля при заполнении некоторого другого поля (например, при заполнении поля [Город] заполнять поле [Страна]), тогда это нужно реализовывать в обработчике OnDatasetDataChange датасетлинка в карточке редактирования.
В этот обработчик нужно добавить проверку, что меняется поле CityID и прописать в нём логику получения и установки значения CountryID:

if (DataField.Name == 'CityID') {
var CityID = DataField.Value;
var CountryID = GetDatasetFieldValueByID('ds_CityID', CityID, 'CountryID');
var Dataset = DataField.ParentDataFields.ParentDataset;
Dataset('CountryID') = CountryID;
}

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

Речь идет о добавлении такого поля КАК "город" или "страна"
В этом поле тоже выбираю условия клиента и у нас открвается окошко выбора условия:

1- Срочная оплата
2- отсрочка 2 месяца

Спасибо!

Для этого вам нужно в клиентском приложении Terrasoft (TSClient.exe):

1. Добавить справочник через раздел [Справочники]. Если в Вашей версии такой раздел отсутствует, тогда через пункт меню [Файл] -> [Справочники] -> [Настройка справочников].
2. Перезагрузить Terrasoft.
3. Добавить пользовательское поле через пунк меню [Файл] -> [Настройка] -> [Пользовательские поля].
4. Перезагрузить Terrasoft и проверить новое поле.

Добрый день!

Когда сотрудник 105 ставить задачу 113
Приходить письма контрагент тоже

http://prnt.sc/a9ef0q

Вопрос: как можно убрать с поле кому адрес контрагент, и чтобы письма приходила только сотрудник 113?

http://prntscr.com/a9eheb

Спасибо

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

Такое уведомление отправляется всем контактам на детали [Контакты] задачи.

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

Доброе утро!

Просто смысл не понятно, почему сотрудник пушить другой:
“Витя что с заказом?, условия определились? заявка от 25.08.2014 г., срок дествия счёта уже вышел.”
И копию задача получить контрагент!!
Это же внутренняя задачу (клиент не должен это видеть)

Может, есть в шаблоне задаче просто убрать контрагент?

Спасибо!

Повторюсь,

что самым правильным решением будет добавить фильтр в сервис и внести изменения в скрипты.

Уточните, пожалуйста, какую версию Terrasoft вы используете?

"что самым правильным решением будет добавить фильтр в сервис и внести изменения в скрипты."

Можно тут все подробностей как это сделать?

Terrasoft у нас 3.3.1.163

1. В сервис sq_ContactInTask добавить фильтр ContactIsUser (см. скриншот)
2. В сервисе scr_TaskUtils найти функцию ProcessSendTaskEmailToContactsInTask и в ней добавить такой код (см. также скриншот):
if (!Assigned(TaskUtils.sq_ContactInTask)) {
TaskUtils.sq_ContactInTask = Services.GetNewItemByUSI('sq_ContactInTask');
var FilterCodes = new Array('ContactIsUser', 'TaskID');
EnableSelectQueryFilters(TaskUtils.sq_ContactInTask, true,
FilterCodes);
}

Все сделал
Ну к сожалению все равно доходить письма клиенту

Для анализа внесенных вами доработок выгрузите сервисы sq_ContactInTask и scr_TaskUtils из Вашей конфигурации.

Хайдар,

выгрузите указанные выше сервисы с помощью контекстного меню в TSAdmin.exe (см. скриншот).

Пожалуйста

Хайдар,

для корректной работы нужно внести изменение в запрос 'Задача' (раздел [Запросы]), который связан с шаблоном 'Уведомление по задаче'.

Для этого нужно на деталь [Средство связи контакта] запроса добавить колонку 'Контрагент' и в блоке [Фильтры] добавить фильтр Контрагент Равно <Название Вашей компании> (см. скриншот).

P.S.
Уберите внесенные изменения в scr_TaskUtils (у Вас они дублируются).

Доброе утро, Алла,

в скриншоте не очень хорошо видно, качество плохое
Я что то запутал что надо делать
Прошу по шагами если можно

За ранее спасибо!

Хайдар

Доброе, Хайдар.

Добавила скриншот в архив (в хорошем качестве).

Спасибо больше
Я чуть по другому решил вопрос, ну с вашей помочь конечно

Хайдар

А как добавить поле-справочник, ссылающийся на ту-же таблицу? Мне нужно в контрагенте сделать поле "головной контрагент". В tbl_account поле HeadAccountID добавил. В sq_account добавил это поле. В ds_account добавил его "как поле справочника", указав "источник данных справочника" - ds_account (предполагаю, что ошибка кроется где-то здесь). В карточке объекта LoockupDataControl добавил, подсунув ему новое поле. Перезапустил SD. Открываю карточку контрагента, и в поле "Головной контрагент" сразу вижу наименование того контрагента, которого открыл. Должно быть пусто: я же ещё не указывал ему головного.

В sq_account нужно добавлять ещё HeadAccountName, ссылающееся куда надо, а в ds_account прописывать в качестве поля для отображения новому полю.

Александр, спасибо! Заработало!

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