1с добавить ссылку на форму списка

Обновлено: 03.07.2024

Сегодня очень важная тема - Формы. В платформе 1С форма - это важный компонент, который присутствует везде.

Что такое форма?

Прежде чем отвечать на этот вопрос, давайте представим вот что. Представьте перед собой чистый лист бумаги формата А4, на котором ничего нет вообще. Этот лист - это чистая форма. чистая она до того момента пока мы на ней что-то не нарисуем.

Взяли карандаш и нарисовали на нем или написали свои ФИО - это мы начали заполнять форму, и, таким же образом продолжаем ее заполнять. Вот и в платформе почти так же.

Форма - это представление того, как будет отображаться все, что вы поместите на форму, то есть какие изменения будете вносить на эту форму.

На форме можно помещать разнообразные элементы: поле ввода, поле вывода, кнопки, картинки, диаграммы и так далее.

В платформе 1С очень много всевозможных форм и со временем мы с ними познакомимся, но пока нам важны только две формы: "Форма элемента" и "Форма списка ".

На самом деле мы уже работали с этими формами, просто не обращали на них внимание, так как еще не знали о них ничего.

Давайте вспомним предыдущий урок, в котором мы создавали справочник и потом элементы в нем.

Откройте пользовательский режим и зайдите в справочник, который создали на прошлом занятии (Рисунок 1).

Давайте разбираться где это формы и как их отличить.

Нажмите на кнопку "Создать" и у вас откроется окно (Рисунок 2).

Посмотрите на рисунок 2, там есть маленькое окно, которое выделено красным прямоугольником. Это окно и есть Форма элемента. Почему? Потому что мы нажимаем на кнопку "Создать", а это значит мы даем команду платформе, что необходимо создать элемент, поэтому мы создаем элемент и от этого она называется формой элемента.

А где же Форма списка?

Закройте это окно и посмотрите на рисунок 3. Все, что находится в желтом прямоугольнике, это и есть форма списка. Форма списка появляется сразу, как только мы заходим в справочник. Как только нажали на справочник, так сразу же видим список всех элементов, от этого она и называется формой списка.

Как только мы создаем элемент в справочнике, так это сразу же Форма элемента.
Как только заходим в справочник и видим список, так это сразу Форма списка.

Хорошо, разобрались где они в пользовательском режиме, но как же они там появляются, если мы их не создавали в режиме разработчика, а только создали справочник. Как и где их найти в режиме разработчика, а самое главное - почему они сами появляются? Давайте разбираться!

Зайдем в режим разработчика и откроем наш справочник. Перейдем на вкладку "Формы" (Рисунок 4).

У справочника 5 форм, но мы пока работаем с двумя: форма элемента и форма списка.

Посмотрите на рисунок 4, здесь перечень всех возможных форм и все поля там пустые. Так откуда же формы? Это очень хороший и нужный вопрос! А ответ простой - платформа разработана таким образом, чтобы при создании справочника (объекта) мы могли сразу запустить и вести автоматизацию. Как только вы создаете какой-то объект, платформа автоматически сама добавляет к нему стандартную форму, от этого при запуске они у нас сразу и существуют!

Возникает тогда вопрос: "А зачем тогда нужна вкладка Формы, если она все сама делает?". Ответ тоже прост - платформа может делать только что-то простое, а если необходимо сделать что-то сложное, то необходимо создавать уже свою форму и работать с ней.

Здесь возникает еще один важный момент. Как только вы создаете свою форму, платформа понимает, что ее помощь уже не нужна и не создает форм, а воспринимает только ту форму, которую создали вы и указали ей.

Давайте начнем с простого и разберемся в том, почему нас может не устраивать стандартная форма?

Откройте в пользовательском режиме справочник и посмотрите на форму списка, она в виде таблички, где первый столбец - это Наименование, а второй Код (другими словами Код - это номер по порядку). Но в нашем понимании все должно быть наоборот, сначала номер, а потом перечисление. Вот и нашли причину! Нас это не устраивает. Если что-то не устраивает в отображении на стандартной форме, то необходимо создавать свою форму. Для этого переходим в режим разработчика, открываем справочник и переходим на вкладку "Формы" (Рисунок 5).

Задача: Типовая УНФ 1.6.21.124. Добавить на форму кнопку, при нажатии на которую открывалась бы история состояний Заказа покупателя.

Регистр сведений с состоянием Заказов уже есть в УНФ, поэтому самым простым решением мне показалось:

1. Добавить гиперссылку на форму, видимость которой только если состояний 2+ в регистре сведений.

2. При нажатии на кнопку - открывается форма со списком состояний и датой.

Немного напоминает гиперссылку с историей КПП у контрагентов, не правда ли?)


Казалось бы, что может быть проще. Но загвоздка оказалась в п.2. Кнопку добавить программно - труда не составляет, но вот чтобы добавить ей команду через расширение, не добавляя туда форму, задача для меня оказалась новой.

Несколько неудачных вариантов, после - гуглёж. И только в одной из сотни, наверное, тем, оказался один маленький комментарий с подсказкой, с пометкой что придется обновить платформу до 8.3.19. Кажется, тема была даже на инфостарте.

Итак, собственно, решение:

1. Добавляем новую команду в документ Заказ покупателя в расширение, указав Тип параметра команды - ДокументСсылка.ЗаказПокупателя. В команде открываем форму списка регистра сведений, передав туда ссылку на Заказ.

2. Открываем общий модуль УправлениеСвойствами, находим процедуру ПриСозданииНаСервере, добавляем в расширение с


Вся суть в строке команды, с данной строкой задуманное не будет работать на предыдущих платформах (по причине: Неверно задана навигационная ссылка).


Нажав на гиперссылку, в вызванную команду попадает параметр - ссылка на наш документ. Всё)

Есть другие варианты написания строки команды:

1. Для команды документа

2. Для общей команды

3. Для массива с одним типом данных

4. Для массива с несколькими типами данных, если параметр команды имеет составной тип

Возможно, о других решениях я не в курсе, но задача решена, и это главное)

Добавление колонки на форму списка (Произвольный запрос динамического списка)

Продолжаем рассматривать варианты размещения элементов на форме на примере вывода реквизитов документа на форму списка документов, состав документа представлен на рис. 1:

УФ: Размещение элементов на форме 7 в 1С

Рис. 1. Реквизиты документа

Добавим на форму списка документов колонку со значением статуса приходной, статус приходной находится в регистре сведений. Открываем форму списка документа пр_Приходная. Если формы списка еще нет, то нажимаем значок лупы на вкладке Формы окна свойств документа (рис. 2):

УФ: Размещение элементов на форме 7 в 1С

Рис. 2. Создание формы списка документа

УФ: Размещение элементов на форме 7 в 1С

Рис. 3. Свойства реквизита формы Список

После установки свойства Произвольный запрос состав свойств раздела Объект изменится (рис. 4):

УФ: Размещение элементов на форме 7 в 1С

Рис. 4. Состав раздела Объект окна Свойства

Нажимаем на гиперссылку Открыть свойства Настройка списка (рис. 4). Открывается окно Динамический список (рис. 5):

УФ: Размещение элементов на форме 7 в 1С

Рис. 5. Окно Динамический список

УФ: Размещение элементов на форме 7 в 1С

Рис. 6. Состав регистра с данными о статусе приходной

Изменить запрос в окне Динамический список можно нажав на кнопку Конструктор запроса… или можно сразу написать нужный текст в поле Запрос (рис. 7):

УФ: Размещение элементов на форме 7 в 1С

Рис. 7. Измененный запрос

Важно проверить, что в поле Основная таблица окна Динамический список указан нужный документ (рис. 7), иначе, если поле будет не заполнено, то в форме списка документов не будет возможности добавлять новые документы и открывать существующие (и не будет привычных кнопок Создать, Создать копированием и т.п.). Нажимаем ОК. Теперь в составе реквизита Список те поля, которые были выбраны в запросе (рис. 8):

УФ: Размещение элементов на форме 7 в 1С

Рис. 8. Состав реквизита Список

Перетаскиваем новое поле Статус из вкладки Реквизиты на вкладку Элементы в состав элемента Список (рис. 8). И размещаем поле Статус на вкладке Элементы после полей Дата, Номер (рис. 9):

Рис. 9. Размещение поля Статус

У реквизитов (на вкладке Реквизиты) в составе динамического списка можно отметить свойство Использовать всегда (рис. 8). Это нужно, когда поля должны быть в составе динамического списка в любом случае, даже если они не будут добавлены на форму как элементы, например, будут использоваться в дальнейшем в коде модуля формы списка документа.

Проверяем работу формы списка документа в пользовательском режиме: появилась колонка Статус, содержащая значение статуса приходной из регистра сведений (рис. 10):

Рассмотрим варианты размещения элементов на форме на примере вывода реквизитов документа на форму документа, состав документа представлен на рис. 1:

УФ: Размещение элементов на форме 1 Гиперссылка в 1С

Рис. 1. Реквизиты документа

Добавляем форму документа, по умолчанию все элементы формы будут располагаться сверху вниз по порядку (рис. 2):

УФ: Размещение элементов на форме 1 Гиперссылка в 1С

Рис. 2. Расположение элементов на форме по умолчанию

Сделаем форму более удобной для просмотра и ввода значений.

Поля Документ основание, Ответственный и Комментарий сдвинем вниз, для этого выделяем эти поля и нажимаем стрелку вниз (рис. 3):

УФ: Размещение элементов на форме 1 Гиперссылка в 1С

Рис. 3. Перемещение полей

Поле Документ основание представим в виде ссылки, чтобы при нажатии открывалось значение реквизита Документ основание. Открываем свойства поля ДокументОснование правой кнопкой мыши Свойства или Alt Enter (рис. 4):

УФ: Размещение элементов на форме 1 Гиперссылка в 1С

Рис. 4. Открытие свойств поля

В окне Свойства у свойства Вид устанавливаем значение Поле надписи, отмечаем галочкой свойство Гиперссылка (рис. 5). Можно убрать заголовок поля Документ основание:, если у свойства ПоложениеЗаголовка изменить значение на Нет.

УФ: Размещение элементов на форме 1 Гиперссылка в 1С

Рис. 5. Настройка свойств поля-гиперссылки

Зададим обработку события нажатия гиперссылки: в окне Свойства в разделе События нажимаем на значок лупы у события Нажатие (рис. 6):

УФ: Размещение элементов на форме 1 Гиперссылка в 1С

Рис. 6. Событие Нажатие

В открывшемся окне оставляем значение Создать на клиенте, нажимаем ОК. Откроется модуль формы документа с шаблоном процедуры ДокументОснованиеНажатие(), добавляем строку ПоказатьЗначение(,Объект.ДокументОснование); (рис. 7):

УФ: Размещение элементов на форме 1 Гиперссылка в 1С

Рис. 7. Обработка нажатия на гиперссылку

Само значение реквизита ДокументОснование будет определяться при создании на основании, задаем это на вкладке Ввод на основании (рис. 9):

УФ: Размещение элементов на форме 1 Гиперссылка в 1С

Рис. 9. Ввод на основании

и прописываем в процедуре ОбработкаЗаполнения() в модуле объекта документа (рис. 10, рис. 11):

УФ: Размещение элементов на форме 1 Гиперссылка в 1С

Рис. 10. Открытие модуля объекта документа

УФ: Размещение элементов на форме 1 Гиперссылка в 1С

Рис. 11. Создание процедуры ОбработкаЗаполнения() в модуле объекта документа

В процедуру ОбработкаЗаполнения() в модуле объекта документа добавим строку ДокументОснование = ДанныеЗаполнения.Ссылка;.

Теперь в пользовательском режиме у созданного на основании документа поле Документ основание будет выглядеть так (рис. 12):

Читайте также: