Как сделать список с галочками 1с

Обновлено: 06.07.2024

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

Вот основной блок кода, для тех, кому не терпится узнать как это работает или нужен только принцип работы.

В списке документов нет возможности добавить колонку с данными, соответственно и нет возможности добавить свой флажок.

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

У списков есть возможность использовать флажок "Пометка удаления". Вот и задействуем эту возможность в своих целях.

Принцип работы такой, при изменении пометки удаления будем запоминать (или забывать) отмеченные документы.

В то же время заблокируем фактическую установку пометки. Не забудем показать состояние флажка отмечен/снят вместо пометки удаления.

Вот собствено и весь принцип работы.

Список отмеченных документов будем хранить в соответствии:

Отображение нашего состояния флажка поручим процедуре

Запомним или забудем отмеченные документы в процедуре

С помощью нажатия на кнопку обработаем выбранные документы

Способ почти идентичный, по этому расписывать подробно нет смысла.

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

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

При добавлении кода из обработки в типовой модуль формы необходимо проследить, есть ли в модуле обработчики ДокументСписокПередНачаломИзменения или ДокументСписокПриПолученииДанных и при их наличии раскомментировать соответствующие строки в процедурах ДокументСписокПередНачаломИзменения_Подключаемая и ДокументСписокПриПолученииДанных_Подключаемая. Что бы не забывались вызываться типовые процедуры.

А так же необходимо проследить за именем списка документов и при необходимости переименовать в добавляемом коде имя "ДокументСписок" на необходимое.

1С ЗуП 2.5
Пытаюсь осваивать программу, но не совсем получается.
Стоит задача по сотруднику определить всё вышестоящее начальство над ним - начальник отдела, начальник управления и так до ген. директора.
Структура подразделений кривая, поэтому кодом я смог определить только иерархию подразделений, к чему отдел относится. Но не получилось однозначно определить кто в этих подразделениях руководитель.
Пытался вот так:

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

Поэтому решил добавить флажок.
Есть стандартная форма списка (справочник Сотрудники), на ней есть слева дерево отбора со списком подразделений, справа выводятся сотрудники по выбранному подразделению. Хочу что бы на части где список сотрудников можно было проставлять флажок, кто начальник.

Хранить данные связи между подразделение и сотрудником (кто руководитель) решил в регистре сведений: "РуководителиОтделов".
История когда и кто начальником был мне не нужна, поэтому регистр будет "Непериодический".
1 подразделение - 1 галочка.
Поэтому делаю измерение: "Подразделение", тип: СправочникСсылка.ПодразделенияОрганизаций.
Т.к. если подразделения не будет, то не будет и начальника, ставим галочку у измерения "Ведущее".
По подразделению мне нужно получать руководителя, поэтому в ресурсы добавляю "Руководитель", тип: СправочникСсылка.СотрудникиОрганизаций

Регистр создан. А вот дальше у меня засада.
Хранить дублирующую информацию в справочнике сотрудники не вижу смысла. Поэтому думал делать через реквизит формы (флажок) с типом: РегистрСведенийМенеджерЗаписи.РуководителиОтделов.
По моей логике в списке сотрудников на против каждого появляется поле-флажок, где я могу щелкнуть установив его начальником подразделения по которому произведен отбор. Ну и при отборе по подразделению, у меня напротив начальника, если такой есть, высвечивается проставленный флажок.

Затык встал в том, что список сотрудников выводится в табличном поле с типом "СправочникСписок.СотрудникиОрганизации", и не получается в него вклинить новую колонку с реквизитом формы.
Т.е. создал колонку, поставил "элемент управления флажок", но в графе Данные моего реквизита формы нет.
Я понимаю. что там выводит поля справочника сотрудников, но как добавить в эту табличную часть еще и поле регистра?

Платформа 1С:Предприятие - прекрасная вещь. Платформа хорошо спроектирована именно для своей предметной области, а большего, впринципе, и не требуется. Радует, что документация и обширная база знаний накоплена изначально на русском языке, что упрощает использование платформы.

Итак, вопрос. Как в 1С:Предприятие v.8.2 сделать на управляемой форме выпадающий список? Причем список значений должен быть сформирован программно, а не жестко задан в конфигураторе.

1. Создаём поле, которое будет иметь выпадающий список. Даем ему название, например, ПолеСВыпадающимСписком .

2. Создаем у формы реквизит любого нужного нам типа, например, типа Строка. Имя реквизита пусть будет РеквизитСВыпадающимСписком .

3. Для поля ПолеСВыпадающимСписком в свойстве ПутьКДанным указываем РеквизитСВыпадающимСписком . Свойство Вид нужно установить просто в значение "Поле ввода".

4. Для поля ПолеСВыпадающимСписком назначаем обработчик НачалоВыбора , и прописываем в него следующий код:

&НаКлиенте
Процедура ПолеСВыпадающимСпискомНачалоВыбора(Элемент,
ДанныеВыбора,
СтандартнаяОбработка)

Список = Новый СписокЗначений;
Список.Добавить("Организация");
Список.Добавить("Сотрудники");
Список.Добавить("Отделы");

5. У поля ПолеСВыпадающимСписком устанавливаем свойство КнопкаВыбора в значение "Да".

Всё! После вышеперечисленных действий поле будет иметь выпадающий список. Если необходимо, чтоб поле заполнялось значениями только из списка, нужно в свойствах поля снять галочку РедактированиеТекста . Выпадающий список выглядит так:


Вот и всё решение. Удачи.

PS: Как мне подсказывают, можно сделать то же самое через механизм "Расширение поля формы для поля переключателя", свойство СписокВыбора (ChoiceList). В синтаксис-помощнике про эту возможность написано очень формально, поэтому нужно разбираться дальше как ей пользоваться.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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