Вопрос

Всем доброго времени суток!
Подскажите как можно передать в карточку редактирования нового заказа некоторых параметров - http://prntscr.com/n0jpjt ?
Для открытия карточки редактирования использую:
 

var config = {
			isStartRecord: true,
			pageSchemaName: "MobileOrderEditPage"
		};
		Terrasoft.util.openEditPage("Order", config);

 

У меня такой же вопрос

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

См. в MobilePhoneCallLogPage:

 onSaveButtonButtonTap: function() {
  var modelConfig = Terrasoft.ApplicationConfig.getModelConfig("Activity");
  var requiredModels = modelConfig.RequiredModels;
  Terrasoft.StructureLoader.loadModels({
   modelNames: requiredModels,
   success: function() {
    this.createCallActivity(function() {
     var arrangeActivityToggle = this.getArrangeActivityToggle();
     var toArrange = arrangeActivityToggle.getValue();
     var record = this.record;
     this.back();
     if (toArrange) {
      setTimeout(function() {
       var config = {
        defaultRecordData: {}
       };
       if (Ext.isString(this.activityLinkColumnNames)) {
        config.defaultRecordData[this.activityLinkColumnNames] = record;
       } else {
        for (var i = 0, ln = this.activityLinkColumnNames.length; i < ln; i++) {
         var linkColumnNameConfig = this.activityLinkColumnNames[i];
         var columnName = linkColumnNameConfig.activityColumnName;
         var columnValue = record.get(linkColumnNameConfig.parentColumnName);
         config.defaultRecordData[columnName] = columnValue;
        }
       }
       Terrasoft.util.openEditPage("Activity", config);
      }.bind(this), 500);
     }
    }.bind(this));
   },
   scope: this
  });
 },

 

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

В процессе администрирования базы данных возникла необходимость определить причину возникновения ошибки. Определенный объём информации импортируется в базу данных, с которым далее пользователи работают. В процессе заполнения определенного набора полей автоматически высчитывалась итоговая сумма в поле «Итого». Но в определённый промежуток времени использования продукта начали появляться ошибки, связанные с несоответствием значения поля «Итого» сумме полей из которых оно вычисляется («Сумма покупки», «Наценка», «Сбор» и т.д.). Так как ошибку не получалось явно повторить, необходимо было разработать механизм для решения данной проблемы.

Естественно самой реальной и первой причиной возникновения такой ошибки приходила идея о сбоях в работе событий полей окна редактирования (то есть значения в полях изменялись, а события данных полей(-я) не срабатывали).

В основу решения было положено создание двух таблиц в базе данных для ведения логов, что происходят с записью набора данных. Первая таблица WindowLog, а вторая TriggerLog.

Первая таблица WindowLog включает в себя поля «Дата создания»(CreatedOn), «Идентификатор записи» (RecordID), «Ответственный» (WindowsUser), «Имя поля породившего событие»(FieldName), «Итого» и поля из которых оно вычисляется («Сумма покупки», «Наценка», «Сбор» и т.д.). Для наполнения таблицы было использованы события невизуального компонента окна dlData: dlDataOnDatasetDataChange, dlDataOnDatasetBeforePost и dlDataOnDatasetAfterPost. В скрипте в событиях была создана функция, которая формировала SQL запрос к таблице WindowLog базы данных с фиксацией информации по указанным полям на момент срабатывания события.

Запрос:

INSERT INTO WindowLog (*набор полей*)
SELECT (*набор полей*) -- Dataset('поле1'), Dataset('поле2'), Dataset('поле2')

Вторая таблица TriggerLog включает в себя поля «Дата создания»(CreatedOn), «Идентификатор записи» (RecordID), «Состояние» (до изменения записи и после), «SystemUser», «Итого» и поля из которых оно вычисляется («Сумма покупки», «Наценка», «Сбор» и т.д.). Для заполнения данной таблицы был создан триггер на инструкцию UPDATE проблемной таблицы с двумя запросами вставки значений в таблицу. В одном запросе вставлялись значения до изменений, а во втором после.

Запрос №1:

INSERT INTO TriggerLog (*набор полей*)       
SELECT (*набор полей*)
FROM deleted

Запрос №2:

INSERT INTO TriggerLog (*набор полей*)       
SELECT (*набор полей*)
FROM inserted

Результатом использования данного решения на основе анализа таблицы WindowLog было установлено, что срабатывают все события окна редактирования, влияющие на вычисление значения поля «Итого». В процессе использования окна редактирования и после сохранения записи значения поля «Итого» были корректны.

Проанализировав записи в таблице TriggerLog было установлено, что в результате выполнения инструкции UPDATE было внесено некорректное значение. Сопоставив даты создания записей в таблице TriggerLog и WindowLog было установлено, что инструкция UPDATE была вызвана не в результате манипуляций с окном редактирования, а иным источником. На основании поля «SystemUser» таблицы TriggerLog было установлено что изменения были внесены с помощью импортера данных.

Таблицу TriggerLog возможно расширить, добавив в нее поля, которые помогут ускорить процесс обнаружение источника изменений записи базы данных. Список дополнительных полей может выгладять следующим образом: ApplicationName, LoginName, HostName.

PS: Принимаю предложения на доработку вашей конфигурации!!! Для более детальной информации можно связаться по следующему e-mail адресу: providnui@ukr.net !!!

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

Всем удачи в этом не легком процессе!!!

У меня такой же вопрос

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

есть окно редактирования(wnd_BaseDBEdit), в нем в windowcontainer окно (wnd_BaseGridArea), в этом гриде есть справочник, в котором можно выбрать значения не заходя в окно редактирования, на основании выбранного значения в справочнике, меняются остальные поля на этом гриде. Как правильно обновлять этот грид?
Если делаю просто RefreshDataset, то обновляет и через секунду закрывается с ошибкой.

У меня такой же вопрос

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

Добрый день!

Обновления с помощью RefreshDataset() должно хватить.
Какая ошибка возникает?

"Гакало Игорь Александрович" написал:

Добрый день!

Обновления с помощью RefreshDataset() должно хватить.
Какая ошибка возникает?


Версия: 3.4.0.139
Класс исключения: EOleException
Сообщение об ошибке: Разрушительный сбой

Не очень информативное сообщение.

Активируйте отладчик, посмотрите, на каком месте происходит свал:
http://www.community.terrasoft.ru/blogs/7804

делаю так:

	    RefreshDataset(Dataset);
	    debugger;

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

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

такая же ошибка выскакивает когда я в событие DataChange на изменение справочника прописал
Dataset.Post();

Не зная ряд Ваших изменений сложно сказать, где Вы допустили ошибку.

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

Добрый день!

В любом окне при попытке вывести меню добавления (перечисление возможных элементов) на вкладке "Невизуальные", вываливается ошибка (прилагаю).

Версия бинарников: 3.4.0.135

У меня такой же вопрос

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

Для устранения сбоя Вам следует обновиться до сборки 3.4.0.138

Каким образом можно получить новую версию?

Написать на support@tscrm.com с указанием вашего CustomerID и просьбой выслать бин. файлы версии 3.4.0 в англ. или русской локализацией.

Добрый день, Дмитрий!
Ошибка исправленна в сборке 138 (3.4.0.138). Спасибо АльфаКрысе за правильный совет! :smile:

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

Доброго времени суток!
Возникла проблема. Иногда при работе с разделом Контрагенты, при открытии карточки редактирования, размеры окна этой карточки становится настолько малы, что видно только часть заголовка. На сколько часто это происходит сказать не могу. С чем это может быть связано? Жду ваших мнений.

У меня такой же вопрос

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

Здравствуйте, Дмитрий.

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

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

Версия бинарников: 3.4.0.92
Сервис прилагаю.

Доброе утро.

С сервисом карточки все хорошо.
Попробуйте обновится на более новую версию бинарных файлов и протестировать работу. Ссылку на скачивание отправил Вам в личном сообщении.

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

Была поставлена задача руководством прикрепить к карточке контрагентов дополнительные поля (около 40 шт различного типа), редактирование которых было бы возможно при указании типа контрагента - "клиент".
что сделал:
создал таблицу с необходимыми полями (tbl_AddAccInfo), запрос на выборку (sq_AddAccInfo), датасет(ds_AddAccInfo).
к карточке контрагентов добавил второй датасет на странице не визуальных свойств и дополнительную область с вкладками куда разместил данные поля.
что получилось:
при открытии карточки редактирования контрагента открывается измененная карточка, однако все поля серые кроме bool data conrol`ов. Насколько я понимаю это от того, что в скрипт не добавлена инициализация второго датасета. Однако во всех примерах инициализации датасетов они прикреплены к окну как dlData, мой же прикреплен к окну контрагентов как dlAddData (так как dlData - стандартный). В связи с чем непонятно как реализовать работу с данным датасетом не сильно влезая в другие скрипты системы?
Заранее спасибо.

PS. версия системы TSXCRM 3.3.111. С реагированием на изменение типа контрагента пока не возился, хотелось бы сначала что бы просто работало, а потом уже остальные рюшечки.

У меня такой же вопрос

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

А не проще было добавить джойн в запрос sq_Account на свою табличку и оттуда выбрать нужные поля в датасете ds_Account?

"Черных Руслан" написал:А не проще было добавить джойн в запрос sq_Account на свою табличку и оттуда выбрать нужные поля в датасете ds_Account?

+1
и не бойтесь большого количества полей в таблицах, запросах и датасете:smile:

"Черных Руслан" написал:А не проще было добавить джойн в запрос sq_Account на свою табличку и оттуда выбрать нужные поля в датасете ds_Account?

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

Ну как вариант самый простой я б предложил сделать все поля как пользовательские стандартным методом.
При этом элемент fgUserFields вместе с содержимым выкинул бы на отдельную новую закладку в карточке наподобие закладки "финансы".

Здравствуйте, Сергей.

Данный функционал действительно проще всего реализовать через стандартные пользовательские поля (меню "Файл" - "Настройки" - "Пользовательские поля"), указав для этих полей тип контрагента = Клиент, и вынести их на отдельную закладку.

Инна Безверхняя,
II линия службы поддержки Terrasoft.

"Александр Кудряшов" написал:Черных Руслан пишет:
А не проще было добавить джойн в запрос sq_Account на свою табличку и оттуда выбрать нужные поля в датасете ds_Account?

+1
и не бойтесь большого количества полей в таблицах, запросах и датасете


Хм...хотя конечно 40 полей еще к датасету прикрутить...наверное много :-)

"Bezverkhnia Inna" написал:Данный функционал действительно проще всего реализовать через стандартные пользовательские поля (меню "Файл" - "Настройки" - "Пользовательские поля"), указав для этих полей тип контрагента = Клиент, и вынести их на отдельную закладку.

Спасибо за совет, был приятно удивлен тем, что пользовательские поля могут проявляться по условию.
Однако идея подобной реализации была, основным камнем преткновения стала невозможность указать в качестве источника значений для пользовательского поля иной раздел кроме справочников. Например хотелось бы прикрепить данные о ИФНС в которую сдаются отчетности какого либо контрагента, что бы при выборе этой ИНФС из списка контактов подгружались ее специалисты с контактной информацией. Наиболее полно этим требованиям отвечает уже существующая система прикрепления контактов к определенным контрагентам. Можно конечно реализовать подобное через систему справочников, однако городить лишнее не сильно хочется. Буду благодарен за описание более легкого способа реализации подобной задумки.

.

Здравствуйте, Сергей.
Учитывая описанные Вами требования к функционалу, реализовывать его нужно действительно не через пользовательские поля, а через TS Admin.
На карточке контрагента создаете все необходимые поля (для удобства и наглядности их все же лучше вынести на отдельную закладку карточки).
Данные о ИНФС можно заносить в поле типа LookupDataControl, источником данных для которого является датасет контрагентов, отфильтрованный, например, по определенному типу контрагента (Тип = Налоговая служба).
Аналогичным образом информация по специалистам этой ИНФС тоже будет заноситься в поле типа LookupDataControl, источником данных для которого является датасет контактов, отфильтрованный по контрагенту для контактов (Контрагент = ИНФС (из соответствующего поля)).

Фильтр на датасет можно накладывать на событии OnPrepareSelectWindow данного поля.

Инна Безверхняя,
II линия службы поддержки Terrasoft.

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

Доброе время суток!
У меня возникла проблема на конфигурации TSCRM 3.3.0.42
При добавлении продукта в Документе при установленной галочке "строчное" (я добавил булевкое поле строчное которое делет поле Мемо видимым в контроле МЕМО работает скрипт на подсчет слов, действие OnDatasetDataChange)если
сфокусировать другое окно происходит подвисание окна(оно постоянно мерцает) до тех пор
пока не уберешь признак(булевское) "строчное"
Спасибо

У меня такой же вопрос

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

А что в OnDatasetDataChange, можно код?
Если его закоментать, тоже виснет?

Событие OnDatasetDataChange пробывал полностью отключать - то же самое!

Здравствуйте, Роман!

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

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

Заранее благодарна Вам за помощь.
Ожидаю ответа.

Мельникова Екатерина

Войдите или зарегистрируйтесь, чтобы комментировать