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

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «'''Полезные разработки в Гедымине''' ===Введение=== Здесь собраны всякие "полезные штучки" д…»)
 
 
Строка 12: Строка 12:
 
Описание: помогает работать с датой(например: вычислить окончание месяца)
 
Описание: помогает работать с датой(например: вычислить окончание месяца)
  
Где взять: GS.Общее.Функции работы с датой
+
'''''Где взять:''''' GS.Общее.Функции работы с датой
  
  
Строка 23: Строка 23:
 
http://gsbelarus.com/gs/images/gs/2020/helpful/1.png
 
http://gsbelarus.com/gs/images/gs/2020/helpful/1.png
  
Где взять: GS.Общее.Универсальная форма выбора
+
'''''Где взять:''''' GS.Общее.Универсальная форма выбора
  
  
Строка 39: Строка 39:
 
и превратить их в дату-время (для Гедымина)
 
и превратить их в дату-время (для Гедымина)
  
Где взять: GS.Общие.Функции работы с xml
+
'''''Где взять:''''' GS.Общие.Функции работы с xml
  
  
Строка 46: Строка 46:
 
Описание: считает контрольную сумму для EAN13
 
Описание: считает контрольную сумму для EAN13
  
Где взять: GS.Общее.Штрихкоды
+
'''''Где взять:''''' GS.Общее.Штрихкоды
  
  
Строка 61: Строка 61:
  
  
Где взять: GS.Общее.Копировать поля в таблицу
+
'''''Где взять:''''' GS.Общее.Копировать поля в таблицу
  
  
Строка 74: Строка 74:
  
  
Где взять: GS.Общее.Всякое полезное
+
'''''Где взять:''''' GS.Общее.Всякое полезное
  
  
Строка 82: Строка 82:
 
Описание: Когда к гриду на форме могут привязываться разные источники данных в зависимости от каких-либо условий, стандартные методы LoadGrid и SaveGrid бесполезны, но можно вручную сохранять гриды в поток и выгружать из потока — этим занимаются gs_LoadGrid и gs_SaveGrid
 
Описание: Когда к гриду на форме могут привязываться разные источники данных в зависимости от каких-либо условий, стандартные методы LoadGrid и SaveGrid бесполезны, но можно вручную сохранять гриды в поток и выгружать из потока — этим занимаются gs_LoadGrid и gs_SaveGrid
  
Где взять: GS.Общее.Гриды и MemoryStream
+
'''''Где взять:''''' GS.Общее.Гриды и MemoryStream
  
  
Строка 93: Строка 93:
  
  
Где взять: GS.Общее.Процедуры по справочнику ТМЦ
+
'''''Где взять:''''' GS.Общее.Процедуры по справочнику ТМЦ
  
  
Строка 123: Строка 123:
  
  
Где взять: GS.Общие.Сохраненная информация
+
'''''Где взять:''''' GS.Общие.Сохраненная информация
  
  
Строка 131: Строка 131:
 
Описание: В классе TVB_gs_ArrFunctions собраны полезные фишки при работе с массивами: сортировки, перестановки элементов и т.д.
 
Описание: В классе TVB_gs_ArrFunctions собраны полезные фишки при работе с массивами: сортировки, перестановки элементов и т.д.
  
Где взять: GS.Общее.Массивы
+
'''''Где взять:''''' GS.Общее.Массивы
  
  
Строка 138: Строка 138:
 
Описание: Здесь хранятся константы цветов и функция выделения цветом в RichEdit.
 
Описание: Здесь хранятся константы цветов и функция выделения цветом в RichEdit.
  
Где взять: GS.Общее.Цвета
+
'''''Где взять:''''' GS.Общее.Цвета
  
  
Строка 153: Строка 153:
 
Макрос Сортировка анализирует не только зависимости по внешним ключам, но и зависимость по include в функциях, и зависимость в тексте метаданных.
 
Макрос Сортировка анализирует не только зависимости по внешним ключам, но и зависимость по include в функциях, и зависимость в тексте метаданных.
  
Где взять: GS.Пространство имен.Отчеты
+
'''''Где взять:''''' GS.Пространство имен.Отчеты
  
  
Строка 161: Строка 161:
 
Описание: Функции копирования полей и их значений между датасетами разных типов (gs_rpQuery, TclientDataSet, TIBSQL).
 
Описание: Функции копирования полей и их значений между датасетами разных типов (gs_rpQuery, TclientDataSet, TIBSQL).
  
Где взять: GS.Общее.Работа с dataset
+
'''''Где взять:''''' GS.Общее.Работа с dataset
  
  
Строка 176: Строка 176:
 
http://gsbelarus.com/gs/images/gs/2020/helpful/7.png
 
http://gsbelarus.com/gs/images/gs/2020/helpful/7.png
  
Где взять: GS.Общее.Форма с текстом
+
'''''Где взять:''''' GS.Общее.Форма с текстом
  
  
Строка 207: Строка 207:
  
  
Где взять: GS.Общее.Использование объекта
+
'''''Где взять:''''' GS.Общее.Использование объекта
  
  
Строка 221: Строка 221:
 
Чем больше зависимостей, тем медленнее  строится деревце.
 
Чем больше зависимостей, тем медленнее  строится деревце.
  
Где взять: GS.Пространство имен.Деревце зависимостей
+
'''''Где взять:''''' GS.Пространство имен.Деревце зависимостей
  
  
Строка 272: Строка 272:
  
  
Где взять: GS.Пространство имен.Отчеты
+
'''''Где взять:''''' GS.Пространство имен.Отчеты
  
  
Строка 289: Строка 289:
  
  
Где взять: GS.Общее.Поиск в истории функций
+
'''''Где взять:''''' GS.Общее.Поиск в истории функций
  
  
Строка 303: Строка 303:
 
http://gsbelarus.com/gs/images/gs/2020/helpful/19.png
 
http://gsbelarus.com/gs/images/gs/2020/helpful/19.png
  
Где взять: GS.Пространство имен.Отчеты
+
'''''Где взять:''''' GS.Пространство имен.Отчеты
  
  
Строка 334: Строка 334:
  
  
Где взять: GS.Пространство имен.Отчеты
+
'''''Где взять:''''' GS.Пространство имен.Отчеты
  
  
Строка 354: Строка 354:
 
http://gsbelarus.com/gs/images/gs/2020/helpful/24.png
 
http://gsbelarus.com/gs/images/gs/2020/helpful/24.png
  
Где взять: GS.Общие.Сохранить данные в виде sql-запроса
+
'''''Где взять:''''' GS.Общие.Сохранить данные в виде sql-запроса
  
  
Строка 373: Строка 373:
 
При загрузке из файла надо выбрать кодировку (OEM – для некоторых выписок, UTF8 – для файлов ПИ, Win1251 – для всего остального).
 
При загрузке из файла надо выбрать кодировку (OEM – для некоторых выписок, UTF8 – для файлов ПИ, Win1251 – для всего остального).
  
Где взять: GS.Общее.Поиск в тексте
+
'''''Где взять:''''' GS.Общее.Поиск в тексте
  
  
Строка 395: Строка 395:
 
http://gsbelarus.com/gs/images/gs/2020/helpful/28.png
 
http://gsbelarus.com/gs/images/gs/2020/helpful/28.png
  
Где взять: Шаблоны кода
+
'''''Где взять:''''' Шаблоны кода
  
  
Строка 434: Строка 434:
 
http://gsbelarus.com/gs/images/gs/2020/helpful/33.png
 
http://gsbelarus.com/gs/images/gs/2020/helpful/33.png
  
Где взять: GS.Универсальная форма просмотра
+
'''''Где взять:''''' GS.Универсальная форма просмотра

Текущая версия на 00:46, 11 мая 2020

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

Содержание

[править] Введение

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

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


[править] Функции работы с датой

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

Где взять: 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.Универсальная форма просмотра

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

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