Вопрос

Подскажите пожалуйста чего не хватает? 

В дизайнере страницы я добавил виджет "веб-страница". В настройках виджета одно единственное поле - веб адрес страницы. Ради теста вставил туда www.yandex.ru однако после сохранения и релогона на месте виджета отображается пустое поле, а в HTML коде на его месте написано

Нравится

2 комментария
Лучший ответ

Вот ссылки на документацию на Академию

https://academy.terrasoft.ua/documents/base/7-13/paneli-itogov?document…

https://academy.terrasoft.ua/documents/base/7-13/blok-itogov-web-strani…

Если вы все делаете так как описано на Сайте Академии то прошу прислать скриншоты Настройки "Блока Итогов Web-Страница"

Вот ссылки на документацию на Академию

https://academy.terrasoft.ua/documents/base/7-13/paneli-itogov?document…

https://academy.terrasoft.ua/documents/base/7-13/blok-itogov-web-strani…

Если вы все делаете так как описано на Сайте Академии то прошу прислать скриншоты Настройки "Блока Итогов Web-Страница"

Власов Михаил Викторович,

 более менее разобрался. BPM таким образом блочит все внешние ресурсы. Типа он лучше меня знает что опасно, а что нет. Внутри доверенных доменов - все открывается.

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

Возникла проблема, нужно работать с файлом экселя, использую библиотеку Microsoft.Office.Interop.Excel, запихнул ее во внешние сборки, подключил в методах БПМ. и в задании сценарии на строке

Excel.Application xlApp = new Excel.Application();

выбивает ошибку:

System.IO.FileNotFoundException: Не удалось загрузить файл или сборку "office, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" либо одну из их зависимостей. Не удается найти указанный файл.

Имя файла: 'office, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'

   в Terrasoft.Core.Process.WisCreateKPMethodsWrapper.ScriptTask1Execute(ProcessExecutingContext context)

   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

WRN: Assembly binding logging is turned OFF.

To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.

Note: There is some performance penalty associated with assembly bind failure logging.

To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

 

Нравится

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

Приветствую

советую посмотреть и скачать на данном сайте библиотеки NetOffice https://osdn.net/projects/netoffice/ . Я сам с помощью данных библиотек не одну задачу решал. И вся документация понятна и есть Темплейты разобранные на Кейсах. Скачиваем, ставим библиотеки и пользуемся в своих проектах.

Вот ссылка на проект на ГитХабе https://github.com/NetOfficeFw/NetOffice

Установил вод, ошибка изменилась на следующую:

System.Runtime.InteropServices.COMException (0x800A03EC): Приложению Microsoft Excel не удается получить доступ к файлу "E:\BPMReport\636790185921323443.xlsx". Это может быть вызвано одной из следующих причин.

• Указан несуществующий файл или путь.

• Файл используется другой программой.

• Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.

   в Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)

   в Terrasoft.Core.Process.WisCreateKPMethodsWrapper.ScriptTask1Execute(ProcessExecutingContext context)

   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

Файл существует, вот код:

var userConnection = Get<UserConnection>("UserConnection");
MemoryStream ms = new MemoryStream((
				new Select(userConnection).Top(1).Column("Data")
				.From("KnowledgeBaseFile")
				.Where("KnowledgeBaseId").IsEqual(Column.Parameter("302eeb80-7559-4fcd-8827-833d94fa78e6"))as Select).ExecuteScalar<byte[]>());
string FileName = "E:\\BPMReport\\" + DateTime.Now.Ticks.ToString() + ".xlsx";
            FileStream fs = new FileStream(FileName, FileMode.Create, FileAccess.Write);
            byte[] bytes = new byte[ms.Length];
            ms.Read(bytes, 0, (int)ms.Length);
            fs.Write(bytes, 0, bytes.Length);
            fs.Close();
 
object m = Type.Missing;
Application xlApp = new Application();

 

Радчук Виталий Владимирович,

А у IIS-пользователя есть доступ на запись в E:/BPMReport ??

может кто налетит на эту проблему, вот решение, должна быть папка 

C:\Windows\SysWOW64\config\systemprofile\Desktop

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

Подскажите пожалуйста в чем проблема и кк ее решить. Я настроил по инструкции Visual Studio, выгрузил проект, запустил на компиляцию. В итоге - 250 ошибок следующего содержания (например) :

Ошибка    CS0121    Неоднозначный вызов следующих методов или свойств: 'Terrasoft.Configuration.ExchangeUtility.IsEmpty(Microsoft.Exchange.WebServices.Data.PhysicalAddressEntry)" и "Terrasoft.Configuration.ExchangeUtility.IsEmpty(Microsoft.Exchange.WebServices.Data.PhysicalAddressEntry)"    Terrasoft.Configuration.Dev    C:\wwwroot\DEV\Terrasoft.WebApp\Terrasoft.Configuration\Autogenerated\Src\ExchangeContactSyncProvider.Exchange_Entity.cs

Нравится

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

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

Литвинко Павел,

Это не мои методы я еще ничего не писал. Это ругается на базовые методы самого Террасофта. 11 ошибок такого рода я смог исправить в ручную (когда забыли подставить Terrasoft вместо System например), в оставшихся типа вышеприведенного примера непонятно чего подставлять потому что в качестве конфликтных он пишет два идентичных навания

Terrasoft.Configuration.ExchangeUtility.IsEmpty(Microsoft.Exchange.WebServices.Data.PhysicalAddressEntry)

BVG,

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

Обратите внимание, что при разработке в студии компилировать нужно не стандартной кнопкой, а особой командой, которую перед этим нужно создать. Если так и делали, нужно смотреть подробнее, что и как настроили.

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

Всем привет!

Проблема заключается в том что следуя инструкции "https://academy.terrasoft.ru/documents/technic-sdk/7-12/sozdanie-detali-s-vyborom-iz-spravochnika" появляется ошибка при попытки добавить элементы из справочника:

Изображение удалено.

Кто знает как решить проблему?

Объект детали "UsrProductsAndITStuff" имеют 2 lookup:

Title:       Productu Categorija и Product

Name:    UsrProductcategory и UsrDarbopriemones

Lookup:  Product category     и Product

Код: 

// Определение схемы и установка ее зависимостей от других модулей.
define("UsrSchema24Detail", ["ConfigurationEnums"],
    function(configurationEnums) {
        return {
            // Название схемы объекта детали.
            entitySchemaName: "UsrProductsAndITstuff",
            // Методы схемы детали.
            methods: {
                //Возвращает колонки, которые выбираются запросом.
                getGridDataColumns: function() {
                    return {
                        "Id": {path: "Id"},
                        "Product": {path: "UsrDarbopriemones"},
                        "Product.Name": {path: "UsrDarbopriemones.Name"}
                    };
                },
 
                //Конфигурирует и отображает модальное окно справочника.
                openDocumentLookup: function() {
                    //Конфигурационный объект
                    var config = {
                        // Название схемы объекта, записи которого будут отображены в справочнике.
                        entitySchemaName: "Product",
                        // Возможность множественного выбора.
                        multiSelect: true,
                        // Колонки, которые будут использованы в справочнике, например, для сортировки.
                        columns: ["Name", "Code", "Type", "Color"]
                    };
                    var ProductCategoryId = this.get("MasterRecordId");
                    if (this.Ext.isEmpty(ProductCategoryId)) {
                        return;
                    }
                    // Экземпляр класса [EntitySchemaQuery].
                    var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
                        // Установка корневой схемы.
                        rootSchemaName: this.entitySchemaName
                    });
 
 
                    // Добавление колонки [Id].
                    esq.addColumn("Id");
                    // Добавление колонки [Id] из схемы [darbo priemones].
                    esq.addColumn("Product.Id", "ProductId");
 
                    // Создание и добавление фильтров в коллекцию запроса.
                    esq.filters.add("filterProductCategory", this.Terrasoft.createColumnFilterWithParameter(
                        this.Terrasoft.ComparisonType.EQUAL, "UsrProductcategory", ProductCategoryId)); 
 
                    // Получение всей коллекции записей и отображение ее в модальном окне справочника.
                    esq.getEntityCollection(function(result) {
                        var existsDocumentsCollection = [];
                        if (result.success) {
                            result.collection.each(function(item) {
                                existsDocumentsCollection.push(item.get("ProductId"));
                            });
                        }
                        // Добавление фильтра в конфигурационный объект.
                        if (existsDocumentsCollection.length > 0) {
                            var existsFilter = this.Terrasoft.createColumnInFilterWithParameters("Id",
                                existsDocumentsCollection);
                            existsFilter.comparisonType = this.Terrasoft.ComparisonType.NOT_EQUAL;
                            existsFilter.Name = "existsFilter";
                            config.filters = existsFilter;
                        }
                        // Вызов модального окна справочника
                        this.openLookup(config, this.addCallBack, this);
                    }, this);
                },
 
                // Обработчик события сохранения страницы редактирования.
                onCardSaved: function() {
                    this.openDocumentLookup();
                },
 
                //Открывает справочник документов в случае если страница редактирования заказа была ранее сохранена.
                addRecord: function() {
                    var masterCardState = this.sandbox.publish("GetCardState", null, [this.sandbox.id]);
                    var isNewRecord = (masterCardState.state === configurationEnums.CardStateV2.ADD ||
                    masterCardState.state === configurationEnums.CardStateV2.COPY);
                    if (isNewRecord === true) {
                        var args = {
                            isSilent: true,
                            messageTags: [this.sandbox.id]
                        };
                        this.sandbox.publish("SaveRecord", args, [this.sandbox.id]);
                        return;
                    }
                    this.openDocumentLookup();
                },
 
 
 
                // Добавление выбранных продуктов.
                addCallBack: function(args) {
                    // Экземпляр класса пакетного запроса BatchQuery.
                    var bq = this.Ext.create("Terrasoft.BatchQuery");
                    var ProductCategoryId = this.get("MasterRecordId");
                    // Коллекция выбранных в справочнике документов.
                    this.selectedRows = args.selectedRows.getItems();
                    // Коллекция, передаваемая в запрос.
                    this.selectedItems = [];
                    // Копирование необходимых данных.
                    this.selectedRows.forEach(function(item) {
                        item.ProductCategoryId = ProductCategoryId;
                        item.ProductId = item.value;
                        bq.add(this.getDocumentInsertQuery(item));
                        this.selectedItems.push(item.value);
                    }, this);
                    // Выполнение пакетного запроса, если он не пустой.
                    if (bq.queries.length) {
                        this.showBodyMask.call(this);
                        bq.execute(this.onDocumentInsert, this);
                    }
                },
 
                //Возвращает запрос на добавление текущего объекта.
                getDocumentInsertQuery: function(item) {
                    var insert = Ext.create("Terrasoft.InsertQuery", {
                        rootSchemaName: this.entitySchemaName
                    });
                    insert.setParameterValue("UsrProductcategory", item.ProductCategoryId, this.Terrasoft.DataValueType.GUID);
                    insert.setParameterValue("UsrDarbopriemones", item.ProductId, this.Terrasoft.DataValueType.GUID);
                    return insert;
                },
 
                //Метод, вызываемый при добавлении записей в реестр детали.
                onDocumentInsert: function(response) {
                    this.hideBodyMask.call(this);
                    this.beforeLoadGridData();
                    var filterCollection = [];
                    response.queryResults.forEach(function(item) {
                        filterCollection.push(item.id);
                    });
                    var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
                        rootSchemaName: this.entitySchemaName
                    });
                    this.initQueryColumns(esq);
                    esq.filters.add("recordId", Terrasoft.createColumnInFilterWithParameters("Id", filterCollection));
                    esq.getEntityCollection(function(response) {
                        this.afterLoadGridData();
                        if (response.success) {
                            var responseCollection = response.collection;
                            this.prepareResponseCollection(responseCollection);
                            this.getGridData().loadAll(responseCollection);
                        }
                    }, this);
                },
 
                // Метод, вызываемый при удалении выбранных записей детали.
                deleteRecords: function() {
                    var selectedRows = this.getSelectedItems();
                    if (selectedRows.length > 0) {
                        this.set("SelectedRows", selectedRows);
                        this.callParent(arguments);
                    }
                },
 
                // Скрыть пункт меню [Копировать].
                getCopyRecordMenuItem: Terrasoft.emptyFn,
                 // Скрыть пункт меню [Изменить].
                getEditRecordMenuItem: Terrasoft.emptyFn,
                // Возвращает имя колонки по умолчанию для фильтра.
                getFilterDefaultColumnName: function() {
                    return "UsrDarbopriemones";
                }
            },
            // Массив модификаций.
            diff: /**SCHEMA_DIFF*/[
                {
                    // Тип операции — слияние.
                    "operation": "merge",
                    // Название элемента схемы, над которым производится действие.
                    "name": "DataGrid",
                    // Объект, свойства которого будут объединены со свойствами элемента схемы.
                    "values": {
                        "rowDataItemMarkerColumnName": "UsrDarbopriemones"
                    }
                },
                {
                    // Тип операции — слияние.
                    "operation": "merge",
                    // Название элемента схемы, над которым производится действие.
                    "name": "AddRecordButton",
                    // Объект, свойства которого будут объединены со свойствами элемента схемы.
                    "values": {
                        "visible": {"bindTo": "getToolsVisible"}
                    }
                }
            ]/**SCHEMA_DIFF*/
        };
    }
);

 

Нравится

8 комментариев
Лучший ответ

Eduardas,

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

Если Вы используете SQL Server, то посмотреть запросы, которые идут в базу данных можно с помощью приложения SQL Server Profiler.

Рекомендую Вам все-таки воспользоваться советом Данилы и отладиться на клиенте.

Скорее всего валится onDocumentInsert. Надо встать дебаггером, посмотреть что в response приходит (думаю ошибка от вставки в бд)

Если SQLException, то нужно смотреть в профайлере, какие запросы идут в базу. Может, вставка в записи колонки с неправильным именем или значением.

Подскажите как проверить какие запросы идут в базу? 

Eduardas,

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

Если Вы используете SQL Server, то посмотреть запросы, которые идут в базу данных можно с помощью приложения SQL Server Profiler.

Рекомендую Вам все-таки воспользоваться советом Данилы и отладиться на клиенте.

Профайлером. См. статью. Но это только для случая, если система развёрнута on site.

Варфоломеев Данила пишет:

Скорее всего валится onDocumentInsert. Надо встать дебаггером, посмотреть что в response приходит (думаю ошибка от вставки в бд)

Как мне это проверить?  

Зверев Александр пишет:

Профайлером. См. статью. Но это только для случая, если система развёрнута on site.

Спасибо, пойду знакомится со статьей

Eduardas пишет:

Варфоломеев Данила пишет:Скорее всего валится onDocumentInsert. Надо встать дебаггером, посмотреть что в response приходит (думаю ошибка от вставки в бд)Как мне это проверить?  

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

Добрый день

 

Вопрос первый что не спросили до меня Коллеги

в таблице UsrProductsAndITstuff

есть или нет поля Product, Product.Name 

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

getGridDataColumns: function() {

   return {

      "Id": {path: "Id"},

      "UsrDarbopriemones": {path: "UsrDarbopriemones"},

      "UsrDarbopriemones.Name": {path: "UsrDarbopriemones.Name"}

   };

},

так же и в методе openDocumentLookup описывается что для таблицы UsrProductsAndITstuff есть поля Product.Id

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

потом в методе addCallBack идет присвоение значения колонкам ProductCategoryId, ProductId здесь тоже или явная ошибка или я не нашел

определения для ГРИДА данных колонок.

Чтобы все корректно работало, все колонги ГРИДА должны сначала правильно проинициализированы а уже только потом мы их обрабатываем

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

Ситуация следующая: есть бизнес-процесс, который срабатывает при создании обращений или изменении любого поля. Я создал на его основе новую версию и сделал ее актуальной, чуть позже удалил ее за ненадобностью через конфигурацию.

Теперь, как я понимаю, при изменении обращения система пытается запустить новую версию процесса.

Изображение удалено.

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

Подскажите пожалуйста, как решить вышеописанную ошибку, в какие таблицы БД смотреть.

Пытался скомпилировать все объекты в конфигурации, что-бы обновились схемы - не помогло.

Ближайшая подобная тема: https://community.terrasoft.ru/articles/v-processe-polucenia-sistemnyh-… (sql запрос не дал результатов);

 

UPD. Решение оказалось проще, чем я думал - нужно еще раз создать бизнес-процесс, заменить актуальную версию на базовый процесс и потом удалить дочерний.

Нравится

1 комментарий
Лучший ответ

Добрый день.

для того чтобы вам Отследить какой Бизнес-процесс запускается и что с ним происходит советую вам Воспользоваться "Журналом бизнес-процессов" по времени Сохранения Обращения найти все БП что исполнялись в данный период времени, найти БП что отработал с ошибкой, и посмотреть на каком Элементе БП остановился процесс и посмотреть ошибку. 

Журнал бизнес-процессов это позволяет сделать.

Добрый день.

для того чтобы вам Отследить какой Бизнес-процесс запускается и что с ним происходит советую вам Воспользоваться "Журналом бизнес-процессов" по времени Сохранения Обращения найти все БП что исполнялись в данный период времени, найти БП что отработал с ошибкой, и посмотреть на каком Элементе БП остановился процесс и посмотреть ошибку. 

Журнал бизнес-процессов это позволяет сделать.

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

Добрый день!

Не совсем понятно как выглядит процесс разработки в файловой системе. Файлы должны храниться на сервере или их можно перенести на клиентский компьютер? Можно ли для файловой разработки использовать IIS Express на клиентском компьютере? Подскажите, пожалуйста, как вы выполняете разработку в файловом режиме. 

Нравится

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

Как по мне так лучший вариант, это разворачиваете локально копию рабочей системы, включаете режим разработки в файловой системе, подключаете Git/Svn (для себя), создаете новый пакет и работаете.

Затем, переносите пакет на прод.

См. большую серию статей «Разработка в файловой системе».

По поводу IIS Express, судя по примечанию ниже, поддержка есть:

Название рабочего процесса может различаться в зависимости от конфигурации используемого сервера IIS. Так, для полнофункционального IIS процесс называется w3wp.exe, для IIS Express — iisexpress.exe.

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

Коллеги всем доброго времени суток.

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

Нравится

2 комментария
Лучший ответ

Добрый день, да возможно для этого к вашему пакету необходимо прикрепить данные из таблиц и можете связанные сущности по необходимости смотреть

VwWorkspaceObjects (Объекты рабочего пространства (представление))

SysAdminOperation (Operation permissions, если надо)

SysAdminOperationGrantee (Доступ к operation permissions, если надо)

SysEntitySchemaOperationRight (Доступ к объектам)

SysEntitySchemaRecordDefRight (Доступ к записям по умолчанию)

SysEntitySchemaRecordRight (Доступ пользователей к операциям над объектом)



SysAdminUnit(Объект администрирования) и тд. 



так же можете в конфигурации системы найти схемы объектов с словом "Доступ", может быть что-то упустил 

Добрый день, да возможно для этого к вашему пакету необходимо прикрепить данные из таблиц и можете связанные сущности по необходимости смотреть

VwWorkspaceObjects (Объекты рабочего пространства (представление))

SysAdminOperation (Operation permissions, если надо)

SysAdminOperationGrantee (Доступ к operation permissions, если надо)

SysEntitySchemaOperationRight (Доступ к объектам)

SysEntitySchemaRecordDefRight (Доступ к записям по умолчанию)

SysEntitySchemaRecordRight (Доступ пользователей к операциям над объектом)



SysAdminUnit(Объект администрирования) и тд. 



так же можете в конфигурации системы найти схемы объектов с словом "Доступ", может быть что-то упустил 

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

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

Подскажите, пожалуйста, как в версии 7.13.0 включить SeparatedJsFiles.

поскольку добавление  в файл внутреннего web.config ключа

не дало результата. 

Спасибо!

 

Нравится

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

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

Либо же после смены настроек нужны ещё перезапуск/чистка Redis/перекомпиляция.

Зверев Александр,

Результата нету. Дайте, пожалуйста, ответ на вопрос

См. инструкцию. Без дополнительной информации с Вашей стороны сложно сказать, что не учли.

Зверев Александр,

Подробная информация

1) получил бекап

2) Скачал новые исходники на 7.13.0

3) развернул сайт 

 

4) дописал в web.config.

5) всё заработало.

Зверев Александр,

задумка хороша, но нет)

Видимо, дописали не то или не там, или же не откомпилировали или не очистили redis после. Без подробной информации сложно сказать.

Плюс есть ещё одна похожая по смыслу опция UseIncludeDependenciesSource, может, вы хотели включить её?

Зверев Александр,

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

Добавьте в нужную секцию appSettings.

Зверев Александр,

Выше писал, что добавил. 

часть кода с внутреннего конфига

<appSettings>

    <add key="SeparatedJsFiles" value="true" />

    <add key="UseIncludeDependenciesSource" value="false" />

Да, теперь будет раздельно. Не забудьте очистить кэш браузера.

Зверев Александр,

Результата нету. Об этом писал 4 сообщения назад. 

Возможно, Вы меняете настройки одного сайта, а смотрите на другом.

yura.makarchuk,

точно в том web.config добавил?

Покажите Коллеги уже человеку в виде скриншота, куда и как добавить и все я думаю будет человеку понятно

Коллеги, человек доходчиво все описал в своём посте, подтверждаю проблему. Ключ не работает в 7.13

Да, Вы с автором темы правы, в 7.12.4 параметр работает, а в 7.13.1 — нет. Предположительно, вернут в 7.13.3.

Добрый день, коллеги. 

Версия, 7.13.3. Ключ не работает. Подскажите, как можно исправить это, вызывает трудности при разработке.

Такой возможности в нынешних версиях нет, минимум пару месяцев ситуация будет такой же.

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

Появилась потребность расширить таблицу Прайс-лист, добавив колонку с типом дата. Но обнаружилось что стоит проверка (и не одна) на дублирование записей. Первую проверку, так чтобы она учитывала новую колонку, изменить удалось (она находится на странице редактирования детали). Но осталась еще одна (а может и больше) проверка до которой не могу добраться. Вот такое сообщение она выдает -"Дублирующиеся данные в объекте ProductPrice". Подскажите, пожалуйста, где эта проверка находится и как ее можно изменить. Спасибо.

Нравится

13 комментариев
Лучший ответ

Стандартно в разделе «Правила поиска дублей» есть только правила по контактам, контрагентам и лидам. Открывать этот раздел можно  в блоке ссылок «Настройка системы» из окна дизайнера системы.

Возможно, у Вас что-то ещё настроено или это отдельная логика, не связанная с этим механизмом.

Правила поиска дублей можете посмотреть в базе выполнив данные запросы

select * from DuplicatesRule as dr where dr.ObjectId=(SELECT TOP 1 SysSchema.UId FROM SysSchema

WHERE SysSchema.Name = 'ProductPrice' AND SysSchema.ExtendParent = 0)

- для правил поиска дублей в цене продукта



select * from DuplicatesRule as dr where dr.ObjectId=(SELECT TOP 1 SysSchema.UId FROM SysSchema

WHERE SysSchema.Name = 'Pricelist' AND SysSchema.ExtendParent = 0)

- для правила поиска дублей в Прайс-листе

И посмотрите на ваши новые колонки у них должен быть признак "Выполнять копирование", от так же может влиять на правило

К сожалению данные запросы ни чего не возвращают.

Комментарий удален, чтобы не вводить пользователей в заблуждение 

До этого не была установлена. Сейчас поставил, опубликовал, выполнил запрос к базе - ни чего нет. Так же не нашел описания этой галочки.

Руслан Хасанов,

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

Тогда я не совсем понимаю назначение этой галочки. За уникальность записей отвечает, если я правильно понимаю, поле "Id". Строка в любом случае будет уникальной, зачем эта опция?

Вот свойства колонки.

Запросы ни чего не возвращают. 

Галочка «выполнять копирование» совсем для другого, при нажатии кнопки копирования в разделе в новую запись попадают из старой только значения помеченных ею полей. Уникальность значения она никак не проверяет.

Спасибо, Александр, за уточнение, стало более понятно зачем нужна эта галочка. А что по поводу проверки на дублирование записей при добавлении цены? Где ее можно найти и изменить чтобы принималось во внимание поле "Дата начала действия цены"?

Стандартно в разделе «Правила поиска дублей» есть только правила по контактам, контрагентам и лидам. Открывать этот раздел можно  в блоке ссылок «Настройка системы» из окна дизайнера системы.

Возможно, у Вас что-то ещё настроено или это отдельная логика, не связанная с этим механизмом.

Да, какая то отдельная логика, видимо на странице. Буду искать дальше.

Попробуйте в разделе переводов поискать этот текст «Дублирующиеся данные в объекте», обрамлённый символами процента. Если что-то найдётся, можно будет увидеть английское название переменной, по которому искать по исходникам C# и JS-схем. У меня, правда, ничего не нашлось.

Вы имеете ввиду таблицу SysDuplicatesRuleLcz? У меня тоже ни чего не нашлось. Интересно а поиск по тексту схем можно как то произвести?

Имею в виду пользовательскими средствами, раздел «Переводы». Там должны быть строки из всех мест конфигурации.

А поиск по тексту схем можно вести через базу, по полю Content в SysSchemaContent для JS и Source в SysSchemaSource для C#.

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

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

Нужна помощь.

Есть код обработчик:

 

diff:[
			{
				"operation": "insert",
				"name": "AltNoInformationInterestd2e10eaa-14f7-4005-96b9-78145978b4f2",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 0,
						"layoutName": "GeneralInfoTabGridLayout8576b06a"
					},
					"labelConfig": {},
					"enabled": true,
					"bindTo": "AltNoInformationInterest",
					"controlConfig": {
						"checkedchanged": {
							"bindTo": "onInterestCheked"
						}
					}
				},
				"parentName": "GeneralInfoTabGridLayout8576b06a",
				"propertyName": "items",
				"index": 0
			},
			{
				"operation": "insert",
				"name": "AltAbsentInterestb586a604-e240-48b6-ba46-2889721a98cf",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 1,
						"layoutName": "GeneralInfoTabGridLayout8576b06a"
					},
					"labelConfig": {},
					"enabled": true,
					"bindTo": "AltAbsentInterest",
					"controlConfig": {
						"checkedchanged": {
							"bindTo": "onInterestCheked"
						}
					}
				},
				"parentName": "GeneralInfoTabGridLayout8576b06a",
				"propertyName": "items",
				"index": 1
			},
			{
				"operation": "insert",
				"name": "AltHaveInterest8b3652ac-d60d-4562-a1a5-e28a28cbce58",
				"values": {
					"layout": {
						"colSpan": 24,
						"rowSpan": 1,
						"column": 0,
						"row": 2,
						"layoutName": "GeneralInfoTabGridLayout8576b06a"
					},
					"labelConfig": {},
					"enabled": true,
					"bindTo": "AltHaveInterest",
					"controlConfig": {
						"checkedchanged": {
							"bindTo": "onInterestCheked"
						}
					}
				},
				"parentName": "GeneralInfoTabGridLayout8576b06a",
				"propertyName": "items",
				"index": 2
			},
],
methods: {
onInterestCheked : function() {
				debugger;
				//var event = window.event;
				if(event) {
					if(event.currentTarget.toString() != "[object XMLHttpRequest]")
					{
						if(this.get("AltNoInformationInterest")  == false 
							&& event.currentTarget.id.indexOf("AltNoInformationInterest") >= 0)
						{
							this.set("AltNoInformationInterest", true);
							this.set("AltAbsentInterest", false);
							this.set("AltHaveInterest", false);
						}
 
						if(this.get("AltAbsentInterest") == false && event.currentTarget.id.indexOf("AltAbsentInterest") >= 0)
						{
							this.set("AltAbsentInterest", true);
							this.set("AltNoInformationInterest", false);
							this.set("AltHaveInterest", false);
						}
 
						if(this.get("AltHaveInterest") == false  && event.currentTarget.id.indexOf("AltHaveInterest") >= 0)
						{
							this.set("AltHaveInterest", true);
							this.set("AltAbsentInterest", false);
							this.set("AltNoInformationInterest", false);
						}
					}
				} 
				else {
					console.log("");
				}
			},
}

В хроме работает отлично, но в FireFox ругается на event. т.к. не определено и не отображало часть контента карточки.

определил event:

var event = window.event;

ошибку перестало бить но метод перестал корректно работать:

Chrome: http://prntscr.com/lkanf6

Firefox: http://prntscr.com/lkaoau

Кто нибудь сталкивался с подобным? И как с этим бороться?

Заранее благодарен.

Нравится

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

Можно попробовать для каждого типа браузеров определить логику, получив браузер



var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);

var isSafari = /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);

 

Проще проверять на null значение event и если да — применять то или иное обходное решение.

WebKit follows IE's old behavior of using a global symbol for "event", but Firefox doesn't. When you're using jQuery, that library normalizes the behavior and ensures that your event handlers are passed the event parameter.

Вопрос с этой особенностью Firefox рассматривается во многих местах, см. ссылки: 1, 2, 3, 4, 5.

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