1С обратиться к общей форме

Общие формы — формы, которые доступны из места конфигурации. Обычно общие формы используются для форм настроек программы и других сервисных функций. Например, прикрепление файла к документу, установка ЭЦП, структура подчиненности, установка прав доступа, печать документов, рабочие столы и т.д.

Общие макеты, общие картинки -объекты метаданных, которые могут универсально использоваться из разных мест конфигурации.

Элементы стиля — набор определенных заранее стилей, ссылка на которые используется в оформлении конфигурации. При смене стиля в этом объекте конфигурации, стиль автоматически меняется во всей конфигурации.

Языки — объект конфигурации, который предназначен для создания интерфейсов программы на разных языках.

Создание общей формы в 1С 8.3

Для облегчения создания новой общей формы разработчиками платформы 1С был создан конструктор форм:

Он позволяет буквально в несколько кликов мыши создать новую форму констант, отчета, форму выбора настроек отчета или варианта отчета.

Вызвать общую форму можно с помощью метода ОткрытьФорму(), например:

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

На общих модулях лежит обязанность хранения процедур и функций, которые вызываются из других мест системы 1С. Считается хорошим тоном размещение кода, вызывающегося несколько раз, в процедуре в общем модуле. Это правило универсально для всех конфигураций, поэтому любой разработчик 1С должен уметь работать с этими объектами конфигурации. Для этого нужно понимать все нюансы и уметь правильно использовать предоставленные платформой возможности.

Создание общего модуля в 1С

После создания функции в одном из модулей объекта возникла потребность использовать аналогичный алгоритм в другом месте. Самое правильно, что можно здесь сделать – перенести код в общий модуль, но перед этим необходимо создать его. Чтобы это сделать, нам нужно зайти в конфигуратор и в дереве конфигурации найти вкладку «Общие». Затем выделить «Общие модули» и воспользоваться кнопкой в виде белого плюса на зеленом кружке.

Читайте также:  Жесткого диска ssd 250gb

Справа откроются свойства добавленного общего модуля, и нам предстоит разобраться, что обозначает каждое из них. Они могут быть различной направленности, поэтому, перед тем как настраивать новый объект, желательно определиться, что мы там будем хранить. Если что, в будущем можно будет изменить свойства в соответствии с задачами:

  • «Глобальный». Данный флаг ставится, если модуль предназначен для хранения процедур и функций, которые должны вызываться без указания имени модуля. Естественно, они должны быть экспортными, а их имена уникальными в разрезе всего глобального контекста. По использованию они не будут отличаться от стандартных функций платформы;
  • «Клиент». Зависит от настроек системы и регламентирует, могут ли процедуры модуля выполняться на стороне клиента;
  • «Сервер». Помечаются общие модули, в составе которых планируется помещать алгоритмы для выполнения на сервере;
  • «Внешнее соединение». Процедуры модуля с активацией этого свойства смогут выполняться через подключение внешнего источника;
  • «Вызов сервера». Отвечает за разрешения процедурам из модуля вызывать сервер, выполняясь на клиенте;
  • «Привилегированный». Активация этой настройки позволит при работе кода процедур модуля не проверять права доступа. Вызвать общий модуль с такой настройкой можно только на сервере. Настройки «Клиент» и «Внешнее соединение» будут сброшены;
  • «Повторное использование». Может принимать значения: «Не использовать», «На время сеанса», «На время вызова». При многократном вызове одной процедуры система может использовать рассчитанные ранее данные в рамках процедуры (вызов) или жизни всего сеанса (запуска 1С). Стоит быть очень осторожным с этой настройкой, так как из-за неправильного использования таких модулей могут возникать ошибки.

Бывают ситуации, когда требуется создать общий модуль с вызовами процедуры на сервере и клиенте с отличиями в алгоритме. Для разграничения кода используются директивы препроцессора с проверкой. В результате для серверного вызова это будет один код, а для клиентского – другой.

Читайте также:  Робот пылесос xiaomi s50 обзор

Пример переноса кода в общий модуль 1С

Рассмотрим ситуацию, когда у нас два события на форме документа задействуют одну процедуру перемножения количества и цены в табличной части. Это достаточно распространенный алгоритм, так как он встречается во многих документах закупки и реализации. Перенесем код процедуры в общий модуль, который необходимо предварительно создать, чтобы получить возможность использовать этот код в других документах.

Так как для нашей задачи нам хватает вызова с клиента и не нужны данные из базы, ставим только флаг «Клиент». Если вы хотите в дальнейшем использовать этот же модуль для более сложных расчетов, то отметьте в свойствах еще и «Сервер». Подготовительный этап завершен и можем переходить к написанию кода.

Создадим экспортную процедуру в модуле и перенесем туда алгоритм расчета суммы из процедуры в модуле формы. В качестве параметра процедуры на входе будет использоваться строка табличной части. В модуле формы документа меняем вызовы процедуры в том же модуле на вызов процедуры из общего модуля.

При запуске системы мы не заметим разницы, но такую структуру кода читать и сопровождать намного удобнее. Конечно, в данном примере количество кода не может показать всей пользы. В случае сложного алгоритма для десятков объектов конфигурации выигрыш в объеме кода и его структуры скажется и на быстродействии системы. Помимо этого опытные разработчики 1С рекомендуют в модулях формы не описывать алгоритмы, а помещать их в правильно настроенные общие модули.

При разработке общих модулей следует учитывать общепринятые правила по их созданию:

  • Помещать в отдельный общий модуль процедуры и функции, относящиеся к сходному функционалу;
  • В наименовании модуля отражать его принадлежность к контексту (Клиент, Сервер) и избегать общих слов (обработчики, процедуры и т.д.);
  • Разделять внутреннюю серверную логику приложения и клиентскую для интерфейса;
  • Будьте внимательны, создавая глобальный общий модуль. Отсутствие необходимости обращаться к процедуре через имя модуля может привести к путанице, особенно, если систему поддерживает несколько групп разработчиков.
Читайте также:  Xfx amd radeon r7 240

Правильно созданные модули помогут вам намного быстрее ориентироваться в структуре конфигурации и делать доработки. Если вы видите возможность сделать полезную функцию универсальной и вынести ее в общий модуль, то сделайте это. В будущем вы и ваши коллеги будете благодарны за это решение.

Здравствуйте, появилась у меня задача: посчитать в документе годовую оценку ученика исходя из результатов его работы в каждой четверти. Понятно, что нужно всего лишь посчитать среднее арифметическое, что совершенно казалось бы не трудно, но появились те самые НО.
Для этого нужно обратиться к полю "Годовая" и присвоить ему выражение наподобие ("Iчетверть"+"IIчетверть"+"IIIчетверть"+"IVчетверть")/4. НО как вот обратиться к этим полям?
В попытках найти ответ прошарил различные форумы и нашел-таки код, который бы мне более-менее смог бы подойти, но пришлось его изменить, так как ссылается он немного к другим данным.

Вот код, который написал:

А так выглядит форма:

Все бы хорошо, но видимо я неверно обращаюсь к этим данным и поэтому не могу с ними работать. Подскажите, что мне следует поменять в своем коде?

Вот источник, откуда я пытался найти решение:

  • Вопрос задан более года назад
  • 433 просмотра

Что то не вижу тут списка номенклатуры, код к этой форме относится?

Во первых, что за список номенклатуры? Удалите все нафиг.
Далее в модуле формы пропишите всего одну процедуру, вызов которой пропишите всем вашим четверым полям в первый из обработчиков – ПриИзменении:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector