Всем доброго времени суток!

Подскажите как можно передать в карточку редактирования нового заказа некоторых параметров - 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 воспроизводится данная проблема. А также пришлите, пожалуйста, сервисы или коды, которые Вы изменяли для реализации необходимого Вам функционала.

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

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

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

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