gifts2017

Общая Форма Списка, построенная на Запросе

Опубликовал олег шишкин (shishkin1966) в раздел Программирование - Практика программирования

С целью оптимизации обмена данными с сервером БД была создана общая форма списка, строящаяся на базе запросов к БД и позволяющая пользователю визуально строить условия выборки данных исходя из структуры взаимосвязей объектов Метаданных .

 В связи с необходимостью переноса ПО с платформы Powerbuilder на платформу 1C предлагается выкладывать базовые объекты работы с данными. Основным объектом PowerBuilder является Datawindow. Он включает в себя описание данных, методы редактирования данных и визуальное представление. Представлена попытка переноса данного объекта на платформу 1С.

Представленное решение эмулирует частично Datawindow и включает в себя:
- Справочник Datawindow,  с описанием графического интерфейса Табличного Поля Формы (состава колонок, порядок, характеристики Табличного Поля). Справочник включает описание параметров для выборки и записи отредактированных данных (Текст Запроса, Главная таблица, режим удаления данных, Первичный Ключ), cостав процедур дополнительных Кнопок Командной Панели и Панели Основных Действий Формы, вид визуального представления/редактирования колонок и их характеристики - флажок, список выбора на базе запроса, список выбора на базе перечисления, вызов формы выбора, зависимые колонки.
- Справочник зависимостей между таблицами, который формируется автоматически и содержит данные о связях таблиц. Обрабатываются взаимосвязи объектов Метаданных: Справочники(табличные части и владельцы), Документы,  Регистры Накопления, Регистры Сведений, Регистры Бухгалтерии,  Регистры Расчета, Журналы Документов (Регистрируемые Документы и Графы).
- На базе Справочника зависимостей в состав ОбщейФормыСписка включен визуальный построитель запроса, в котором вы можете построить условие ГДЕ в соответствии с таблицей взаимосвязей. Автоматически будет строиться  запрос с исправленным условием ИЗ и ГДЕ. Построитель поддерживает все Виды Условий стандартного конструктора запросов. Дополнительно можно указывать скобки и связывать отдельные условия запроса по И/ИЛИ.
- ОбщееОкноСписка содержит стандартные функции фильтрации/сортировки записей
- ОбщееОкноСписка поддерживает режимы - редактирование табличных данных построенных на базе запроса, просмотра, просмотра с выбором значений колонки или ТаблицыЗначений из выделенных строк.
- Построение запроса не требует предварительной выборки данных, а строится на базе текста запроса и Справочника СвязейДанных. Выборка данных через запрос производится после построения запроса.

Состав : Информационная БД в формате 8.1 . Пользователь:shishkin, пароль:sog

Пример вызова:
// Открыть для редактирования в табличном виде справочник СвязиДанных
Процедура ОткрытьСправочникСвязиДанных() export
  Форма = ПолучитьОбщуюФорму("ОбщаяФормаСписка", ,Новый УникальныйИдентификатор());
  Форма.DatawindowName = "Справочник СвязиДанных";
  Форма.Mode = "EDIT";
  Форма.Открыть();
endprocedure

// Процедура просмотра Справочника Номенклатура в режиме просмотра и редактирования через форму Элемента
Процедура ОткрытьСправочникНоменклатура() export
  Форма = ПолучитьОбщуюФорму("ОбщаяФормаСписка", ,Новый УникальныйИдентификатор());
  Форма.DatawindowName = "Справочник Номенклатура";
  Форма.Mode = "VIEW";
  Форма.Открыть();
endprocedure

// Пример вызова просмотра результатов запроса без указания Datawindow
Procedure ОткрытьЗапросБезDatawindow() export
  Форма = ПолучитьОбщуюФорму("ОбщаяФормаСписка", ,Новый УникальныйИдентификатор());
  Форма.QueryText = "ВЫБРАТЬ * ИЗ Справочник.Номенклатура КАК Номенклатура";
  Форма.DatawindowProperties.UpdateTable = "Номенклатура";
  //Форма.РежимВыбора = true;
  //Форма.СпособОтображенияОкна = ВариантСпособаОтображенияОкна.Нормальное;
  Форма.СпособОтображенияОкна = ВариантСпособаОтображенияОкна.Максимизированное;
  Форма.Открыть();
endprocedure 

Цель разработки - устранение лишних (неконтролируемых) запросов к серверу БД со стороны клиента. Полный переход на работу с сервером через запросы. Перенос задачи построения различных выборок данных с разработчика на пользователя. Изживание механизма ОТБОРА (полной выборки данных с последующей фильтрацией всей выборки) и переход на выбор данных через правильные и оптимальные запросы.
Критика приветствуется !!!

Скачать файлы

Наименование Файл Версия Размер
Информационная БД 8.1. Общая Форма Списка 32
.dt 513,33Kb
09.10.14
32
.dt 513,33Kb Скачать
Что нового 7
.txt 0,89Kb
09.10.14
7
.txt 0,89Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Котэ Пруидзе (kote) 12.11.10 16:50
Цели.. перенос задачи построения различных выборок данных с разработчика на пользователя..
==
.. мечты, мечты. Пользователю нужна одна кнопка приводящая к нужному результату, если этот пользователь не программист, ИМХО.
2. олег шишкин (shishkin1966) 12.11.10 17:02
(1)
Я работаю разработчиком филиального банковского ПО. Система построена на аналогичных объектах (но только не 1с). Нас вообще никто не мучает вопросами о разработке каких-то отборов, выборок и прочей ерунды :) Все строится самими пользователями.

3. aga_aga (Збянтэжаны Саўка) 17.11.10 11:10
(1)
Пользователю нужна одна кнопка приводящая к нужному результату

это да, и то после того как он нажал ее у него вся спина мокрая :D
4. олег шишкин (shishkin1966) 01.12.10 10:39
После полной отладки "Связи Метаданных. Простой построитель запросов." процедура определения типа колонки будет перенесена в данную обработку. Не успеваю за всем.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа