1с управляемая форма записать значение ячейки

Обновлено: 07.07.2024

Использование элементов управления в табличном документе

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

Поле ввода для изменения текста ячейки

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

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

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

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

При необходимости изменения режима поведения клавиш курсора, при редактировании ячейки, следует нажать клавишу "F2". При этом режимы будут циклически переключаться

Элемент управления для редактирования значения ячейки

Каждая ячейка табличного документа имеет свойство СодержитЗначение , в котором находится признак того, что в данной ячейке будет храниться не просто текст, а значение определенного типа ( Число , Строка , Дата и т.д.).

Если редактируемая ячейка содержит значение, то возможно указание элемента управления, который будет использован для редактирования значения ячейки, а также, настройка параметров выбранного элемента управления. Тип элемента управления указывается в свойстве ячейки ЭлементУправления . Выбор элемента управления зависит от типа значения, которое содержится в ячейке. Например, для числа можно установить в качестве элемента управления поле ввода и флажок, для строки - только поле ввода.

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

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

Элемент управления формы, расположенный на поле табличного документа

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

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

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

ВАЖНО!
При встраивании элемента в ячейку поля табличного документа, у элемента управления автоматически сбрасывается свойство Видимость . При сброшенном свойстве Видимость , элемент управления, встроенный в ячейку будет показываться пользователю только при входе в режим редактирования ячейки. Если не войти в режим редактирования ячейки, ячейка будет отображать значение, которое связано с данным элементом управления. Если же свойство Видимость установлено, элемент управления будет виден пользователю всегда.

Работа в режиме 1С:Предприятие с элементом управления, встроенным в ячейку поля табличного документа и элементом управления, расположенным на поле табличного документа не отличается от работы с элементами управления, расположенными в панели формы.

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

Табличный документ (ТД) состоит из строк и столбцов, которые образуют ячейки. В этой статье рассмотрены возможности "1С:Предприятия 8", позволяющие разместить в ячейках табличного документа элементы управления для редактирования значений.

Ниже рассмотрены следующие темы:

  • Свойства "Текст" и "Значение"
  • Свойство "Формат"
  • Элементы управления
    • Элементы управления, встроенные в ячейку
    • Элементы управления, не встроенные в ячейку
    • Расширение элементов управления, расположенных в поле табличного документа

    Свойства "Текст" и "Значение" ячейки табличного документа

    Основные свойства у каждой ячейки табличного документа — это Текст и Значение , причем по умолчанию доступно свойство Текст , а свойство Значение заблокировано.

    ВАЖНО! Свойства Текст и Значение не могут быть использованы одновременно! Если свойство-признак СодержитЗначение установлено в значение Истина , то свойство Текст недоступно, и наоборот, если свойство-признак СодержитЗначение равно Ложь , то свойство Значение недоступно, а также все связанные другие свойства, например, ТипЗначения и ЭлементУправления .

    Ниже на рисунке показана палитра свойств для ячейки табличного документа. Обратите внимание, что флажок Содержит значение не установлен, поэтому данная ячейка будет отображать Текст .


    Свойство Текст имеет тип Строка . Если в ячейке необходимо разместить какую-либо текстовую информацию, необходимо использовать именно свойство Текст , например:

    Обратите внимание, что даже если вы присвоите свойству Текст значение другого типа (не строкового), то оно все равно будет интерпретировано как строка. Значения базовых типов преобразуются к строке, а для ссылочных типов данных (элементов справочников, документов и т. д.) берется их представление. Если же необходимо разместить в ячейке значение другого типа, например, число, булево, дату или ссылку, и при этом не преобразовывать это значение к строке, то нужно использовать свойство Значение .

    Для того чтобы появилась возможность использовать свойство Значение , необходимо явно присвоить свойству ячейки СодержитЗначение значение Истина или установить флажок Содержит значение в палитре свойств, как это показано на следующем рисунке:


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


    Следующий фрагмент демонстрирует, как можно управлять этими свойствами из встроенного языка:

    Свойство "Формат" ячейки табличного документа

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

    Элемент управления в табличном документе

    Элементы управления, встроенные в ячейку

    Для ячейки, у которой установлен признак СодержитЗначение , можно также задать элемент управления, который будет использоваться для редактирования этого значения.

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

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


    Ниже показан пример установки элемента управления типа Флажок из встроенного языка:

    Элементы управления, не встроенные в ячейку

    Существует еще один способ размещения элемента управления в ячейке: использование независимого элемента управления и его "привязка" к нужной ячейке. В этом случае сама ячейка не участвует в процессе работы, а ее значения и свойства ни на что не влияют. Значения нужно будет непосредственно получать из элемента управления как обычного элемента формы. Ячейка при этом используется только как область размещения (привязки) элемента управления.


    Ниже показано, как могут выглядеть такие элементы управления (не встроенные в ячейку):

    В следующем фрагменте приводится пример размещения не встроенного в ячейку элемента управления в табличном документе:

    Расширение элементов управления, расположенных в поле табличного документа

    Для элементов управления, расположенных в табличном документе, расширяется набор свойств, методов и событий:


    Разберем самые важные свойства и методы:

    • Свойство ВстроенВЯчейку имеет тип Булево и говорит о том, что элемент управления встраивается в ячейку или просто привязывается к ней, о чем было рассказано выше.
    • Свойство Видимость позволяет показать или скрыть элемент управления.
    • Свойство Значение предоставляет доступ к значению, которое редактируется в элементе управления. Оно используется только для элементов управления, поддерживающих связь с данными.
    • Метод Расположить позволяет разместить элемент управления в конкретной области ячеек табличного документа. Именно этот метод был использован в вышеприведенном примере.

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

    Свойство "Защита" ячейки табличного документа

    Это свойство имеет тип Булево и содержит признак защиты ячейки от редактирования. В режиме просмотра в табличном документе недоступны для редактирования ячейки и рисунки, у которых установлено свойство Защита .

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

    поехали!

    Итак, унас есть форма и запрос, результат которого выгружен в таблицу. Например, так:

    Выведем таблицу на управляемую форму

    Наша основная задача номер РАЗ - вывести результат запроса на управляемую форму.

    Для этого нам нужно:

    1. Создать реквизит типа "ТаблицаЗначений".
    2. Создать реквизиты с типом значения, соответствующим типу колонки таблицы, для каждой колонки, подчиненные таблице.
    3. Создать элемент формы типа "ТаблицаФормы" для таблицы.
    4. Создать элементы формы для колонок типа "ПолеФормы".

    Таким образом код у нас будет такой:

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

    Данный код выводит на управляемую форму результат запроса. Но если вдруг в результате запроса у Вас будут элементы, типы которых не могут быть выведены на форму, то 1С будет ругаться. К таким элементам относятся хранилища значений, уникальные идентификаторы и, на сколько я знаю, другие таблицы значений (т.е. при выборке табличных частей у нас возникнут проблемы). Это нужно учитывать при создании реквизитов. При этом, если реквизит таблицы имеет тип "ТаблицаЗначений", то для его тоже нужно будет создать колонки. Также следует иметь ввиду, что имена элементов формы должны быть уникальными, при этом имена реквизитов должны быть уникальны внутри своих родителей (т.е. может существовать две разные таблицы с одинаковыми наименованиями колонок, но в пределах одной таблицы имена колонок должны отличаться).

    Добавим колонку в таблицу документа

    Теперь давайте посмотрим, как можно расширить уже имеющуюся таблицу формы.

    Допустим, мы хотим добавить колонку в таблицу выданных авансов авансового отчета как-нибудь так:


    Для этого просто напишем в процедуре ПриСозданииНаСервере такой вот код:

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

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

    Клиент-Серверный вариант в управляемых формах.

    1. Считываем данные из файла в массив из структур и затем этот массив передаем на сервер для дальнейших манипуляций с данными.

    2-ой способ - это передать файл Excel на сервер через хранилище данных и далее работать с ним уже на сервере.

    Очень часто приходится работать с очень большими файлами Excel, и его обработка путем перебора строк занимает огромное количество времени.

    В таких случаех удобно в одно действие загрузить всю таблицу в массив и в потом работать уже непосредственно с массивом.

    На выходе получаем двумерный массив, который содержит все данные указанного листа Excel

    Полезные функции при работе с Excel:

    Устанавливает видимость Excel при работе
    Добавление новой книги в файл Excel
    Сохранение книги Excel
    Добавление нового листа к книге
    Переименование листа
    Изменение маштаба листа
    Изменение ориентации листа
    Отступы листа
    Обращение к ячейки
    чтение/запись
    Обращение к области ячеек
    Очень часто при чтении или записи значений в Excel ставятся лишние пробелы в числе, например, вместо 1502 он читает как 1 502 и в дальнейшем это значение не приводится к числу. Эту проблему можно решить заменой.
    Объединение ячеек
    Работа с именованными ячейками в Excel
    Удаление ячейки
    Удаление области ячеек
    Обращение к строке
    Изменение ширины колонки
    Обращение к колонке
    Удаление Строки
    Фон ячейки / области / Строки /
    Функция переводит цвет из формата RGB в формат Excel
    Управление шрифтом в ячейки/строке/области
    Р азрешает переносить по словам в ячейке
    Управление рамкой ячейки
    Устанавливаем формат ячейки
    Формула в ячейки
    Формула в ячейки
    Формула в ячейки
    Формула в ячейки
    Функция для получения ширины колонки Excel
    Спасибо пользователю goodwill
    Разрешить перенос слов в ячейке
    Спасибо пользователю roofless
    Группировки данных на листе
    Спасибо пользователю dr-wit, ignor

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

    2. Работа с Excel через ТабличныйДокумент 1С

    С помощью данного метода можно и загружать из Excel и выгружать в Excel. Но на мой взгляд этот метод идепально подходит когда вам необходимо посто сохранить информацию в Excel без дальнейшей манипуляции.

    Итак, приступим: загрузка из Excel:

    1. Загружаем файл Excel в табличный документ

    2. Производим манипуляции уже с ТабличнымДокументом

    Давайте теперь разберем сохранение в Excel с помощью данного метода:

    Тут все очень просто сначала мы формируем обычный Табличный документ и затем записываем его в Excel

    2. Работа с Excel ADODB

    Выражаю особую благодарность коллеги Fragster за хороший комментарий

    Данный метод позволяет работать с Excel через ODBC и имеет ряд преимуществ:

    1. Не требует установки самой Excel, необходима лишь установить ODBC. Но как правило он уже установлен. Это особенность позволяет работать на стороне сервера без дополнительных установок Excel.
    2. Позволяет работать с таблицой Excel как с БД и строить к ней запросы на T-SQL. Таким образом мы можем делать отборы еще на этапе чтения данных и другие преимущества что дает Т-SQL. Что на мой взгляд огромный плюс.

    Подключение к ADO

    Отключение от ADO


    Выполнение запроса

    Пример запроса:

    Запись в Excel тоже производится в виде запроса:

    Хочу отметить что наименование полей производится по первой строке в таблице


    ADODB предоставляет ряд объектов, с которыми мы работаем

    ADODB.Recordset

    В файле продемонстрированны оба варианта работы с запросами.

    На этом пока все. По возможности буду дополнять статью :)

    В архиве находится обработка, которая демонстрирует все описанные и другие возможности при работе с Excel.

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