Полезные разработки
MoS (обсуждение | вклад) (Новая страница: «'''Полезные разработки в Гедымине''' ===Введение=== Здесь собраны всякие "полезные штучки" д…») |
MoS (обсуждение | вклад) |
||
| Строка 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
Где взять: 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.Универсальная форма просмотра