Импорт данных из Excel является стандартной функцией, но иногда могут возникнуть сложности. Зачастую, причина может быть в подготовке шаблона для импорта.
Файл подготовлен для импорта, заполнены все обязательны поля, но записи не импортируются:

/system/files/_1__8.png

Для диагностики причины воспользуйтесь журналом импорта. Рекомендуем для быстрого анализа лога импорта в окне настроек перед импортом включать опцию «Записывать в журнал только ошибки».
Откройте журнал импорта:

/system/files/_2__5.png

/system/files/_3__1.png

Воспользуйтесь подсказками ниже для диагностики ошибок:

  1. Тест ошибки содержит уведомление «Conversion failed when converting the nvarchar value ‘***’ to data type bit.». Ошибку вызвало некорректное заполнение логического поля в шаблоне для импорта данных, например поля [Контак подтвержден] на странице контакта. Поле содержит недопустимое значение «***» поля с типом данных логическое, которое может принимать два возможных значения TRUE или FALSE.
  2. Текст ошибки содержит уведомление «Not a legal OleAut date.». Ошибку вызвало некорректное заполнение поля с типом дата/время в шаблоне для импорта данных, например поля [Дата регистрации] на странице обращения. В шаблоне для импорта формат данной ячейки в Excel установлен = «Дата», а в шаблоне для импорта формат всех ячеек должен быть текстовый. Измените формат и импорт завершится успешно.

Нравится

Поделиться

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

Добрый день! При импорте отчетов в excel 2013 возникает ошибка (файлы во вложении).

Нравится

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

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

Сервисы scr_MSOfficeConsts и scr_UserReportCommon отредактированы, ошибка не исчезла=(
Такая ошибка возникает не у всех пользователей с office2013

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

Здравствуйте, Олеся.

Также попробуйте обновить бинарные файлы до последней версии.

Получить актуальные бинарные файлы Вы можете по запросу в техническую поддержку, сделав запрос нам на почту: support@terrasoft.ru

Предварительно почистите папку с временными файлами приложения: %appdata%\Terrasoft\3.3.2\Cache

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

Под учетной записью Администратора (Supervisor) не видно кнопки экспорта в Excel. Перерыл все настройки - не нашел.

Нравится

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

Здравствуйте, Игорь!

Проверьте, пожалуйста, что на ПК установлен MS Excel.

Добрый день, Сергей.

Спасибо, Excel был установлен. Версия 2013.

Игорь, внесите в конфигурацию эти изменения.

Наталия, добрый день.
Для эксель 2013 нужна новая версия, поставил офис 2010, кнопок не появилось...

Здравствуйте, Игорь!

Девайте попробуем локализировать проблему:

1) Данная проблема воспроизводится только на одной машине? То есть если зайти под Supervisor на другом ПК та же ситуация?
2) В системных настройках есть настройка "GridCanExport", если она активирована пользователи могут выгружать данные?
3) Настроена ли интеграция Terrasoft и MS Office? В корневой папке, где лежат бинарные файлы, есть приложение TSMSOfficeConfig, проверьте установлены ли чекбоксы интеграции.
4) Если на другой машине можно экспортировать данные, то необходимо смотреть в сторону локальной среды. Тогда следует проверить пункт №3

Добрый день, Сергей.

Спасибо за развернутый ответ! Проблему удалось решить. убиранием и просталением заново "GridCanExport".

Игорь, описание как добавить в реестр колонку есть здесь.

Наталия, спасибо!

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

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

Столкнулся с проблемой: заказчику необходим Excel-отчет. Отчет готов, но в его шапке необходимо разместить логотип компании. Само изображение считывается из БД, записывается в stream примерно вот так:

var ImageStream = new ActiveXObject('ADODB.Stream');
ImageStream.Open();
Image.SaveToStream(ImageStream);

И теперь самое главное, каким образом поместить изображение в WorkBook.ActiveSheet? Находил способы считывания файла с ФС, но это накладывает свои неудобства - не у всех есть какая либо папка, или может быть закрыт доступ к ней.

Нравится

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

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.

Здравствуйте, напрямую поместить изображение в WorkBook.ActiveSheet из БД возможности нет. Вариант решения - сохранять файл изображения во временную папку, а затем, использовать его.

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

День добрый.
Почему-то пропала возможность добавления и редактирования Excel-шаблонов в отчетах.

шаблон

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

Спасибо.

Нравится

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

для отчетов Excel не нужен шаблон - файл формируется на основе настроек, сохраненных в дизайнере

Либо ставить дополнение. Но, сразу оговорюсь, что это не официальное дополнение, и как следствие не поддерживается (на свой страх и риск).

" Андросов Дмитрий" написал:для отчетов Excel не нужен шаблон - файл формируется на основе настроек, сохраненных в дизайнере

Немного дополню: в коробочной логике (как в предыдущих версиях, так и в текущих) - отчеты MS Excel создаются без шаблона (в отличие от отчетов MS Word).
Создание отчета сводится к:
- формированию пользовательского запроса, на основании которого будет строится отчет;
- регистрации отчета в разделе [Отчеты].

Здравствуйте, Денис!

Увы, не отображается Ваш скриншот.

Но Дмитрий Андросов правду говорит - шаблон для отчета Excel не нужен.

Денис, также я отправил Вам на почту последнюю версию исполняемых файлов (3.3.2.310), т.к. текущая Ваша версия является весьма устаревшей (3.3.2.47).
Если какие-то ошибки возникают, прошу очистить папку Cache (%appdata%\Terrasoft\3.3.2\Cache) и запустить TSClient.exe из новых бинарных файлов от имени администратора, после чего проверить актуальность ошибки.

P.S. На почту Вам пришла ссылка на файл 3.3.2.210, но внутри 310 версия (опечатался в названии архива).

Разобрался, спасибо всем отписавшимся, видимо, я не совсем правильно понял то, что написано в документации :smile:

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

при попытке сформировать отчет excel выскакивает ошибка в строке
var Excel = GetExcelObject();

ошибка:
GetExcelObject() Индекс выходит за пределы допустимого диапазона

офис 2013, клиент 3.4.1.84
раньше отчет формировался нормально
на 2010 офисе работает нормально

Нравится

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

Официальная поддержка интеграции Terrasoft с MS Office 2013 появилась начиная с версии 3.5
Чтобы присутствовала интеграция с MS Office 2013 в версиях ниже, необходимо открыть сервис scr_MSOfficeConsts и расширить константу SupportedMSOfficeVersionArray следующим образом:

var SupportedMSOfficeVersionArray = 
        new Array('15.0', '14.0', '12.0', '11.0', '10.0', '9.0');

не помогло
а как перейти на 3,5 ?

Добрый день!

Для перехода с версии Terrasoft 3.4.1 на 3.5.0 необходимо применить пакет перехода.
Для подготовки пакета перехода напишите соответствующий запрос с Вашего корпоративного e-mail в службу поддержки support@terrasoft.ru
Также, возможность данного перехода Вам необходимо согласовать с Вашим ответственным менеджером, т.к есть разница в стоимости лицензий.
Относительно ошибки при интеграции с MS Office 2013, предлагаю провести сеанс удаленного подключения.

а где можно почитать про отличия 3,5 ?

а кроме удаленного подключения какие есть варианты?

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

Что касается ошибки, предполагаю, дело в том, что Microsoft Excel 2013 по умолчанию содержит один лист, в отличии от предыдущих версий.
Поэтому нужно в функции function GetExcelObject() сервиса scr_UserReportCommon закомментировать строки:
Excel.Sheets(2).Delete();
Excel.Sheets(2).Delete();

ошибка ушла
спасибо

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

Как то можно повлиять на выгрузку в Excel из DataGrid? Не устраивает как даты выгружаются, хотелось бы дописать логику выгрузки. Еще есть необходимость проставлять типы ячеек.

Нравится

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

Здравствуйте, Михаил Евгеньевич!

Механизм экспорта записей из реестра в MS Excel реализован на уровне ядра приложения Terrasoft.

В связи с этим, возможности внести конфигурационные изменения в него нет.

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

Здравствуйте, меня интересует или есть возможность создавать excel отчеты в BPMOnline 5.4 ?
(Печатные формы и последующую конвертацию в excel не предлагать, в силу того что там изначально нарушено форматирование).
Имееться в виду возможность в скрипте описать файл или какимто другим способом.
Пробывал использовать csv файлы, но в них нельзя применять форматирование и обьеденение строк.

Нравится

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

Здравствуйте, Игорь!
Да, есть возможность сделать такую доработку.
Вам нужно использовать Open XML SDK.
Для использования нужно просто подключить namespace DocumentFormat.OpenXml:

Вот конкретный пример использования:
здесь формируется .xlsx файл с колонками объекта, выбранного в lookup-поле

Page.BaseMessagePanel.Clear();
if (string.IsNullOrEmpty(SchemaName)) {
	Page.BaseMessagePanel.AddMessage(WarrningMessage, UnableSelectObjectMessage, MessageType.Warning, true);
	return true;
}
Page.Response.ClearHeaders();
Page.Response.ClearContent();
string fileName = SchemaName;
var instance = UserConnection.EntitySchemaManager.GetInstanceByUId(SchemaId);
if (instance != null) {
	fileName = instance.Caption.ToString();
}
Page.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Page.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName + ".xlsx");
 
List<double> columnWidthsList = new List<double>();
using (MemoryStream stream = new MemoryStream()) {
	using(SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook)) {
		// Add a WorkbookPart to the document.
        var workbookpart = spreadsheetDocument.AddWorkbookPart();
        workbookpart.Workbook = new OpenXmlSpreadsheet.Workbook();
 
        // Add a WorksheetPart to the WorkbookPart.
        var worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
        var workbookStylesPart = workbookpart.AddNewPart<WorkbookStylesPart>(); 
		worksheetPart.Worksheet = new OpenXmlSpreadsheet.Worksheet(new OpenXmlSpreadsheet.SheetData());
 
        // Add Sheets to the Workbook.
        OpenXmlSpreadsheet.Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild<OpenXmlSpreadsheet.Sheets>(new OpenXmlSpreadsheet.Sheets());
 
        // Append a new worksheet and associate it with the workbook.
		string relationshipId = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart);
		string sheetName = fileName;
        OpenXmlSpreadsheet.Sheet sheet = new OpenXmlSpreadsheet.Sheet() {
			Id = relationshipId,
            SheetId = 1, 
			Name = sheetName
        };
        sheets.Append(sheet);
 
        OpenXmlSpreadsheet.Worksheet worksheet = new OpenXmlSpreadsheet.Worksheet();
        OpenXmlSpreadsheet.SheetData sheetData = new OpenXmlSpreadsheet.SheetData();
        OpenXmlSpreadsheet.Row row = new OpenXmlSpreadsheet.Row();
 
		OpenXmlSpreadsheet.Cell currentCell;
		int columnCount = 0;
		var entitySchema = UserConnection.EntitySchemaManager.GetInstanceByName(SchemaName);
		foreach (var column in entitySchema.Columns) {
			if (!column.DefValue.IsSystemValue && !column.Name.Equals("ProcessListeners")) {
				currentCell = new OpenXmlSpreadsheet.Cell();
				currentCell.DataType =  OpenXmlSpreadsheet.CellValues.String;
				if (column.RequirementType == EntitySchemaColumnRequirementType.ApplicationLevel || column.RequirementType == EntitySchemaColumnRequirementType.DBLevel) {
					currentCell.StyleIndex = 3;
				} else {
					currentCell.StyleIndex = 4;
				}
				columnWidthsList.Add(CalculateWidth(column.Caption.Value));
	            currentCell.CellValue = new OpenXmlSpreadsheet.CellValue(column.Caption.Value);
				row.AppendChild(currentCell);
			}
		}
		sheetData.Append(row);
		row = new OpenXmlSpreadsheet.Row();
		for (int i=0;i<columnWidthsList.Count; i++) {
			currentCell = new OpenXmlSpreadsheet.Cell();
			currentCell.DataType =  OpenXmlSpreadsheet.CellValues.String;
			currentCell.StyleIndex = 5;
			row.AppendChild(currentCell);
		}
		sheetData.Append(row);
		//Adding columns and specifeing width
		OpenXmlSpreadsheet.Columns columns = new OpenXmlSpreadsheet.Columns();
		uint j = 1;
		foreach (var w in columnWidthsList) {
			columns.Append(CreateColumnData(j, w));
			j++;
		}
		worksheet.Append(columns);
		//--
        worksheet.Append(sheetData);
 
		workbookStylesPart.Stylesheet = CreateStyleSheet();
        worksheetPart.Worksheet = worksheet;
		spreadsheetDocument.Close();
 
		stream.Seek(0, SeekOrigin.Begin);
		byte[] dataArray = stream.ToArray();
 
		Page.Response.BinaryWrite(dataArray);
		Page.Response.End();
	}
}
return true;

Андрей, большое спасибо !

Андрей, Добрый день!
Пытаюсь реализовать создание Excel отчета по вашему примеру. Не компилируется из-за ошибки с функцией CreateStyleSheet()
Не могли бы Вы привести пример данной функции, т.к. вероятно данная функция добавлена в methods, или ответить, что необходимо написать вместо данной функции.

Код без данной строки

workbookStylesPart.Stylesheet = CreateStyleSheet();

компилируется и отрабатывает(видно в Visual Studio), но файл на сохранение не выдается. Пишет ошибку "Время ожидания выполнения запроса истекло." Может ли быть проблема в данной строке?

Здравствуйте, Эмин!
Этот пример из страницы "ImportSettingsPage". Метод CreateStyleSheet() определен там же. На всякий случай прикладываю исходный код.

Добрый день!
Почти та же проблема, что и у Эмина, только у меня код отрабатывает без ошибок, но в конце файл не выдается на сохранение с ошибкой:
Время ожидания выполнения запроса истекло.
Action: Click
ControlId: PageContainer_btnOk
SubmitAjaxEventConfig: {"config":{"viewStateMode":"include","extraParams":{}}}

            Page.Response.ClearHeaders();
            Page.Response.ClearContent();
            Page.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            Page.Response.AddHeader("Content-Disposition", "attachment; filename=TurnoverReport.xlsx");
 
            using (DB.DBExecutor dbExecutor = UserConnection.EnsureDBConnection())
            {
                using (MemoryStream stream = new MemoryStream())
                {
                    #region openxml
                    using (OpenXmlPackaging.SpreadsheetDocument spreadsheetDocument = OpenXmlPackaging.SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook, true))
                    {
//...тут все без ошибок
                    }//using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create
                    #endregion
 
                    stream.Seek(0, SeekOrigin.Begin);
                    byte[] dataArray = stream.ToArray();
 
                    Page.Response.BinaryWrite(dataArray);
                    Page.Response.End();
 
                } //using (MemoryStream stream = new MemoryStream())
            } //using dbExecutor

версия 5.4
схемы из примера Андрея у меня в конфигурации нет

Здравствуйте, Лариса!
Вам нужно импортировать схему, которую я предоставлял, вызвать

workbookStylesPart.Stylesheet = CreateStyleSheet();

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

Андрей, я вырезала свой очень длинный рабочий код :)

если я сохраняю stream в файл на диск, то получаю корректный отчет, т.е. проблема не в OpenXML, а в отдаче файла на сохранение

если я убираю весь код, связанный с

Page.Response

то ошибок нет

Спасибо за помощь :twisted:

Проблему решила. Если кому-то будет интересно - пишите.

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

Здравствуйте.
Вопрос возник следующий: у меня есть созданный вручную сервис пользовательских полей для раздела "Продукты в договоре". Сервис исправно работает, если я создаю карточку продукта вручную из раздела по кнопке "Добавить продукт".
Но если я заполняю данные в карточке средствами импорта из Excel, то пользовательские поля в карточке не отображаются. Где можно посмотреть-подкрутить данную проблему?
Спсаибо.

Нравится

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

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

Я сделал поля для всех типов специально, чтобы тестировать. Но все работает только при "ручном" добавлении продукта. При заливке списком - все пропадает. Т.е. заливаю продукт в карточку нужного типа, но он как-будто не учитывается вовсе при открытии карточки. Т.е. поля не появились. Как бы отследить - где прпадают UserFields?

Алексей, проиллюстрируйте скриншотами выполненные Вами настройки импорта, попробую воспроизвести со своей стороны.

Наталия, я честно говоря не знаю как показать настройки скриншотами, потому что развернутые поля не влезают в экран, а в свернутом виде это бесполезно, как я понимаю :sad:

Я посмотрел содержимое tbl_OfferingInContract. Там все записи, вставленные из Excel, в поле ContractTypeID содержат вот такую строку:'????????'. Т.е. ничего не связалось со справочником типов договоров. Может в эту таблицу нужно добавить не только поле ContractTypeID, а еще и поле, содержащее сам тип в виде строки?

Здравствуйте!
Перепроверьте обратные наличие обратной связи tbl_OfferingInContract.ContractTypeID = tbl_ContractType.ID и постарайтесь выгрузить скрин-шоты, это облегчить понимание происходящего.

Спасибо, Сергей!
Действительно не хватало Relations на таблицу tbl_ContractType.
Создал - все заработало.
Еще раз спасибо всем за помощь.

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

Добрый день!

Windows 7 x64, MS Office 10 x64, TS 3.3.2.174

Создаю новый отчет с шаблоном офиса, в ворде или экселе нет надстройки ТерраСофта. Утилиту TSMSOfficeLibraryConfigurator использовал, галочки стоят. Офис видит надстройку, но говорит что она не активна, при попытке ее включить ничего не происходит, но пишет что надстройка не может быть загружена - ошибка времени выполнения.

Также при выборе любого отчета ворд/ эксель (начальные отчеты нашей конфигурации) TS зависает намертво.

Что было раньше не знаю, отчетами не пользовались вообще.

Что это может быть? Куда копать?

Заранее спасибо за советы!

Нравится

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

насколько я знаю ТС не поддерживает офис х64

Вот я тоже такое краем уха слышал... И обходных путей никаких не существует?

Можно обновиться до TS 3.4.1, либо же установить 32-битный Office.

Дмитрий, действительно, поддержку MS Office x64 мы начали только с версии 3.4.1, так же сильно были доработаны другие возможности, детально можете почитать тут : http://www.community.terrasoft.ua/blogs/8555

Спасибо!

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