Как это работает?
- На форме имеется табличное поле с заполненной первой строкой
- Активизируем ячейку с нужным значением
- Нажимаем кнопку «Автозаполнение текущей колонки» или волшебное сочетание клавиш Ctrl+D
- Отвечаем согласием на вопрос о серьезности наших намерений
- Любуемся результатом
Вполне допускаю, что каждый раз подтверждать свои намерения совершить операцию не очень удобно, поэтому предусмотрено отключение запроса при помощи флажка «Автозаполнение без запроса»
В том случае, если выбранным значением требуется заполнить не всю, колонку, а лишь несколько соседних строк, нужно выделить эти ячейки (правой кнопкой мыши, удерживая клавишу ctrl, или любым другим, известным вам способом), и нажать кнопку «Автозаполнение текущей колонки»
Как это организовать в вашем табличном поле?
Создаем табличное поле на форме: Режим выделения Множественный, Режим выделения строки Ячейка (если указать Строка, тоже будет работать, но будет неудобно выделять)
В процедуре формы ПриОткрытии() размещаем код, заполняющий табличное поле:
Процедура ПриОткрытии() Заполнить_тзДляЗаполнения(); КонецПроцедуры Процедура Заполнить_тзДляЗаполнения() тзДляЗаполнения = Новый ТаблицаЗначений; тзДляЗаполнения.Колонки.Добавить("Номер", Новый ОписаниеТипов("Число", , Новый КвалификаторыЧисла(5, 0, ДопустимыйЗнак.Неотрицательный))); тзДляЗаполнения.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(40))); тзДляЗаполнения.Колонки.Добавить("НаименованиеПродукции", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(50))); тзДляЗаполнения.Колонки.Добавить("Штрихкод", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(13))); СтрокаТЗ = тзДляЗаполнения.Добавить(); СтрокаТЗ.Номер = 1; СтрокаТЗ.Наименование = "Конфеты Аленушка"; СтрокаТЗ.НаименованиеПродукции = "Конфеты Аленушка шоколадные с пралине"; СтрокаТЗ.Штрихкод = "4670002967739"; Для Счетчик = 1 По 12 Цикл СтрокаТЗ = тзДляЗаполнения.Добавить(); СтрокаТЗ.Номер = Счетчик; КонецЦикла; ЭлементыФормы.ТабличноеПоле1.Значение = тзДляЗаполнения; ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); КонецПроцедуры
На форме рисум флажок с именем «ФлажокАвтозаполнениеБезЗапроса», и кнопку «АвтозаполнениеТекущейКолонки». В свойстве кнопки Сочетание клавиш указываем Ctrl+D. Привязываем к кноке процедуру АвтозаполнениеТекущейКолонкиНажатие
Процедура АвтозаполнениеТекущейКолонкиНажатие(Элемент) ЗаполнитьРеквизитТЧ(ЭлементыФормы.ТабличноеПоле1,ЭлементыФормы.ФлажокАвтозаполнениеБезЗапроса.Значение); КонецПроцедуры
В модуле обработки размещаем код процедуры ЗаполнитьРеквизитТЧ
Процедура ЗаполнитьРеквизитТЧ(ТабПоле, ФлажокАвтозаполнениеБезЗапроса = Ложь) Экспорт ТабЧасть = ТабПоле.Значение; ИмяРеквизита = ?(типзнч(ТабПоле.ТекущаяКолонка.ЭлементУправления ) = тип("флажок"),ТабПоле.ТекущаяКолонка.ДанныеФлажка,ТабПоле.ТекущаяКолонка.Данные); Значениереквизита = ТабПоле.ТекущаяСтрока[ИмяРеквизита]; Если ТабПоле.ВыделенныеСтроки.Количество()>1 Тогда ЧтоЗаполняем = " ВЫДЕЛЕНИЕ "; ЧтоЗаполняемОбъект = ТабПоле.ВыделенныеСтроки; Значениереквизита = ЧтоЗаполняемОбъект[0][ИмяРеквизита]; Если НЕ ЗначениеЗаполнено(Значениереквизита) Тогда //Ищем значение в выделении Для Каждого Строка Из ЧтоЗаполняемОбъект Цикл Если ЗначениеЗаполнено(Строка[ИмяРеквизита]) Тогда Значениереквизита =Строка[ИмяРеквизита]; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; Иначе ЧтоЗаполняем = " ВСЮ КОЛОНКУ "; ЧтоЗаполняемОбъект = ТабЧасть; КонецЕсли; Если НЕ ФлажокАвтозаполнениеБезЗапроса Тогда Если Вопрос(?(ЗначениеЗаполнено(Значениереквизита),"Заполнить" +ЧтоЗаполняем+ИмяРеквизита+ " таблицы значением "+строка(Значениереквизита)+"?", "Заполнить " +ЧтоЗаполняем+ИмяРеквизита+ " таблицы пустым значением? ") , РежимДиалогаВопрос.ДаНет,0,,"Автозаполнение") = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; КонецЕсли; Для Каждого Строка Из ЧтоЗаполняемОбъект Цикл Строка[ИмяРеквизита] = Значениереквизита; //ДополнительнаяОбработкаЯчеекТаблицы(Строка, ИмяРеквизита, Значениереквизита); КонецЦикла; КонецПроцедуры // ЗаполнитьРеквизитТЧ
Сохраняем, проверяем, пользуемся...