Имя: Пароль:
1C
1С v8
Формы привязаны по ссылке, не являясь частью
0 Odavid
 
09.09.13
10:29
В 1С все формы - ФормаДокумента, Справочника, Списка и т.д., - не привязаны к объекту (документу, справчонику, являясь частью его, как в ООП), а дана привязка формы через ссылка в объекте.
При этом отдельно вызвать формы объекта без содания самого объекта нельзя.
Кто какие плюсы видит в такой конструкции?
1 Odavid
 
09.09.13
10:34
Минусы:
- переменные формы не видны в объекте
- события формы нельзя вызвать программно
- события формы (и элементов) привязаны строго к определенным действиям (напирмер, ПриИзменении - сугубо при изменении с экрана; программный ввод в ЭУ - не фиксируется никак).
2 Odavid
 
09.09.13
10:36
так как править нельзя, а форум реагирует на совершенно разные кнопки -
*
"- не привязаны к объекту (документу, справочнику, являясь частью его, как в ООП), а дана привязка формы через ссылку в объекте."
3 cw014
 
09.09.13
10:40
Прекратите употребять эти грибы, понедельник только...
4 fisher
 
09.09.13
10:44
(3) +1
Сначала надо порядок в голове после выходных наводить и только потом буквы писать.
5 a_alenkin
 
09.09.13
10:44
(3)+1 чу за бред?
6 mikecool
 
09.09.13
10:45
(1) а в каких языках события формы не привязаны к форме?
7 mikecool
 
09.09.13
10:46
"При этом отдельно вызвать формы объекта без содания самого объекта нельзя. " ПолучитьФорму работает только от объекта? че за ересь?
8 Odavid
 
09.09.13
10:47
(3) с удовольствием отправил ваше пожелание в 1С.
Ибо не намерен отвечать за них.
-------------------------------
Еще минус:
- форма как "типа объект" отсутствует в описании метаданных - т.о. доступ к её свойствам и методам получить нельзя.
Отсюда - например, невозможность нормально проверить, какого типа форма: форма документа, списка (и внутри списков - какого списка: СправочникСписок, ДокументСписок и т.д.) или еще какого Выбора.
9 Odavid
 
09.09.13
10:47
(7) мало того, что вы не программировали в ООП, так и в 1С не знаете, как вызвать форму объекта.
10 Odavid
 
09.09.13
10:48
(7) да, только из объекта.
11 cw014
 
09.09.13
10:49
Учи матчасть, дитя термоядерного синтеза:

Глобальный контекст.ПолучитьФорму (Global context.GetForm)
Глобальный контекст (Global context)
ПолучитьФорму (GetForm)
Синтаксис:

ПолучитьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>)
Параметры:

<ИмяФормы> (обязательный)

Тип: Строка.
Имя формы. Образуется как полный путь к объекту метаданных Форма (например, "Справочник.Контрагенты.Форма.ФормаОбъекта", "ОбщаяФорма.ФормаСохраненияФайла") или как полный путь к прикладному объекту, дополненный именем формы по умолчанию (например, "Справочник.Товары.ФормаВыбора").
Имена форм по умолчанию:
ФормаОбъекта (ObjectForm) - форма объекта по умолчанию;
ФормаГруппы (FolderForm) - форма группы по умолчанию;
ФормаЗаписи (RecordForm) - форма записи регистра по умолчанию;
ФормаСписка (ListForm) - форма списка по умолчанию;
ФормаВыбора (ChoiceForm) - форма выбора по умолчанию;
ФормаВыбораГруппы (FolderChoiceForm) - форма выбора группы по умолчанию;
ФормаКонстант (ConstantsForm) - форма констант по умолчанию для обычного режима, установленная как форма констант для конфигурации;
Форма (Form) - форма константы, отчета и обработки по умолчанию;
ОбщаяФорма (CommonForm) - общая форма;
ФормаНастроек (SettingsForm) - форма настроек отчета по умолчанию;
ФормаЗагрузки (LoadForm) - форма загрузки настроек;
ФормаСохранения (SaveForm) - форма сохранения настроек;
ФормаВарианта (VariantForm) - форма редактирования варианта отчета;
ФормаЗагрузкиПользовательскихНастроекОтчетов (ReportUserSettingsLoadForm) - форма загрузки настроек отчета;
ФормаСохраненияПользовательскихНастроекОтчетов (ReportUserSettingsSaveForm) - форма сохранения настроек отчета;
ФормаЗагрузкиВариантовОтчетов (ReportVariantsLoadForm) - форма загрузки варианта отчета;
ФормаСохраненияВариантовОтчетов (ReportVariantsSaveForm) - форма сохранения варианта отчета;
ФормаЗагрузкиНастроекДанныхФорм (FormDataSettingsLoadForm) - форма загрузки настроек данных форм;
ФормаСохраненияНастроекДанныхФорм (FormDataSettingsSaveForm) - форма сохранения настроек данных форм.
Например, для получения общей формы "ОбщиеНастройки" следует в модуле написать код:
Форма = ПолучитьФорму("ОбщаяФорма.ОбщиеНастройки");


Имена ФормаЗагрузкиПользовательскихНастроекОтчетов, ФормаСохраненияПользовательскихНастроекОтчетов, ФормаЗагрузкиВариантовОтчетов, ФормаСохраненияВариантовОтчетов, ФормаЗагрузкиНастроекДанныхФорм и ФормаСохраненияНастроекДанныхФорм нужно использовать без имени объектов метаданных.
Для внешних отчетов и обработок имя формы задается следующим образом:
ВнешнийОтчет.<имя отчета>.Форма.<имя формы>;
ВнешнийОтчет.<имя отчета>.<имя стандартной формы>;
ВнешняяОбработка.<имя обработки>.Форма.<имя формы>;
ВнешняяОбработка.<имя обработки>.<имя стандартной формы>.
При этом внешний отчет или обработка должны быть предварительно зарегистрированы в системе.
<Параметры> (необязательный)

Тип: Структура.
Параметры формы. Ключ структуры - имя параметра, а значение - значение параметра формы. Имя элемента должно совпадать с именем параметра структуры.
П = Новый Структура("Ключ", Поставщик);
Форма = ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", П);
Форма.Открыть();


<Владелец> (необязательный)

Владелец формы - форма или элемент управления другой формы.
<Уникальность> (необязательный)

Тип: Произвольный.
В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. Если будет найдена форма с таким же ключом уникальности, вместо открытия новой формы будет активизирована найденная форма.
Ложь - искать форму с ключом уникальности по умолчанию, Истина - не искать форму вообще, любое другое значение устанавливает ключ уникальности, по которому будет произведен поиск.
Значение по умолчанию: Ложь
<Окно> (необязательный)

Тип: ОкноКлиентскогоПриложения; ВариантОткрытияОкна.
Окно приложения, в котором будет открыта форма.
Применимо только для управляемой формы. Окном может быть только основное окно приложения или вспомогательное окно формы.
Если указан тип ВариантОткрытияОкна, окно формы будет создано согласно выбранному варианту.
Возвращаемое значение:

Тип: Форма; УправляемаяФорма.

Описание:

Получает форму или управляемую форму. Перед получением осуществляется поиск уже открытой такой же формы.
Поиск осуществляется по типу формы, значениям ключевых параметров формы, владельцу формы, пользовательскому ключу уникальности.
Если в параметре <Уникальность> передано значение Истина, то поиск уже открытых форм не осуществляется.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.
Примечание:

В тонком и веб-клиенте получает только управляемую форму.
Обычные формы внешних обработок не поддерживаются.
Если при получении обычной формы в параметре <ИмяФормы> указано не стандартное имя формы, передаваемые параметры не обрабатываются.
В процессе выполнения может быть несколько обращений к серверу. Часть из них кэшируются. Как минимум одно обращение к серверу есть всегда и оно не кэшируется. Кэширование зависит от версии платформы и версии конфигурации в целом. Если установлена низкая скорость соединения и не указывается текущая строка, то кэшируется форма выбора. Очистка кэша осуществляется с периодичностью в 20 мин. Удаляются формы, которые не использовались в этот период времени.
См. также:

Глобальный контекст, метод ОткрытьФорму
Глобальный контекст, метод ОткрытьФормуМодально
Глобальный контекст, метод ПолучитьОбщуюФорму
12 hhhh
 
09.09.13
10:49
(8) почему, форма ведь есть в метаданных?
13 Odavid
 
09.09.13
10:51
(11) вы тоже не понимаете, что написали.
14 Odavid
 
09.09.13
10:51
(12) нет.
Как объект - отсутствует. Только как приложение к доугому объекту.
Поэтому проверить наличие свойства у Формы - аналогично как у объекта через Метаданные, - невозможно.
15 fisher
 
09.09.13
10:54
Привязанные формы по сути являются частью объекта (их использование без него смысла не имеет).
Просто перечисленные тобой в (1) минусы вовсе не являются прямым следствием сабжа.
16 Odavid
 
09.09.13
10:54
(11) займитесь изучением 1С, и разберитесь, что такое Общие формы, как происходит вызов формы объекта, и как - внешней обработки.
17 Odavid
 
09.09.13
10:54
(15) возможно, я только догадываюсь.
В 1С все механизмы платформы - закрыты.
18 Defender aka LINN
 
09.09.13
10:55
Это же odavid, знатный дятел © H A D G E H O G s
19 Odavid
 
09.09.13
10:56
(18) не дятлим, а изучаем сабж.
Как  fisher.
20 Odavid
 
09.09.13
10:57
(18) знатный дятел © H A D G E H O G s
- HADGEHOGs навреняка будет доволен таким описанием.
21 Defender aka LINN
 
09.09.13
11:04
(19) Зачем мне изучать твой поток мыслей? Полезного я ничего не узнаю, а психику повредить могу.
22 fisher
 
09.09.13
11:10
Теперь по минусам (которые не имеют прямого отношения к сабжу):
1) Подумаешь. Концепция УФ вообще разделяет местонахождение форм и прикладных объектов.
2) Это даже минусом нельзя назвать. В нормальной ситуации такой насущной необходимости быть не должно. Эмуляция интерактива? Вроде в 8.3 что-то такое прикрутили для этих целей...
3) Фиксация программного ввода в ЭУ? Я так понимаю, что на самом деле п.2 и п.3 об одном и том же. Речь об облегчении кодинга всевозможных автозаполнений форм? Ну, могли бы, конечно, прикрутить какой-то пыптык. Только на самом деле пользы от него чуть. На практике и так элементарно обходится. Процедурой больше, процедурой меньше... Зато все полностью прозрачно.
23 mikecool
 
09.09.13
11:10
(9) давай ты будешь говорить за себя?
24 mikecool
 
09.09.13
11:11
(18) а, тото я думаю - кого он мне напоминает
25 Odavid
 
09.09.13
11:17
(21) понятно, зато высказался про HADGEHOGs ))
(22) 1 - вынесенную проблему не решает никак.
2 - очень даже нужно. Если не по рельсам 1С кататся.
3 - не одно и то же, а 3 и 2 - следствия некоего "механизма" платформы, в котором без всякой связи и как попало напихано "все-про-форму" - обработка событий, свойства, область видимости переменных форм....
Пункт 3 - элементарный пример: заполняешь поле, а его событие ПриИзменении не отрабатывает. И, как следствие, - никто не знает, как - программно или вручную, - в таком случае заполнено поле. Т.е. откуда "прилетело" значение поля.
26 Odavid
 
09.09.13
11:17
(24) вы уже стали похожи между собой? занятно ))
27 fisher
 
09.09.13
11:23
(25) Лениво отвечать. Очень похоже, что у тебя просто есть задача, которую не получается "красиво" решить. И ты считаешь, что если бы в 1С было "по уму", то получилось бы "красиво". Может, просто пора озвучить задачку? А мы обсудим :)
28 Odavid
 
09.09.13
11:32
(27) в данном состоянии подобные задачи "за форму" либо решаемы, либо - нет.
Я про те, которые нерешаемы.
А про метод внедрения 1С "зачем вам это? Вам это не нужно! Вам нужно вот так и туда" я все прекрасно знаю, видимо, лучше остальных )))
29 Odavid
 
09.09.13
11:35
Про плюсы кто-нибудь скажет?
Или все будем обсуждать свои отношения между собой?
30 Odavid
 
09.09.13
11:37
(27) да, кстати, если интересно - определи, какая форма - Списка или обычная - прилетела от объекта.
31 Odavid
 
09.09.13
11:38
+ без костылей вида передачи параметров из обработчиков событий "ВидФормы = ЭтоФормаСписка".
32 fisher
 
09.09.13
11:41
Пытаешься внедряемые компоненты интерфейса разрабатывать? :)
33 Defender aka LINN
 
09.09.13
11:50
(25) Ты еще и читать не умеешь...
(30) "Форма прилетела от объекта" - это вообще как? По-русски слабо сформулировать?
34 H A D G E H O G s
 
09.09.13
14:51
Походу зародился новый Гений1С. Ликуем, чё...
35 Odavid
 
09.09.13
14:54
(32) перепрограммируемые ))
36 Odavid
 
09.09.13
14:57
(33) рекомендую для общего развития в 1С следующее:
поставить в события документов, справочников и прочего ПриОткрытии - передачу в функцию создаваемых 1С-ой объектов. Тех же Форм. И помсотреть, что "прилетает" от "типа объектная модель" в 1С.
Видимо, тот кошмар из "типа объектов", которые создает 1С, вижу только я.
37 Odavid
 
09.09.13
14:58
+ даже события ПриСоздании нет... "у нас объектная модель, да"....
38 Defender aka LINN
 
09.09.13
15:00
(36) Переводчик! В зале есть переводчик?!
39 H A D G E H O G s
 
09.09.13
15:06
(38) Я напишу Сереге (Г1С) в аську, я думаю, он сможет в дешифровке.
40 z0001
 
09.09.13
15:36
41 Odavid
 
09.09.13
15:48
(40) поучись лучше, сынок.
42 z0001
 
09.09.13
15:52
(41)упоротый тролль )))
тролль "Папа" )))
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн