Добрый день! Хотелось бы уточнить пару вопросов: -Покажите пожалуйста как добавить новое поле в форму добавления нового контрагента?
Прошу расписать по шагам.спасибо!
Хочу предоставить краткое руководство по добавлению дополнительного поля через Администратор 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
Арсений, предлагаю дополнить описание информацией о том, как отредактировать окно реестра Контрагентов wnd_AccountsGridArea. Пользователям будет очень полезно видеть колонку с новым полем в реестре.
Максим и Саша, кнопка "Пыщь" в FieldMaker порадовала )).
Скажите, Арсений, на вашем примере мы добавляем конкретно "Дата создания", а можно ли этим же методом добавить поле под другим названием? Допустим DateTimeDataControl=наименование курса?
Конечно, можно. Судя по названию, это должен быть TextDataControl. И на всех этапах, где это нужно, выбирать соответствующий тип. Но FieldMaker'ом проще.
Не совсем понятно, что вы имеете ввиду под 'полем, информация в которое подтягивается'.
Если нужно, например, при добавлении новой записи автоматически заполнять поле некоторым значением по умолчанию, то в обработчике 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;
}
Для этого вам нужно в клиентском приложении Terrasoft (TSClient.exe):
1. Добавить справочник через раздел [Справочники]. Если в Вашей версии такой раздел отсутствует, тогда через пункт меню [Файл] -> [Справочники] -> [Настройка справочников].
2. Перезагрузить Terrasoft.
3. Добавить пользовательское поле через пунк меню [Файл] -> [Настройка] -> [Пользовательские поля].
4. Перезагрузить Terrasoft и проверить новое поле.
Такое уведомление отправляется всем контактам на детали [Контакты] задачи.
Для того, чтобы оно приходило только контактам, которые являются сотрудниками, нужно в скрипт карточки задачи добавить строку с наложением дополнительного фильтра (функция ApplyDatasetFilter), который будет определять, что контакт является сотрудником компании (например, фильтр вида Контарагент контакта = ID Вашей компании).
Просто смысл не понятно, почему сотрудник пушить другой:
“Витя что с заказом?, условия определились? заявка от 25.08.2014 г., срок дествия счёта уже вышел.”
И копию задача получить контрагент!!
Это же внутренняя задачу (клиент не должен это видеть)
Может, есть в шаблоне задаче просто убрать контрагент?
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);
}
для корректной работы нужно внести изменение в запрос 'Задача' (раздел [Запросы]), который связан с шаблоном 'Уведомление по задаче'.
Для этого нужно на деталь [Средство связи контакта] запроса добавить колонку 'Контрагент' и в блоке [Фильтры] добавить фильтр Контрагент Равно <Название Вашей компании> (см. скриншот).
P.S.
Уберите внесенные изменения в scr_TaskUtils (у Вас они дублируются).
А как добавить поле-справочник, ссылающийся на ту-же таблицу? Мне нужно в контрагенте сделать поле "головной контрагент". В tbl_account поле HeadAccountID добавил. В sq_account добавил это поле. В ds_account добавил его "как поле справочника", указав "источник данных справочника" - ds_account (предполагаю, что ошибка кроется где-то здесь). В карточке объекта LoockupDataControl добавил, подсунув ему новое поле. Перезапустил SD. Открываю карточку контрагента, и в поле "Головной контрагент" сразу вижу наименование того контрагента, которого открыл. Должно быть пусто: я же ещё не указывал ему головного.