gifts2017

Редактор формы для 7.7 + Настройка привязок

Опубликовал Епрст (Ёпрст) в раздел Программирование - Инструментарий

Позволяет редактировать форму из предприятия. Настраивать простые привязки формы.

Класс для любой конфигурации v7.7, позволяет на ходу:

  • "подвигать" все видимые элементы формы + изменить их размер с помощью мыши или стрелочками клавиатуры (с зажатым Shift)
  • поглядеть свойства атрибутов формы (можно через контекстное меню)
  • поглядеть на модуль формы
  • настроить простые привязки элементов формы, на выходе - готовый шаблон для вставки в модуль формы

Пока не реализовано:

  • правильная сортировка привязок формы
  • выгрузка формы/модуля формы в текстовый файлик, для turbomd.dll
  • выполнение самого текста модуля ...

Для чего ЭТО всё ?

Основная идея - "подправить" форму/модуль формы из предприятия и выгрузить форму/модуль формы в текстовый файлик для работы  turbomd.dll

+ настроить текст привязок для класса Общие.Форма.Привязка

Как попробовать?

1. Качаем  внешние компоненты:

    1cpp.dll      http://www.1cpp.ru/images/3/32/Icpp-latest.rar

    formex.dll  http://www.dorex.ru/files/?formex_t.zip

   1sci.dll       http://sci1c.googlecode.com/files/1sci_1006.rar

2. Кидаем их в каталог с базой, либо в папку \Bin основной программы

3. В ПриначалеРаботыСистемы пишем  строчки :

    ЗагрузитьВнешнююКомпоненту("1cpp.dll") ;

    ЗагрузитьВнешнююКомпоненту("formex.dll") ;

    ЗагрузитьВнешнююКомпоненту("1sci.dll");


4. Из скаченого архива  все файлики кидаем в папку с базой.

5. Запускаем 1с-предприятие, открываем в ней обработку Редактор.ert и нажимаем на "Подключить".

6.Открываем любую форму и нажимаем Ctrl+F12

Наслаждаемся положительными эмоциями.

ЗЫ:

Для работы требуется SciLexer.dll от metaeditor или любой другой сборки версии не ниже 1.74.
Последовательность поиска SciLexer.dll: каталог самой ВК, подкаталог config каталога программы, стандартная последовательность (каталог исполняемого файла, текущий каталог, PATH)

ЗЫЫ:
Для правильной работы привязок и сохранения настроек, необходимо сымать галку "изменять размер" в свойствах формы.

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

Наименование Файл Версия Размер
- 499
.1246621183 116,60Kb
19.09.16
499
.1246621183 116,60Kb Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр Рытов (Арчибальд) 03.07.09 16:11
2. Евгений Мартыненков (JohnyDeath) 03.07.09 16:36
Судя по описанию - круть!
3. Епрст (Ёпрст) 03.07.09 17:08
(2) Пока не всё реализовано, что хотелось бы...
:(
4. Сергей (Che) Коцюра (CheBurator) 03.07.09 18:24
Зачет стопудово! (даже не знаю как наехать ;-)
5. miandrew (miandrew) 03.07.09 19:02
И всё тки весело с ним работать :)
Держи плюса
6. Павел Шемякин (toypaul) 03.07.09 21:48
7. Rusk (Rusk51) 03.07.09 22:54
(4) А я знаю. Скачать не могу.Скачивается PhP.Опять ЧингисХан влез. Поэтому минус на словах(-)
8. Rusk (Rusk51) 03.07.09 23:01
9. dushelov (Душелов) 04.07.09 02:34
(7) Все нормально скачивается
10. Денис Денин (MrDen) 06.07.09 22:17
Интересная вещь! однозначно +
11. Епрст (Ёпрст) 07.07.09 00:45
Поправлена выгрузка текста привязки...
12. defzyx (NDM) 07.07.09 10:25
да, платформа 7.7 живет своей жизнью! ;)
Плюсану.
13. Евгений Мартыненков (JohnyDeath) 07.07.09 10:56
(12) Родители её уже давно бросили, спасибо, что появились люди, которые её усыновили, отмыли, причесали и поставили на ноги ;)
14. Сергей Поляк (sergeypv) 08.07.09 09:43
Обработка работает только под локальным админом, в домене п.6 ничего не делает. До конца не протестил. Ждем окончания проекта. В общем понравилось: + авансом.
15. Епрст (Ёпрст) 08.07.09 09:57
(14) если все вк загружены - то работает нормально..и в домене.
16. remi (janber) 08.07.09 10:59
Полезная штука. Когда есть простая возможность сделать экслюзивный вариант
документа для каждого юзера - они просто млеют. В моем варианте еще
настраивались видимость/доступность элементов диалога и значения по умолчанию.
17. Епрст (Ёпрст) 08.07.09 11:05
(16) Ээ.... а можно поглядеть то, на ваш вариант?
18. Епрст (Ёпрст) 08.07.09 11:06
+17 видимость/доступность атрибутов, равно как и индивидуальная форма для каждого юзверя - не проблема... Главное только - доделать выгрузку самой формы в файлик..остальное мелочи.
19. remi (janber) 08.07.09 11:22
(18) Для хранения настроек я использовал справочники 1С. Поэтому чтобы все
работало надо делать демо-версию конфы.
20. MagIvan (RailMen) 08.07.09 15:38
21. Евгений Улихин (fenix174rus) 17.07.09 10:44
Чет немогу запустить, ругается перед Сервис.ПерехватКлавиатуры(1), Поле агрегатного объекта на обнаружено.
22. Епрст (Ёпрст) 17.07.09 13:08
(21) ВК все установлены, как п.3 написано ?
23. Макс Войтунов (Scorpion23) 23.07.09 16:34
однозначно +, облегчает работу, в тоже время красиво и удобно
24. Igor Kurlov (1981ink) 11.08.09 21:56
ПРи попытке подключения пишет собственно это
ПерехватчикСобытийГМ = СоздатьОбъект("ПерехватчикГМ");
{C:\РЕДАКТОР.ERT(217)}: Неудачная попытка создания объекта (ПерехватчикГМ)
25. Епрст (Ёпрст) 12.08.09 08:33
(24) Значит не выполнил один из пунктов из описания..
ВК подключены ? ...
На закладке 1с++ классы видны ?
26. Igor Kurlov (1981ink) 12.08.09 11:26
все 3 ВК добавил при загрузке, уточни пожалуста что за закладка. Наверно ты имееш в виду в конфигураторе, так там в окне конфигурации на закладке 1c++ кроме фанктеста больше ничего нет
27. Епрст (Ёпрст) 12.08.09 12:07
(26) Нет. В режиме предприятия - Сервис-Параметры-Настройки 1с++ там смотри имена зарегестрированных классов.. Есть среди них указанный ПерехватчикГМ ?

ЗЫ:Если установлен плагин Visual 1C++ для опенконфа, то можешь посмотреть в самом пофигураторе.. на закладке 1с++
http://www.script-coding.info/Visual1cpp.html
28. Епрст (Ёпрст) 12.08.09 12:10
+27 а всё... увидел, что вижуал стоит у тебя..

:)
Ну если окромя фанктекста ничего нет.. чего ж ты хочешь тогда ?
defcls.prm положи в каталог ИБ (или исправь свой, чтоб пути к моим классам были верные)... затем в пофигураторе жми на обновить - если появятся мои классы - усё заработает.
29. Igor Kurlov (1981ink) 12.08.09 13:49
Всё бальшое спасибо заработал прописал в рпм все плагины в Базе
30. Роман Тарасевич (tarroman) 27.08.09 12:20
А у меня чего-то тоже п.6 не срабатывает (классы вроде подключены и перехватчик ГМ тоже вроде значится). Может чего где-то накосячли - я в 1С++ новичок.
31. Епрст (Ёпрст) 27.08.09 12:27
(30) Формекс и 1cpp каких версий загружены ?
См. на вкладке о программе.
32. Епрст (Ёпрст) 27.08.09 12:28
+31 Можешь еще вот что сделать :
В ПриНачалеРаботыСистемы прописать это:

Настройки=СоздатьОбъект("УправлениеНастройками");
Настройки.Сбросить("Проверка типов");
Настройки.Сбросить("Отладка");
Настройки.Включить("TurboBL");
33. Роман Тарасевич (tarroman) 27.08.09 12:46
(31) Формекс 2.0.5.93, 1cpp 2.5.0.7.
(32) прописал.

Все равно эффекта нету :((

Может быть нужно еще какие-то классы или ВК подключать?
34. Епрст (Ёпрст) 27.08.09 12:56
35. Епрст (Ёпрст) 27.08.09 12:57
+34 Не помню ужо, но вроде как в 2* небыло вообще перехватчика..
36. Роман Тарасевич (tarroman) 27.08.09 13:12
:(( с 1срр 3* я лопухнулся. Честно заменил dll. Теперь в запущенной 1С честно светится 3.0.1.23. Но на комбинацию клавиш КНТРЛ+Ф12 не реагирует. Может еще что-то, а может я что-то не так сделал.
Плагин sciLexer 1.74 в конфигураторе видится.

Кстати, а какой-нибудь визуальный эффект от операторов ЗагрузитьВнешнююКомпоненту("1sci.dll");
должен быть?
37. Епрст (Ёпрст) 27.08.09 13:21
(36) да... Даже на скрине видно ...

На вкладке "О программе" какие ВК светятся ? Каких версий ?
Еще какие-нить классы грузишь?
38. Епрст (Ёпрст) 27.08.09 13:22
И это, когда пункт 5. из описания делаешь, не ругается ?
39. Епрст (Ёпрст) 27.08.09 13:23
Случаем нет нигде явного отключения перехвата клавиатуры через Сервис.ПерехватКлавиатуры(0) ?
40. Роман Тарасевич (tarroman) 27.08.09 13:33
О-оо ё, прошу простить великодушно - про пункт 5 я то и забыл. Теперь все почестному выполнил все 6 пунктеров и зарядился положительными эмоциями :))

Но вот установка привязок не заработала. Выдает ошибку: sci=гФорма.СоздатьЭлементУправления("Scintilla","МодульФормы");
{D:\РОМАН_Т\БАЗЫ_1С\7_7\ТОРГОВЛЯ\РЕДАКТОР.ERT(909)}: Недопустимое имя класса: 'Scintilla'.
41. Епрст (Ёпрст) 27.08.09 15:52
(40) Значит не загружена ВК "1sci.dll";
42. Епрст (Ёпрст) 27.08.09 15:54
+41 + SciLexer.dll должна быть там, как написано в описании...
43. Роман Тарасевич (tarroman) 28.08.09 10:20
(41) твоя правда. Усе заработало. Однозначно +. Все так и напоминает о 8-ке ...

А скажи пож. в режиме 1С, я увидел, что текст модуля парсится как в конфигураторе (колорером), а вот телепатических вещей кажись нету (ту же процедуру "ПриОткрытии" искать нужно будет рученьками?
44. Епрст (Ёпрст) 28.08.09 10:25
(43) да..
ЗЫ: я забросил этот проект.. ибо пока нет решения выгрузить форму из предприятия в текстовый файл..
А так, была идея создать редактор по типу интелигента, только изменения сразу видеть через турбомд.
45. Роман Тарасевич (tarroman) 28.08.09 10:29
(44) А в чем загвозд (я правда с турбоМД не работал еще, но походу и до него доберемся - с 8-ки пересесть на 7-ку - ну очень скучно будет, а тут нарыл 1С++ и началось ... копание)?
46. Епрст (Ёпрст) 28.08.09 10:36
(45) нет решения выгрузки открытой формы из предприятия в текстовый файл.
47. Епрст (Ёпрст) 28.08.09 10:37
+46 и Альф и на Орефков обещались поглядеть и.. как-то не срослось.. нет времени.
48. Роман Тарасевич (tarroman) 28.08.09 10:40
(46&47) Понятно. Будем изучать ТурбоМД и скриптики по чуть-чуть, а там посмотрим.
49. vova K (sdfffsd) 29.10.09 01:06
Доргой автор!
Мне с большим трудом удалось всё заставить работать - допёр по косвенным замечаниям в этих постах, что нужна TurboBL, чего ,вроде, не было написано в инструкции. Присобачи - всё заработало. Мне открылся новый мир. Спасибо!
50. Епрст (Ёпрст) 29.10.09 07:28
(49) отдельно ставить turbobl.dll не нужно, она сто лет в обед интегрирована в саму 1срр.dll
51. Епрст (Ёпрст) 29.10.09 07:30
+50 Просто, для правильной работы класса "Перехватчик" нужно включить TurboBL в настройках при старте системы и всё.
52. vova K (sdfffsd) 29.10.09 08:37
Вобщем, колдун из меня плоховатый, но сработало - и то слава Богу. А Вам - БЛАГОДАРНОСТЬ за Вашу работу. Владимир.
53. script Мальчинко (script) 01.11.09 23:43
А у меня все заработало сразу.
НО
Выбираю Меню файл - Редактор - Жму Подключить
Но открываю форму на ней всего один реквизит ФИО.
Жму CTRL + F12. Появляються новое меню
Редактирую привязки:
По горизонтали : Растягивать
По вертикали : Вниз (хотя нужно вверх, но там такого пункта нет - только при сложной привязке, ну да ладно пусть будет вниз)
Полученный код вставляю в нужные места модуля.
Открываю форму и что. Реквизит просто исчез. Судя по отладчику ему присвоены координаты далеко влево за пределы формы (например ширина формы 800 а в УстановитьАтрибут(Лево = 1480,и т.д.,,,)) я так понимаю что реквизит просто уехал далеко влево.

54. Епрст (Ёпрст) 02.11.09 09:01
(53) С текстом привязки - там ошибка...есть..просто никто не писал - я и не выкладывал исправленный вариант.
55. Епрст (Ёпрст) 02.11.09 09:11
+54 Хотя нет.. посмотрел - всё должно работать...
Полный Код привязки можешь привести?
56. script Мальчинко (script) 02.11.09 11:27

//====================================================
//Этот текст следует поместить в модуль формы....
//©Ёпрст
//====================================================
Перем гРФорма;

Процедура ПриИзмененииРазмераОкна(ТипСобытия,Ширина,Высота)
гРФорма.ПриИзмененииРазмераОкна(ТипСобытия,Ширина,Высота);
КонецПроцедуры

Процедура ПриОткрытии()
гРФорма=СоздатьОбъект("Общие.Форма.Привязка");
гРФорма.УстановитьФорму(Форма);
гРФорма.Привязка("ФИО","T","Форма","W","Форма");
КонецПроцедуры



В свойствах формы птица изменять размер снята
Все компоненты загружены в глМодуле-ПриНачалеРаботы
Попытка
ЗагрузитьВнешнююКомпоненту("1CPP.dll");
Исключение
Сообщить("Ошибка при загрузке ВК 1CPP.dll");
КонецПопытки;

Попытка
ЗагрузитьВнешнююКомпоненту("FormEx.dll");
Сервис = СоздатьОбъект("Сервис");
ФормаРасш = СоздатьОбъект("РасширениеФормы");
Исключение
Сообщить("Ошибка при загрузке ВК FormEx.dll");
КонецПопытки;

Попытка
ЗагрузитьВнешнююКомпоненту("SpreadSheet.dll");
Исключение
Сообщить("Ошибка при загрузке ВК SpreadSheet.dll");
КонецПопытки;

Попытка
ЗагрузитьВнешнююКомпоненту("1sci.dll");
Исключение
Сообщить("Ошибка при загрузке ВК 1sci.dll");
КонецПопытки;

57. Епрст (Ёпрст) 02.11.09 11:30
(56) Вот это еще вставь в модуль отчета:

Процедура ПослеОткрытия()
гРФорма.ПослеОткрытия();
КонецПроцедуры // ПослеОткрытия
58. script Мальчинко (script) 02.11.09 11:39
Пардон.
Я еще в модуле класса Привязка в процедуре ПривязкаАтрибута
в конце текста модуля перед КонецПроцедуры вставил Флаг=0;
Теперь часть реквизитов растягиваеться но за пределы формы часть исчезла.
Если ни чего не менять то привязки не срабатывают.
Смотрел в отладчик
Проц класса ПриИзмененииРазмераОкна
Перем Лево, Верх, Ширина, Высота;
// СЮДА ПЕРЕДАЕТЬСЯ -1
Если Флаг=-1 Тогда
ШиринаПривязки=РасширениеФормы.Ширина;
ВысотаПривязки=РасширениеФормы.Высота;
Флаг=1;
Возврат; //ЗДЕСТЬ ЗАКАНЧИВАЕТЬСЯ ВЫПОЛНЕНИЕ МОДУЛЯ
КонецЕсли; // И НИЧЕГО НЕ ПРОИСХОДИТ

Если Флаг<>0 Тогда
Возврат;
КонецЕсли;
59. Епрст (Ёпрст) 02.11.09 11:47
(58)
Лови сам класс и пример использования..
http://webfile.ru/4052296

Прикрепленные файлы:
Общие.Форма.Привязка.rar
60. script Мальчинко (script) 02.11.09 11:48
По рекомендации Ёпрст вставил в модуль формы с привязками вот это

Процедура ПослеОткрытия()
гРФорма.ПослеОткрытия();
КонецПроцедуры // ПослеОткрытия

и все заработало
:D
61. Епрст (Ёпрст) 02.11.09 11:50
+59 Ты (57) сделал еще ?..

ЗЫ: а в классе не реализована правильная сортировка привязок.. если привязки связаны между собой, т.е один атрибут зависит от другово...
в (59) наглядный пример работы.

ЗЫЫ: можешь еще другой класс использовать, от ADirks, там есть сплиттеры.
62. script Мальчинко (script) 02.11.09 11:53
Еще один пардон

Горизонтальная привязка работает правильно а вот вертикальная нет
Настроена сложная привязка
Вертикальная: Форма.КВерхнейГранице.
Делаю форму максимизированно и реквизит опускается на середину формы по вертикали.
По горизонтали все ОК.
63. Епрст (Ёпрст) 02.11.09 11:55
(62) Замени "T" на "H" - будет растягиваться..
:)
А вообще - нажми в классе на описание - там есть полное описание, что означает T,W,H,L, LW,TH,BR...
64. script Мальчинко (script) 02.11.09 11:57
Вылечил только когда переделал привязку
Делал простую привязку и для реквизита вертикальную привязку делал не назначено, а горизонтальную оставил растягивать. Этот реквизит был первым сверху. Сейчас попробую настроить второй - тот что по ниже.
65. script Мальчинко (script) 02.11.09 11:59
Аналогичным образом сделал и для нижнего реквизита - все ОК.
66. Епрст (Ёпрст) 02.11.09 11:59
(64) посмотри лучше пример(59) - там всё наглядно, кто за кем и когда едет...
67. script Мальчинко (script) 02.11.09 12:10
Короче говоря все работает если:
Переменную модуля гФорма, которую делает конструктор, переделать на гРФорма

и в модуль добавить
Процедура ПослеОткрытия()
гРФорма.ПослеОткрытия();
КонецПроцедуры // ПослеОткрытия

или если процедура ПослеОткрытия() уже определена (как у меня)
то в тело процедуры, в любое место (например, в начало) добавить
гРФорма.ПослеОткрытия();

НУЖНО ОТМЕТИТЬ:
В процедуре ПриОткрытии перечисляються реквизиты для которых настраиваються привязки (НАПРИМЕР)
гРФорма.Привязка("тПоиск","T","Форма","","");
гРФорма.Привязка("картПолеПоиска","T","Форма","","");
гРФорма.Привязка("тПоиск1","T","Форма","","");
гРФорма.Привязка("ПолеПоиска","T","Форма","","");
у меня эти реквизиты лежат на картинке картПолеПоиска
в таких случаях важен порядок вызова привязок что бы все реквизиты были видны на картинке и не прятались за ней.
ВСЕ.
68. наталья р (nata11) 18.12.09 12:13
69. jojo nll (nll.jojo) 20.01.12 15:20
описание многообещающее
70. Марина Гинко (_qqq) 02.04.13 14:48
Где можно скачать класс Общие.Форма.Привязка? В (59) Ёпрст ссылка не рабочая.
71. Марина Гинко (_qqq) 02.04.13 15:55
Извините, вижу-вижу вторую ссылку на Общие.Форма.Привязка.rar
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа