- Управление настройкой колонок табличного поля
- Управление настройкой всех колонок табличного поля
- Управление настройкой отдельных колонок табличного поля
- Установить текущую колонку в таблице управляемой формы
- Программирование в 1С для всех
- Заполнение табличной части 1С 8.3
- Очистка табличной части документа 1С 8.3
- Текущая строка табличной части 1С 8.3
- Обход табличной части 1С
- Программирование 1С 8.х для начинающих
- Материалы
- Как установить текущую строку или найти данные по текущей строке в 8.2
- Определение строки Таблицы значений по Текущей строке Таблицы
- Установка текущей строки в Таблице
- ОБРАБОТКИ.com
- Управляемая форма 1С 8.2 – работа с таблицей на форме (управление текущей строкой, перемещение и удаление элементов)
Управление настройкой колонок табличного поля
Существует два способа управления настройкой колонок :
Управление настройкой всех колонок табличного поля
Управлять настройкой сразу всех колонок табличного поля можно используя свойство табличного поля ИзменятьНастройкуКолонок . Данное свойство доступно из палитры свойств и из встроенного языка. Если данное свойство имеет значение Ложь , то табличному полю запрещена настройка колонок. Всем колонкам табличного поля запрещено изменять размер и позицию ( т.е. запрещено перетаскивание колонок ) , а также все свойства колонок, настраиваемые в диалоге настройки списка. Соответственно, в диалоге настройки списка становится доступной только закладка » Прочее » .
Данное свойство можно использовать, например, если необходимо создать табличное поле, содержащее фиксированный набор колонок и при этом требуется, чтобы все колонки оставались видимыми.
Управление настройкой отдельных колонок табличного поля
Управлять настройкой отдельных колонок табличного поля можно используя свойство колонки табличного поля ИзменятьНастройку . Данное свойство доступно из палитры свойств и из встроенного языка. Если данное свойство имеет значение Ложь , то колонке запрещено изменять размер и позицию, а также все свойства колонки, настраиваемые в диалоге настройки списка. Соответственно, в диалоге настройки списка данная колонка становится невидимой. Если всем колонкам табличного поля запрещено изменять настройку, то в диалоге настройки списка становится доступной только закладка » Прочее » . Также необходимо заметить, что если свойство ИзменятьНастройку имеет значение Истина , то существует возможность запретить изменение видимости или размера колонки используя для этого свойства колонки ИзменятьВидимость и ИзменениеРазмера соответственно.
Данное свойство можно использовать, например, если необходимо создать составную колонку, содержащую невидимые колонки и при этом необходимо чтобы невидимые колонки были недоступны в диалоге настройки списка.
Источник
Установить текущую колонку в таблице управляемой формы
Всем привет!
Создал программно таблицу на форме. Добавил колонки. (колонок много)
Теперь, если удаляю колонку, начиная с конца, после удаления колонки происходит активизация самой первой колонки в таблице формы, а хотелось бы, что бы курсор оставался на предыдущей колонке.
Подскажите пожалуйста, можно как-то прописать свойства таблицы формы, что бы курсор не перемещался в начало таблицы к первой колонке?
Вот фрагмент удаления колонки:
мТЗ = РеквизитФормыВЗначение(«Характеристики», Тип(«ТаблицаЗначений»));
Если 1=0 Тогда
мТЗ = Новый ТаблицаЗначений;
КонецЕсли;
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить(«Характеристики.» + УдаляемаяКолонка);
ИзменитьРеквизиты(, МассивРеквизитов);
ЗначениеВРеквизитФормы(мТЗ, «Характеристики»);
в общем, пользователю надоедает, что горизонтальная полоса прокрутки снова перемещается в начало таблицы.
Как установить текущей нужную колонку — вроде бы нашел:
Проблема с полосой прокрутки. Она уходит к первой колонке и пользователь заново прокручивает мышкой к нужной колонке.
Понимаю. Опишу:
Таблица формы создана программно. Колонок +50.
Далее пользователь удаляет ненужные колонки, активируя любую строку в удаляемой колонке.
После удаления, горизонтальная полоса прокрутки таблицы формы перемещается к началу первой колонки. это не нравится пользователю.
Вопрос, как сделать так, что бы горизонтальная полоса прокрутки не устанавливалась в самое начало таблицы формы.
Понятно что при программном удалении элемента, форма отрисовывается, но как-то можно. не перемещать горизонтальную полосу прокрутки в начало первой колонки.
а не возможно понять, какую колонку будет удалять пользователь.
Пользователю выводится перечень доп.реквизитов, которые будут использоваться в справочнике. Далее пользователь сам удаляет ненужные колонки. В оставшиеся колонки загружаются значения и все это сохраняется к справочнику в доп реквизиты.
Почему сделано таблицей? Потому что строк может быть тоже много, типа пакетного редактора реквизитов
Разобрался как позиционировать полосу прокрутки:
Именно если устанавливать свойство АктивироватьПоУмолчанию, пр иперерисовки формы, полоса прокрутки сама перемещается к нужной колонке.
В примере я перемещаю полосу прокрутки к необходимой мне колонке. дальше дело техники. определять номер соседней колонки у удаляемой и делать ее активной.
Источник
Программирование в 1С для всех
В предыдущей статье мы узнали, как настраивать и конфигурировать табличные части объектов 1С 8.3. В этой статье мы изучим некоторые вопросы программной работы с табличными частями 1С.
Заполнение табличной части 1С 8.3
Очень часто встречается задача заполнить табличную часть какими-нибудь значениями, например результатом выполнения запроса. Для демонстрации реализуем пример, в котором выполняется заполнение табличной части. Сделаем небольшую учебную задачу: будем заполнять табличную часть документа всей номенклатурой, которая не помечена на удаление. Количество при этом будет равно 1. Для заполнения табличной части документа нам необходимо работать с одноименной таблицей реквизита Объект, который является основным реквизитом управляемой формы.
Поскольку по условиям задачи, необходимо отобрать всю не помеченную на удаление номенклатуру, то оптимально это сделать при помощи запроса, в котором я буду получать все не помеченные элементы справочника номенклатура. Я создал команду, при выполнении которой будет заполняться табличная часть, и разместил её на форме.
Исполнение команды будет выполняться в серверном контексте, поскольку объект Запрос не работает в клиентском контексте на тонком клиенте.
При обходе запроса, я использую метод Добавить табличной части объекта (вообще это метод объекта, который имеет тип ДанныйФормыКоллекция, именно в этот тип преобразуется табличная часть документа-объекта, при создании на сервере). Данный метод является функцией, которая создаёт и возвращает новую строку.
Обратите внимание, поскольку при обходе запроса и заполнения новой строки, я использую метод ЗаполнитьЗначенияСвойств, то поля в запросе должны называться так же, как и поля табличной части.
Очистка табличной части документа 1С 8.3
Если мы реализуем данный код, то он будет не совсем корректен: каждый раз при выполнении этого кода будут добавляться новые строки, а вполне возможно, что пользователю старые строки не нужны. Поэтому, будем очищать имеющиеся строки, перед добавлением новых строк. Для этого воспользуемся методом Очистить объекта СписокТоваров, который имеет тип ДанныйФормыКоллекция.
После выполнения этого метода вся табличная часть будет очищена.
Текущая строка табличной части 1С 8.3
В процессе работы может возникнуть необходимость отработать текущую строку табличной части, т.е. ту строку, которая в данный момент выделена.
Например, может возникать ситуация, что мы редактируем какое-нибудь поле текущей строки таблицы на форме, и нам нужно, чтобы было пересчитано другое поле (или несколько полей) этой текущей строки. Например, мы изменяем цену (или количество) нашей табличной части, и необходимо, чтобы сумма автоматически была пересчитана.
Для решения данной задачи нужно воспользоваться свойством ТекущиеДанные элемента с типом ТаблицаФормы, который соответствует нужной табличной части. Свойство ТекущиеДанные возвращает значение полей текущей строки.
Для того, чтобы отработать изменение текущего поля цены, создадим обработчик события ПриИзменении этого поля.
В этом обработчике напишем код, который будет пересчитывать значения полей текущей строки табличной части.
Ещё пример: я создал команду, которая должна увеличивать количество в текущий строке табличной части в два раза и пересчитывать сумму. Эта команда размещена в командной панели таблицы и имеет следующий код:
Теперь доработаем этот пример: после увеличения текущей строки будем сдвигать текущую строку на строку вниз. Для этого допишем предыдущий код:
В этом коде мы получаем идентификатор текущий строки при помощи свойства таблицы управляемой формы ТекущаяСтрока, и если мы не выходим за приделы таблицы, то сдвигаем нашу текущую строку на один шаг вниз.
Также при помощи текущей строки можно находить аналогичную строку в соответствующей табличной части основного реквизита формы Объект, которую также можно изменять (строка на форме тоже изменится автоматически). Мы ранее сделали пересчет суммы при изменении цены, теперь сделаем пересчет суммы при изменении количества, но напрямую через реквизит Объект.
В этом коде мы используем метод НайтиПоИдентификатору переменной Объект.СписокТоваров, которая имеет типа ДанныйФормыКоллекция, этот метод получает элемент коллекции по указанному идентификатору. Если этот элемент найден, то мы можем с ними работать, причем данные на форме изменяться автоматически.
Обход табличной части 1С
Часто возникают задачи обойти табличную часть и изменить какие-либо значения в столбцах. В предыдущих примерах мы изменяли текущую стоку таблицы, теперь реализуем пример, когда нужно изменить все строки. В этом случае нет необходимости обращаться к элементам формы, можно работать напрямую с основным реквизитом Объект.
Остальные статьи по теме конфигурирования в 1С:
Более подробно и основательно конфигурирование в 1С дается в моей книге:
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Источник
Программирование 1С 8.х для начинающих
Материалы
Как установить текущую строку или найти данные по текущей строке в 8.2
Как установить строку в 8.1 (обычные формы) читайте здесь.
Для начала нужно уяснить, что есть объект который содержит данные, например ДанныеФормыКоллекция и есть объект который отображает данные визуально — Таблица.
В Таблице есть только текущая строка, с помощью неё нельзя узнать все существующие значения ДанныеФормыКоллекция с которыми она связана. В свою очередь у ДанныеФормыКоллекция нет текущей строки. Чтобы связать эти объекты в 1с используется Идентификатор, ведь строки порядок строк можно изменить как в визуальной части так и в данных, но свзяь при этом не должна нарушиться.
Рассмотрим это на примере:
У формы есть реквизит ТЗ типа (ТаблицаЗначений) — в скобках потому, что фактический тип — ДанныеФормыКоллекция
Реквизит выведен на форму в виде Таблицы.
Определение строки Таблицы значений по Текущей строке Таблицы
Чтобы определить какая строка ТЗ сейчас текущая, нужно сначала получить идентификатор строки в Таблице, а затем по нему найти строку в ТЗ
Установка текущей строки в Таблице
Чтобы установить текущую строку таблицы нужно сделать наоборот. Сначала получить идентификатор ТЗ, а затем установить на нём текущую строку Таблицы.
Для более удобного понимания можете скачать обработку которая демонстрирует функции определения и установки текущей строки. Обработка работает только в тонком клиенте!
Источник
ОБРАБОТКИ.com
Управляемая форма 1С 8.2 – работа с таблицей на форме (управление текущей строкой, перемещение и удаление элементов)
Очередная статья посвящена программной работе с таблицей управляемой формы, отображающей реквизит формы типа ДанныеФормыКоллекция. Казалось бы, такая элементарная задача как установка текущей строки, имеет далеко не тривиальное решение.
Задача: реализовать две команды КурсорВверх и КурсорВниз, которые соответственно перемещают ТекущуюСтроку(Курсор) на предыдущую(следующую) строку.
Исходные данные: управляемая форма, ТЗОбъект — реквизит формы типа ТаблицаЗначений(конечно же правильней говорить о типе который моделирует Таблицу значений, а именно ДанныеФормыКоллекция), которая отображается на форме при помощи элемента формы ТЗОбъект типа Таблица(Не путать с одноименным реквизитом формы!). Предполагается, что ДанныеФормыКоллекция содержит некоторые данные, внесенные вручную или программно. Добавляем пару команд и пишем код, реализующей нужные действия, комментарии я дам ниже.
Теперь давайте разберемся что здесь к чему. Во первых следует уяснить, что ДанныеФормыКоллекция и Таблица формы это два совершенно разных объекта. Первый содержит данные, а второй является контейнером для их отображения. Элементы.ТЗОбъект.ТекущиеДанные предоставляет доступ к данным текущей строки и имеет тип ДанныеФормыЭлементКоллекции, он доступен только для чтения. С помощью метода Индекс(Элементы.ТЗОбъект.ТекущиеДанные) мы получаем индекс текущего элемента коллекции, далее осуществляем проверку выхода за границы коллекции. После чего с помощью метода ПолучитьИдентификатор() получаем идентификатор следующего(предыдущего) элемента коллекции и присваиваем его свойству Таблицы формы ТекущаяСтрока, которое как раз и содержит идентификатор текущей строки таблицы(на которую установлен курсор). Вот такая нетривиальная связь между вышеупомянутыми объектами.
Реализуем ещё несколько полезных команд: удаление текущего элемента, перемещение текущего элемента вверх(вниз). Несмотря на то, что эти команды являются стандартными(для объекта Таблица) и поддерживаются на уровне самой платформы, их альтернативная ПРОГРАММНАЯ реализация в некоторых случаях может быть очень полезна.
Если публикация помогла Вам справится с проблемой, решить задачу или расширить свои знания — поддержите автора.
Источник