График PIE (наложение текста в диаграмме)
Отчёты
Разработка

Скажите, где в диаграмме fastreport в pie, сделать так, что бы не было наложение текста
график

Нравится

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

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

Нравится

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

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

необходимо сделать, это выполнить отладку кода при помощи Microsoft Visual Studio или Microsoft Script Debugger.

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

Microsoft Script Debugger у меня работает, но данную ошибку он не отслеживает.

Если дебагер не подхватывает ошибку,в таком случае необходимо в окне сообщения об ошибке приложения Terrasoft посмотреть по стеку где возникло исключение:

Найдите функцию в сервисе конфигурации, которая указана в стеке вызова, и в ней устанавливаете прерывание:

function edtCountryOnPrepareSelectWindow(LookupDataControl, SelectWindow) {
debugger;
	FilterLookupDataControlLookupDatasetByTerritory(LookupDataControl, 
		edtTerritory.DataField.Value);
}

Сохраните сервис и перезапускаете приложение, после этого дебагер подхватит прерывание и Вы сможете пройтись по коду дебагером

Не забудьте включить дебагер. Прикрепил файлы которые включают/отключают дебагер.
jitdebug_ru.zip

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

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

Нравится

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

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

Вы можете просмотреть пример реализации фильтрации для поля [Город] и повторить для поля [Вид деятельности] создать свою функцию фильтрации или установить фильтрацию сразу в событии edtActivityOnPrepareSelectWindow.

Различие будет только в названиях полей.

Павел, спасибо)

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

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

Есть функция Log.Write - выводит сообщение в лог. На диск лог сохраняется при закрытии.
Есть ли функционал, с помощью которого, можно принудительно сохранить лог в файл, а последующие сообщения начнут записываться в новый лог(файл).

И подскажите может есть статья\тема описания работы с системным логом (журнал в БД, насколько я понимаю)?

Terassoft 3.3.2

Нравится

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

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

при вызове функции Log.Write, данные сразу записываются в файл и это реализовано на уровне ядра.

Можете реализовать подобный функционал при помощи JScript в конфигурации.

Если правильно понял, Вы имеете ввиду логирование изменений в БД:

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

Нет не логирование изменений, как то натыкался на функцию ккоторая записывает информацию не в лог(Log.Write), а в системный журнал или как то так, насколько я понял записывает в спец. таблицу - про это хотел бы узнать больше.

"Дашкевич К." написал:как то натыкался на функцию ккоторая записывает информацию не в лог(Log.Write), а в системный журнал или как то так, насколько я понял записывает в спец. таблицу - про это хотел бы узнать больше.

Log.WriteToSystemLog, она?

Да она, спасибо.

Показать все комментарии
Технические вопросы
Разработка

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

Нравится

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

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

из данного сообщения можно сделать вывод, что Вы забили перевести Dataset в режим редактирования: Dataset.Edit();

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

//-----------------------------------------------------------------------------
// scr_AccountEdit
//-----------------------------------------------------------------------------

var AccountEdit = new Object();

function InitializeDataset() {
SetAttribute(dlData.Dataset, 'CommunicationDataset',
'ds_AccountCommunication');
SetAttribute(dlData.Dataset, 'AddressDataset', 'ds_AccountAddress');
SetAttribute(dlData.Dataset, 'CampaignDataset', 'ds_AccountInCampaign');
BaseDBEdit.Subject = 'Account';
BaseDBEdit.Dataset = dlData.Dataset;
}

function Initialize() {
InitializeDataset();
}

/* PRODUCT XRM */
function GetAccountBalanceForPeriod(AccountID, StartDays, EndDays, BalanceType){
var NowDate = new Date();
var BalanceSelectQuery = GetSingleItemByCode('sq_AccountsBalance',
'GetDatasetDisplayValue2');
ApplySelectQueryFilter(BalanceSelectQuery, 'AccountID', AccountID, true);
var EndDate;
if(!IsEmptyValue(EndDays)){
EndDate = AddDateDays(NowDate, (-1) * EndDays).getVarDate();
}
var StartDate;
if(!IsEmptyValue(StartDays)) {
StartDate = AddDateDays(NowDate, (-1) * StartDays).getVarDate();
}
EnableSelectQueryFilters(BalanceSelectQuery, (BalanceType == 'PL'), ['IsPL']);
EnableSelectQueryFilters(BalanceSelectQuery, (BalanceType == 'CF'), ['IsCF']);
ApplySelectQueryFilter(BalanceSelectQuery, 'DateTo', EndDate,
(!IsEmptyValue(EndDate)));
ApplySelectQueryFilter(BalanceSelectQuery, 'DateFrom', StartDate,
(!IsEmptyValue(StartDate)));
var BalanceDataset = BalanceSelectQuery.Open();
return BalanceDataset;
}

function InitializePostponementPayment(Window) {
var Dataset = dlData.Dataset;
edtPostponementPayment.DisableEvents();
try {
if (Dataset.State == dstInsert) {
edtPostponementPayment.Value = '15';
} else
if (Dataset.State == dstEdit) {
edtPostponementPayment.Value = Dataset('PostponementPayment') * 1;
}
} finally {
edtPostponementPayment.EnableEvents();
}
RefreshPostponementPayment(GetAttribute(Window, 'RecordID'));
edtPostponementPayment.IsReadOnly = !GetCanEditData(Dataset);
}

function RefreshPostponementPayment(AccountID){
var Dataset = dlData.Dataset;
var Value = Dataset.ValAsInt('PostponementPayment');
if (Value <= 0) {
Value = 14;
}
var HalfValue = parseInt(Value / 2);
edtPostPaymentPeriod1.Caption = " до " + HalfValue + " дней:";
edtPostPaymentPeriod2.Caption = " " + HalfValue + " - " +
Value + " дней:";
edtPostPaymentPeriod3.Caption = " более " + Value + " дней:";
edtAmmountPL.Tag = '0,' + HalfValue + ',PL';
edtAmmountCF.Tag = '0,' + HalfValue + ',CF';
edtAmmountPL30.Tag = HalfValue + ',' + Value + ',PL';
edtAmmountCF30.Tag = HalfValue + ',' + Value + ',CF';
edtAmmountPL90.Tag = Value + ',0,PL';
edtAmmountCF90.Tag = Value + ',0,CF';

var BasicAmountPL = GetAccountBalanceForPeriod(AccountID, HalfValue, 0, 'PL').
ValAsFloat('BasicAmount');
var BasicAmountCF = GetAccountBalanceForPeriod(AccountID, HalfValue, 0, 'CF').
ValAsFloat('BasicAmount');
var BasicAmountPLTotal = BasicAmountPL;
var BasicAmountCFTotal = BasicAmountCF;
edtAmmountCF.Value = AddDelimiter(BasicAmountCF);
edtAmmountPL.Value = AddDelimiter(BasicAmountPL);
if((BasicAmountPL == 0)||( BasicAmountCF == 0)){
lblPLPercent.Caption = "0 %";
} else {
lblPLPercent.Caption = AddDelimiter(((BasicAmountCF/BasicAmountPL)* 100).toFixed(2)) + " %"
}
BasicAmountPL = GetAccountBalanceForPeriod(AccountID, Value, HalfValue, 'PL').
ValAsFloat('BasicAmount');
BasicAmountCF = GetAccountBalanceForPeriod(AccountID, Value, HalfValue, 'CF').
ValAsFloat('BasicAmount');
BasicAmountPLTotal = BasicAmountPLTotal + BasicAmountPL;
BasicAmountCFTotal = BasicAmountCFTotal + BasicAmountCF;
edtAmmountCF30.Value = AddDelimiter(BasicAmountCF);
edtAmmountPL30.Value = AddDelimiter(BasicAmountPL);
if ((BasicAmountPL == 0) ||
(BasicAmountCF == 0)) {
lblPL30Percent.Caption = "0 %";
} else {
lblPL30Percent.Caption = AddDelimiter(((BasicAmountCF/BasicAmountPL) * 100).toFixed(2)) + ' %';
}
BasicAmountPL = GetAccountBalanceForPeriod(AccountID, null, Value, 'PL').
ValAsFloat('BasicAmount');
BasicAmountCF = GetAccountBalanceForPeriod(AccountID, null, Value, 'CF').
ValAsFloat('BasicAmount');
BasicAmountPLTotal = BasicAmountPLTotal + BasicAmountPL;
BasicAmountCFTotal = BasicAmountCFTotal + BasicAmountCF;
edtAmmountCF90.Value = AddDelimiter(BasicAmountCF);
edtAmmountPL90.Value = AddDelimiter(BasicAmountPL);
if ((BasicAmountPL == 0) || (BasicAmountCF == 0)) {
lblPL90Percent.Caption = "0 %";
} else {
lblPL90Percent.Caption = AddDelimiter(((BasicAmountCF/BasicAmountPL)* 100).toFixed(2)) + '%';
}
var BalanceAmount = (BasicAmountCFTotal - BasicAmountPLTotal).toFixed(2);
AccountEdit.BalanceAmount = BalanceAmount;
}

function AddDelimiter(Value){
var ParentValue = Value + '';
var StrValue = Value + '';
if (StrValue.indexOf('.') != -1) {
StrValue = StrValue.substr(0,StrValue.indexOf('.'));
}
if (StrValue.indexOf('-') != -1) {
StrValue = StrValue.substr(1);
}
var StrLen = StrValue.length;
var i = 0;
while (StrLen > 3) {
StrLen = StrLen - 3;
StrValue = StrValue.substr(0,StrLen) + ' ' + StrValue.substr(StrLen);
}
if (ParentValue.indexOf('.') != -1) {
StrValue = StrValue + ',' + ParentValue.substr(ParentValue.indexOf('.') + 1);
}
if (ParentValue.indexOf('-') != -1) {
StrValue = '-' + StrValue;
}
return StrValue;
}

function UpdateAccountBasicCurrencyCaptions() {
var CurrencyID = GetBasicCurrencyID();
var CurrencySymbol = GetCurrencySymbol(CurrencyID);
var SettledCreditField = dlData.Dataset.DataFields.ItemsByName('SettledCredit');
SettledCreditField.Caption = "Разрешенный кредит, " + CurrencySymbol;
lblCF.Caption = "Оплаты, " + CurrencySymbol;
lblPL.Caption = "Обязательства, " + CurrencySymbol;
edtBalanceAmount.Caption = "Текущий баланс, " + CurrencySymbol;
edtRemainAmount.Caption = "Остаток, " + CurrencySymbol;
}

function RecalcBalance(SettledCredit) {
var BalanceAmount = AccountEdit.BalanceAmount;
var RemainAmount = (SettledCredit + BalanceAmount*1).toFixed(2);
edtBalanceAmount.Value = AddDelimiter(BalanceAmount);
edtRemainAmount.Value = AddDelimiter(RemainAmount);
}

function SetPostponementPayment(Value) {
var Dataset = dlData.Dataset;
if ((Dataset.State == dstEdit) ||
(Dataset.State == dstInsert)) {
dlData.Dataset('PostponementPayment') = (Value * 1);
}
}
/* ENDPRODUCT XRM */

function InitializeCommunicationActionSmartTags() {
for (var i = 1; i < 6; i++) {
RefreshCommunicationActionSmartTag(
Self.ComponentsByName('edtCommunication' + i + 'Type'),
Self.ComponentsByName('edtCommunication' + i));
}
}

function CallCommunicationActionSmartTagHandler(ActionMenuItem) {
scr_CommunicationActionSmartTag.HandleCommunicationActionSmartTag(ActionMenuItem);
}

function InitAccountInfo() {
var Dataset = dlData.Dataset;
AccountEdit.OldName = Dataset.Values('Name');
}

function CheckAccountData() {
var Dataset = dlData.Dataset;
var NewName = Dataset.Values('Name');
var AccountID = Dataset.Values('ID');
var NameWasChanged = (NewName != AccountEdit.OldName);
var Result = true;
if ((NameWasChanged) && (!GetAttribute(Self, 'isMassEdit'))) {
var IsAccountLicensed = GetIsAccountLicensed(AccountID);
if (IsAccountLicensed) {
var Message = "Изменение '%1' контрагента у пользователя системы, может стать причиной повреждения лицензии. Продолжить?"
var SubjectName = Dataset.DataFields('Name').Caption;
var MessageStr = FormatStr(Message, SubjectName);
var Result = (ShowConfirmationDialog(MessageStr) == mrYes);
}
}
return Result;
}

function PrepareFinanceDetail() {
pgFinance.IsVisible = !Self.Attributes('HideFinanceDetail');
}

// ----------------------------------------------------------------------------
// Event handlers
// ----------------------------------------------------------------------------

function wnd_AccountEditOnPrepare(Window) {
Initialize();
wnd_BaseDBEditOnPrepare(Window);
/* PRODUCT XRM */
UpdateAccountBasicCurrencyCaptions();
InitializePostponementPayment(Self);
PrepareFinanceDetail();
/* ENDPRODUCT XRM */
InitAccountInfo();
InitializeCommunicationActionSmartTags();
RecalcBalance(dlData.Dataset('SettledCredit'));
}

function edtOwnerOnPrepareSelectWindow(LookupDataControl) {
PrepareLookupDataControl(LookupDataControl, dlData.Dataset);
}

function edtCountryOnPrepareSelectWindow(LookupDataControl, SelectWindow) {
FilterLookupDataControlLookupDatasetByTerritory(LookupDataControl,
edtTerritory.DataField.Value);
}

function edtCityOnPrepareSelectWindow(LookupDataControl) {
FilterLookupDataControlLookupDatasetByState(LookupDataControl,
edtState.DataField.Value);
FilterLookupDataControlLookupDatasetByCountry(LookupDataControl,
edtCountry.DataField.Value);
}

function edtStateOnPrepareSelectWindow(LookupDataControl) {
FilterLookupDataControlLookupDatasetByCountry(LookupDataControl,
edtCountry.DataField.Value);
}

function btnOKOnClick(Control) {
if (!CheckAccountData()) {
return;
}
scr_BaseDBEdit.btnOKOnClick(Control);
}

function dlDataOnDatasetDataChange(DataField) {
var ActivityName = DataField.Name;
var FieldName = DataField.Name;
var Dataset = DataField.ParentDataFields.ParentDataset;
var ActivityValue = DataField.Value;
/* PRODUCT XRM */
if (FieldName == 'PostponementPayment') {
RefreshPostponementPayment(Dataset('ID'));
}
if ((FieldName == 'SettledCredit') || (FieldName == 'PostponementPayment')) {
if (Dataset.ValAsFloat('SettledCredit') < 0) {
ShowWarningDialog("Разрешенный кредит не может быть меньше 0");
Dataset('SettledCredit') = 0;
return;
}
RecalcBalance(Dataset('SettledCredit'));
}
/* ENDPRODUCT XRM */
if (FieldName.indexOf('Communication') == 0) {
var Index = FieldName.substr(13, 1);
var CommTypeDataControl =
Self.ComponentsByName('edtCommunication' + Index + 'Type');
var CommDataControl =
Self.ComponentsByName('edtCommunication' + Index);
RefreshCommunicationActionSmartTag(CommTypeDataControl, CommDataControl,
(FieldName.indexOf('Type') > -1));
}
if (ActivityName == 'ActivityID') {
if (IsEmptyValue(ActivityValue)) {
Dataset.DataFields('FieldID').Value = null;
} else {
Dataset.DataFields('FieldID').Value =
GetFieldValueFromLookupDatasetByLookupField(DataField, 'FieldID');
}
}
}

/* PRODUCT XRM */
function amiBalanceSelectOnExecute(ActionMenuItem, Sender) {
var Tag = Sender.Tag;
if (dlData.Dataset.State == dstInsert) {
if (ShowConfirmationDialog(NeedToSaveRecordBeforeProceed) != wmrYes) {
return;
}
if (!CheckAccountData()) {
return;
}
if (!WindowWasPrepared(Self)) {
return;
}
Self.ComponentsByName('btnOK').IsEnabled = false;
try {
var Result = SaveChangesWithCheck(Self, BaseDBEdit);
}
finally {
Self.ComponentsByName('btnOK').IsEnabled = true;
}
if (!Result) {
return;
}
dlData.Dataset.Edit();
}
if (IsEmptyValue(Tag)) {
return;
}
var AccountID = GetAttribute(Self, 'RecordID');
var FilterValues = Tag.split(',');
var wndOpportunities = Services.GetNewItemByUSI('wnd_CashflowGridArea');
var Dataset = wndOpportunities.ComponentsByName('dlData').Dataset;
Dataset.Close();
var NowDate = new Date();
var DateTo = AddDateDays(NowDate, (-1) * FilterValues[0]);
var DateFrom = AddDateDays(NowDate, (-1) * FilterValues[1]);
Dataset.Close();
ApplyDatasetFilter(Dataset, 'AccountBalanceDateFrom', DateFrom.getVarDate(),
(FilterValues[1] != 0));
ApplyDatasetFilter(Dataset, 'AccountBalanceDateTo', DateTo.getVarDate(), true);
ApplyDatasetFilter(Dataset, 'DebtorCreditorID', AccountID, true);
ApplyDatasetFilter(Dataset, 'IsActual', true, true);
EnableSelectQueryFilters(Dataset.SelectQuery, (FilterValues[2] == 'PL'), ['IsPL']);
EnableSelectQueryFilters(Dataset.SelectQuery, (FilterValues[2] == 'CF'), ['IsCF']);
wndOpportunities.Attributes('NotifyObject') = Self;
wndOpportunities.Attributes('IsFromAccountFinanceEdit') = true;
if (FilterValues[2] == 'PL') {
wndOpportunities.Attributes('DefaultRecipientID') = AccountID;
}
if (FilterValues[2] == 'CF') {
wndOpportunities.Attributes('DefaultPayerID') = AccountID;
}
wndOpportunities.Prepare();
wndOpportunities.Show();
Dataset.Open();
}

function edtPostponementPaymentOnChange(Edit) {
var PostponementPayment = new String(
IsEmptyValue(Edit.Value) ? 0 : Edit.Value);
if ((!IsIntegerValue(PostponementPayment)) || (((PostponementPayment*1)+'').length > 4) ||
(PostponementPayment*1 < 0) || (PostponementPayment*1 > 9999)) {
ShowWarningDialog("Отсрочка платежей должна быть целым положительным числом от 0 до 9999");
} else {
SetPostponementPayment(PostponementPayment);
}
}
/* ENDPRODUCT XRM */

function wnd_AccountEditOnNotify(ScriptableService, Sender, Message, Data) {
/* PRODUCT XRM */
if ((Message == MSG_AFTERCLOSE) &&
(ExtractUSICodeEx(Sender.USI) == 'wnd_CashflowGridArea')) {
var Dataset = dlData.Dataset;
if ((Dataset.State != dstBrowse) &&
(Dataset.State != dstInsert) &&
(Dataset.State != dstEdit)) {
return;
}
RefreshPostponementPayment(Dataset('ID'));
RecalcBalance(Dataset('SettledCredit'));
}
/* ENDPRODUCT XRM */
}

function dlDataOnDatasetAfterOpen(Dataset) {
/* PRODUCT XRM */
AccountEdit.IsPostponementPaymentInitialized = false;
/* ENDPRODUCT XRM */
}

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

У Вас проблема скорее всего в коде:

if (ActivityName == 'ActivityID') {
	if (IsEmptyValue(ActivityValue)) {
		Dataset.DataFields('FieldID').Value = null;
	} else {
		Dataset.DataFields('FieldID').Value =
			GetFieldValueFromLookupDatasetByLookupField(DataField, 'FieldID');
	}
}

У меня этот код отрабатывает корректно.

Опишите более подробно кейс воспроизведения.

я сделал back up, но не помогло (при добавлении или редактировании вид деятельности или отраслей контрагента выбивает даную ошибку, не могу разобраться где именно и что делать .... сейчас моя функция имеет вид:
function dlDataOnDatasetDataChange(DataField) {
var FieldName = DataField.Name;
var Dataset = DataField.ParentDataFields.ParentDataset;
/* PRODUCT XRM */
if (FieldName == 'PostponementPayment') {
RefreshPostponementPayment(Dataset('ID'));
}
if ((FieldName == 'SettledCredit') || (FieldName == 'PostponementPayment')) {
if (Dataset.ValAsFloat('SettledCredit') < 0) {
ShowWarningDialog("Разрешенный кредит не может быть меньше 0");
Dataset('SettledCredit') = 0;
return;
}
RecalcBalance(Dataset('SettledCredit'));
}
/* ENDPRODUCT XRM */
if (FieldName.indexOf('Communication') == 0) {
var Index = FieldName.substr(13, 1);
var CommTypeDataControl =
Self.ComponentsByName('edtCommunication' + Index + 'Type');
var CommDataControl =
Self.ComponentsByName('edtCommunication' + Index);
RefreshCommunicationActionSmartTag(CommTypeDataControl, CommDataControl,
(FieldName.indexOf('Type') > -1));
}
}

Возможно у Вас проблема была не здесь, а в другом месте конфигурации.

Выполните отладку кода при помощи Microsoft Visual Studio или Microsoft Script Debugger.

Павел, спасибо, ви очень помогли)))

Показать все комментарии
данных в 1С 8.3
перенос базы
Интеграция и импорт данных
Разработка

Подскажите пожалуйста есть ли вариант полного переноса базы(всех данных) из Террасофт 3.2 в 1С 8.3 Управление торговлей 11.1 (управление продажами недвижимости)?
Операционная система WinXP.

Нравится

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

Перенос данных из Terrasoft 3.2 в 1С 8.3 Управление торговлей 11.1 возможен в рамках индивидуального проектного решения.

Возможно, что на стороне 1С 8.3 Управление торговлей 11.1 есть специальные утилиты для импорта данных из других сторонних систем.

Показать все комментарии
экспорт в 1С
Интеграция и импорт данных
Разработка

Подскажите пожалуйста, я никогда не работал с этой программой, но передо мной стоит задача экспортировать всю базу Террасофт Риэлт в 1с:Управление недвижимостью, возможно ли это вообще сделать? Если да, то как?
Или может, возможен експорт всей базы в формат Exсel?

Нравится

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

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

Программный продукт TS CRM Realty – это разработка нашего партнера ‘Альфа-Информ’.

Для уточнения деталей реализации и возможностей интеграции с другими программными системами свяжитесь, пожалуйста, с компанией ‘Альфа-Информ’ по телефонам, указанным на их сайте: http://www.olp.ru/

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

Добрый день! подскажите пожалуйста, где находится wnd_ окно вида деятельности в администраторской панели?

Нравится

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

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

справочник [Виды деятельности] редактируется с помощью базового окна редактирования wnd_BaseDBEdit.
wnd_BaseDBEdit - является базовым окном редактирования для всех справочников, у которых явно не задано окно редактирования.

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

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

Нравится

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

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

Для этого выполните такую последовательность действий:

  1. Добавить новое поле в сервис таблицы tbl_Field с типом идентификатор, которое будет ссылаться на таблицу tbl_Activity
  2. Добавьте два поля на выборку в сервис sq_Field; 1 поле - поле которое добавили ранее и 2 поле - это выборка поля Name из таблицы tbl_Activit по новому добавленному полю
  3. Добавить лукапное поле в сервис датасета ds_Field

Чтобы не ошибиться, делайте по аналогии с таблицей tbl_Country.

Сделал все изменения в файлах tpl, sq и ds по аналогии с country и terrytory, но справочники не объединяются

Немного не понятно, что имеете ввиду под "справочники не объединяются".

Добавьте свой справочник редактирования наследуясь от базового окна редактирования wnd_BaseDBEdit. Как пример, можете взять окно редактирования wnd_CityEdit.

После этого, в разделе [Справочники] необходимо изменить свойство справочника [Отрасли]. Установить значение полю [Окно реестре] = 'wnd_FieldEdit'.

Если изменение свойств будет заблокировано, в токам случае, выполните sql скрипт:

UPDATE tbl_Dictionary SET EditWindowCode = 'wnd_FieldEdit' WHERE DatasetCode = 'ds_Field'

где wnd_FieldEdit - Ваше окно редактирования справочника

заработало)))), а как сделать так, чтобы при выборе вида деятельности, отрасли сами добавлялись? у меня отрасль родительская категория, а вид деятельности дочерняя.

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

приведу пример на окне редактирования [Контрагенты].

  1. 1. Открываем окно редактирования wnd_AccountEdit
  2. 2. Переходим в событие dlDataOnDatasetDataChange, не визуального компонента dlData
  3. 3. В событии dlDataOnDatasetDataChange добавляем строчку кода var FieldValue = DataField.Value;. Должно получится, что-то виде такого:
    	var FieldName = DataField.Name;
    	var Dataset = DataField.ParentDataFields.ParentDataset;
    	var FieldValue = DataField.Value;
  4. 4. В конец функции дописываем код:
    	if (FieldName == 'FieldID') {
    		if (IsEmptyValue(FieldValue)) {
    			Dataset.DataFields('ActivityID').Value = null;
    		} else {
    			Dataset.DataFields('ActivityID').Value = 
    				GetFieldValueFromLookupDatasetByLookupField(DataField, 'ActivityID');
    		}	
    	}
  5. 5. Сохраняем сервис

В результате у Вас должна получится функция:

function dlDataOnDatasetDataChange(DataField) {
	var FieldName = DataField.Name;
	var Dataset = DataField.ParentDataFields.ParentDataset;
	var FieldValue = DataField.Value;
 
	if (FieldName.indexOf('Communication') == 0) {
		var Index = FieldName.substr(13, 1);
		var CommTypeDataControl =
			Self.ComponentsByName('edtCommunication' + Index + 'Type');
		var CommDataControl =
			Self.ComponentsByName('edtCommunication' + Index);
		RefreshCommunicationActionSmartTag(CommTypeDataControl, CommDataControl,
			(FieldName.indexOf('Type') > -1));
	} 
	if (FieldName == 'FieldID') {
		if (IsEmptyValue(FieldValue)) {
			Dataset.DataFields('ActivityID').Value = null;
		} else {
			Dataset.DataFields('ActivityID').Value = 
				GetFieldValueFromLookupDatasetByLookupField(DataField, 'ActivityID');
		}	
	}
}

Содержимое функции может немного отличаться, это зависит от продукта.

спасибо большое))

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

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

Нравится

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

в скрипт scr_Account в функцию SelfOnDatasetAfterAppend (обработчик события AfterAppend) добавьте:

Dataset.Values('Communication1TypeID') = '{FA08FC2A-9D55-40C9-9576-0017EAED3E49}';
Dataset.Values('Communication2TypeID') = '{DBCB6A43-D99F-45AE-9B41-037DE595242E}';
Dataset.Values('Communication3TypeID') = '{82696D8B-71AE-4BA4-94FD-3F77474D74E7}';
Dataset.Values('Communication4TypeID') = '{7A628D16-D7D0-4979-B8BA-B64EF54A0366}';
Dataset.Values('Communication5TypeID') = '{7B77F07B-9976-47D6-95AA-D161FF369D6D}';

аналогично для контактов:

function ds_ContactOnDatasetAfterAppend(Dataset) {
	Dataset.Values('Communication1TypeID') = '{FA08FC2A-9D55-40C9-9576-0017EAED3E49}';
	Dataset.Values('Communication2TypeID') = '{DBCB6A43-D99F-45AE-9B41-037DE595242E}';
	Dataset.Values('Communication3TypeID') = '{82696D8B-71AE-4BA4-94FD-3F77474D74E7}';
	Dataset.Values('Communication4TypeID') = '{7A628D16-D7D0-4979-B8BA-B64EF54A0366}';
}

большое спасибо

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