Программное создание колонок в табличном поле с полем ввода Флажок (чекбокс) (1С 8.2)

13.01.16

Разработка - Механизмы платформы 1С

С возможностью быстрого выбора всех значений по строкам и столбцам.
Где важно слово «все», галки проставляются по горизонтали или по вертикали соответственно.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
ПримерТабличноеПоле.epf
.epf 8,13Kb
3 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

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

1. Табличное поле создается программно следующим образом

Процедура ПриОткрытии()
//Создаем массив типов для строк, вдруг нам захочется добавлять туда данные не только из строк, но из справочников и т.п., а может даже числовые значения.
МассивТипов = Новый Массив();
//МассивТипов.Добавить(Тип("СправочникСсылка.Номенклатура"));
МассивТипов.Добавить(Тип("Строка")); 

ОписаниеНужныхТипов = Новый ОписаниеТипов(МассивТипов);

//Создаем для примера массив со значениями
МассВаренье =Новый Массив() ;
МассВаренье.Добавить("Вишневое");
МассВаренье.Добавить("Яблочное");
МассВаренье.Добавить("Малиновое");

МассГода =Новый Массив();
МассГода.Добавить("2012 г.");
МассГода.Добавить("2013 г.");
МассГода.Добавить("2014 г.");
МассГода.Добавить("2015 г.");

//Создаем таблицу значение
ТЗ = Новый ТаблицаЗначений;
//Создание первой колонки с типами вареньев
ТЗ.Колонки.Добавить("Варенье", ОписаниеНужныхТипов,,15);

//Создание колонки Все с типом булево для флажков
ТЗ.Колонки.Добавить("ВыборСтроки", Новый ОписаниеТипов("Булево"), "Все", 4);

//Добавляем строку все в колонку с вареньем
ТЗ.Добавить().Варенье = "Все";

//Создаем строки из массива
Для каждого стр из МассВаренье Цикл
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Варенье = стр;
КонецЦикла;

//Создаем колонки с годами и поля с флажками
ПП=0;
Для каждого стр из МассГода Цикл
ПП=ПП+1;
ИмяКолонки = "К"+ПП;
ТекстШапки = стр;
ТЗ.Колонки.Добавить(ИмяКолонки, Новый ОписаниеТипов("Булево"), ТекстШапки, 15);
КонецЦикла;
//Перекатываем все данные таблицы значений в табличное поле
ЭлементыФормы.ТабличноеПоле.Значение = ТЗ;

//Создаем колокни в табличном поле
ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();
КонецПроцедуры

2. Оформление ячеек с флажками (чекбоксами) для колонок

Процедура ТабличноеПолеПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
//Прописываем оформление ячеек с флажками для колокнки Все
ОформлениеСтроки.Ячейки.ВыборСтроки.ОтображатьТекст = Ложь;
ОформлениеСтроки.Ячейки.ВыборСтроки.ОтображатьФлажок = Истина;
ОформлениеСтроки.Ячейки.ВыборСтроки.Флажок = ДанныеСтроки.ВыборСтроки;

МассГода =Новый Массив();
МассГода.Добавить("2012 г.");
МассГода.Добавить("2013 г.");
МассГода.Добавить("2014 г.");
МассГода.Добавить("2015 г.");

ПП=0;
//Прописываем оформление ячеек с флажками для колокнок с годами
Для каждого стр из МассГода Цикл
ПП=ПП+1;
ИмяКолонки = "К"+ПП;
ОформлениеСтроки.Ячейки[ИмяКолонки].ОтображатьТекст = Ложь;
ОформлениеСтроки.Ячейки[ИмяКолонки].ОтображатьФлажок = Истина;
ОформлениеСтроки.Ячейки[ИмяКолонки].Флажок = ДанныеСтроки[ИмяКолонки];

КонецЦикла;

//Запрещаем изменять название вареньев
ОформлениеСтроки.Ячейки.Варенье.толькоПросмотр = Истина;

КонецПроцедуры

3. Описание взаимосвязи выбора ячеек по колонке

Процедура ТабличноеПолеПриИзмененииФлажка(Элемент, Колонка)
МассГода =Новый Массив();
МассГода.Добавить("2012 г.");
МассГода.Добавить("2013 г.");
МассГода.Добавить("2014 г.");
МассГода.Добавить("2015 г.");

//Работа пересечения Все-Все
Если Колонка.Имя = "ВыборСтроки" Тогда
ТекСтрока = Элемент.ТекущиеДанные;
ТекСтрока.ВыборСтроки= Не ТекСтрока.ВыборСтроки;
Если Элемент.ТекущиеДанные.Варенье = "Все" тогда
Если Элемент.ТекущиеДанные.ВыборСтроки = Истина и Колонка.Имя = "ВыборСтроки" Тогда
ТабличноеПоле.ЗаполнитьЗначения(Истина, "ВыборСтроки");
ПП=0;
Для каждого стр из МассГода Цикл
ПП=ПП+1;
ИмяКолонки = "К"+ПП;
ТабличноеПоле.ЗаполнитьЗначения(Истина, ИмяКолонки);
КонецЦикла;
Иначеесли Элемент.ТекущиеДанные.ВыборСтроки = Ложь Тогда
ТабличноеПоле.ЗаполнитьЗначения(Ложь, "ВыборСтроки");
ПП=0;
Для каждого стр из МассГода Цикл
ПП=ПП+1;
ИмяКолонки = "К"+ПП;
ТабличноеПоле.ЗаполнитьЗначения(Ложь, ИмяКолонки);
КонецЦикла;
КонецЕсли;
иначе
если ТекСтрока.ВыборСтроки = Истина тогда
ПП=0;
Для каждого стр из МассГода Цикл
ПП=ПП+1;
ИмяКолонки = "К"+ПП;
ТекСтрока[ИмяКолонки]= Истина;
КонецЦикла;
иначе
ПП=0;
Для каждого стр из МассГода Цикл
ПП=ПП+1;
ИмяКолонки = "К"+ПП;
ТекСтрока[ИмяКолонки]= Ложь;
КонецЦикла;
КонецЕсли;
КонецЕсли;

КонецЕсли;

//Работа флага Все
ПП=0;
Для каждого стр из МассГода Цикл
ПП=ПП+1;
ИмяКолонки = "К"+ПП;
Если Колонка.Имя = ИмяКолонки Тогда
ТекСтрока = Элемент.ТекущиеДанные;
ТекСтрока[ИмяКолонки]= Не ТекСтрока[ИмяКолонки];
Если Элемент.ТекущиеДанные.Варенье = "Все" тогда
Если Элемент.ТекущиеДанные[ИмяКолонки] = Истина и Колонка.Имя = ИмяКолонки Тогда
ТабличноеПоле.ЗаполнитьЗначения(Истина, ИмяКолонки);
Иначеесли Элемент.ТекущиеДанные[ИмяКолонки] = Ложь Тогда
ТабличноеПоле.ЗаполнитьЗначения(Ложь, ИмяКолонки);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Данный вариант мне пригодился для создания хитрого распределения материалов, в документе Отчет производства.  

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Механизмы платформы 1С Программист Бесплатно (free)

Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?

16.07.2025    34199    TitanLuchs    108    

149

Механизмы платформы 1С Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    18674    bayselonarrend    127    

68

Механизмы платформы 1С Программист 1С:Предприятие 8 Бесплатно (free)

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

30.01.2025    23947    user2122906    10    

66

Механизмы платформы 1С Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 Бесплатно (free)

Этот материал познакомит вас с механизмом XDTO (XML Data Transfer Objects) в 1С и научит эффективно использовать его возможности. Мы разберёмся, как работать с XML-схемами, создавать модели данных, манипулировать объектами XDTO, а также сериализовать и десериализовать их в XML. Вы узнаете, как использовать XDTO для интеграции с внешними системами, избегать типичных ошибок и оптимизировать код. К концу вы будете уверенно применять XDTO для решения сложных задач обмена данными и автоматизации процессов.

17.01.2025    42025    user2122906    12    

62

Механизмы платформы 1С WEB-интеграция Программист 1С:Предприятие 8 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    35072    dsdred    106    

152

Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

23.06.2024    30590    bayselonarrend    22    

178

Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    16394    dsdred    22    

88
Для отправки сообщения требуется регистрация/авторизация