Полезные разработки
Полезные разработки в Гедымине
Введение
Здесь собраны всякие "полезные штучки" для работы с платформой Гедымин.
Для их использования необходимо установить нужное пространство имен на текущую базу данных. Как это сделать, будет описано здесь.
Функции работы с датой
Описание: помогает работать с датой(например: вычислить окончание месяца)
Где взять: GS.Общее.Функции работы с датой
Универсальная форма выбора
Описание: Инструмент для выбора записей из датасета, который вы к ней привяжете. Можно привязывать бизнес-объект или ИБ-датасет. Можно настраивать выбор одной записи или множества, при открытии формы проставлять галочки по умолчанию. Примеры использования — в классе TVB_gs_ChooseObject
Где взять: GS.Общее.Универсальная форма выбора
Функции работы с xml
Описание: Это класс TVB_xml_EncodingFunctions, в котором собраны ф-и преобразования типов для работы с xml, например, ф-я EncodeDateTime превращает дату в формат а-ля 2012-03-14T17:46:00 (для xml), а DecodeDateTime пытается разобрать данные типа
*2001-10-26T21:32:52
*2001-10-26T21:32:52+02:00
*2001-10-26T19:32:52Z
*2001-10-26T19:32:52+00:00
*-2001-10-26T21:32:52
*2001-10-26T21:32:52.12679
и превратить их в дату-время (для Гедымина)
Где взять: GS.Общие.Функции работы с xml
Функции работы со штрихкодами
Описание: считает контрольную сумму для EAN13
Где взять: GS.Общее.Штрихкоды
Копирование полей из одной таблицы в другую
Описание: Это макрос Копировать поля, запускается из формы Таблицы.
В нем выбираете «Из таблицы», «В таблицу», и список полей, которые хотите скопировать (скопировать сами поля, а не из значения).
Вот так выглядит выбор полей:
Где взять: GS.Общее.Копировать поля в таблицу
Сторнирование проводок по документу
Описание: В функцию gs_ReverseEntry передается ИД документа и дата, на которую должны сторнироваться проводки.
Копирует проводки (со всеми аналитиками) по документу, но со сторнированными суммами и на выбранную дату.
Важно! Не копирует числовые показатели!
Где взять: GS.Общее.Всякое полезное
Функции сохранения и загрузи гридов из потока
Описание: Когда к гриду на форме могут привязываться разные источники данных в зависимости от каких-либо условий, стандартные методы LoadGrid и SaveGrid бесполезны, но можно вручную сохранять гриды в поток и выгружать из потока — этим занимаются gs_LoadGrid и gs_SaveGrid
Где взять: GS.Общее.Гриды и MemoryStream
Процедуры для рисования дерева Групп ТМЦ
Описание: Процедуры, которые рисуют дерево с возможностью вывести номер узла (при рекурсивном обходе) или выкинуть некоторые ветки дерева.
Используются для хитрых отчетов, выгрузок в чужие форматы.
Где взять: GS.Общее.Процедуры по справочнику ТМЦ
Хранение текстовых описаний
Описание: Исследователь\Справочники\Сохраненная информация.
Здесь сохраняется информация, которая может понадобиться пользователю.
Например:
вторая страница "Информация" выглядит так:
Вы можете хранить здесь ваши описания, а потом вызывать форму с ними с помощью ф-и gs_ShowSavedInfo.
Например, по нажатию кнопки:
Окошко с информацией выглядит вот так:
Где взять: GS.Общие.Сохраненная информация
Функции работы с массивами (обычными, и массивами объектов)
Описание: В классе TVB_gs_ArrFunctions собраны полезные фишки при работе с массивами: сортировки, перестановки элементов и т.д.
Где взять: GS.Общее.Массивы
Цвета
Описание: Здесь хранятся константы цветов и функция выделения цветом в RichEdit.
Где взять: GS.Общее.Цвета
Сортировка позиций пространства имен
Описание: Как известно, ПИ не поставится, если позиции в нем идут в неверном порядке:
например, товар раньше группы ТМЦ, или процедура раньше таблиц, к которым она обращается.
Поэтому в форме просмотра Пространств имен есть два макроса:
- Изменить порядок следования (становитесь на позицию и указываете, куда ее переместить)
- Сортировка (он сам сортирует позиции так, чтобы все загрузилось).
Макрос Сортировка анализирует не только зависимости по внешним ключам, но и зависимость по include в функциях, и зависимость в тексте метаданных.
Где взять: GS.Пространство имен.Отчеты
Функции работы с DataSet
Описание: Функции копирования полей и их значений между датасетами разных типов (gs_rpQuery, TclientDataSet, TIBSQL).
Где взять: GS.Общее.Работа с dataset
Форма с текстом
Описание: Если вы выполняете скрипт, и хотите сохранить информацию об ошибках, можно использовать форму с текстом. Она позволяет вывести окно с текстом, а также сохранить этот текст в файл ( даже не выводя текст для пользователя).
Разные примеры использования описаны в классе TVB_gs_TextForm
Вот так она выглядит:
Где взять: GS.Общее.Форма с текстом
Данные об использовании объекта в макросах, метаданных, хранилище
Описание: Иногда хочется знать, где используется РУИД или ИД какой-то записи. Для этого есть глобальный макрос Использование объекта. Он определяет, какие бизнес-объекты есть на форме, если их несколько, предлагает выбрать, и ищет упоминания в скриптах\метаданных\хранилище той записи, на которой стоит курсор.
Может искать и в историии скриптов.
Вот так выбирается БО:
А так выглядит результат. Сначала информация о самом объекте:
Потом — где он используется
Все объекты можно открыть кликом мышки, даже историю функций .
Пример:
Где взять: GS.Общее.Использование объекта
Дерево связей между пространствами имен
Описание: Если вы хотите избавиться от избыточных зависимостей (ПИ А зависит от ПИ Б и ПИ В, но ПИ Б тоже зависит от ПИ В, т. е. Зависимость А от В избыточная), или просто увидеть, от чего и каким образом зависит ПИ, используйте макрос Деревце зависимостей из формы просмотра Пространств имен.
Вот как он показывает связи:
Чем больше зависимостей, тем медленнее строится деревце.
Где взять: GS.Пространство имен.Деревце зависимостей
Проверка на целостность пространства имен
Описание: Для поверки ПИ на целостность используются три отчета в форме просмотра Пространств имен:
- Неверные зависимости
- Зависимости по include
- Зависимости в метаданных.
Отчет Неверные зависимости показывает неверные зависимости по внешним ключам: товар зависит от группы, а группы нет ни в этом ПИ, ни в тех, от которых оно зависит (или есть, но идет позже).
Сначала отчет показывает, от каких ПИ зависит данное ПИ (и не только напрямую, но и рекурсивно):
и есть ли циклические зависимости:
Потом — ошибки:
Объекты можно открыть кликом мышки.
Отчет Зависимости по include проверяет, верная ли последовательность у ф-й, а Зависимости в метаданных — зависимости в тексте метаданных (например, триггер обращается к процедуре, которой нет в ПИ).
Ошибку «Неверная последовательность в текущем ПИ» можно исправить макросом Сортировка (см выше).
Ошибку «Объект не существует» можно исправить макросом Удалить несуществующие позиции из ПИ.
Несуществующие объекты в ПИ также можно увидеть в отчете Удаленные объекты.
Если один из отчетов показал вам ошибку, не спешите паниковать: они не разбирают ситуации с циклическими ссылками (например, компания — на счет, а счет — на компанию) , ситуацию, когда стандартный объект метаданных не имеет РУИДа (или у него свой руид на каждой БД — привет, DCURRATE_NULL).
Отчет Объекты метаданных, которые не входят в ПИ, показывает таблицы, макросы, хранилище и тп, которые имеют РУИД, но не входят в ПИ:
Если хотите, чтобы какой-то объект здесь больше не показывался, нажмите на HIDE.
Если хотите увидеть то, что было скрыто, постройте с параметром Показывать скрытые.
Отчеты в веточке Пространства имен показывают связь текущего ПИ с другими ПИ (например, если хотите проверить, используются ли объекты вашего ПИ еще где-то , или в какие пакеты входит ваше ПИ и тд.
Отчеты в веточке Настройки показывают связь с настройками.
Где взять: GS.Пространство имен.Отчеты
Поиск в истории функций
Описание: Это отчет, строится из формы просмотра Пространств имен. Позволяет искать в истории функций:
и имеет вид:
И функцию, и историю ф-й можно открыть (картинка, как выглядит история ф-й, есть в пункте про использование объекта).
Где взять: GS.Общее.Поиск в истории функций
Поиск по РУИДу\ИД
Описание: Если вы знаете РУИД\ИД, но не знаете, что это за объект, используйте отчеты Поиск по РУИДу \ Поиск по ИД (из формы просмотра Пространств имен).
Найдя один объект, отчеты дальше не ищут, таким образом, использовать их для поиска дублирующихся ИД в разных таблицах нельзя.
Вот как выглядит результат:
Где взять: GS.Пространство имен.Отчеты
Анализ метаданных
Описание: В отчетах в форме просмотра Пространств имен есть веточка Метаданные.
Отчет Поиск в метаданных — понятно, для чего. Вот такие у него опции:
А так выглядит результат:
Объекты открываются кликом мышки.
Отчет Где используется объект метаданных показывает, в какие процедурах, триггерах, представлениях используется таблица\поле\процедура\представление.
Хотите увеличить наименование в GD_CONTACT и вам интересно, что от этого поломается — вам сюда.
Вот так выглядит результат:
Все объекты открываются по клику мышки.
Чтобы увидеть, от каких метаданных зависит процедура\триггер\представление\вычисляемое поле, используйте отчет "От чего зависит объект метаданных".
Где взять: GS.Пространство имен.Отчеты
Сохранение записей в виде insert-запросов
Описание: Если на базе в результате повреждения или благодаря кривым рукам пользователя пропали какие-то записи, а на старой копии они есть, используйте макрос Сохранить данные таблицы в файл (вызывается из формы просмотра ПИ).
Запустите его на старой копии базы.
Нужно выбрать таблицу, указать, какие ИД сохранять, и макрос соберет execute block из соответствующих insert’ов.
Например, указали несколько документов:
Результат будет выглядеть так:
Где взять: GS.Общие.Сохранить данные в виде sql-запроса
Поиск в тексте
Описание: Это форма для удобного поиска в тексте процедуры или в произвольном тексте.
В форме просмотра Хранимых процедур есть макрос Искать в тексте. Он открывает форму поиска с уже загруженным текстом хранимой процедуры:
В форме просмотра ПИ есть макрос "Поиск в тексте (произвольный)".
Он вызывает ту же форму, но без текста , и с активной кнопкой Загрузить из файла.
При загрузке из файла надо выбрать кодировку (OEM – для некоторых выписок, UTF8 – для файлов ПИ, Win1251 – для всего остального).
Где взять: GS.Общее.Поиск в тексте
Шаблоны кода
Описание: Исследователь\Шаблоны кода — это форма для генерации и хранения часто встречающихся стандартных кусков кода.
Во так генерируется код для MessageBox’а:
результат выглядит так:
В верхней части формы можно хранить полезные куски кода:
Где взять: Шаблоны кода
Универсальная форма просмора
Описание: Это инструмент, чтобы быстро склепать интерфейс с отчетами и макросами для пользователя. Нужно только заполнить данные в Исследователь \ Универсальная форма просмотра\ Настройки формы просмотра.
Вот как они выглядят:
Дерево слева превратится в многостраничные блокноты, а записи справа — в кнопки.
Страничкам блокнота можно задать кол-во столбцов (с кнопками), цвет, номер для сортировки:
Кнопке можно привязать отчет\макрос:
Также кнопке можно задать цвет, картинку (bmp 200*300 пикселей), подсказку:
К сожалению, нет механизма формирования веточки в Исследователе.
Для вызова формы используется ф-я vf_ViewFormByID(ID) (ИД — это ИД ветки в дереве настроек, не имеющей родителя).
Вот что получится, если указать ИД ветки «Директор»:
Где взять: GS.Универсальная форма просмотра