uslugi.pngТребуется помощь в формировании коммерческого предложения в word.
А именно: Имеется таблица услуг (А1). Последнее поле таблицы А1 отображает итоговую сумму услуг с помощью записи #А1.Цена.Сумма>. Это в принципе уже реализовано и работает. Но необходимо это поле суммы вставить в промежуточную таблицу (А2), где будет несколько таких сумм и в конце по ним считается итоговая сумма.
Если вписать в таблицу А2 просто #А1.Цена.Сумма>, то ничего хорошего не получается

Пример, таблиц прикреплен.

Как можно реализовать подобное?

Нравится

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

Прошу по возможности поподробнее описать реализацию.

Интересно, это мне так везет или у Вас что-то с настройками доступа? Я не вижу Ваших скриншотов и при переходе на картинку uslugi.png у меня пишет "У Вас нет доступа к этой странице."...
Могу задать лишь наводящий вопрос (хотя без скриншотов только в общих чертах представила Вашу проблему..:sad:): итоговая сумма у Вас в ворде считается или тоже в запросе, на основе которого Вы строите отчет?

аналогично, не вижу скрин-шотов.

У меня тоже не открываются вложенные картинки.. не знаю почему.

Итоговая сумма должна считаться в запросе да. Т.е. сначала считается сумма по А1 услугам.. а в А2 считается сумма уже по всему проекту на основе суммы А1.

Может лучше в Excel попробовать?)

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

а отчет ФастРепорт?)

и еще -- в самом запросе у Вас суммы правильные получаются? т.е. у Вас не получается запрос построить или начинаются "чудеса" уже в самом Ворде?

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

"Ольга Прилипко" написал:

а отчет ФастРепорт?)

и еще -- в самом запросе у Вас суммы правильные получаются? т.е. у Вас не получается запрос построить или начинаются "чудеса" уже в самом Ворде?


Запрос самый обыкновенный. И с помощью него нельзя отдельно сумму вывести по записи <#А1.Цена.Сумма>.
Может есть подробный мануал по созданию запросов в администраторе? Попробую создать свой.

"Султанов Ринат" написал:Запрос самый обыкновенный. И с помощью него нельзя отдельно сумму вывести по записи <#А1.Цена.Сумма>.

да, я с таким не сталкивалась... сумма по сумме...
для меня вообще Ворд -- это для договоров, актов, каких-то документов, т.е. максимум, что туда "из необычного" вставляла (кроме значений полей) -- это сумма прописью... Поэтому даже не знаю, возможно ли такое. Может, кто-то сталкивался и посоветует:smile:
знаю, что в фастрепорте можно что-то похожее сделать, даже на комюнити уже писала (здесь).
"Султанов Ринат" написал:В Word'e писали макрос, который необходимо было запускать для пересчета сумм и других вычисляемых полей

Или попробуйте воспользоваться советом Владимира Соколова, насчет макросов.

Спасибо за ответы.. попробую реализовать задуманное, отпишусь о результатах.

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

Как вставить дату контракта в формате "7 июля 2012 года" в Word-отчет?
Ну, или другой формат другой даты. Иногда необходимо немного видоизменять данные пользовательского запроса для отчета Word

Нравится

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

Здравствуйте.
Изменить формат отображения даты в отчете можно открыв с помощью карточки редактирования запрос, который используется в отчете. Далее, Вам необходимо кликнуть правой кнопкой в области данных, и выбрать меню изменить колонку/нужная Вам колонка с датой. В открывшемся окне в поле "Формат даты" можно изменить формат отображения даты.
Если конкретно в таком варианте как Вы указали (месяц прописью, число и год - цифрами) - то только изменив региональные настройки в панели управления, а именно формат "короткой" даты, к примеру на такой:

1

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

А если конкретно в одном отчете?

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

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

1

Может, в Word'е можно вставить какую-то формулу соотстветствия номера месяца и его названия?

Попробуйте следующим образом:

Создайте новую закладку Word с именем, к примеру, Test. (Вставка - Закладка)

Далее, поместите курсор в начало документа и нажмите Alt+F9, потом Ctrl+F9.
Между фигурных скобок вставьте следующий текст:

SET test #макрос с датой из террасофт  \* MERGEFORMAT

в том месте где нужно вывести дату в нужном Вам формате - нажмите Alt+F9, потом Ctrl+F9 и между фигурных скобок вставьте следующий текст:

\@ "dd MMMM yyyy"  \* MERGEFORMAT

далее, между отрывающейся фигурной скобкой и символом \@ нажмите еще раз Ctrl+F9 и между фигурных скобок вставьте текст:

 REF  test

В итоге у меня вышло следующее:

1

Файл Word во вложении.

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

Нужно в отчете Word отобразить текущую дату. Нашел метод

Selection.InsertDateTime()

который принимает параметры. Собственно вопрос: какие нужно передать параметры, чтобы дата отобразилась в формате "13 июня 2012"?

Нравится

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

В целом формат команды при вызове (подробнее):

function InsertDateTime(
	 DateTimeFormat : Object, 
	 InsertAsField : Object, 
	 InsertAsFullWidth : Object, 
	 DateLanguage : Object, 
	 CalendarType : Object
);

Для указанного вами отображения попробуйте указать при вызове следующие параметры:
DateTimeFormat:="dd MMMM yyyy"
DateLanguage:=1049

Языки - 1049 для русского, 1058 для украинского, 1059 для белорусского

Попробуйте разобраться с описанием метода InsertDateTime()

И еще -- в отчете Ворд, насколько я помню, можно вставить текущую дату через макросы. А формат отображения зависит от региональных настроек самого компьютера.

Спасибо большое за помощь

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

На некоторых компьютерах при запуске отчета Word появляется ошибка

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

Нравится

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

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

В Microsoft пишут такое:

"Microsoft" написал:
Прежде чем открыть файл с расширением DOC или DOCX, являющийся простым текстовым файлом или файлом другого типа, который отличен от двоичного файла приложения Microsoft Word, до трех раз может появляться следующее сообщение об ошибке: Приложению Word не удалось запустить конвертер mswrd632

Чтобы устранить эту проблему, можно отменить регистрацию конвертера mswrd632. Если для отмены регистрации конвертера mswrd632 требуется помощь, перейдите к разделу Помощь в решении проблемы. Если вы предпочитаете отменить регистрацию конвертера mswrd632 самостоятельно, перейдите к разделу Самостоятельное решение проблемы.

Помощь в решении проблемы
Чтобы устранить проблему автоматически, щелкните ссылку Устранить проблему. Затем в диалоговом окне Загрузка файла нажмите кнопку Выполнить и следуйте указаниям мастера.

Устранить неполадку
Microsoft Fix it 50352

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

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

Это изменение отменяет регистрацию конвертера и отключает его для пакета Microsoft Office и приложений сторонних компаний. После этого для открытия файлов такого типа в Microsoft Office будут использоваться встроенные текстовые конвертеры.

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

Самостоятельное решение проблемы
Чтобы отменить регистрацию конвертера mswrd632 самостоятельно, внесите в реестр указанные ниже изменения.
Нажмите кнопку Пуск, выберите в меню пункт Выполнить, введите команду regedit и нажмите кнопку ОК.
Найдите и откройте указанный ниже подраздел реестра.
Для 32-разрядных версий Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Text Converters\Import\MSWord6.wpc
Для 64-разрядных версий Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Shared Tools\Text Converters\Import\MSWord6.wpc
В меню Правка выберите команду Удалить.
Нажмите кнопку Да.
Закройте редактор реестра.
Это изменение отменяет регистрацию конвертера и отключает его для пакета Microsoft Office и приложений сторонних производителей. После этого для открытия файлов такого типа в Microsoft Office будут использоваться встроенные текстовые конвертеры.

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

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

1. Появляется только на одном компьютере;
2. Под всеми пользователями;
3. Для любого отчета Word/Excel;

Решить проблему можно только путем активации отладчика: необходимо выяснить, на какой строке программа вылетает. Если это это строка finally - значит, проблема где-то в блоке try, и его нужно последовательно пройти отладчиком, каждую строку проверяя watch'ем.

В моем случае проблемной строкой оказалась следующая:

Result = GetIsMSOfficeApplicationIstalledViaRegistry(MSOfficeApplicationName);

Это системная функция обращения к реестру. Остановка отладчика на этой строке говорит о том, что проблема в операционной системе, а именно - в службах работы реестра.

Чтобы устранить проблему, нужно перезапустить либо переустановить системные службы Windows. Это можно сделать через консоль (Пуск - Выполнить - cmd)

Перезапустить:

net stop winmgmt
cd /d %windir%\system32\wbem
for %i in (*.dll) do RegSvr32 -s %i
for %i in (*.exe) do %i /RegServer
net start winmgmt

Переустановить:

rundll32.exe setupapi,InstallHinfSection WBEM 132 %windir%\inf\wbemoc.inf

После переустановки системных служб реестра Windows проверка инсталляции офиса проходит корректно и отчет выгружается.

Отдельное спасибо Евгению Лобову за сотрудничество в решении проблемы.

Нравится

Поделиться

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

Еще как вариант, просто снести ветку в реестре, например того же самого Excel.
HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Options\DefSheets -> именно этот параметр
P.S. Мне например помогло!

Ценное наблюдение. Павел, благодарю.

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

Добрый день.
Проблема с созданием отчета Word, прошу помощи
Заключается проблема:
При создании пользовательского отчета Word, создаю запрос с полями, добавляю отчет, создаю шаблон, шаблон связываю с отчетом, добавляю нужные поля, сохраняю его и тут начинаются проблемы:
при сохранении шаблона в Terrasoft выдает табличку загрузки шаблона и зависает (скрин прикреплен)
При попытке просмотра отчета из раздела Инструменты - отчеты - все виснет. Так же он не появляется в нужном разделе документы. После перезагрузки сохраненный отчет пропадает из списка. При повторном создании все повторяется....
Заранее благодарен за помощь

Нравится

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

Укажите используемую Вами версию Terrasoft и MS Office.
Также проследите, чтобы перед формированием шаблонов в MS Word и в момент формирования самого отчета не была запущена копия Word
Также не лишним будет очистить Cache и Profile (C:\Documents and Settings\[Имя пользователя]\Application Data\Terrasoft\[Версия Terrasoft])

Terrasoft 3.2.0.34
Office 2007 (12.0.4518.1014)
win 7

Проведите обновление до более новой версии 3.2.0.76
Обратитесь в службу технической поддержки для предоставления обновления.

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

Terrasoft 3.2.0.34
Office 2007 (12.0.4518.1014)
win 7

Данная проблема решена в более поздних версиях Terrasoft. Для ее решения на Вашей текущей версии необходимо провести обновление.

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

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

При попытки удалить пользовательские отчеты Word выдает ошибку:
"Не удалено 1 из 1 записей
Нет возможности:1
Связанные записи могут существовать в следующих таблицах:
Отчет в группе (tbl_ReportInGroup)
Права доступа к отчетам (tbl_ReportRight)"

Нравится

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

Проверьте в Terrasoft Administrator, установлены ли для связей FReportRightRecordID таблицы tbl_ReportRight и FReportInGroupReportID таблицы tbl_ReportInGroup признаки "Каскадная связь". Попробуйте снять эти галочки, установить заново и пересохранить таблицы. После этого перезапустите программу Terrasoft и попытайтесь удалить отчёт.

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

Спасибо. помогло №1)

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

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

Есть в TS замечательная функция - сумма прописью. А как ее результат вставить в Word-отчет? Создавать много лишних полей в таблице не хотелось бы.

Спасибо за идеи!

Нравится

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

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

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

Добрый день!

Мне кажется, оба приведённых примера несколько выходят за рамки основного предназначения механизма пользовательских запросов и отчётов. В первую очередь они выполняют задачу создания отчёта на основании имеющихся в таблицах БД данных без каких-либо навыков программирования (простым перетаскиванием колонок таблицы). В Ваших же примерах без программирования не обойтись в любом случае.

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

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

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

Подскажите пожалуйста, как вывести число прописью (без копеек, гривен и прочего) а просто число к примеру 26 как (двадцать шесть)
ValueStrRUR = AmountToStr(ValueStr, 'ru', 'RUB');
только изменяя функцию Convert_utils и добавляя в нее нужное ???

Попробуйте так:

  var s = new String(AmountToStr(ValueStr, 'ru', 'RUB'));
  s = s.substr(0, s.indexOf(' руб'));

Спасибо огромное, то что нужно!

а как оставить сумму с рублями, без копеек?

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

Попробуйте сделать так:

if (Str.indexOf('руб') != -1) {
	var StrTemp = Str.substr(Str.indexOf('руб'),Str.length);
	if (StrTemp.indexOf(' ') !=-1){  
	   var Kop = StrTemp.substr(StrTemp.indexOf(' '),StrTemp.length);
	   Str = Str.substr(0, Str.indexOf(Kop));
    }
}
else Str = "";

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

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

Возник вопрос, можно ли вывести поля вордовского отчета в колонтитул?
Или может я что-то не так делаю, потому-что в самом документе данные подставляются, а в колонтитуле остается просто название поля.

Нравится

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

Добрый день, Юрий!

На данный момент функционал вывода данных в колонтитул не реализован. По Вашему обращению зарегистрирован запрос на изменение №61233.
Мы обязательно сообщим Вам, как только получим результаты.

Татьяна,
Есть ли какие-то продвижения по этому запросу?
Для нашей компании вопрос тоже актуален.
Заранее спасибо!

Михаил, на текущий момент есть следующее решение:

Для реализации задачи нужно (полужирным выделен текст, который нужно добавить):
1) В скрипте scr_UserReportCommon изменить функцию ProcessWordReportDataFill, после вызова функции ProcessOneRootRecordWordReportDataField добавить обработку колонтитулов:

function ProcessWordReportDataFill(Document, RootSection, Sections, IsPreview,

ProcessOneRootRecordWordReportDataField(DocumentRange, Selection,
RootSection, Sections, RecordsCountObject, WorkspaceWindow);
if (RootDataset.RecordNumber == 1) {
ProcessRange(Document.Sections(1).Headers(1).Range);
ProcessRange(Document.Sections(1).Footers(1).Range);
}


}

2) В скрипте scr_UserReportCommon добавить функцию ProcessRange:

function ProcessRange(Range) {
InitializeTagFindObject(Range.Find);
while (Range.Find.Execute()) {
Range.Select();
var ExpressionObject = GetExpressionObject(Range.Text);
Range.Text = GetFieldValueByCaption(MSWordUserReport.RootDataset,
ExpressionObject.FieldName) || '';
}
}

Олег, благодарю за ответ!
Попробуем.

Олег,
Мы воплотили предложенное Вами решение. При этом возникает проблема, которую я опишу ниже.

Нам необходимо в колонтитуле иметь надпись наподобие такой "Договор об оказании услуг № 101/ФТ/11 от 13.01.2011". Для этого в шаблон отчета мы вставляем два поля и получаем следующее "Договор об оказании услуг № <#Деталь 1.Номер> от <#Деталь 1.Дата начала>". Оба поля (номер и дата начала) встречаются в этом же отчете в другом месте (не в колонтитуле) и прекрасно работают. В колонтитуле же при формировании отчета первое поле работает, а второе - нет (получается "Договор об оказании услуг № 94/ФТ/10 от <#Деталь 1.Дата начала>"). Мы пробовали для интереса использовать другие поля, но нам не удалось заставить правильно отображать одновременно 2 поля.

Также почему-то при формировании отчета Word открывается в режиме отображения "Черновик" с отдельным полем для колонтитула снизу - см. приложенный скриншот. Это конечно легко решается ручным выбором режима "Разметка страницы", однако было бы удобнее, если бы он сразу открывался в этом режиме, как при формировании других отчетов.

Буду благодарен за помощь в решении проблемы!

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

Попробуйте следующим образом:

1) Создать по образцу функции GetFieldValueByCaption скрипта scr_UserReportCommon новую функцию, которая даёт возможность получить отображаемое значение поля датасета. Данное изменение связано с тем, что для отображения в отчёте нам нужны строковые значения. Итого, получаем:

function GetFieldValueByCaptionEx(Dataset, FieldCaption, ReturnText) {
    var DataField = GetDataFieldByCaption(Dataset, FieldCaption);
    if (!Assigned(DataField)) {
        return;
    }
    if (!DataField.IsEnabled) {
        return;
    }
    if ((DataField.FieldType == dftEnum) || ReturnText) {
        return DataField.DisplayValue;
    } else {
        return DataField.Value;
    }
}

2) Функцию ProcessRange переписать так (добъёмся замены всех макросов, а не только первого):

function ProcessRange(Element) {
	var Range = Element.Range;
	InitializeTagFindObject(Range.Find);
	while (Range.Find.Execute()) {
		Range.Select();
		var ExpressionObject = GetExpressionObject(Range.Text);
		Range.Text = GetFieldValueByCaptionEx(MSWordUserReport.RootDataset,
			ExpressionObject.FieldName, true) || '';
		Range = Element.Range;
		InitializeTagFindObject(Range.Find);
	}
}

3) Изменить сам вызов замены колонтитулов в функции ProcessWordReportDataFill:

function ProcessWordReportDataFill(Document, RootSection, Sections, IsPreview,
	…
	ProcessOneRootRecordWordReportDataField(DocumentRange, Selection,
		RootSection, Sections, RecordsCountObject, WorkspaceWindow);
	if (RootDataset.RecordNumber == 1) {
		for (var i = 1; i <= Document.Sections.Count; i++) {
			for (var j = 1; j <= Document.Sections(i).Headers.Count; j++) {
				ProcessRange(Document.Sections(i).Headers(j));
			}
			for (var k = 1; k <= Document.Sections(i).Footers.Count; k++) {
				ProcessRange(Document.Sections(i).Footers(k));
			}
		}
	}
	Document.Windows.Item(1).View.Type = 3;}

Последняя строчка в приведённом выше коде изменяет режим окна документа на "Разметка страницы".

Олег,
Благодарю за ответ.
Работает!

На счет последней строчки Document.Windows.Item(1).View.Type = 3, если оставить все так то тогда если выбираем несколько записей - система валится.

Сделал так: Document.Windows.Item(1).View.Type = 4 - режим предварительного просмотра. Так работает и возможно удобней, поскольку сразу готово к печати.

Чтобы после формирования отчета с колонтитулами вид документа возвращался с состояние «Разметка страницы», необходимо в сервисе scr_UserReportCommon изменить метод ProcessWordReportDataFill следующим образом:

function ProcessWordReportDataFill(Document, RootSection, Sections, IsPreview,
 
...
 
//                Document.Windows.Item(1).View.Type = 3; // убрать
 
                   DoChildDatasetsOperation(ChildDatasetsArray, 'Close');
                   if (RootDataset.IsLastPageRecord(1)) {
                            break;
                   }
                   if (RecordsCountObject.CancelledByUser) {
                            break;
                   }
                   if (RootDataset.RecordNumber < RootRecordsCount) {
                            DocumentRange = GetNextTemplate(Document, Selection, DocumentTemplate, UserClipboardContent);
                   }        
                   RootDataset.GotoNext();
 
         }
         RootDataset.Close();
         Document.Content.Collapse(0);
         Document.Windows.Item(1).View.Type = 3; // добавить
         Document.Windows.Item(1).ActivePane.View.SeekView = 0; // добавить
         Document.Windows.Item(1).View.Type = 3; // добавить
         Selection.End = 0;
}

Функция ProcessRange не была обнаружена. Попытка добавления своей функции не привела к успеху.
Версия продукта Terrasoft XRM Distribution 3.4.0.135.

Выкладываю Вам рабочий сервис, сравните со своим.scr_userreportcommon3.4.0.156.rar

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

Возник вопрос:
Есть текстовое поле которое выводиться в вордовский шаблон отчета.
Как вставить в определенное место текста в этом поле что-нибудь типа символа перевода строки. Чтобы из одной строки в этом поле получилось несколько строк в документе созданном на основе шаблона.

Нравится

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

Похоже отвечу сам себе: надо добавить '\n' и все.
Вопрос закрыт.

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