Еще один пример кода, приводящий к ошибке Поле объекта недоступно для записи , неверное обращение к полям формы при попытке присвоить им новое значение.
1С поиск в структуре
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
Представляет собой коллекцию пар КлючИЗначение. При этом ключ может быть только строковым и должен удовлетворять требованиям, предъявляемым к именованию переменных встроенного языка.
К значениям структуры можно обращаться как к свойствам объекта. При этом ключ используется как имя свойства.
Структура используется обычно для хранения небольшого количества значений, каждое из которых имеет некоторое имя.
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.
Структура в языке программирования платформы 1С 8.3 (8.2) — это коллекция некоторых значений в связке с ключом. Эта связка ключа со значением называется «КлючИЗначение». Ключ структуры уникален в рамках данной структуры. Причем к значениям структуры можно обращаться как к свойствам объекта, используя название ключа.
Объект Структура создается с помощью конструктора Новый.
Как создать новую структуру, Вы знаете, теперь выясним, как создаются новые элементы данного объекта. Делается это с помощь метода Вставить.
Вставить( , );
Параметр Ключ имеет тип значения Строка. Он может иметь любое название, какое захочет разработчик (но помним про ограничения в названиях переменных). Параметр Значение может иметь любой тип.
Структура1 = Новый Структура ;
Структура1 . Вставить ( «Ключ1» , 12.3 );
Структура1 . Вставить ( «Ключ2» , 33.4 );
Обращаю Ваше внимание, что связка «Ключ и значение» уникальна, поэтому если Вы напишете для одной структуры два метода Вставить с одинаковыми ключами и разными значениями, то все равно в структуре будет одна связка «Ключ и значение», причем значение возьмется с последнего метода.
Не всегда обязательно использовать метод Вставить, чтобы добавить пару КлючИЗначение в структуру, иногда это можно сделать в конструкторе. Тогда конструктор будет иметь следующий вид:
Структура1 = Новый Структура(Ключ, Значение);
Структура1 = Новый Структура ( «Ключ1, Ключ2» , 12.3 , 33.4 );
В случаях выше мы не стали думать над названиями ключей, Вы же в процессе работы можете давать ключам любые названия, какие захотите. Главное, чтобы тип ключа был Строка.
В структуру можно записывать не только примитивные типы, но также любые другие объекты «1С:Предприятия», вплоть до других структур. Причем значения типов разных ключей структуры могут быть разными.
Если мы посмотрим в отладке конфигуратора на нашу структуру, то увидим, что она представляет собой некоторый список, где напротив каждого ключа есть то значение, которое мы привязали к данному ключу с помощью метода Вставить. Этот ключ является свойством структуры как объекта, и мы можем обращаться к нему.
1С поиск в структуре
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Безошибочное получение значения элемента
Если при обращении к ключу структуры Вы укажете название несуществующего в данной структуре ключа, то программа выдаст ошибку. Но есть метод объекта Структура, с помощью которого можно обратиться к значению ключа, не боясь вызвать ошибку в случае промаха.
Промокоды на Займер на скидки
Данный метод является функцией и возвращает Истину, если указанный ключ есть, и Ложь, если указанного ключа нет.
В параметр «ЗаписываемоеЗначение» будет возвращено найденное значение. В том случае, если ключа нет в структуре, то данному параметру присвоится значение Неопределено. Обращаю Ваше внимание, что параметр «ЗаписываемоеЗначение» где-то должен быть определен.
В переменную А запишется значение, которое связанно с Ключ1.
То ни какой ошибки не возникнет, и в переменной А присвоится значение Неопределено.
Если мы посмотрим в отладке конфигуратора на нашу структуру, то увидим, что она представляет собой некоторый список, где напротив каждого ключа есть то значение, которое мы привязали к данному ключу с помощью метода Вставить.
Как обратиться к полю формы или подчиненной формы
Вопросы
Q1: Как обратиться к объекту формы?
Q2: Как обратиться к объекту формы, имя которого вычисляется на лету или содержит специальные символы?
Q3: Как обратиться к объекту подчиненной формы?
Q4: Обращение к объекту формы из контекста этой формы.
Ответы
Чтобы прочитать или изменить содержимое или свойство объекта формы, в первую очередь надо составить выражение, позволяющее однозначно определить ссылку именно на этот объект.
Выражение, определяющее ссылку на свойство .Value (значение) объекта формы, в общем виде выглядит так:
Обратите внимание, что операторы «!» и «.» идут через один. Чередуются имена коллекций и их элементов, причем оператор «!» означает, что справа от него указан элемент коллекции, а оператор «.» служит для обращения к свойству этого элемента (см. пп. 3.5 и 3.6).
Квадратные скобки ([] — в русифицированной версии Access они называются «прямыми») следует использовать, если имя элемента содержит внутренние пробелы или другие специальные символы (кроме, соответственно, «]» и «[«), иначе их наличие не обязательно.
Серым цветом здесь и далее выделены коллекции и свойства, используемые Access’ом по умолчанию. Их также можно опускать, если при этом не возникнет двусмысленности. То есть выражение (1) может быть записано по-другому:
Будьте внимательны, если пользуетесь подобными сокращениями. В случае, когда форма содержит одноименные элементы различных коллекций, пропуск идентификатора коллекции может повлечь за собой неверную работу вашей программы (см. п. 3.6). Хороший способ избегать подобных «совпадений» — использовать префиксы в именах, например, поле «Поле1» в форме переименовать в «пфПоле1» и т.п.
Q2. Обращение к объектам, имена которых вычисляются «на лету» или не соответствуют «соглашению об именах»
В выражении (1), разделенные оператором «.», перечисляются связки типа
где в качестве аргумента может быть указано любое выражение, возвращающее значение типа String, соответствующее имени существующего элемента коллекции, а также
Корректная ссылка на свойство подчиненной формы или отчета требует указания полного идентификатора формы c использованием свойства Form элемента управления — подчиненная форма:
В данном примере: является ссылкой на элемент управления, в котором выводится подчиненная форма. А является ссылкой на саму подчиненную форму. Указание свойства Form для ссылки на подчиненную форму или на ее свойства является обязательным для MS Access версии 97 и желательным для версий 2000-2003.
Аналогичным образом, с помощью вставки выражений типа (или ), строятся выражения для подчиненных форм третьего и далее уровней вложености.
Q4. Обращение к объекту формы из контекста этой формы
Для ссылки на текущий экземпляр объекта, в котором в данное время выполняется программа, рекомендуется использовать ключевое слово Me. Все процедуры, связанные с текущим объектом, имеют доступ к объекту, указываемому с помощью слова Me. Пример использования слова Me в модуле формы, содержащей поле Поле1:
Работа с расширением – Ваш петербургский программист 1С
Корректная ссылка на свойство подчиненной формы или отчета требует указания полного идентификатора формы c использованием свойства Form элемента управления — подчиненная форма.
Как перебрать элементы справочника в запросе в 1С 8.3, 8.2
Запрос . УстановитьПараметр ( "Родитель" , ПолеВводаРодитель ) ;
Для того чтобы изменить реквизиты уже существующего элемента справочника нужно через ссылку получить объект методом ПолучитьОбъект, через объект изменить значения реквизитов и записать измененный объект в базу данных:
//функция вернула какую-то ссылку на справочник Товары
ТоварОбъект . Наименование = ТоварОбъект . Наименование+ ” (изменение)” ;
Топ 11 ошибок начинающих 1с программистов — Alexcode
Получение ссылки по уникальному идентификатору
С помощью метода УникальныйИдентификатор можно получить уникальный идентификатор от ссылки справочника. Чтобы через уникальный идентификатор получить ссылку на справочник используется метод ПолучитьСсылку:
ТоварСсылка = Справочники . Товары . ПолучитьСсылку ( УИДСпр ) ;
//если после получения объекта от ссылки он равен Неопределено,
//значит этой ссылки не соответствует ни один объект базы данных
Также с помощью метода УстановитьСсылкуНового можно установить новому объекту определенный идентификатор. Например, из другой базы был выгружен элемент справочника. В текущей базе нужно создать новый элемент с таким же идентификатором. Для этого можно воспользоваться следующим кодом:
//переменная УИДСтрокой – это строка с идентификатором из другой базы
ТоварСсылка = Справочники . Товары . ПолучитьСсылку ( УИДСпр ) ;
//параметром передается именно ссылка, а не идентификатор
//уникальный идентификатор нового объекта будет равен уникальному
Микрофинансирование → Микрокредиты → Специальные предложения → Скачать файлы → Обзор Быстроденег → Предмет договора → Ответственность сторон → Отличные наличные→ Экспресс займы