Word
итоги
коммерческое предложение
КП
общий итог
Технические вопросы
Разработка

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

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

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

Показать все комментарии
Word
дата
отчет
Отчёты
Разработка

Как вставить дату контракта в формате "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
отчет
текущая дата
Отчёты
Разработка

Нужно в отчете 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
ошибка
Отчёты
Разработка

На некоторых компьютерах при запуске отчета 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 будут использоваться встроенные текстовые конвертеры.

Показать все комментарии
excel
msoffice
oleerror
registry
report
Word
отчет

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

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, прошу помощи
Заключается проблема:
При создании пользовательского отчета 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
отчеты
удалить
Отчёты
Разработка

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

Нравится

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

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

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

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

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

Показать все комментарии
Word
отчет
сумма прописью
Отчёты
Разработка

Есть в 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.

Показать все комментарии
Word
ворд
колонтитул
отчет
Отчёты
Разработка

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

Нравится

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

Показать все комментарии
Word
отчет
перевод строки
шаблон
Отчёты
Разработка

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

Нравится

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

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

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