Доброго времени суток!
Задача:
Корректно распечатать грид в разделе [Проекты], при нажатии печати грида по умолчанию выгружается записи без какой либо привязки к степени вложенности, т.е по сути печатается обычный грид а не древовидный.
2

1
Я вижу реализацию как отдельную кнопку "Печать" в wnd_ProjectGridArea которая бы по SelectedIDs (выбранным записям в реестре) выводила бы на печать отдельную печатную форму (FR) в которой мы бы по умному учитывали степени вложенности.
Возможно кто-то уже шел по этому пути ознакомившись например со статьей FastReport. Отчёты с деревьями и готов поделиться результатами?

Бинарные файлы Terrasoft 3.3.2.277
Конфигурация XRM 3.3.2.157

Нравится

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

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

Можно попробовать реализовывал похожий функционал (до 4-х уровней вложенности) следующим образом:

1

Решение описано тут

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

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

1. В системных настройках установить значение «Ложь» для GridCanExport и GridCanPrint (системных настройках разрешения экспорта и печати реестра).

/system/files/1_50.png

2. Запусть TSAdministrator.
3. Открыть запрос sq_Contact.
4. Запустить предпросмотр (нажав на иконку с линзой).

/system/files/4_12.png

5. Выполнить запрос (нажав на зеленую стрелочку):

/system/files/5_11.png

6. Скопировать ID контакта пользователя, которому Вы хотите дать возможность экспорта.

/system/files/6_9.png

7. Открыть скрипт scr_BaseGridAreaUtils.
8. Закомментировать текст в функции InitializeDataGridExport (на скриншоте выделен зеленым цветом).
9. Добавить следующий код в показанном на скриншоте месте:

       if (Connector.CurrentUser.ContactID == '{8435FE2B-C825-40ED-A5D3-4BE350309B26}') {
                 GridArea.CanPrint = !Connector.Attributes(GridCanPrintName);
                 GridArea.CanExport = !Connector.Attributes(GridCanExportName);
       }

else
         {
         
                 GridArea.CanPrint = !!Connector.Attributes(GridCanPrintName);
                 GridArea.CanExport = !!Connector.Attributes(GridCanExportName);      
         
          }

Где вместо 8435FE2B-C825-40ED-A5D3-4BE350309B26 необходимо подставить ID, который копировался в пункте 6.

/system/files/9_5.png

10. Сохранить изменения и проверить работоспособность.

Нравится

Поделиться

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

В новом варианте проверка на админство исчезает?
И проверка на установленный Excel?

Нет, проверка на Excel никуда не делась. А проверка на админство там, где описано.

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

Добрый день. У меня возникла следующая задача : нужно, чтобы в зависимости от отчета, печать происходила на определенном принтере. То есть вызывалось окно с настройками этого принтера. Может кто-нибудь знает, каким образом это можно реализовать?

Нравится

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

frpMain.Print() вызывает окно настройки принтера, который задан по-умолчанию? Как мне это изменить?

Реализовать поставленную Вами задачу можно при помощи прописывания конкретного принтера в скрипте с использованием метода PrintOut(). Для ее реализации высылаю ниже пример подобного скрипта. Он реализовывает распечатку текста без показа окна с автоматическим выбором принтера (строка - название):

var word = new ActiveXObject("Word.Application");
word.ActivePrinter = '\\\\poligon\\HP LaserJet 4250 PCL 6 on NE03:'; //Название принтера
var WordDoc = word.Documents.Add('c:\\test.doc');
WordDoc.PrintOut();

Таким образом, используя метод PrintOut Вы сможете реализовать поставленную задачу. У этого метода есть достаточно большое количество аргументов, которые Вы также можете указать при распечатке. Думаю, названия этих аргументов очевидны и не требуют дополнительного комментария:

PrintOut([Background, Append, Range, OutputFileName, From, To, Item, Copies, Pages, PageType, PrintToFile, Collate, ActivePrinterMacGX, ManualDuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight])

Желаю удачи!

Спасибо за пример, но у меня отчет в FastReport. Пока я реализовала данную задачу след. образом:
1. Получаю объект Word.Application
2. Меняю принтер при помощи Application.ActivePrinter
3. После печати отчета возвращаю принтер по умолчанию

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

Как вариант, можно поискать свойтва, которые позволили бы Вам реализовать поставленную задачу на бесплатных ресурсах.
Думаю, на эту тему можно найти немало материала. Мне удалось найти что-то подобное:
http://forum.ru-board.com/topic.cgi?forum=33&topic=1491&start=580
http://www.securitylab.ru/forum/forum18/topic28917/
http://www.networkdoc.ru/soft/index.php?option=com_content&task=view&id…

Возможно, это Вам поможет реализовать описанный функционал.

Желаю удачи!

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

Добрый день! Есть такая задача: печать адресов контрагенто которые находяться в области или в других городах на конвертах. Как это можно реализовать?

Нравится

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

попробуйте FastReport главное будет подобрать нужное расположение , а формат страницы можно выставлять

В принципе, эта задача реализуема и через отчеты Fast Report и через пользовательские отчеты. Выбирайте что Вам проще.

А стандартный отчет "Конверты..." не подходит?

Фильтруем в реестре контрагентов записи по нужным критериям (области, города), выделяем найденные записи и запускаем отчет "Конверты для контрагентов".
Если нужно - правим внешний вид отчета под свои нужды.

ООО "Лайнсервис"
www.ls-crm.ru

У меня версия террасофт 3.0.2.203. Что то я там не нашел такого отчета?

Тогда только Fast Report. Пользовательских отчетов в 3.0 нет.

Эх, в той версии нет((( оно в 3.3 есть. Тогда надо его туда загрузить готовый или сделать новый. Проще сделать, отчет то легкий совсем

ООО "Лайнсервис"
www.ls-crm.ru

Спасибо за помощь! Буду делать) Тема закрыта)

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

Необходимо при выводе документов на печать (из системы) дать пользователю возможность выбрать принтер, на который отправить. Возможно ли это реализовать?

Нравится

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

Так вроде бы если из отчета/реестра печатать появляется диалог печати стандартный Windows, там принтер любой выбирается... или идея в том, чтобы список отобразить раньше средствами Terrasoft?
ООО "Лайнсервис"
www.ls-crm.ru

Была у кого-то потребность выбрать количество копий, но кажется так ничего и не получилось. Наверное здесь аналогичная ситуация. Нет в FastReportPreviewer такого метода, чтобы этот диалог отображал.
Но это програмно. А кнопку нажать в предпросмотрщике можно.

Формируется документ на основании шаблона Word и необходимо автоматически отправлять его на выбранный принтер без предпросмотра.

Ну тогда копать. Если вордовский шаблон, то печать делается объектом Ворда, а там уже должен быть показ окошка выбора принтера. Там, возможно, принтер и без этого окошка задать можно. Только это уже вопрос на msdn :)

У Application есть свойство ActivePrinter, может это оно.

чтото подобное пытался делать только для FastReport
всё получилось , только появлялось окошко принтора , если его накрутить так чтоб брались настройки поумолчанию то всё получится

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

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

Иногда возникает необходимость возможности печати диаграммы Ганта из раздела [Проекты].
В прикреплённом файле находится полная инструкция по реализации данного функционала.

Приятной работы!

Нравится

Поделиться

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

Круто!
И скриншот делать не надо :)

--
Cogito, ergo sum

А теперь расскажи как это все показать клиенту на презентации !!!

"Виталий Ковалишин aka samael" написал:И скриншот делать не надо :)

Да! Чтото мне это напомнило, про скриншот, не напомнишь? :)

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

Все знают и используют такую возможность реестра (грида) как его печать. Для этого есть "кнопочка" в низу самого грида. Так вот, не все знают (я и несколько человек, например, узнали только сегодня :)), что для печати реестра можно привязать свой собственный отчет. Для этого у грида есть метод ReportUSI, в котором Вы можете прописать USI Вашего сервиса отчета.

Пример кода: grdData.ReportUSI = 'fr_MyReport';
Прим.: По-умолчанию, для любого грида ReportUSI = 'fr_DataGrid'

Нравится

Поделиться

0 комментариев
Показать все комментарии
Публикация

Вернемся немного к вопросу печати файлов из JScript. Немного ранее я приводил пример печати нескольких документов MS Word. Так вот, в ходе изучения возможности печати не только вордовских докуметов, но и других файлов, было выявлено еще 3 реализации печати.

/* 1 вариант - печать файлов любого формата */
function PrintFile(Folder, FileName, Count) {
        try {
                var Shell = System.CreateObject("Shell.Application");
                var FilePath = Folder + "\\" + FileName;
                if (IsZeroValue(Count)) {
                        Count = 1;
                }
                for (var i = 0; i Count; i++) {
                        Shell.ShellExecute(FilePath, "", "", "print", 1);
                }
        } catch(e) {
                Log.Write(2, e.Message);
        }
}

Отмечу "минус этой реализации. При печати запускается само приложение, ассоциирующееся с данным типом файла, т.е. если печатаете pdf-файл, то запускается Acrobat, если xls-файл - Excel, и т.п.

/* 2 вариант - печать всех файлов от MS и графические файлы */
function PrintFile(Folder, FileName, Count) {
        var Shell = System.CreateObject("Shell.Application");
        var Folder = Shell.Namespace(Folder);
        var FolderObjects = Folder.Items();
        var FileObject = FolderObjects.Item(FileName);
        if (Assigned(FileObject)) {
                if (IsZeroValue(Count)) {
                        Count = 1;
                }
                for (var i = 0; i Count; i++) {
                        FileObject.InvokeVerbEx("Print");      
                }
        }
}

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

И, наконец, 3 способ. Расскажу немного подробнее. Для того, чтобы "работал" этот вариант необходимо дополнительно установить библиотеку wiaaut.dll от MS, поскольку в этой реализации используется WIA (Windows Image Acquisition. Если кому интересно, ссылка: http://en.wikipedia.org/wiki/Windows_Image_Acquisition). Т.е. эту библиотеку предварительно необходимо скачать, установить (используя regsvr32.exe) и далее можно использовать методы COM-объекта WIA. Разница от предыдущих вариантов заключается в том, что эта функция годится только для печати графических файлов. При этом используется мастер изображений, т.е. при печати запускается мастер, в котором Вы можете выбрать распечатываемые файлы, указать параметры печати и т.д.

/* 3 вариант - печать только графических файлов (мастер изображений) */
function PrintFile(Folder, FileName, Count) {
        var Dialog = System.CreateObject("WIA.CommonDialog");
        var Vector = System.CreateObject("WIA.Vector");
        Vector.Add(Folder + "\\" + FileName);
        try {
                Dialog.ShowPhotoPrintingWizard(Vector);
        } catch(e) {
                Log.Write(2, e.Message);
        }
}

Отмечу следующее. Используя WIA, можно не только печатать, но и работать со сканерами и фотоустройствами.

Нравится

Поделиться

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

Список сканеров, которые поддерживаются службой загрузки изображений Windows

http://support.microsoft.com/kb/293356/ru

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

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

/* Печать документов */
function PrintDocuments(FileName, Count) {
try {
System.BeginProcessing();
System.ProcessMessages();
var Word = new ActiveXObject("Word.Application");
var Doc = Word.Documents.Open(FileName);
var IsError = false;
try {
Word.PrintOut(false, false, 0, "", "", "", 0, Count);
} catch(e) {
Log.Write(e.description);
IsError = true;
}
Word.Quit();
} finally {
System.EndProcessing();
}
if (!IsError) {
ShowInformationDialog("Документ успешно распечатан.");
} else {
ShowInformationDialog("При печати документа возникли ошибки.");
}
}

/* Пример использования: */
function Main() {
var Path = Connector.WorkingDirectory;
var FileName = Path + "\Test.doc";
PrintDocuments(FileName, 2);
}

Пока все. :)

Нравится

Поделиться

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

Установился Sales 3
Справочники и т.п. собрались настроились.
Сгенерился первый счет - но печатает вот это
www.bnmg.ru/tmp/terinvoice/terinv.htm

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

подскажите, где копнуть?

Нравится

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

Меню "Отчеты" (слева) -> Счет-Фактура с НДС или Счет-Фактура без НДС

Следуя из ролика - Вы также не добавили продукты/услуги в менеджере деталей!

Ж:)

ртфм. спасибо.

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