1с какие существуют основные формы документа существуют
Если основной реквизит формы имеет тип значения ДокументОбъект.<Имя>, то для данной формы действует расширение формы документа. Посредством него решаются вопросы специфичной функциональности формы документа. Расширение помогает обрабатывать различные команды пользователя, выполнять предварительные проверки и другие сервисные действия.
Кроме того, действие расширения формы документа распространяется и на механизмы записи и проведения документа. При этом неважно, была вызвана запись документа интерактивными действиями пользователя в форме документа или средствами языка Записать().
Рассмотрим ряд примеров работы этих механизмов.
Установка даты документа при открытии формы
Если дата документа изначально не установлена, то при открытии формы нового документа происходит установка дате документа значения текущей даты сеанса.
Причем время документа будет установлено в зависимости от следующих настроек. Если свойство АвтоВремя расширения формы документа имеет значение НеИспользовать то время документа будет установлено по значению текущей даты сеанса. В остальных случаях дате документа присваивается время начала дня (00:00:00).
Установка даты нового документа при записи нового документа в форме
При записи документа в режиме оперативного проведения значение даты документа устанавливается согласно выданной оперативной отметке времени. Тут настройки свойств расширения формы не играют роли.
Но если время документа "нулевое" (0:00:00), то при неоперативном проведении документа оно будет изменено согласно настройкам свойства АвтоВремя. Исключение - когда АвтоВремя имеет значение НеИспользовать тогда время документа не меняется.
.
Запрет интерактивной записи проведенного документа без проведения (перепроведения)
Запрет интерактивной записи проведенного документа без проведения (перепроведения) используется, чтобы не создавалась, например, такая ситуация: сначала документ реализации был заполнен и проведен, при проведении сформированы движения по регистру с указанием количества, соответствующего количеству в документе. После этого пользователь исправил данные документа и сохранил без проведения.
В результате таких манипуляций в документе будут записаны новые данные, а в движениях по регистру останутся данные от прошлого проведения документа, то есть они никак не будут соответствовать текущим данным документа.
Предотвращение подобных ситуаций достигается за счет установки свойства расширения формы документа ПриЗаписиПерепроводить значение Истина. Тогда отказ в обработке проведения приведет к откату транзации - документ не будет и перезаписан.
Установка режима проведения
Если интерактивное проведение разрешено, сам выбор варианта проведения должен быть обусловлен логикой применения механизма установки режима проведения из формы. То есть в некоторых ситуациях система должна выбирать режим жестко, в некоторых право выбора режима можно предоставить пользователю. Для этого разработчик обладает рядом возможностей, предоставляемых системой посредством разграничения прав и расширениями формы документа.
При записи документа из формы расширение формы документа выполняет установку режима проведения документа.
Для реализации данного функционала система использует вариант (Автоматически, Оперативный, Неоперативный, Запрашивать) указанный в качестве значения свойства ИспользоватьРежимПроведения расширения формы документа.
Вариант "Автоматически"
Вариант Автоматически устанавливается посредством выбора значения Автоматически у свойства ИспользоватьРежимПроведения расширения формы документа. Платформа стандартно устанавливает это значение для новой формы.
При испльзовании данного варианта, в зависимости от ситуации и настроек, происходит первичный подбор режима проведения из вариантов Оперативный или Неоперативный.
Для проводимого документа происходит проверка положения даты документа относительно текущей даты сеанса.
Если дата документа (без учета времени) равна текущей дате сеанса, то система автоматически выбирает вариант проведения Оперативный.
Если дата документа (без учета времени) больше текущей даты сеанса, пользователю выдается предупреждение: "Дата оперативно проводимого документа больше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется.
Если дата документа (без учета времени) меньше текущей даты сеанса, выбирается вариант проведения Неоперативный. При этом если у пользователя нет права на неоперативное проведение, выдается предупреждение: "Недостаточно прав для неоперативного проведения", и проведение документа отменяется.
Вариант "Оперативный"
Вариант Оперативный устанавливается посредством выбора значения Оперативный у свойства ИспользоватьРежимПроведения расширения формы документа.
В данном варианте, если дата документа (без учета времени) меньше текущей даты сеанса, выдается предупреждение: "Дата оперативно проводимого документа меньше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется.
Если дата документа (без учета времени) равна текущей дате сеанса, производится запись документа с оперативным проведением.
Если дата документа (без учета времени) больше текущей даты сеанса, выдается предупреждение: "Дата оперативно проводимого документа больше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется.
Вариант "Неоперативный"
Вариант Неоперативный устанавливается посредством выбора значения Неоперативный у свойства ИспользоватьРежимПроведения расширения формы документа.
При испльзовании данного варианта проведение документа из формы всегда производится в неоперативном режиме, независимо от положения даты документа по отношению к текущей дате сеанса.
При этом еслу у пользователя нет права на неоперативное проведение, выдается предупреждение: "Недостаточно прав для неоперативного проведения", и проведение документа отменяется.
Вариант "Запрашивать"
Вариант Запрашивать устанавливается посредством выбора значения Запрашивать у свойства ИспользоватьРежимПроведения расширения формы документа.
Данный вариант реализован в системе для того, чтобы помочь пользователю принять решение о выборе режима проведения для каждой конкретной ситуации.
В данном варианте пользователь перед началом проведения должен будет выбрать режим проведения документа в специальном системном окне.
Поведение системы при этом варианте определяется прежде всего положением даты документа (без времени) по отношению к текущей дате сеанса.
При равенстве этих дат далее проверяется, имеет ли пользователь право проводить документ неоперативно. Если пользователь такого права не имеет, система проводит данный документ в оперативном режиме. Если право на неоперативное проведение есть, пользователю выдается диалог с режимом выбора проведения. После выбора режима проведения система проводит документ соответственно в оперативном или неоперативном режиме.
Если дата документа (без учета времени) меньше текущей даты сеанса, поведение системы определяется опять же наличием права на неоперативное проведение у пользователя. Если пользователь таким правом не обладает, выдается предупреждение: "Дата оперативно проводимого документа меньше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется.
Если право на неоперативное проведение есть, пользователю выдается диалог с режимом выбора проведения. После выбора неоперативного режима проведения система проводит документ в неоперативном режиме. Если же пользователь выберет оперативный режим проведения, выдается предупреждение: "Дата оперативно проводимого документа меньше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется.
Если дата документа (без учета времени) больше текущей даты сеанса, система не позволяет проводить документ оперативно. Поэтому если права неоперативного проведения нет, сразу выдается предупреждение: "Дата оперативно проводимого документа больше текущей. Документ не может быть проведен оперативно!", и проведение документа отменяется.
Если право на неоперативное проведение есть, пользователю выдается диалог с режимом выбора проведения. После выбора неоперативного режима проведения система проводит документ в неоперативном режиме. Если же пользователь выберет оперативный режим проведения, будет выдано предупреждение: "Дата оперативно проводимого документа больше текущей. Документ не может быть проведен оперативно!", и проведение документа отменится.
Прочие функции
Кроме выбора режима проведения и установки даты документа, расширение формы документа реализует также следующий функционал:
Очень часто у многих начинающих программистов возникает вопрос: почему при открытии формы какого-либо объекта (справочника, документа и т.д) в командном интерфейсе 1С: Предприятия, открывается именно определенная форма. В этой статье мы разберем почему так происходит.
За открытие управляемой формы 1С в командном интерфейсе отвечают свойства объектов «Основные формы…». Посмотреть их можно двумя способами. Первый, в конструкторе объекта на закладке «Формы».
Второй, в палитре свойств объекта. В категории представление
Здесь и далее приведены примеры из конфигурации, разработанной в книге «Программировать в 1С за 11 шагов».
У всех объектов есть определенный перечень основных форм. Причем количество и состав основных форм может отличаться в зависимости от прототипа объекта (что это: справочник, документ, обработка и т.д.).
Например, у справочников это – форма элемента, форма списка, форма группы, форма выбора и форма выбора группы. А у документов – форма документа, форма списка и форма выбора.
Вид основных форм и их доступность определяются не только прототипом объекта, но и функциональностью объекта. Например, на рисунке ниже, у справочника Автомобили отключена иерархия, поэтому форма группы и форма выбора группы не доступна.
А на этом скрине, приведена основные формы справочника с включенной иерархией.
При создании новой формы разработчику предлагается выбрать тип формы.
По сути, для каждого типа формы должна быть одна основная форма. Но в то же время форм одного типа может быть несколько. Например, можно создать несколько форм списков справочника Гаражи и выбрать одну из этих форм основной.
Если мы сделаем так, как показано на рисунке выше, то по умолчанию, в командном интерфейсе будет всегда открываться форма списка – ФормаСписка1. Но форма ФормаСписка, ни куда не денется, разработчик сможет её использовать в собственных алгоритмах. Например, при программном открытии управляемой формы.
Статьи о программном открытии управляемых форм:
Программное открытие управляемой формы 1С
Открытие управляемой формы существующего объекта
Открытие управляемой формы на основании другого объекта
Открытие управляемой формы выбора объекта
Если же основная форма объекта не задана, то при выполнении стандартных команд будет открываться автоматически сгенерированная форма. Такое действие платформы в некоторых случаях разработчика может устроить (например, если мы создали простой справочник). Но большинстве случаев, программист конструирует форму самостоятельно, и тогда её необходимо указать в нужном свойстве.
Эта книга подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
- Без сложных технических терминов;
- Более 600 страниц практического материала;
- Каждый пример сопровождается рисунком (скриншот);
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Очень часто из документов доступны печатные формы, соответствующие по формату регламентированным бланкам.
Как бумажные формы документов ранее фиксировали движения в книгах организации, так и электронные документы фиксируют их в регистрах - например, отражают увеличение задолженности подотчетного лица. Запись в регистре осуществляется в момент проведения документа; документ является регистратором для созданных им записей.
- Неограниченное
- Ограничивается свойством конфигурации "Количество видов документов"
- 256, т.к. система не позволяет обрабатывать более 256 таблиц объектов одного тип
- 50, т.к. максимальная длина номера документа равна 50 символов
- Количество реквизитов документа не ограничено
- Максимальное количество реквизитов ограничивается в свойстве "Количество реквизитов"
- Количество реквизитов документа не ограничено, но при этом реквизитов ссылочного типа не может быть больше 10
- Количество реквизитов зависит от варианта работы с информационной базой. В файловом - до 50 реквизитов, в клиент-серверном - неограниченно
- Количество табличных частей документа не ограничено
- Максимальное количество табличных частей ограничивается в свойстве "Количество табличных частей"
- У документа может быть только одна табличная часть
- Количество табличных частей зависит от варианта работы с информационной базой. В файловом - до 50, в клиент-серверном - неограниченно
- Предназначены для хронологического отражения в системе событий предметной области, например, хозяйственных операций предприятия, контактов с покупателями
- Предназначены для отражение в системе условно-постоянной информации, например, карточек контрагентов
- Предназначены только для отражения хозяйственных операций в регистрах учета, например, в регистрах бухгалтерии
- Предназначены только для печати на бумажных носителях унифицированных форм, например, счетов-фактур, расходных накладных
- Предназначены только для обработки больших объемов данных в целях получения информации нового качества, например, формирование книги покупок, книги продаж по учету НДС
- Да, ограничен специальным списком. Документ может выступать в качестве регистратора движения только у тех регистров, которые отмечены на закладке "Движения" окна редактирования объекта
- Да, ограничен. Документ может выступать в качестве регистратора движения только в одном регистре, который отмечен на закладке движения окна редактирования объекта
- Да, ограничен типом регистра. Документ может выступать в качестве регистратора движения только в регистрах накопления, бухгалтерии и расчета
- Нет, не ограничен. Документ может выступать в качестве регистратора движения в любых регистрах
- Регистратор
- Документ
- ТекущийДокумент
- Специального свойства у записи регистра нет. Для этих целей можно определить у регистра реквизит типа "ДокументСсылка"
Вопрос 06.17 экзамена 1С:Профессионал по платформе. В каком свойстве хранится дата документа?
- Дата
- ДатаДок
- ДатаДокумента
- Нет правильного ответа
Вопрос 06.22 экзамена 1С:Профессионал по платформе. В каком свойстве хранится время документа?
Формы используются для удобного отображения данных базы пользователю. С формами можно работать как пользователь интерактивно, так и программист управляя поведением и внешним видом формы с помощью кода.
Типы форм
Формы делятся на два типа: обычные и управляемые, обычные формы это формы которые были в линейке 8 с самого начала и по текущий момент. Смысл этих форм заключается в том что форма в прямом смысле рисуется разработчиком, он указывает на то место (вплоть до пикселя)где будут располагаться элементы формы. Обычные формы работают только в толстом клиенте, в то время когда управляемые формы работают и в толстом и в тонком клиенте. Управляемые формы доступны в версии 1С начиная с 8.2 и выше и только когда конфигурация настроена как "Управляемое приложение". В тонком клиенте возможно использование только управляемых форм. Управляемую форму нельзя нарисовать мышкой. Элементы в ней не рисуются, а декларируются или объявляются, что накладывает некоторые ограничения. Вы можете указать что реквизиты будут группироваться горизонтально а не вертикально к примеру, но нельзя указать системе: "вон то поле ввода на 2пикселя выше пусть будет". В управляемых формах код делится строго на клиентский и серверный. В обычных формах можно встретить некоторые серверные ограничения только в режиме клиент-сервер и только для функций которые не расположены в модулях форм.
Программное открытие формы
Программно открыть форму можно с помощью метода "Открыть форму". Этот метод доступен в различных контекстах(форма может существовать и быть открыта только на клиенте) и отличается при использовании обычного и управляемого приложения(в толстом клиенте нельзя передать параметру в форму) но в целом имеет следующие основные параметры: ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>)
Имя формы: имя открываемой формы, так как для объекта метаданных могут быть не определены никакие формы, возможно указать просто тип формы который надо открыть, например "ФормаСписка" или "ФормаЭлемента". Параметры - параметры передаваемые в форму, с их помощью можно управлять отборами, устанавливать строку в нужном месте, или просто передавать в форму нужные параметры. Владелец – используется для организации подбора, обработкой результата выбора если форма открыта для подбора, будет заниматься форма или элемент указанные в этом параметре, так же есть возможность закрывать форму, если закрыта форма-владелец. Уникальность – этот определенный ключ отвечающий за уникальность формы, если этот параметр указан, то при открытии формы будет произведен поиск формы открытой с этим ключом и если такая будет найдена, то будет активирована уже открытая форма.Принадлежность форм
Формы могут общими(принадлежать к общим формам) или принадлежать определенному виду объектов, например справочнику номенклатура. Если формы принадлежат какому то виду объекта то они могут быть специального типа: например форма списка, эту форму можно использовать для того, что бы просмотреть список документов или форма документа, эту форму можно использовать для редактирования документа. Здесь мы говорим, «можно использовать» так как когда мы щелкаем по документу в списке или когда мы открываем список документов, будет открываться та форма, которая назначена основной. Если основная форма не назначена, при открытии форма будет сгенерирована, вне зависимости от того есть ли в списке форм, форма нужного вида. По сути форма это просто набор полей и кнопок, Форма выбора , форма списка и форма элемента могут отличаться друг от друга только основным реквизитом, который и служит идентификатором для платформы. Основными реквизитами у форм документа и у элемента справочника являются СправочникОбъект и ДокументОбъект . Для форм выбора и форм списка обычного приложения это СправочникСписок.ВидСправочника и ДокументСписок.ВидДокумента . У управляемого приложения у форм выбора и форм списка основной реквизит ДинамическийСписок . Форма выбора отличается от формы списка установленным свойством Режим выбора у основного реквизита. Если форма принадлежит справочнику\документу то для них доступны следующие типы:
Разница между элементами формы, и реквизитами объекта.
Для корректной работы с элементами формы, следует для себя четко разделить где нужно пользоваться элементами формы, а где реквизитами объекта. К примеру, Элементы.Организация Отвечает за поведение реквизита на форме, начиная от видимости, заканчивая цветом заголовка. В то время как Объект.Организация Предоставляет доступ непосредственно к данным.
Обращение к данным формы из модуля объекта.
Обратиться к реквизиту формы(не путайте с реквизитом документа\справочника) из модуля документа или справочника невозможно, потому, что модуль не может знать какая форма сейчас открыта(а их ведь может много) да и не факт, что при выполнении процедуры или функции модуля формы, какая то форма будет вообще открыта. Реквизиты формы существуют, только до тех пор, пока форма открыта.
"Толстые" объекты на управляемой форме.
Так как на тонком клиенте недостуны, данные базы данных, серверные объекты(например таблица значений) то на форме их как таковые разместить нельзя в то время, когда они как типы для реквизитов доступны. Здесь дело в том что, при добавлении на форму, добавляется не табличное поле, и не сам список элементов справочника номенклатура к примеру, а коллекция например типа ДанныеФормыКоллекция или ДанныеФормыСтруктура с урезанным функционалом, суть которой заключается в том, чтобы отображать данные таблицы значений которая является реквизитом формы или документа. Список методов, доступных для этих типов, позволяет вести комфортную работу, с данными тех объектов которые они отображают.
Преобразование Реквизит – Данные формы и обратно.
Несмотря на то, что типы ДанныеФормыКоллекция , имеют достаточно широкий функционал, иногда возникает необходимость на сервере получить, "оригинал" - тот объект который отображает форма. Особенно это актуально для реквизитов формы, ведь данные реквизитов объекта, можно получить из самого объекта. Для таких случаев существует метод РеквизитФормыВЗначение() , например:
Второй параметр необязательный.(и не совсем понятно зачем он нужен). Возможно и обратное преобразование, бывает необходимо когда полученный извне или сгенерированный объект "засунуть" в уже существующий реквизит формы, соответствующего типа для этого существует
Перезаполнение реквизитов формы в случае изменения объекта.
Бывают случаи когда объект изменяется не из формы а с помощью какой то процедуры, которая находится в модуле объекта или в любом другом месте. Если действие было инициализировано с помощью кнопки на форме, то после, например таких действий:
Вы не увидите изменений на форме, все дело в том, что форма не делает лишних вызовов к серверу без необходимости и как следствие не в курсе, что с объектом, что-то происходило. В этом случае надо перечитать данные объекта, следующим образом:
Читайте также: