Полезные разработки

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

Полезные разработки в Гедымине

Содержание

Введение

Здесь собраны всякие "полезные штучки" для работы с платформой Гедымин.

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


Функции работы с датой

Описание: помогает работать с датой(например: вычислить окончание месяца)

Где взять: GS.Общее.Функции работы с датой


Универсальная форма выбора

Описание: Инструмент для выбора записей из датасета, который вы к ней привяжете. Можно привязывать бизнес-объект или ИБ-датасет. Можно настраивать выбор одной записи или множества, при открытии формы проставлять галочки по умолчанию. Примеры использования — в классе TVB_gs_ChooseObject


1.png

Где взять: 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.Общее.Штрихкоды


Копирование полей из одной таблицы в другую

Описание: Это макрос Копировать поля, запускается из формы Таблицы.

В нем выбираете «Из таблицы», «В таблицу», и список полей, которые хотите скопировать (скопировать сами поля, а не из значения).

Вот так выглядит выбор полей:

2.png


Где взять: GS.Общее.Копировать поля в таблицу


Сторнирование проводок по документу

Описание: В функцию gs_ReverseEntry передается ИД документа и дата, на которую должны сторнироваться проводки.

Копирует проводки (со всеми аналитиками) по документу, но со сторнированными суммами и на выбранную дату.

Важно! Не копирует числовые показатели!


Где взять: GS.Общее.Всякое полезное


Функции сохранения и загрузи гридов из потока

Описание: Когда к гриду на форме могут привязываться разные источники данных в зависимости от каких-либо условий, стандартные методы LoadGrid и SaveGrid бесполезны, но можно вручную сохранять гриды в поток и выгружать из потока — этим занимаются gs_LoadGrid и gs_SaveGrid

Где взять: GS.Общее.Гриды и MemoryStream


Процедуры для рисования дерева Групп ТМЦ

Описание: Процедуры, которые рисуют дерево с возможностью вывести номер узла (при рекурсивном обходе) или выкинуть некоторые ветки дерева.

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


Где взять: GS.Общее.Процедуры по справочнику ТМЦ


Хранение текстовых описаний

Описание: Исследователь\Справочники\Сохраненная информация.

Здесь сохраняется информация, которая может понадобиться пользователю.

Например:

3.png

вторая страница "Информация" выглядит так:

4.png

Вы можете хранить здесь ваши описания, а потом вызывать форму с ними с помощью ф-и gs_ShowSavedInfo.

Например, по нажатию кнопки:

5.png


Окошко с информацией выглядит вот так:

6.png


Где взять: GS.Общие.Сохраненная информация


Функции работы с массивами (обычными, и массивами объектов)

Описание: В классе TVB_gs_ArrFunctions собраны полезные фишки при работе с массивами: сортировки, перестановки элементов и т.д.

Где взять: GS.Общее.Массивы


Цвета

Описание: Здесь хранятся константы цветов и функция выделения цветом в RichEdit.

Где взять: GS.Общее.Цвета


Сортировка позиций пространства имен

Описание: Как известно, ПИ не поставится, если позиции в нем идут в неверном порядке:

например, товар раньше группы ТМЦ, или процедура раньше таблиц, к которым она обращается.

Поэтому в форме просмотра Пространств имен есть два макроса:

  • Изменить порядок следования (становитесь на позицию и указываете, куда ее переместить)
  • Сортировка (он сам сортирует позиции так, чтобы все загрузилось).

Макрос Сортировка анализирует не только зависимости по внешним ключам, но и зависимость по include в функциях, и зависимость в тексте метаданных.

Где взять: GS.Пространство имен.Отчеты


Функции работы с DataSet

Описание: Функции копирования полей и их значений между датасетами разных типов (gs_rpQuery, TclientDataSet, TIBSQL).

Где взять: GS.Общее.Работа с dataset


Форма с текстом

Описание: Если вы выполняете скрипт, и хотите сохранить информацию об ошибках, можно использовать форму с текстом. Она позволяет вывести окно с текстом, а также сохранить этот текст в файл ( даже не выводя текст для пользователя).

Разные примеры использования описаны в классе TVB_gs_TextForm

Вот так она выглядит:

7.png

Где взять: GS.Общее.Форма с текстом


Данные об использовании объекта в макросах, метаданных, хранилище

Описание: Иногда хочется знать, где используется РУИД или ИД какой-то записи. Для этого есть глобальный макрос Использование объекта. Он определяет, какие бизнес-объекты есть на форме, если их несколько, предлагает выбрать, и ищет упоминания в скриптах\метаданных\хранилище той записи, на которой стоит курсор.

Может искать и в историии скриптов.

Вот так выбирается БО:

8.png


А так выглядит результат. Сначала информация о самом объекте:

9.png

Потом — где он используется

10.png


Все объекты можно открыть кликом мышки, даже историю функций .

Пример:

11.png


Где взять: GS.Общее.Использование объекта


Дерево связей между пространствами имен

Описание: Если вы хотите избавиться от избыточных зависимостей (ПИ А зависит от ПИ Б и ПИ В, но ПИ Б тоже зависит от ПИ В, т. е. Зависимость А от В избыточная), или просто увидеть, от чего и каким образом зависит ПИ, используйте макрос Деревце зависимостей из формы просмотра Пространств имен.

Вот как он показывает связи:

12.png

Чем больше зависимостей, тем медленнее строится деревце.

Где взять: GS.Пространство имен.Деревце зависимостей


Проверка на целостность пространства имен

Описание: Для поверки ПИ на целостность используются три отчета в форме просмотра Пространств имен:

  • Неверные зависимости
  • Зависимости по include
  • Зависимости в метаданных.

Отчет Неверные зависимости показывает неверные зависимости по внешним ключам: товар зависит от группы, а группы нет ни в этом ПИ, ни в тех, от которых оно зависит (или есть, но идет позже).

Сначала отчет показывает, от каких ПИ зависит данное ПИ (и не только напрямую, но и рекурсивно):

13.png

и есть ли циклические зависимости:

14.png

Потом — ошибки:

15.png


Объекты можно открыть кликом мышки.

Отчет Зависимости по include проверяет, верная ли последовательность у ф-й, а Зависимости в метаданных — зависимости в тексте метаданных (например, триггер обращается к процедуре, которой нет в ПИ).

Ошибку «Неверная последовательность в текущем ПИ» можно исправить макросом Сортировка (см выше).

Ошибку «Объект не существует» можно исправить макросом Удалить несуществующие позиции из ПИ.

Несуществующие объекты в ПИ также можно увидеть в отчете Удаленные объекты.

Если один из отчетов показал вам ошибку, не спешите паниковать: они не разбирают ситуации с циклическими ссылками (например, компания — на счет, а счет — на компанию) , ситуацию, когда стандартный объект метаданных не имеет РУИДа (или у него свой руид на каждой БД — привет, DCURRATE_NULL).

Отчет Объекты метаданных, которые не входят в ПИ, показывает таблицы, макросы, хранилище и тп, которые имеют РУИД, но не входят в ПИ:

16.png

Если хотите, чтобы какой-то объект здесь больше не показывался, нажмите на HIDE.

Если хотите увидеть то, что было скрыто, постройте с параметром Показывать скрытые.

Отчеты в веточке Пространства имен показывают связь текущего ПИ с другими ПИ (например, если хотите проверить, используются ли объекты вашего ПИ еще где-то , или в какие пакеты входит ваше ПИ и тд.

Отчеты в веточке Настройки показывают связь с настройками.


Где взять: GS.Пространство имен.Отчеты


Поиск в истории функций

Описание: Это отчет, строится из формы просмотра Пространств имен. Позволяет искать в истории функций:

17.png

и имеет вид:

18.png

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


Где взять: GS.Общее.Поиск в истории функций


Поиск по РУИДу\ИД

Описание: Если вы знаете РУИД\ИД, но не знаете, что это за объект, используйте отчеты Поиск по РУИДу \ Поиск по ИД (из формы просмотра Пространств имен).

Найдя один объект, отчеты дальше не ищут, таким образом, использовать их для поиска дублирующихся ИД в разных таблицах нельзя.

Вот как выглядит результат:

19.png

Где взять: GS.Пространство имен.Отчеты


Анализ метаданных

Описание: В отчетах в форме просмотра Пространств имен есть веточка Метаданные.

Отчет Поиск в метаданных — понятно, для чего. Вот такие у него опции:

20.png

А так выглядит результат:

21.png

Объекты открываются кликом мышки.

Отчет Где используется объект метаданных показывает, в какие процедурах, триггерах, представлениях используется таблица\поле\процедура\представление.

Хотите увеличить наименование в GD_CONTACT и вам интересно, что от этого поломается — вам сюда.

Вот так выглядит результат:

22.png

Все объекты открываются по клику мышки.

Чтобы увидеть, от каких метаданных зависит процедура\триггер\представление\вычисляемое поле, используйте отчет "От чего зависит объект метаданных".


Где взять: GS.Пространство имен.Отчеты


Сохранение записей в виде insert-запросов

Описание: Если на базе в результате повреждения или благодаря кривым рукам пользователя пропали какие-то записи, а на старой копии они есть, используйте макрос Сохранить данные таблицы в файл (вызывается из формы просмотра ПИ).

Запустите его на старой копии базы.

Нужно выбрать таблицу, указать, какие ИД сохранять, и макрос соберет execute block из соответствующих insert’ов.

Например, указали несколько документов:

23.png

Результат будет выглядеть так:

24.png

Где взять: GS.Общие.Сохранить данные в виде sql-запроса


Поиск в тексте

Описание: Это форма для удобного поиска в тексте процедуры или в произвольном тексте.

В форме просмотра Хранимых процедур есть макрос Искать в тексте. Он открывает форму поиска с уже загруженным текстом хранимой процедуры:

25.png


В форме просмотра ПИ есть макрос "Поиск в тексте (произвольный)".

Он вызывает ту же форму, но без текста , и с активной кнопкой Загрузить из файла.

При загрузке из файла надо выбрать кодировку (OEM – для некоторых выписок, UTF8 – для файлов ПИ, Win1251 – для всего остального).

Где взять: GS.Общее.Поиск в тексте



Шаблоны кода

Описание: Исследователь\Шаблоны кода — это форма для генерации и хранения часто встречающихся стандартных кусков кода.

Во так генерируется код для MessageBox’а:

26.png

результат выглядит так:

27.png


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

28.png

Где взять: Шаблоны кода


Универсальная форма просмора

Описание: Это инструмент, чтобы быстро склепать интерфейс с отчетами и макросами для пользователя. Нужно только заполнить данные в Исследователь \ Универсальная форма просмотра\ Настройки формы просмотра.

Вот как они выглядят:

29.png


Дерево слева превратится в многостраничные блокноты, а записи справа — в кнопки.

Страничкам блокнота можно задать кол-во столбцов (с кнопками), цвет, номер для сортировки:


30.png


Кнопке можно привязать отчет\макрос:

31.png


Также кнопке можно задать цвет, картинку (bmp 200*300 пикселей), подсказку:

32.png

К сожалению, нет механизма формирования веточки в Исследователе.

Для вызова формы используется ф-я vf_ViewFormByID(ID) (ИД — это ИД ветки в дереве настроек, не имеющей родителя).

Вот что получится, если указать ИД ветки «Директор»:


33.png

Где взять: GS.Универсальная форма просмотра

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты