Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 сен 2021, 01:20

Что такое "Форма" с точки зрения языка программирования?

Автор друган, 11 мар 2017, 19:30

0 Пользователей и 1 гость просматривают эту тему.

друган

Друзья! При работе с отладчиком в стеке вызовов получил такое вот имя функции:

ЦитироватьДокумент.ПоступлениеТоваров.Форма.ФормаДокумента.Форма.ПолучитьЦену(Товар=Чёрный)

Вот "Форма", которую я выделил красным цветом, это чего? "Документ.ПоступлениеТоваров" это какой-то, наверное, объект, а "Форма"- одно из его полей. Смотрим в справочнике.



Вот тут видите, "Документ.ПоступлениеТоваров" это, соответственно "Документ.<Имя документа>", а ниже перечень полей и одно из них и должна быть моя "Форма", только никакой "Формы" в перечне нет. Так если "Форма" это не поле (не свойство, не метод, не функция), что же это такое? Спасибо, кто откликнется.
P.S. Занимаюсь по учебной версии 8.3

друган

Ну что, ребята, какие будут тык скыть мнения?

LexaK

вся 1С построена на объектах!
форма это какой-то объект
объекты имеют
Свойства/реквизиты
    которым вы можете присваивать или читать значения
    есть свойства только для чтения
Методы
    Процедуры и функции как встроенные так и написанные вами в конфигруаторе
События (в некоторых объектах может не быть)
    выполнение некоего кода при определенных условиях

вся эта начинка объекта зависит от его типа, Тип объекта/формы смотри во время отладки
по Типу находи справочную информацию в СП (синтаксис помощьник)
там подробно расписано про структуру отлаживаемого объекта/формы и т.д.

читайте СП, читайте книжки, хорошо было бы если бы вы знали хотя бы какой-то один из основных языков программирования
С++, паскаль. и т.д.

ответ Понравился? (в смысле пригодился?)

друган

Цитата: LexaK от 13 мар 2017, 09:18читайте СП
так я читал. Картинка, которую я привёл это именно скриншот синтаксис помощника. Там вообще ничего нет про поле "Форма". Но я так понимаю, на картинке, которая справочник идёт перечисление не полей, а типов. Поле "Форма" какому типу принадлежит? Никакому. А почему? Непонятно. Это я писал уже, кстати.

++++++++++++++++++++++++++++++++++++++++++++

Про языки. Вот, допустим, C++,

Цитироватьclass foo
{
   public:
   int bar;
};


int main () {

    foo foo_0;
    foo_0.bar = 9;

}

Вот тут у меня возникает вопрос, в функции main bar что такое, Откуда оно взялось? А я тогда смотрю в объявление класса foo (это тот самый синтаксис-помощник) и вижу- ага, bar это поле типа int класса foo.

А на скриншоте ничего похожего на "Форма" нет.
Прочёл официальную книжку "Сертифицированный курс фирмы 1С азы программирования в системе "1С:предприятие 8.3", там естессно, ничё это не объяснено. У Радченко тоже нет.

Вопрос открыт поэтому.

LexaK

вот из СП по управляемой форме
(для неуправляемых тоже что-то есть)

УправляемаяФорма (ManagedForm)
Свойства:

<Имя реквизита> (<Attribute name>)
АвтоЗаголовок (AutoTitle)
АвтоматическоеСохранениеДанныхВНастройках (AutoSaveDataInSettings)
АвтоНавигационнаяСсылка (AutoURL)
ВертикальнаяПрокрутка (VerticalScroll)
ВертикальноеПоложениеПодчиненных (ChildItemsVerticalAlign)
ВертикальныйИнтервал (VerticalSpacing)
ВладелецФормы (FormOwner)
ВыравниваниеЭлементовИЗаголовков (ItemsAndTitlesAlign)
Высота (Height)
ГоризонтальноеПоложениеПодчиненных (ChildItemsHorizontalAlign)
ГоризонтальныйИнтервал (HorizontalSpacing)
Группировка (Group)
Доступность (Enabled)
Заголовок (Title)
ЗакрыватьПриВыборе (CloseOnChoice)
ЗакрыватьПриЗакрытииВладельца (CloseOnOwnerClose)
ИмяФормы (FormName)
КлючНазначенияИспользования (PurposeUseKey)
КлючСохраненияПоложенияОкна (WindowOptionsKey)
КлючУникальности (UniqueKey)
КоманднаяПанель (CommandBar)
Команды (Commands)
МодальныйРежим (ModalMode)
Модифицированность (Modified)
НавигационнаяСсылка (URL)
Окно (Window)
ОписаниеОповещенияОЗакрытии (OnCloseNotifyDescription)
Параметры (Parameters)
ПоведениеКлавишиEnter (EnterKeyBehavior)
ПодчиненныеЭлементы (ChildItems)
ПоложениеКоманднойПанели (CommandBarLocation)
ПроверятьЗаполнениеАвтоматически (AutoFillCheck)
РежимОткрытияОкна (WindowOpeningMode)
СохранениеДанныхВНастройках (SaveDataInSettings)
СохраняемыеВНастройкахДанныеМодифицированы (SavedInSettingsDataModified)
ТекущийЭлемент (CurrentItem)
ТолькоПросмотр (ReadOnly)
УникальныйИдентификатор (UUID)
УсловноеОформление (ConditionalAppearance)
Ширина (Width)
Элементы (Items)
ЭтотОбъект (ThisObject)

Методы:

Активизировать (Activate)
ВводДоступен (IsInputAvailable)
ВыбратьИзМеню (ChooseFromMenu)
ВыбратьИзСписка (ChooseFromList)
ВыполнитьПереход (ExecuteNavigation)
ЗаблокироватьДанныеФормыДляРедактирования (LockFormDataForEdit)
Закрыть (Close)
ЗначениеВРеквизитФормы (ValueToFormAttribute)
ИзменитьРеквизиты (ChangeAttributes)
НачатьРедактированиеЭлемента (BeginEditingItem)
ОбновитьОтображениеДанных (RefreshDataRepresentation)
ОповеститьОбАктивизации (NotifyActivate)
ОповеститьОВыборе (NotifyChoice)
ОповеститьОЗаписиНового (NotifyWritingNew)
ОтключитьОбработчикОжидания (DetachIdleHandler)
ОтключитьОтметкуНезаполненного (ClearMarkIncomplete)
Открыта (IsOpen)
Открыть (Open)
ОткрытьМодально (DoModal)
ОткрытьСправкуФормы (OpenFormHelp)
ОтобразитьИзменениеДанных (RepresentDataChange)
ПодключитьОбработчикОжидания (AttachIdleHandler)
ПоказатьВыборИзМеню (ShowChooseFromMenu)
ПоказатьВыборИзСписка (ShowChooseFromList)
ПолучитьДействие (GetAction)
ПолучитьПараметрыФункциональныхОпцийФормы (GetFormFunctionalOptionParameters)
ПолучитьРеквизиты (GetAttributes)
ПолучитьФункциональнуюОпциюФормы (GetFormFunctionalOption)
ПроверитьЗаполнение (CheckFilling)
РазблокироватьДанныеФормыДляРедактирования (UnlockFormDataForEdit)
РеквизитФормыВЗначение (FormAttributeToValue)
УстановитьВыполнениеОбработчиковСобытия (SetEventHandlersExecution)
УстановитьВыполнениеПослеОбработчиковСобытия (SetExecutionAfterEventHandlers)
УстановитьДействие (SetAction)
УстановитьПараметрыФункциональныхОпцийФормы (SetFormFunctionalOptionParameters)

События:

ВнешнееСобытие (ExternalEvent)
ОбработкаАктивизации (ActivationProcessing)
ОбработкаВыбора (ChoiceProcessing)
ОбработкаЗаписиНового (NewWriteProcessing)
ОбработкаНавигационнойСсылки (URLProcessing)
ОбработкаОповещения (NotificationProcessing)
ОбработкаПерехода (NavigationProcessing)
ОбработкаПроверкиЗаполненияНаСервере (FillCheckProcessingAtServer)
ПередЗагрузкойДанныхИзНастроекНаСервере (BeforeLoadDataFromSettingsAtServer)
ПередЗакрытием (BeforeClose)
ПриЗагрузкеДанныхИзНастроекНаСервере (OnLoadDataFromSettingsAtServer)
ПриЗакрытии (OnClose)
ПриИзмененииПараметровЭкрана (OnChangeDisplaySettings)
ПриОткрытии (OnOpen)
ПриПовторномОткрытии (OnReopen)
ПриСозданииНаСервере (OnCreateAtServer)
ПриСохраненииДанныхВНастройкахНаСервере (OnSaveDataInSettingsAtServer)

Параметры формы:

ЗакрыватьПриВыборе (CloseOnChoice)
ЗакрыватьПриЗакрытииВладельца (CloseOnOwnerClose)
КлючНазначенияИспользования (PurposeUseKey)
ПараметрыФункциональныхОпций (FunctionalOptionParameters)
ТолькоПросмотр (ReadOnly)

Описание:

Используется для доступа к свойствам, методам и событиям управляемой формы в целом, а также к коллекции ее элементов управления. Доступ к свойствам, методам управляемой формы из ее собственного модуля осуществляется непосредственно, используя их имена (без ссылки на какой-либо объект).

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

Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
См. также:

УправляемаяФорма, событие ОбработкаПроверкиЗаполненияНаСервере
УправляемаяФорма, свойство ЭтотОбъект
ТаблицаФормы, событие ОбработкаЗаписиНового
УправляемаяФорма
ответ Понравился? (в смысле пригодился?)

друган

Подождите про управляемые формы. Может быть я и сам бы нашёл про управляемые формы. Вот такая строчка:

Цитата: друган от 11 мар 2017, 19:30Документ.ПоступлениеТоваров.Форма

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

Этот вопрос и нужно осветить. А потом про нахождение инфы по конкретным типам, это другой вопрос уже.

Это как я бы на плюсах объявил класс с полем int, а потом пытался объявить переменную, принадлежащую этому классу, но типа char! (без приведения типов). у меня бы живо компилятор ругнулся.


alex0402

Цитата: друган от 11 мар 2017, 19:30Документ.ПоступлениеТоваров
и так по порядку.
1) Документ - какой тип?
2) ПоступлениеТоваров - какой тип?

З.Ы.
У меня в отладчике не получается открыть Документ, только Документы...
Спасибо за Сказать спасибо

Kironten

Покажите в отладчике где вы вышли на этот код. А заодно покажите тип значения
Документ.ПоступлениеТоваров.Форма в этой строке кода.

друган

Цитата: alex0402 от 13 мар 2017, 11:38и так по порядку.
1) Документ - какой тип?
Честно говоря, не знаю, и в справочнике найти НЕ МОГУ. НО может, это какой супер тип, что по ним информация необязательна? Таких типов несколько документ, справочник, ещё что-то. Есть они и есть.

Цитата: alex0402 от 13 мар 2017, 11:38и так по порядку.
2) ПоступлениеТоваров - какой тип?
Наверное, строковый. Но мы же не рассматриваем ПоступлениеТоваров, мы же рассматриваем Документ.ПоступлениеТоваров. И потом, я знаю, куда тыкать, тыкать нужно сюда:

И получаем описание (скриншот в первом посту). Из чего делаем вывод, что Документ.ПоступлениеТоваров есть объект типа Документ.<Имя Документа>

+++++++++++++++++++++++++++++++++

Цитата: Kironten от 13 мар 2017, 11:39
Покажите в отладчике где вы вышли на этот код.

Есть моя функция "ПолучитьЦену". Я на ней брякнулся и посмотрел стек вызовов. И увидел длинное-длинное имя "ПолучитьЦену", оно такое:
ЦитироватьДокумент.ПоступлениеТоваров.Форма.ФормаДокумента.Форма.ПолучитьЦену(Товар=Чёрный)



Вот и всё. Документ.ПоступлениеТоваров.Форма это часть полного имени функции. ЭТО же объект? Объект. А инфы о нём нет.

+++++++++++++++++++++++++++++++++++++++++++

Цитата: Kironten от 13 мар 2017, 11:39
А заодно покажите тип значения
верите, нет, сам ума не приложу- какой у него тип и где это прочесть.

Kironten

В стеке вызовов показывается МЕСТО ВЫЗОВА. Т.е. то место откуда вызывается данный код, а не его "точное значение".
Т.е. в вашем случае:
Цитата: друган от 11 мар 2017, 19:30
ЦитироватьДокумент.ПоступлениеТоваров.Форма.ФормаДокумента.Форма.ПолучитьЦену(Товар=Чёрный)
говорит только о том, что процедура получитьцену вызывается из определенной формы определенного документа, и ни о чем больше.
Нет никаких реквизитов "форма".
В общем стек вызова и код в тексте это мягко говоря не одно и то же.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск