![]() |
![]() |
![]() |
|
Програмная работа с формами | ☑ | ||
---|---|---|---|---|
0
glime
20.04.10
✎
18:43
|
Уважаемый народ, был ли у кого опыт работы програмными средствами со стандартными формами 1С(например в форму ПКО вниз, ниже коментария добавить свой реквезит), или нет?, основная проблема, указав явным образом высоту формы, при открытие и при нажатии "востоновить положение формы", 1С сворачивает форму до размеров в конфигураторе(само окно), появляются полосы прокрутки.
|
|||
1
glime
20.04.10
✎
18:44
|
Или я рано для этого захожу и на 8,1 не возможно сделать это и надо переходить на 8,2?
|
|||
2
Живой Ископаемый
20.04.10
✎
18:44
|
Я делал по-другому... Но может у тебя задача такая...
|
|||
3
glime
20.04.10
✎
18:49
|
не просто мне на многие формы надо добовлять одинаковый реквезит документа или справочника(УПП + УБИ(был такой управленчиский баланс называется)), задрался каждый раз при обновлениии курочить формы, занимаца дурной работой.
|
|||
4
glime
20.04.10
✎
18:55
|
и вообще у меня зверь не УПП а УСО(не привиди господь вам связаца, то что написано 1С то работает на уровне УПП, то что нарисовано Эрти, глаза б не видели)
|
|||
5
glime
20.04.10
✎
18:55
|
и релиз только выпустили 29, вот сижу обновляюсь. Про 8,2 говорить не хочу, так как напишут врядли.
|
|||
6
Живой Ископаемый
20.04.10
✎
19:01
|
Я делал так:
В типовой форме в процедуре ПередОткрытием писал: Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) АльтернативнаяФорма = ЭтотОбъект.ПолучитьФорму("ФормаДокумента1"); АльтернативнаяФорма.Открыть(); Отказ = Истина; Возврат; Угадай что у меня было в ФормаДокумента1? Правильно, дополнительные реквизиты... ФормаДокумента1 при обновлении не менялась, а за процедурами я слежу, и есть возможность даже если в модуле что-то меняется, то именно эту процедуру оставить... |
|||
7
Живой Ископаемый
20.04.10
✎
19:03
|
Но уж не знаю делал бы я так если бы этих фом было много....
|
|||
8
glime
20.04.10
✎
19:07
|
ага три десятка
|
|||
9
glime
20.04.10
✎
19:22
|
буду тогда по старинки ляпять формы :(
|
|||
10
glime
20.04.10
✎
19:23
|
не навижу такие переделки, тупая мучительная работа. ни какого полета мысли.
|
|||
11
Шурик71
20.04.10
✎
20:53
|
(0) Делал. Правда, в основном не я. Сам по мелочи вставлял программно элементы, но доводилось работать с чужой надстройкой для программной вставкой элементов.
Основной геморой - в том, что при вставке своих элементов плывут "типовые" привязки, и приходилось описывать еще и привязки части типовых элементов. И не всегда привязки отрабатывали нормально. Были недоработки с закладками панелей. Зато после корректного описания - одна строчка в форме и свои элементы диалогов на месте если не навсегда, то надолго. По той схеме был справочник, в котором вводились названия элементов диалогов, их типы, размеры, положения, привязки, видимость, обработчики. Была выгрузка/загрузка элементов этого справочника (для переноса между базами разработки и живой). Для реквизитов и табчастей документов/справочников был выбор из списка. Отработкой всего этого богатства занимались доп. процедуры общего модуля. В результате надо было вставить 1 строчку при открытии документа... |
|||
12
glime
21.04.10
✎
09:10
|
(11) а не подскажешь как бороца с формой, при открытии она стает таких размеров как заданна в конфигураторе, с полосами прокрутки, то же самое происходит с окном при нажатии в контекстном меню "Востоновить положение окна", с привязками существующих элементов счас борюсь, но если не реши вопрос с размерами окна то бесмусленно продолжение дискусии.
|
|||
13
glime
21.04.10
✎
09:41
|
и еще можно ли как то найти что привязано к тому или иному элементу форму, то есть не к чему элемент привяза, а на оборот что к нему привязанно. Для того чтоб при увелечении высоты формы и раздвижения
|
|||
14
glime
21.04.10
✎
09:54
|
и еще как получить доступ к границе формы. Просто когда я пишу
ЭтаФорма.Высота = ЭтаФорма.Высота + 24; граница остаеца прежней, соогтветственно, поместить за границу я не чего не могу. |
|||
15
glime
21.04.10
✎
10:06
|
аааа, помогите, поделитесь опытом, ведь многим это понадобиться
|
|||
16
SergeyKB
21.04.10
✎
10:15
|
1. Посмотрите методику, вставки вызовов в формы для типовых
пример описан здесь http://infostart.ru/public/20242/ 2. Обработка Декомпиляция форм методика описана здесь http://infostart.ru/public/22147/ прочтите и будет вас счатье, в плане обновления .... |
|||
17
SergeyKB
21.04.10
✎
10:17
|
2. Или здесь Декомпилятор форм http://infostart.ru/public/15195/
|
|||
18
glime
21.04.10
✎
10:49
|
то есть декомпелировать формы измененыю и не измененую, проанализировать и написать код?
(16) Не работает со сложными формами(вложенные панели), там идет удаление пФормаКопия.ЭлементыФормы.Удалить(ЭлементНастройкиМакета); , а при выносе родительской понели, подчиненые просто отлетают. |
|||
19
glime
21.04.10
✎
14:16
|
еще раз подыму, вставить реквезит удается на ура но в форме появляется полоса прокрутки, так как в режиме предприятия окно формы выходит как заданно в конфигураторе(или если нажать в контекстном меню "востоновить положение формы"), так вот есть или нет формы борьбы с данным злом?
|
|||
20
glime
21.04.10
✎
17:29
|
может кто прочтет? и подскажет?
|
|||
21
Шурик71
21.04.10
✎
17:49
|
(20) Апни завтра. Сегодня некогда смотреть, была ли проблема и если была, то как она решалась.
|
|||
22
glime
22.04.10
✎
11:16
|
еще раз подыму
|
|||
23
Шурик71
22.04.10
✎
22:15
|
Значица, так.
Проблема из 2х частей. Изначально описанная проблема - это что-то с руками. В том смысле, что если корректно добавлять элементы на форму - то полосы прокрутки не возникает. Но при установке высоты или ширины формы при ее открытии, действительно происходит сброс "сохраненного" состояния окна. То есть при открытии формы нельзя получить "сохраненные" пользователем размеры окна, размеры выдаются исходные. Соответственно, если нас устраивает "исходный" (с учетом добавленных элементов) размер при открытии - то все просто. Единственное - надо не забывать учитывать интервалы между элементами формы. Если же мы хотим, чтобы форма открывалась как ее настроил пользователь - то тогда придется форму немного обмануть. Примерный способ: 1)При открытии запоминаем размеры формы и определяем минимальный размер 2)При открытии добавляем элементы формы и привязки 3)при обновлении отображения не даем форме уйти меньше минимального размера Единственный минус - "Восстановить положение окна корректно не работает". Примерная схема: Процедура ПриОткрытии() ДобавляемыеИнтервалы = 8; СтдВысота = 19; МинимальнаяВысота = ЭтаФорма.Высота + ДобавляемыеИнтервалы + СтдВысота; МинимальнаяШирина = ЭтаФорма.Ширина; //исходная ДобавитьРеквизитыНаФорму(); //добавление реквизитов без изм. размера формы УстановитьПривязки(); КонецПроцедуры Процедура ОбновлениеОтображения() Если ЭтаФорма.Высота<МинимальнаяВысота Тогда ЭтаФорма.Высота = МинимальнаяВысота; КонецЕсли; Если ЭтаФорма.Ширина<МинимальнаяШирина Тогда ЭтаФорма.Ширина = МинимальнаяШирина; КонецЕсли; КонецПроцедуры Процедура ДобавитьРеквизитыНаФорму() РазмерРеквизита = 350; ЭлементРеквизит = ЭлементыФормы.Добавить( Тип("ПолеВвода"),"Реквизит1" ); ЭлементРеквизит.Данные = "Реквизит1"; ЭлементРеквизит.Лево = ДобавляемыеИнтервалы ; ЭлементРеквизит.Верх = ЭтаФорма.Высота + ДобавляемыеИнтервалы - ЭлементыФормы.ОсновныеДействияФормы.Высота ; ЭлементРеквизит.Высота = СтдВысота; ЭлементРеквизит.Ширина = РазмерРеквизита; КонецПроцедуры Процедура УстановитьПривязки() ЭлементыФормы.Реквизит1.УстановитьПривязку(ГраницаЭлементаУправления.Верх,Панель,ГраницаЭлементаУправления.Верх); ЭлементыФормы.Реквизит1.УстановитьПривязку(ГраницаЭлементаУправления.Низ,Панель,ГраницаЭлементаУправления.Верх); ЭлементыФормы.Реквизит1.УстановитьПривязку(ГраницаЭлементаУправления.Лево,Панель,ГраницаЭлементаУправления.Лево); ЭлементыФормы.Реквизит1.УстановитьПривязку(ГраницаЭлементаУправления.Право,Панель,ГраницаЭлементаУправления.Право);//растягивать КонецПроцедуры |
|||
24
glime
23.04.10
✎
14:07
|
спс
|
|||
25
lovesexmy
08.05.10
✎
05:32
|
93385139881258493900407105779278
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |