Скажите, где в диаграмме 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.

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

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

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

Нравится

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

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

Возможно, что на стороне 1С 8.3 Управление торговлей 11.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}';
}

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

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