1с что такое ключ строки
Табличное поле предоставляет свойства ТекущиеДанные и ТекущаяСтрока . Отличие между этими свойствами состоит в том, что свойство ТекущиеДанные содержит значения считанных данных текущей строки табличного поля, а свойство ТекущаяСтрока содержит значение, идентифицирующее строку.
Следует отметить, что свойство ТекущиеДанные содержит коллекцию значений текущей строки, соответствующую коллекции колонок отображаемого динамического списка, при этом если нужного поля нет в текущих данных, то его можно добавить в коллекцию полей списка используя метод Добавить() коллекции колонок списка.
Свойство ТекущиеДанные предназначено для получения значений колонок текущей строки, а свойство ТекущаяСтрока для получения и установки текущей строки табличного поля.
Следует понимать, что для объектных данных (Справочник, Документ и т.д.) в качестве значения свойства ТекущаяСтрока используется ссылка на объект базы данных. Соответственно при обращении к свойствам этого значения будет выполняться считывание объекта базы данных.
Типичной ошибкой является обращение к данным строки с использованием свойства ТекущаяСтрока . В этом случае будет выполняться считывание данных объекта из базы данных, что может существенно снизить производительность работы табличного поля. Например, приведенный ниже фрагмент текста программы является неэффективным:
Рекомендуется для обращения к данным объекта использовать свойство ТекущиеДанные . Правильный фрагмент приведен ниже:
Если есть идентификатор текущей строки (т.е. свойство ТекущаяСтрока ), можно получить ТекущиеДанные . И наоборот:
Выполняет поиск элемента списка значений по идентификатору.
Синтаксис
Метод НайтиПоИдентификатору() имеет следующий синтаксис:
А также альтернативный англоязычный синтаксис:
Параметры
Описание параметров метода НайтиПоИдентификатору() :
Имя параметра | Тип | Описание |
---|---|---|
Идентификатор | Число | Идентификатор элемента списка значений. |
Жирным шрифтом выделены обязательные параметры |
Возвращаемое значение
Описание
Метод НайтиПоИдентификатору() выполняет поиск элемента списка значений по идентификатору. Если элемент с указанным идентификатором в списке отсутствует, будет возвращено значение Неопределено .
Доступность
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример использования
Пример кода с использованием метода НайтиПоИдентификатору() :
В табличных частях объектов 8.2 имеется возможность создавать реквизиты типа ХранилищеЗначения но сохранеие этих реквизитов в тонком клиенте отрабатывается некорректно, разве что каждый раз после присваивания вызывать метод записи объекта Записать () , что не очень то удобно использовать каждый раз при изменении отдельной строки. Для корректной работы с реквизитами такого типа предлагаю сохранять значения в соответствия, которое в свой черед помещается в реквизит формы типа ХранилищеЗначения. Ключом соответствия является идентификатор строки табличной части
УдалитьДанныеИзСоответствия ( ДанныеСтроки . НомерСтроки );
КонецПроцедуры
Хранилище = Новый ХранилищеЗначения ( Соответствие );
КонецПроцедуры
Соответствие = Хранилище . Получить ();
Соответствие . Вставить ( Индекс , Новый ХранилищеЗначения ( Файл ));
Хранилище = Новый ХранилищеЗначения ( Соответствие );
ЗначениеВРеквизитФормы ( СправочникОбъект , "Объект" );
КонецПроцедуры
Соответствие = Хранилище . Получить ();
Соответствие . Удалить ( ИндексТекущейСтроки );
Хранилище = Новый ХранилищеЗначения ( Соответствие );
КонецПроцедуры .
Объект Структура создается с помощью конструктора Новый.
Структура1 = Новый Структура;
Со структурами можно работать и в серверном и клиентском контексте, причем в клиентском контексте с ними можно работать как под толстым клиентом, так и под тонким клиентом.
В значения структуры можно записать переменные любого типа, но использование типов в этом случае очень сильно зависит от контекста и от вида клиента: мы не можем в клиентском контексте задать значение, тип которого работает только в серверном контексте (например, ДокументОбъект.<>).
Как создать новую структуру, Вы знаете, теперь выясним, как создаются новые элементы данного объекта. Делается это с помощь метода Вставить.
Вот его синтаксис:
Вставить(<Ключ>,<Значение>);
Параметр Ключ имеет тип значения Строка. Он может иметь любое название, какое захочет разработчик (но помним про ограничения в названиях переменных). Параметр Значение может иметь любой тип.
Обращаю Ваше внимание, что связка «Ключ и значение» уникальна, поэтому если Вы напишете для одной структуры два метода Вставить с одинаковыми ключами и разными значениями, то все равно в структуре будет одна связка «Ключ и значение», причем значение возьмется с последнего метода.
Не всегда обязательно использовать метод Вставить, чтобы добавить пару КлючИЗначение в структуру, иногда это можно сделать в конструкторе. Тогда конструктор будет иметь следующий вид:
Структура1 = Новый Структура(Ключ, Значение);
Переделаем предыдущий пример:
В случаях выше мы не стали думать над названиями ключей, Вы же в процессе работы можете давать ключам любые названия, какие захотите. Главное, чтобы тип ключа был Строка.
В структуру можно записывать не только примитивные типы, но также любые другие объекты «1С:Предприятия», вплоть до других структур. Причем значения типов разных ключей структуры могут быть разными.
Если мы посмотрим в отладке конфигуратора на нашу структуру, то увидим, что она представляет собой некоторый список, где напротив каждого ключа есть то значение, которое мы привязали к данному ключу с помощью метода Вставить. Этот ключ является свойством структуры как объекта, и мы можем обращаться к нему.
Изменить значение ключа структуры 1С
Если нам необходимо изменить значение какого-нибудь ключа, то мы, используя метод Вставить, указываем в качестве первого параметра ключ, значение которого хотим поменять, а в качестве второго параметра новое значение для данного ключа.
Или напрямую обращаемся к ключу
Обход коллекции структуры 1С
Обход структуры осуществляется с помощью оператора цикла Для каждого…Цикл.
Обойдем уже созданную структуру.
Безошибочное получение значения элемента
Если при обращении к ключу структуры Вы укажете название несуществующего в данной структуре ключа, то программа выдаст ошибку. Но есть метод объекта Структура, с помощью которого можно обратиться к значению ключа, не боясь вызвать ошибку в случае промаха.
Этот метод – Свойство.
Данный метод является функцией и возвращает Истину, если указанный ключ есть, и Ложь, если указанного ключа нет.
Рассмотрим синтаксис метода:
Свойство(<ИмяКлюча>,<ЗаписываемоеЗначение>);
В параметр «ЗаписываемоеЗначение» будет возвращено найденное значение. В том случае, если ключа нет в структуре, то данному параметру присвоится значение Неопределено. Обращаю Ваше внимание, что параметр «ЗаписываемоеЗначение» где-то должен быть определен.
В переменную А запишется значение, которое связанно с Ключ1.
Но если мы напишем так.
То ни какой ошибки не возникнет, и в переменной А присвоится значение Неопределено.
Статьи о других универсальных коллекциях значений в 1С
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Соответствие в языке программирования 1С чем-то похоже на Структуру, это тоже коллекция пар Ключ и значение. Но в отличие от Структуры, в Соответствие, чтобы получить значение по определенному ключу, нужно обращаться не как к свойству объекта, а через квадратные скобки, и в качестве ключа можно использовать значение любого типа.
Структура: Структура1.Ключ1
Соответствие можно создать на всех видах клиентов и в любом контексте. Сериализируется, т.е. можно передать переменную с типом соответствие с клиентского контекста на серверный.
Хоть и в ключ и значение соответствия можно записать переменные любого типа, использование типов в этом случае очень сильно зависит от контекста и от вида клиента: мы не можем в клиентском задать в ключ или значение, тип которого работает только в серверном контексте (например, ДокументОбъект.<>).
Новое соответствие создается при помощи конструктора Новый.
Соответствие1 = Новый Соответствие;
Для того, чтобы добавить новый элемент соответствия, необходимо использовать метод Вставить, который имеет следующий синтаксис:
Вставить(<Ключ>, <Значение>)
Параметр «Ключ» может иметь любой тип! Это очень важное свойство, таким образом, с помощью коллекции Соответствие можно в процессе работы устанавливать соответствие любых объектов с любыми объектами.
Простой пример работы с соответствием:
Для того чтобы поменять значение какого-нибудь элемента, который соответствует определенному ключу, достаточно для этого ключа присвоить новое значение.
Поменять имеющееся значение можно, также используя квадратные скобки.
Обход соответствия 1С
Обходить соответствие можно с помощью цикла Для каждого…Цикл.
Безошибочное получении значения соответствия 1С
Как Вы уже поняли, для того чтобы получить значение элемента соответствия, мы используем квадратные скобки. Но иногда возможны ситуации, когда применение квадратных скобок неосуществимо. В таких случаях мы можем использовать метод Получить, который возвращает любое значение, соответствующее ключу. Если такого ключа нет, то вернется значение Неопределено
Рассмотрим работу данного метода на соответствии с датами в качестве ключей.
Статьи о других универсальных коллекциях значений в 1С
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Вступайте в мои группы:
One thought on “ Учимся работать с соответствием в 1С 8.3 ”
В этой статье будут рассмотрены виды и особенности ключей защиты 1С, а также даны ответы на часто задаваемые вопросы по работе с ними.
1С поддерживает работу как с программными, так и с аппаратными ключами. Разберемся подробнее с каждым из этих видов:
Программный ключ защиты 1С
Программная лицензия 1С – это файл, который хранится на ПК и участвует в запуске 1С. Если файл активирован пин-кодом, то запуск 1С будет осуществлен, в противном случае (если запуск осуществляется впервые) потребуется ввести ПИН, который находится в комплекте поставки. Программный ключ привязывается к аппаратной части компьютера, потому периодически, при замене комплектующих компьютера, приходится активировать лицензию 1С повторно.
Условно программную лицензию 1С можно поделить на 2 вида:
- однопользовательская,
- многопользовательская.
Однопользовательская лицензия ставится на один ПК и позволяет использовать платформу 1С. При этом стоит отметить, что количество конфигураций и информационных баз программный ключ не ограничивает.
Многопользовательская лицензия чаще всего устанавливается на сервер (1С:Предприятие, сервер терминалов, WEB-сервер). При обращении 1С-клиента к 1С-серверу программное обеспечение само отслеживает количество свободных лицензий и позволяет (или не позволяет, если количество лицензий исчерпано) работать с 1С. При этом стоит отметить, что многопользовательская лицензия до 50 пользователей может быть активирована не только на сервере, как общая, её можно активировать на 50 разных клиентских компьютерах как 50 однопользовательских лицензий. Но если хотя бы одна лицензия из комплекта многопользовательской активирована как однопользовательская, то дальнейшее использование лицензий как “комплекта” уже невозможно.
Аппаратный ключ защиты 1С
Более надежным, но вместе с тем, и более дорогим способом защиты 1С являются аппаратные ключи. Аппаратные ключи защиты (HASP-ключ) выглядят как флешка и отмечают 1С, как прошедшую лицензирование. В данном случае, в отличие от программной лицензии, ПИН хранится на HASP, а не в файле на компьютере/сервере.
Существуют 4 вида аппаратных ключей, каждый имеет отличительный цвет и маркировку:
- Ключ для одного пользователя (локальный) . Ключ имеет синий цвет и маркировку H4 M1 ORGL8. Данный ключ поставляется вместе с продуктами, у которых есть лицензия на один персональный компьютер.
- Сетевой ключ. Ключ красного цвета. HASP-ключ вставляется в один компьютер и виден всем компьютерам в сети. Маркируется как NETXX ORGL8. где ХХ – это количество лицензий. Есть разновидности на 5, 10, 20, 50, 100, 300, 500 лицензий.
- Серверный ключ для 32-битного сервера. Имеет фиолетовый цвет и маркировку ENSR8. Всегда поставляется вместе с лицензией на сервер.
- Серверный ключ для 64-битного сервера . Имеет зеленый цвет и маркировку EN8SA. Может работать также и с 32-разрядными серверами.
. Стоит подчеркнуть, что специалисты 1С не рекомендуют использование локального ключа и сетевого ключа на одной машине. При запуске 1С будет идентифицирован локальный ключ, а сетевой использоваться не будет, при этом все остальные пользователи сети не смогут “видеть” сетевой ключ и, как следствие, не смогут работать в 1С.
Менеджер лицензий 1С
В случае работы с многопользовательской лицензией необходимо, чтобы 1С знала о наличии такой лицензии в сети. За это отвечает Менеджер лицензий 1С (Hasp License Manager). Менеджер лицензий 1С является дополнительным программным обеспечением (входит в комплект поставки), без которого многопользовательская лицензия не будет корректно работать.
Ответы на часто задаваемые вопросы по ключам защиты 1С:
№1. 1С не видит лицензии
В случае использования аппаратных ключей, если 1С не видит лицензий, в первую очередь необходимо удостовериться, что на HASP-ключе мигает индикатор. Это показатель того, что устройство определено и драйвер HASP-ключа установлен. Если лампочка не горит, попробуйте подключить ключ-флешку в другой порт USB, либо обратитесь к системному администратору, возможно у пользователя не хватает прав доступа для установки драйвера.
Также, в первую очередь убедитесь, что к компьютеру подключен ключ нужной серии. помните, что ключи могут блокировать друг-друга.
№2. Драйвер ключа защиты HASP устанавливается с ошибкой.
- Возможно несовместимы операционная система и драйвер ключа. Попробуйте скачать более новую версию драйвера.
- Файлы драйвера могут быть заблокированы из-за того, что заняты другим процессом. Попробуйте перезагрузить компьютер и сразу после загрузки установить драйвер. Либо примените консольную версию утилиты установки с параметрами командной строки: hinstall -i -kp
№3. Ошибка: HASP not Found (-3), (Error 7), (H0007)
HASP в сети работает по порту 475. Убедитесь, что на компьютере с ключом, на компьютере с запущенным приложением и в сети не блокируется порт 475. Он может быть заблокирован брандмауэром или антивирусом.
№4. HASP Device Driver not installed (-100)
Распространенная ошибка Windows XP. Драйвер защиты загружается медленее, чем сервер защиты из автозагрузки. Вместо сервера защиты используйте Менеджер лицензий LMSETUP, который устанавливается, внимание, в качестве службы (Service) Windows!
В дополнение скажем, что при работе с 1С могут одновременно функционировать два и более менеджеров лицензий, но для предотвращения появления ошибок каждому менеджеру должно быть присвоено свое уникальное имя. Для этого используют файл nhsrv.ini, нужно изменить значение параметра NHS_SERVERNAMES в секции NHS_SERVER. Более того, необходимо сообщить эти имена каждой копии запущенной программы. Для этого используют nethasp.ini: в параметре NH_SERVER_ADDR указывают ip-адреса серверов, в параметре NH_SERVER_NAME указывают их имена в том же порядке, в котором были указаны адреса.
Если у вас еще есть вопросы по выбору, настройке, покупке программных или аппаратных ключей 1С на 10-50 пользователей , вы всегда можете обратиться за консультацией к нашим специалистам
Читайте также: