Некоторые ПОЛЕЗНОСТИ, в т.ч. не связанные с ФАБИУС

Материал из Фабиус wiki
Перейти к: навигация, поиск

MS Office - интерфейс кардинально изменился с 2007

в т.ч. Excel

Excel.VBA - примеры кода http://excelvba.ru/code
Описание - http://www.askit.ru и http://www.firststeps.ru/vba/excel
http://www.programm-school.ru/excel_vba Программирование для начинающих, раздел про Excel VBA.
ДЮЖЕ полезный сайт http://www.excel-vba.ru/chto-umeet-excel/
Переместить/Скопировать лист
Главная - Ячейки - Формат
Поменять местами строки и столбцы
- выделить и скопировать исходный фрагмент
- на чистом месте (чтоб не пересекались) ткнуть в верхнюю левую ячейку будущего повернутого фрагмента
- меню Главная, закладка Буфер обмена, стрелка вниз под словом Вставить и ТРАНСПОНИРОВАТЬ!!!
Отобразить закладку Разработчик (макросы, VB)
Параметры Excel, Основные (слева), "Показывать вкладку Разработчик на ленте" (справа)
Включить/отключить макросы
Закладка Разработчик, первый фрагмент справа внизу "Безопасность макросов"
Создать новый список, например, #i1, #i2, ..., #i0, #ia, #ib
Параметры Excel. Слева Основные, справа - Основные параметры работы с Excel. Кнопка Изменить списки.
Убрать апострофы (') у целой колонки
Выделить колонку, скопировать, вставить КАК ЗНАЧЕНИЕ.
Вместо 0 выводить пустую строку
Формат ячеек, закладка Число, (все форматы) - внизу, справа Тип
вместо Основной вставить 0;-0;;
### ### ##0,###;-### ### ##0,###;;@ = триадами ТОЛЬКО ЗНАЧАЩИЕ(@), в т.ч. и после зпт только значащие
### ### ##0,000;-### ### ##0,000;; = триадами и после зпт обязательно 3 знака
В Excel МесяцГод перенёсся как '20140301 в колонку Е3-E..., а хочется видеть Март 2014 года
новая колонка, ячейки которой
=ТЕКСТ(ДАТА(ПСТР(E3;1;4);ПСТР(E3;5;2);ПСТР(E3;7;2));"ММММ ГГГГ")&" года"
Определить номер последней ЗАПОЛНЕННОЙ строки/колонки на листе
Dim last_col as Integer 'пока максимум 256, а Integer - до 32К
Dim last_row as Long 'м.б. до 64К
вариант 1
last_col = Cells(1, Columns.Count).End(xlToLeft).Column 'встать в 1-й строке на последнюю из 256 колонок и метнуться влево до первой (самой правой от начала листа) непустой
last_row = Cells(Rows.Count, 1).End(xlUp).Row 'встать в 1-й колонке на последнюю из 64К строк и метнуться вверх до первой (самой нижней от начала листа) непустой
вариант 2
last_col [last_row] = Cells.SpecialCells(xlLastCell).Column [или .Row] 'SpecialCells - отбор ячеек по некоторому признаку-параметру (есть ещё константа xlCellTypeLastCell и у неё иное значение,чем у xlLastCell)
и ещё есть варианты
Вычленить код из (631) Хлеб такой-то (RealName())
=ПОДСТАВИТЬ(ЛЕВСИМВ(H2;НАЙТИ(")";H2)-1);"(";"")
Некоторые функции EXCEL
substr = Mid
pos = InStr = НАЙТИ
replicate = String
at,rat,позиция подстроки в строке = InStrRev
str = Str, CStr
преобразования CStr, CBool, ...
strtran = ПОДСТАВИТЬ
alltrim = СЖПРОБЕЛЫ
Строковые ф-и VB
ВПР - аналог Консолидации
В диапазоне B_:Е_ - спр-к номенклатуры (В код, С артикул, D ед.изм., E цена),
а в диапазоне G_:H_ - список (G код, H еще что-то).
A BкодCDEцена F GкодH Iцена
В колонке I хочу увидеть цену из Е согласно совпадению кода в G с кодом в B.
В колонке Inn пишу =ВПР(Gnn; B_:Е_; 4)
Что означает: поискать значение, расположенное в Gnn,
в ПЕРВОЙ колонке таблицы B_:Е_ и вернуть значение из 4-й колонки (Е)
по найденной строке с совпадающим кодом.
Необязательный 4-й пар-р - точное совпадение или нет
Архитектура Excel
Application
Workbooks
Worksheets
Cells
Константы Excel
https://msdn.microsoft.com/ru-ru/library/office/microsoft.office.interop.excel.constants.aspx

в т.ч. Word

Помечать цветом ИСПРАВЛЕНИЯ
Вкладка Рецензирование (в Help обозвали Обзор)
Группа Отслеживание (в Help обозвали Регистрация изменений)
Исправления
Внизу на строке состояния rght btn галка на Исправления для отображения процесса

Порядок указания реквизитов доступа к FTP

протокол: // user : pswrd @ host [:port] [path]
ftp://visor:xxxyyy@212.248.40.154
Узнать свой ip-адрес (динамический): 2ip.ru

Для работы с .rdp (mstsc)

Посмотреть статический IP-адрес (Windos 7)
Windows 7: Панель упр. - Центр упр. сетями и общим доступом - (слева) Изменение пар-ров адаптера - rght btn на Подключение по лок.сети - Св-ва - встать на "Протокол интернета версии..." (=IPv4/6) - кнопка Св-ва
XP: На рабочем столе иконка Сетевое окр: rght btn Св-ва - Local Св-ва - Протокол TCP/IP Св-ва
Пуск - Настройка - Сетевые подкл - Local ... остальное так же.
Подключение к удал. раб. столу
mstsc.exe = MS Terminal Service Client - вызывается в cmd.exe
или Пуск - ПРОГРАММЫ - Стандартные (а вовсе не Настройка - Сетевые подключения)
или - на Win Server 2012
Диспетчер серверов (рядом с Пуск либо стрелка вниз в кружке на основном экране и там один из синих квадратов)
Службы удалённых рабочих столов
Коллекции
Фабиус
Плавающее соединение через VPN (Белгород, f/e)
Изменение маршрута выполняется командой route, параметрами которой будут ip-адреса destination и gateway.
destination (узел) - смотрим в самом rdp: rght btn, Изменить, окно "Компьютер"
192.168.xx.yyy
gateway (шлюз) - смотрим справа внизу на значке резидентных сетей (монитор+вилка-трезубец)
click, встали на нужную сеть (Подключено), rght btn, "Состояние", закладка Подробно,
IPv4-адрес клиента 192.168.aa.bb
В строке поиска (поиск в Windows) набираем cmd, затем выше - на найденном cmd.exe - rght btn Запуск от имени Администратора.
Удаляем существующий маршрут командой (как определить gateway, см. выше)
route DELETE gateway
route DELETE 192.168.aa.bb
Добавляем новый маршрут, который сохранится при перезагрузке (ключ -p), командой
route ADD destination gateway -p
route ADD 192.168.xx.yyy 192.168.aa.bb -p
15-08-2016 15-10-25.png
Посмотреть существующие маршруты
все: route PRINT
начинающиеся с xxx: route PRINT xxx*
Посмотреть почту до середины 2014
По rdp соединяемся с нашим сервером: mstsc 192.168.234.15 Администратор Привычный3Привычный.
На экране внизу слева на панели задач запускаем Hyper-V (2 сереньких системных блока).
Cлева сверху стоим на SERVER, в виртуальной машине kerio-mail svn по правой клавише выбираем Пуск, (можно потом выбрать Подключить, чтоб видеть, как грузится виртуальная машина, потом это окошко загрузки крестиком закрыть).
Теперь на любой машине, подключённой к серверу, запускаем browser.
В строке адреса вводим 192.168.234.112 (без порта) support Привычный. Смотрим, что нужно.
Теперь нужно завершить работу виртуальной машины: в запущенной на сервере kerio-mail svn по правой клавише выбираем Завершение работы.

Операционная система и сторонние программы

Отключить звуки-предупреждения с клавиатуры
Настройка - Панель управ. - Звуки и аудиоуст., закладка Звуки,
Программные события (раздел Windows), а внизу в разделе Звуки выбрать Нет.
Посмотреть имя компьютера
иконка Мой компьютер, rght btn - Св-ва, закладка Имя комп.
РасShare'ить диск
иконка Мой компьютер, rght btn - Открыть. На нужном диске снова rght btn - Общий доступ и безопасность.
Закладка Доступ, галка Открыть общий доступ к этой папке.
Запустить процесс на другом компе сети
WMIC /NODE:target_ip PROCESS CALL CREATE имя_exe_с_путём
Расположена в Windows\System32\WBEM (help = WMIC /?)
Предупреждение об окончании лицензии через NN дней (когда соединяешься по rdp)
regedit - HKEY_LOCAL_MACHINE - SOFTWARE - MicroSoft - MSLicensing. Удалить по rght btn.
Про сообщение ошибки создания хранилища лицензий rdp - см. R273 28.10.13
Отключить "автоматическое обновление" системы через INet. Заходить с учётной записью Администратор.
а) Пуск - Настройка - Панель управления - Автоматическое обновление.
б) Пуск - Настройка - Панель управления - Система. Закладка Автоматическое обновление.
в) Мой компьютер - rght btn Св-ва). Закладка Автоматическое обновление.
г) Пуск - Настройка - Панель управления - Центр обеспечения безопасности. Внизу "Настройка параметров безопасности", Автоматическое обновление.
А ежели всё равно не снимается "(.) Автоматически", т.е. вроде я и не Администратор:
Пуск - Выполнить - gpedit.msc
Политика Локальный компьютер
Конф-я пользователя
Админ. шаблоны
Компоненты Win
Win Update
ПОКАЗЫВАТЬ СКРЫТЫЕ файлы
в Windows7
Пуск - Компьютер - Упорядочить (кнопка слева вверху) слева от "Свойств системы"
в Упорядочить есть пункт про Свойства папки - где-то посерёдке.
в Windows10
Открываем (в explorer'е) любую папку. Если сверху нет закладок Файл, Главная, Поделиться, Вид, Управление, жмём Alt или Ctrl, - панель с этим меню должна появиться в верхней части экрана.
Шагаем в Вид и ищем Скрытые элементы, ставим галку.
Редактирование Автозагрузки в Windows 7
http://w7q.ru/windows7/upravlenie-avtozagruzkoy-programm-v-windows-7/
Перекодировка - декодер кириллицы http://2cyr.com/decode/
On-line сервисы, bl2.ru Например, кодирование/раскодировние русских букв в строке адреса браузера:
http://www.bl2.ru/programing/urlencode.html
Список служб Windows http://shera-em85.narod.ru/data/sluz.htm
http://www.asf.ru/docs/services/index.html
http://webhamster.ru/mytetrashare/index/mtb0/1366368330ignxo81rsx
Управление дисками
cmd>DiskPart
Расшифровка системных переменных
Панель упр. - Система - (слева) Дополн.пар-ры системы, (внизу) кнопка Переменные среды
Где расположен сист. реестр?
 %systemroot%\system32\config (windows\system32\config)
Создать/скопировать Профиль пользователя
XP: Мой компьютер (пуск) - rght btn - Свва - вкладка Дополнительно - прямоугольник Профили польз.
- кнопка Параметры - кнопки создать и скопировать.
Формы деклараций (бланки)
http://mvf.klerk.ru/blank/blank.htm
http://www.blankinfo.ru
https://www.26-2.ru Упрощёнка support@sftserv.ru Привычный3Привычный
http://www.buhsoft.ru/blanki
http://www.1000form.ru
https://law03.ru/taxes/index/deklaracii
https://sbis.ru/document-formats/FNS (закладка вертикальная слева - Формат)
POWERSHELL (аналог cmd)
http://powershell-guru.com/faq-powershell-in-russian/
Полное описание TotalCmd http://flint-inc.ru/tcinfo/all_cmd.ru.htm со встроенными командами!!
Например, для расширенного по функционалу сравнения панелей набираем прямо в строке коммандера cm_FileSync.
cm_CommandBrowser - вызов списка всех встроенных команд.
Переименовать (однотипно) группу файлов в TotalCmd
выделяем цветом нужные, потом Ctrl-M = cm_MultiRenameFiles
Почта Windows Live Mail
ПУТЬ доступа к каталогу с собщениями. Слева от меню Главная непонятный значок со стрелкой вниз.
Параметры (Options) - Почта. Закладка Дополнительно, кнопка Обслуживание (Maintainence), кнопка Банк сообщений.
arc32.exe ADS Architect
AdsSys без пароля, AdmUser ora=1
Help & Manual
Картинка слева вверху с зелёным треугольником, Open: сервер\HELP_FABIUS\fablis.hmxp
Слева в дереве Стандартные модули комплекса.
Свойства - внизу экрана закладка Topic Options.
Откомпилировать - сверху закладка Project, кнопка Publish, HTML Help.
3CX многоканальный телефон.
Чтобы создать список наших сотрудников по номерам 01-10,
в Главном меню - Соединения
3CX.PNG
Soft keys
А там
либо добавляем: N Speed dial 020148,020149,...,020157(=1,2,...,10) Имечко Any (OK внизу формы)
либо у того, кто вручную заполнил, нажать кнопку Save и сохранить его труды в файл.blf,
а у себя Load из этого файла.
Посмотреть Теневые копии
Проводник, на нужном диске rgt btn - внизу Свойства, закладка Предыдущие версии.

в т.ч. НЮЛ

НЮЛ на Windows7
Драйверы - наш ftp\temp\distrib\Vfp-odbc\*.* - в любой каталог. Установить .msi.
Через нашу программу (закладка НЮЛ - Имя источника...) или Program files\Windows\System32\odbcad32.exe
добавляем в Пользовательский DSN драйвер Microsft Visual FoxPro. 2 раза Таблицы Visual FoxPro + тчк на Free...
НЮЛ - при переносе декл по прибыли период 46 вместо 34 оттого, что сначала зашли через декабрь (в самом НЮЛ) вместо квартала.
В самом НЮЛ - Настройки - Отчётные формы. Стоя на нужной вторая иконка - Периоды представлений:
Периоды представлений
Период Код периода
Год 1
1-е полугодие 2
2-е полугодие 3
Январь 4
Февраль... 5...
Декабрь 15
1-й квартал 16
...4-й квартал ...19
Код формы da - для декл по прибыли
Хранится это в BASES\formsperiod.dbf
arc32.exe
Вторая строка иконок
New Connection Wizard - создать соединение
Test Queries select * from formsperiod where kodf='da'
там строки с датой конца 9999 года про 4 (январь), 5 (февраль), ..., 4 квартал (19).
Стираем на фиг 4-15 и оставляем только кварталы.
НЮЛ - Как скопировать Реквизиты предприятия-плательщика во вновь установленный "с чистого листа" НЮЛ из существующего каталога НЮЛ.
копируем ...\INPUTDOC\BASES\payerscur, rgst .dbf/.cdx
...\INPUTDOC\FILIAL\P00000х\consts, ifnsinfo .dbf/.cdx
ВАЖНЫЙ файл ещё ...\INPUTDOC\FILIAL\P00000х\krmnreg.dbf/.cdx
НЮЛ - Где регистрируются внесённые в НЮЛ декларации, их периоды и номера уточнений.
...\INPUTDOC\FILIAL\P00000х\j_state01s(02s).dbf, scales.dbf, (ndslist.dbf - для декл.НДС)
...\INPUTDOC\BASES\jur001.dbf
и, наверняка, какие-то ещё - перечислены те, что удалось идентифицировать.
Как принудительно проставить признак Проконтролирован

в т.ч. XML

XMLmapper.exe - находится на сервере в !distr, требует для работы midasx.dll (ищи у любого клиента в \Fabius\Program).
Задача из .xsd (xml schema definition) создать .xtr (xml transformation).
(Оба файла (.xsd, .xtr) нужны для вызова в ФАБИУС функции XMLMapper().)
XMLmapper: File - Open (расширения .xsd). Слева (окно Document, а снизу закладка Document View) открылось дерево с узлами.
В средней части внизу ставим XML to Datapacket.
Слева на пустом пространстве rght btn Select All, снова rght btn Create Datapacket from XML.
В средней части появились заполненные строки. Закладка NodeProperties снизу в средней части - св-ва каждого элемента.
В правой части (окно Datapacket) rght btn Save Datapacket.
Возможно в средней части rght btn Test Transformation.
Полезные ссылки:
Online_XSD_to_XML
Пример_XML_схемы
Введение_в_XML
Утилиты работы с XML, XSD
XmlPad - в верхнем левом углу - структура открытого xsd в виде дерева
XML Notepad 2007
XML Viewer
Altova XMLSpy, MapForce, ...
NotePad++
Создать схему .xsd по .xml on-line в ИНете
http://xmlgrid.net выбираем вверху "XML to XSD" (http://xmlgrid.net/xml2xsd.html)
Step 1: load XML file. You can copy and paste your XML data to the XML Data box, then click Load button. Or click the Open File button to load data from your local file system.
Step 2: click the Generate XSD button, the generated schema will be displayed in an indented XML format.
Step 3: click the Save button, to download the generated XSD file.
You can do another XML document by clicking the Clear button.
Создать схему .xsd по .xml в Excel
Закладка Разработчик, кнопка Импорт (выбираем .xml, сообщение про отсутствие схемы, ОК) - отобразится таблица, конвертированная из выбранного .xml
Снова закладка Разработчик, кнопка Источник - справа отобразится автоматически сгенерированная .xsd-схема.
Но как её сохранить, я не нашла....
Посмотреть схему .xsd в удобочитаемом виде через Excel
Закладка Разработчик, кнопка Источник - справа появится окно Источник XML, внизу окна кнопка Карта XML, там Добавить.
Посмотреть тип и длину атрибутов элементов по схеме .xsd
1) XMLmapper: File - Open (расширения .xsd). Слева (окно Document, а снизу закладка Document View) открылось дерево с узлами.
В средней части внизу ставим XML to Datapacket.
Слева на пустом пространстве rght btn Select All, снова rght btn Create Datapacket from XML.
В средней части появились заполненные строки. Закладка NodeProperties снизу в средней части - св-ва каждого элемента.
Если слева встать на атрибут (в средней части закладка NodeProperties), в верху средней части будут тип и размер атрибута.
2) утилитой Altova XMLSpy: открываем .xml. Сверху в меню DTD/Schema - Assign Schema. Теперь в левом нижнем окне Info видны характеристики элементов и атрибутов, на которые встаёшь в среднем окне.
3) через XML Viewer: открываем сам .xsd (All Files *.*), встаём на правом окне на узлы с xs:attribute, при этом в средней части удобочитаемой становится соответствующая этому атрибуту часть схемы.
Удобная работа с .xml
в Altova XMLSpy открываем .xml, внизу закладка Grid. По rght btn Insert, Append, AppendChild + вверху иконки типа InsertRow.
Если открыть .xml (не .xsd), то в закладке Text можно сворачивать аннотации и другие узлы вручную или по rght btn.
в NotePad++ можно сворачивать узлы вручную или по rght btn.
Если файл .xlsx (MS Excel c 10-го) переименовать в .zip, его можно посмотреть TotalCmd в виде папок, внутри которых файлы xml.
Поиск схем xsd на сайте format.nalog.ru, а там включить "Искать по КНД".
Ссылка на поиск схемы .xsd в данных программы Налогоплательщик ЮЛ
Конвертация xml -> xml FreeFormatter.com

Работаем в ФАБИУС

Оттенки для Grid, например, {'clWhite','clBlack','$00D6D6D6'}. Код оттенка можно получить
в нашей программе Настройки - Цвета и шрифты, Поль-ль + все задачи.
Заголовок окна - Фон. Кнопка Определить цвет (внизу) - добавить его в Допцвета и выбрать.
Потом лезем в R204: Set Filttr UserCode=Поль-ль, IdName TitleFont, FontColor $шестнадцатеричное_число.
или http://ahead.org.ua/palette.php
Определить 16-ричный код цвета
Сервис ... Цвета и шрифты ... - Фон. Кнопка "Определить цвет >>".
Выбрать нечто OK слева внизу.
Теперь - в R204 по max SittingNum ищем FontColor.
В ФАБИУС'е в тексте сделать фразу выделенной, а при нажатии на неё что-то высветить
Пишем текст (например, в Хронологии изменений), в нём <:Message('сам дурак')~'Жми сюда'>.
Тогда читатель увидит в нашем тексте ПОДСВЕЧЕННОЕ Жми сюда, а нажав получит Message... .
При разработке печ.форм .rtm перенос выделенного фрагмента из Excel (НЕ выделение части экрана ScreenHunter'ом, а именно область ячеек и Ctrl-C)
в RichEdit на печатной форме (в меню - Edit, Вставить, Windows BitMap) - всегда не помещается на лист.
Чтобы при сокращении области (в режиме Edit) не пропадали вертикальные и горизонтальные разметки ячеек под цифры/буквы:
- либо прямо в Excel вместо точек нарисовать тонкие линии (Границы - Все границы)
- либо в сначала Excel выделить (все или правые - где цифири) вертикали ячеек и уменьшить их ширину (обычно 2.14, а задаём 2 или 1.9).
В arc32 не посмотришь одновременно и названия полей, и их тип/размер в структуре базы
Вызываем в любом месте ФАБИУС (Ctrl-Alt-E) ф-ю STRUCT_EXCEL_R261(), задаём имя базы и путь.
Получаем Excel-файл со структурой. Изначально написала для копирования стр-р НЮЛ в R261.
Сделать в эталоне частным для кого-то
Стоя на их данных - сравнение с эталоном, синим, замок (сверху иконка), а уже потом "положить в эталон" (светящийся листок).
Чтобы распространить частность ещё на кого-то: Эталона с рабочим - Частные данные - иконка сороконожка либо в R248
дописывать аббревиатуры через ;.
ИСКЛЮЧИТЬ ИЗ ДЕРЕВА МОДУЛЕЙ какой-то пункт
R174, на нужной записи Shift-F6.
Эта ссылка добавится в их R304 (НЕ эталонный).
Стереть из R174 эту запись. ЭТО СПОСОБ С ИХ СТОРОНЫ.
СПОСОБ 2: сделать то же самое в эталоне.
Вроде, так: на их данных Alt-M. Удалить пункт.
Сравнение Рабочего с Эталоном. Повесить замок. Тогда это запишется в эталонный R248.
Спр-к, отображаемый (через R174) НЕ представлением, хочется видеть изначально таблицей - без разделения.
в R174: GetReferns аргументы: (1-я строка) R13 (строк 2 3 4 5 нет) строка 6 2(двойка)
Определить имя компа по сетевому адресу
RunProcess('cmd /c nbtstat -a 192.168.199.100 > z:\Fabius_TD\_Софтсервис6\tt.txt 2>z:\Fabius_TD\_Софтсервис6\tte.txt ')
Посмотреть все имена/IP-адреса компов
arp -a
net view
из программы RunProcess('cmd /c arp -a')
Порядок отработки формирования проводок (Ctrl-F5) по УРОВНЯМ док-та.
Документ:
На уровне шапки документы А и Б. У документа А 3 дочерних записи на уровне 2 (а1,а2,а3), у документа Б - 2 дочерних записи б1 и б2.
Шаблоны R221 для этого типа документа:
1. проводка уровня 1
2. проводка уровня 1
3. проводка уровня 2
4. проводка уровня 2
По Ctrl-F5:
3 для а1, 4 для а1
3 для а2, 4 для а2
3 для а3, 4 для а3
1 для А
2 для А
3 для б1, 4 для б1
3 для б2, 4 для б2
1 для Б
2 для Б
В ФАБИУС проверить, новая ли версия Excel
iif(Progr('NewExcel'), 'vvv.xltx', 'vvv.xlt') + ф-я OfficeKind()
Максимово частичное обновление
У РАЗРАБОТЧИКА в fabius.ini вставить
MAKER=Привычный
ServicePath=\\SERVER\vol1\SERVICE\DB
У РАЗРАБОТЧИКА В меню Справка сверху появится пункт Поддержка. Там Выложить версию (z:\SERVICE\FTP\PARTIAL\).
У ПОЛЬЗОВАТЕЛЯ Справка - Центр поддержки - Проверить наличие версии и обновлений.
У РАЗРАБОТЧИКА Посмотреть, кто из пользователей обновился:
Справка - Поддержка - Таблица версий F7,F9.
Если разработчику нужно отменить своё обновление:
Справка - Поддержка - Таблица версий. Запоминаем имя файла архива, стираем его с диска, и удаляем строку в таблице версий.

в т.ч. SQL-запросы

Отобрать записи R08 с задвоенными кодами
select rr08.kod from
(select kod, count(kod) kk from r08 group by kod) rr08
where rr08.kk>1
или
select kod, count(kod) ccc from r08 group by kod having ccc>1
Отобрать из спр-ка с хронологией значения с датой не более заданной
select RR.KODPROD, RR.ISSUE from R191 RR, (select MAX(DATDOC) DATDOC, KODPROD from "+;
(select DATDOC, KODPROD, ISSUE from R191 where DATDOC<='"+SQLDate(BoM(CurDate))+"') SS group by KODPROD) DD
where RR.DATDOC=DD.DATDOC and RR.KODPROD=DD.KODPROD
Проанализировать причины длительного формирования запроса
Запускаем запрос (R238 или через дерево модулей)
Параллельно запускаем arc32.exe (\Fabius\Program).
Сверху слева Remote Server Info (лицо с экраном).
Указываем Server Drive и кнопка Connect.
На закладке Active Queries в таблице встаём на нужный запрос. Внизу выделяем цветом и копируем текст под Current Query.
Завершаем arc32.exe.
Идём в OpData, встаём на DICT.ADD, ENTER = открываем его в arc32 (AdsSys без пароля).
Слева в дереве встаём на DICT и сверху нажимаем на иконку Test Queries (cетка с SQL).
Вставляем из буфера текст (меняя insert на select при необходимости), а перед вставленным текстом пишем SHOW PLAN FOR (далее текст запроса).
Запускаем выполнение зелёным треугольником (Executes or continues...)
Смотрим внизу закладку Data (если там пусто - закладку Messages): обращаем внимание на
EstimatedExecution - в попугаях предполагаемое время выполнения
Warning
Запрос на поиск по каждому изделию (KANAL3) контрагента (KANAL2) с максимальной выручкой
SELECT DISTINCT p.KANAL3, p.KANAL2
FROM (select KANAL3,KANAL2,SUM("SUM") SM from PRVS0717 where left(KRED,8)='90-1-5-1' and KREFL1='R267' and KANAL1=53 and KREFL3='R11' and KANAL3<>0 and left(STATUS,2)<>'np' group by KANAL3,KANAL2) p
JOIN (SELECT MAX(SM) as MAX_SM,KANAL3
FROM (select KANAL3,KANAL2,SUM("SUM") SM from PRVS0717 where left(KRED,8)='90-1-5-1' and KREFL1='R267' and KANAL1=53 and KREFL3='R11' and KANAL3<>0 and left(STATUS,2)<>'np' group by KANAL3,KANAL2) ss
GROUP BY KANAL3) m
ON p.SM = m.MAX_SM AND p.KANAL3=m.KANAL3

в т.ч. EXLReport (в .rpt вызывается ExcelReport())

Описание EXLReport
запускаем (на раб. станции) c:\_dt\winhlp32.exe.
Предлагается выбрать .hlp-файл, выбираем расположенный там же EXLReport.hlp.
В нём идём на ЗАКЛАДКУ Содержание, а там TEXLReport component.

EXLReport01.PNG

Там перечень Свойств, Методов, Событий.
Если интересует событие, смотрим - какие параметры переданы на вход,
например, при отработке <FORMATCELL> (= событие OnFormatCell) доступны

EXLReport02.PNG

The following band types are available: Title, Group Header, MasterData, Detail Header, Detail Data, Detail Footer, Group Footer, and Summary.
Для ПРИМЕРОВ ищи *.rpt c <SETCELLVALUE>, <FORMATCELL>, <AFTERBUILD>.
Нужно АВТОМАТОМ сохранить получаемую распечатку.
1) Visual Basic (НЕ забудь добавить Module1) Эта книга - ViewCode примерно так:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'cur_file = Application.AltStartupPath 'Neaaa Ieaao - au? ia?aa ioe?uoeai WorkBook.Open iianiauaaao n?aa 2 ?iaiuo "iooy".
'cur_file = Left(cur_file, InStr(cur_file, ";") - 1) & "\hdrs.txt"
'fl = FreeFile
'Open cur_file For Input As #fl
ActiveWorkbook.SaveCopyAs "H:\YY.XLS"
'Set NewBook = Workbooks.Add
'NewBook.SaveAs Filename:="H:\tt.xlt" FileFormat:=xlNormal
End Sub
2) ЛИБО в самом .rpt
<AFTERBUILD>
Local fl:=SeekRef('R221', ReportCode(), 'FILENAME', 1)
CopyFile(EtalonPath+'\dummy.xls', fl) //dummy.xls - обычный пустой файл Excel
OleRun(WorkSheet,'SaveAs("'+fl+'")')
В Excel-отчёте, формируемом по некоторой базе, нужно заполнить колонку A фотографиями из второй базы
<OPENPIPELINE>
Global fst_tm:=.t.
//на основную базу наложить фильтр/отобрать выделенные, установить на первую строку печати
//открыть вторую базу (где фото) и сделать текущей
Excelreport("SampleImage.xlt",,ОсновБаза,,...MasterData Axx:Zxx) детальная полоса xx
<FORMATCELL>
Local ss
if (RowInTemplate=X and ColumnInReport=A) //местоположение ячейки для фото в шаблоне (в .xlt в ячейке Axx #photo)
//установка положения набора данных с фото
if fst_tm; DBGoTop(); else; fst_tm:=.f.; DBSkip(); endif
//картинка из записи базы с фото - в буфер обмена
PictFromFieldToClipBoard('photo')
ss:='A'+RowInReport
// текущий диапазон вставки картинки
OleProc(WorkSheet,'Range(ss,ss).Select')
// вставка из буфера обмена
Oleproc(WorkSheet,'Paste')
Сменить символ начала разметки полей в шаблоне .xlt (по умолчанию #)
ExcelReport('PBU18_GF2.xlt','1', , ,Dictnr, { {'Title','A1:N29'} },~FieldSign:='?')

в т.ч. ReportBuilder

Описание RBuilder
запускаем (на раб. станции) c:\_dt\winhlp32.exe.
Предлагается выбрать .hlp-файл, выбираем расположенный там же RBUILDER.hlp.
В нём идём на ЗАКЛАДКУ Содержание, а там Classes (например, TppChildReport).
Посмотреть в отладчике источник данных для какого-то из SubReport'ов
1) узнать имя этого объекта: в Summary основного отчёта это метка SubReportХ, а в инспекторе объектов это ChildReportY.
Нажимаем сверху в меню Инспектор объектов, стоя на чём угодно, а потом перемещаемся на закладку (снизу) нужного подотчёта.
Смотрим на заголовок окна Инспектора: Свойства элемента ppChildReportY:TppChildReport.
2) В начале отработки события OnPrint ставим точку останова
<SubReportX/PRINT>
и смотрим выражение GetProperty('DataPipeLine',GetProperty('ChildReportY'))

в т.ч. обращение к формам и их свойствам (KlBrowse.pas)

Стоим на уровне DOCS2, но некоторые функции=кнопкисверху воспринимают как текущую форму DOCS1 (DOCS2 лежит на ней = дочерняя). Нужно обратиться к форме DOCS2.
tbl - это GetArea() для DOCS2
tbl:=GetProperty('DataSource.DataSet', GetProperty('ActiveControl',GetForm('DOCS1'))), GetForm(tbl)
уменьшение размера шрифта и цвета колонок при вызове MyGrid <onShow>
Local ii, grid_obj, col_obj, cols_ttl
grid_obj:=GetProperty('GridFrame',GetForm())
SetProperty('CurGrid.Font.Size',8,grif_obj)
cols_ttl:=GetProperty('CurGrid.Columns',grid_obj,-1)
for ii:=0 to cols_ttl -1
col_obj:=GetProperty('CurGrid.Columns',grid_obj,ii)
SetProperty('Title.Font.Size',8,col_obj)
if GetProperty(FieldName',col_obj)='XXX'
SetProperty('Title.Color',StringToColor("$FFF8F0"),col_obj)
elseif ...
endif
SetProperty('Font.Size',8,col_obj)
next
Заголовок окна текущей таблицы GetProperty('Caption', GetForm(GetArea()))