Сохранить значение 1с 77
Чтобы сохранить настройку реквизита диалога СписокЗначений с пометками, мы будем использовать функции СохранитьЗначение и ВосстановитьЗначение. Эти функции будут использованы в предопределенных процедурах ПриОткрытии и ПриЗакрытии соответственно.
Для получения списка значений с пометками необходимо в свойствах списка, во вкладке «Дополнительно», отметить галочкой значение «Список с пометками».Наша задача усложняется тем, что кроме значений из реквизита диалога типа СписокЗначений (назавём его СписокДокументов) ещё нужно сохранять пометки каждого элемента списка.Реквизит диалога «СписокДокументов» выглядит так:
Как видно из изображения выше, пользователь может отмечать разные строки списка значений и было бы удобно, чтобы при следующем сеансе работы эти пометки сохранялись. Чтобы этого добиться необходимо сохранять эти значения. Поэтому при закрытии диалога формы мы будем это делать, используя предопределенную процедуру ПриЗакрытии:
Для сохранения отметок нам нужен промежуточный список СписокДоков1, в него мы сохраняем отметки каждого элемента из списка СписокДокументов. Чтобы узнать помечен ли элемент списка используем метод Пометка. Затем нам нужно преобразовать элементы списка в строку.
Для этого используем метод объекта СписокДоков1.ВСтрокуСРазделителями(), этот метод возвращает строку из элементов списка, разделенных запятыми. В нашем случае эта строка выглядит так: «1,0,1,0,1». Теперь с помощью функции СохранитьЗначение сохраним эту строку для следующего сеанса работы с этой формой.
Когда пользователь открывает форму при следующем сеансе ему будет приятно видеть, что его настройки сохранены и ему не нужно заново выставлять пометки. Не трудно выставить пометки, когда значений в списке всего пять, как в нашем примере, а если двадцать пять? Чтобы значения пометок были восстановлены при следующем сеансе работы необходимо написать код по восстановлению значений в предопределенной процедуре
ПриОткрытии:
Сначала нам нужно восстановить строку с разделителями и создать ещё один список значений для восстановления отметок. Затем заполним реквизит диалога СписокДокументов значениями. Теперь проверим сохранился ли список с предыдущего раза, если нет (возможно первый сеанс), то отмечаем все элементы.
Если список есть, то используя метод ИзСтрокиСРазделителями, восстанавливаем из строки элементы списка и отмечаем каждый элемент реквизитаСписокДокументов соответствующим значением из сохраненного списка СписокДоков1. Ну а более легкий способ всё это сделать со списком значений такой:
Если прочитать Синтакс-Помощник, то в замечании к функции ВосстановитьЗначение написано:
При использовании метода ВосстановитьЗначение для значения типа СписокЗначений, являющегося реквизитом формы, его следует передавать в качестве второго параметра. В данном случае метод следует использовать как процедуру.
Поэтому в процедуре при открытии мы запишем следующее:
Ну а что, если список значений не является реквизитом формы? Тогда посмотрим следующий код:
В этом листинге мы создаем список значений Список1, добавляем в него десять разных документов. Затем сохраняем этот список при помощи функции СохранитьЗначение. Потом востанавливаем список в Список2 и выводим окно для интерактивной пометки значений списка (это для наглядности).
Список значений используется в двух случаях:
- При работе с формами: при размещении на форме элементов управления типа Список и ПолеСоСписком , они автоматически связываются с объектом типа СписокЗначений ;
- При работе с кодом: для хранения каких-либо расширяемых списочных данных вы создаете нужное количество объектов типа СписокЗначений ;
Хочется отметить, что объекты типа СписокЗначений не хранятся в информационной базе.
Создание списка значений
Как и все объекты агрегатного типа, список значений создается с помощью специальной функции СоздатьОбъект() встроенного языка:
Инициализация элементов списка значений
Каждый элемент списка значений характеризуется следующими свойствами:
По умолчанию, список значений создается пустым. Для добавления нового элемента списка значений, используется метод ДобавитьЗначение() объекта:
Обратите внимание, что вместе со значением Вы можете указать его строковое представление.
Манипуляция элементами списка
Над элементами списка значений возможны различные действия, включая вставку новых элементов, сортировку, изменение и удаление существующих.
Вставка новых значений возможна в произвольное место списка. Для этого используется метод ВставитьЗначение():
Для получения значения элемента списка по номеру используется метод ПолучитьЗначение() объекта:
Удаление элементов списка производится с помощью метода УдалитьЗначение():
Интерактивные функции
Объект СписокЗначений имеет несколько методов, позволяющих взаимодействовать с пользователем. Например, с помощью метода ВыбратьЗначение() можно предложить пользователю выбрать одно из значений:
Также, можно предложить пользователю отметить одно или несколько элементов списка. Для этого используется метод ОтметитьЗначения(), который выводит список с пометками (checkboxes):
Найти все отмеченные пользователем значения можно, используя перебор элементов в цикле, и метод Пометка(), который возвращает статус пометки элемента:
Перебор элементов списка значений
Для перебора (обхода) всех элементов списка значений обычно используется оператор цикла Для:
Строки и колонки имеют последовательную целочисленную нумерацию. Кроме этого, колонкам можно присваивать строковые идентификаторы, удовлетворяющие требованиям, выдвигаемым к идентификаторам языка. Пересечения строк и колонок образуют ячейки, в которых содержатся значения. Тип значения определяется типом колонки. Если тип не задан, в ячейке можно хранить значения произвольного типа.
Таблица значений является полностью динамическим объектом, т.к. Вы можете манипулировать не только строками таблицы, добавляя и\или удаляя их, но и колонками.
Таблица значений используется в двух случаях:
- При работе с формами: при размещении на форме элемент управления типа ТаблицаЗначений , он автоматически связывается с одноименным объектом встроенного языка ТаблицаЗначений ;
- При работе с кодом: для хранения каких-либо многострочных списочных данных вы создаете нужное количество объектов типа ТаблицаЗначений ;
Создание таблицы значений
Как и все объекты агрегатного типа, таблица значений создается с помощью функции СоздатьОбъект() встроенного языка:
Инициализация таблицы значений
Инициализация объекта выполняется в три этапа:
- Добавление колонок
- Добавление строки
- Установка значений ячеек
Итак, прежде, чем начать работать с объектом ТаблицаЗначений , необходимо настроить колонки (задать имя и тип). Делается это с помощью метода НоваяКолонка() следующим образом:
Как Вы успели заметить, вместе с названием колонки задается и тип значений.
После того, как Вы добавили колонки, можно добавлять строки. Делается это с помощью метода НоваяСтрока():
Теперь переменная тз спозиционирована на добавленную строку и мы можем приступить к заполнению ячеек:
Как видите, имена ячеек текущей строки имеют то же название, что и колонки. Это делает использование объекта элементарным: достаточно указать через точку после имени объекта имя колонки.
Манипуляция значениями строк таблицы
Для получения значений, содержащихся в строках, необходимо перво-наперво спозиционировать объект на интересующей Вас строке. Для этого используются такие методы как: ПолучитьСтрокуПоНомеру() и ПолучитьСтроку():
Перебор строк таблицы значений
Для последовательного перебора (обхода) всех строк таблицы значений обычно используются методы ВыбратьСтроки() и ПолучитьСтроку() объекта:
Также можно организовать перебор с помощью оператора цикла Для, где в качестве ограничителя цикла используется количество строк таблицы, возвращаемое методом КоличествоСтрок():
Атрибуты объекта ТаблицаЗначений
НомерСтроки | атрибут содержит номер текущей строки таблицы |
<ИдентификаторКолонки> | атрибут содержит значение текущей ячейки таблицы |
Методы объекта ТаблицаЗначений
Хочется отметить, что объекты типа ТаблицаЗначений не хранятся в информационной базе.
Как сохранить Значения элементов при закрытии формы и восстановить их при открытии формы?
Это можно сделать через СохранитьЗначения(), ВосстановитьЗначение():
Код 1C v 8.х
Но у этого способа, одно НО - Сохраненые значения будут доступны только на там компьютере, на котором их сохранили!
А чтобы эти значения были доступны с любого компьютера, их нужно хранить в базе, например в константах с типом Хранилище значения:
Перебирая все элементы формы, выбрать только поля ввода и записать их значения в структуру.
Потом структуры записываем в константу:
Код 1C v 8.х
Как сохранять и восстанавливать значения реквизитов на форме?
Похожие FAQ
Как заполнить табличную часть формы программно? 6Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 10060 (0x0000274C): Попытка установить соединение была безуспешной 18
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 42
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 20
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C медленно работает по сети с базой на SQL Server 20
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П Посмотреть все результаты поиска похожих
Еще в этой же категории
Как обновить динамический список или реквизит на форме клиента? 19Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Динамический список
Как на управляемой форме разместить список регистра сведений с отбором? 18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Как установить параметр динамического списка? 14
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма
Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора
Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами
Читайте также: