Как программно изменить константу 1с

Примеры кода, демонстрирующие работу с константами, в языке 1С 8.3, 8.2 вместе с тестовой базой.

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

2017-12-18T22:48:55+00:00<<< Документы Константы Перечисления РегистрыБухгалтерии
<<< РегистрыНакопления РегистрыСведений Справочники

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

Полный синтаксис (нажмите, чтобы раскрыть)

Оглавление (нажмите, чтобы раскрыть)

&НаСервере
Процедура ВыполнитьКодНаСервере()
 
    /// Как получить и изменить значение константы в 1с 8.3, 8.2    
 
    // менеджер значений создаётся и используется неявно
 
    Сообщить(Константы.ЛучшийКлиент.Получить());
 
    Константы.ЛучшийКлиент.Установить(
        Справочники.Клиенты.НайтиПоНаименованию("Марина")
    );
 
    /// Работа с константой через менеджер значений в 1с 8.3, 8.2
 
    // создаём и используем менеджер значений константы напрямую
    ЛюбимаяЕда = Константы.ЛюбимаяЕда.СоздатьМенеджерЗначения();
 
    // читаем значение
    ЛюбимаяЕда.Прочитать();    
    Сообщить(ЛюбимаяЕда.Значение);
 
    // меняем значение
    ЛюбимаяЕда.Значение = Справочники.Еда.НайтиПоНаименованию(
        "Крыжовник");
 
    // записываем значение
    ЛюбимаяЕда.Записать();
 
    /// Работа с константами через набор в 1с 8.3, 8.2
 
    // подходит для работы сразу с группой констант
 
    НазванияКонстант = "ЛюбимаяЕда, ЛучшийКлиент";
    НаборКонстант = Константы.СоздатьНабор(НазванияКонстант);
 
    // читаем набор констант
    НаборКонстант.Прочитать();
    Сообщить(НаборКонстант.ЛюбимаяЕда);
    Сообщить(НаборКонстант.ЛучшийКлиент);
 
    // меняем значения констант
    НаборКонстант.ЛюбимаяЕда = Справочники.Еда.НайтиПоНаименованию(
        "Чипсы");
    НаборКонстант.ЛучшийКлиент = Справочники.Клиенты.НайтиПоНаименованию(
        "Пётр");
 
    // записываем набор
    НаборКонстант.Записать();
 
    /// Как получить значения всех констант в 1с 8.3, 8.2
 
    Для Каждого Константа Из Константы Цикл
        Сообщить(Строка(Константа) + " = " + Константа.Получить());
    КонецЦикла;
 
КонецПроцедуры
 
/// Скачать и выполнить эти примеры на компьютере

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

Константы в языке 1С 8.3, 8.2 (в примерах)

<<< Документы Константы Перечисления РегистрыБухгалтерии
<<< РегистрыНакопления РегистрыСведений Справочники

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

Владимир Милькин

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

Нажмите одну из кнопок, чтобы поделиться:

В платформе 1С 8.3 имеется объект метаданных Константы. Смысл констант в языке программирования 1С несколько другой, чем в других языках. В 1С константы хранят постоянную или условно постоянную информацию, которая редко изменяется. Здесь я опираюсь на слово «изменяется». Если в других языках программирования пользователь не может менять константу, то в платформе 1С имеется такая возможность, но по определению делать он это должен крайне редко. В этой статье мы будем учиться работать с константами: научимся создавать их, научимся работать с константами в командном интерфейсе 1С 8.3, узнаем, что такое форма констант и научимся программно обращаться к константе: получать значение константы и записывать константу.

Создание константы в 1С

Создадим несколько констант 1С. Обратите внимание на ветку Константы в дереве метаданных конфигуратора 1С, это именно то место, где в 1С расположен список констант. Найдем эту ветку в дереве, выделим её, и вызовем правой кнопкой мышки контекстное меню, в котором нас интересует команда «Добавить».

Где в 1С константы

После выполнения этой команды, константа будет создана, а в правой части рабочего стола откроется палитра свойств новой константы. Здесь мы можем указать название константы и её тип. Пусть наша первая константа будет называться НазваниеОрганизации (тип строка (200)).

Константа 1С и палитра свойств

Создадим еще несколько констант с примитивными типами.

Дата начала работы организации (тип Дата).

Константа 1С и палитра свойств

Процент налога на прибыль (тип число)

Константа 1С и палитра свойств

Константы в командном интерфейсе 1С

Если я сейчас попробую сохранить конфигурацию, то выйдет сообщение, что мои новые константы не включены ни в одну подсистему.

Объект не включен ни в одну подсистему

Можно это сообщение проигнорировать и работать дальше (тогда доступ к значениям константан будет затруднен, но критических проблем не возникнет), а можно добавить константы в подсистему 1С.

В моей учебной конфигурации имеется подсистема НСИ, в эту
подсистему я и добавлю все новые константы

Сделать это можно двумя способами.

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

 Включение константы в подсистему

Подробнее о создании и конфигурировании подсистем  в 1С

Второй. У константы вызвать контекстное меню, в котором
выполнить команду «Дополнительно».

Контекстное меню константы

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

Контекстное меню константы

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

Константы в пользовательском приложении 1С
Константы в пользовательском приложении 1С

Разберем, почему они там оказались.

Во-первых, если мы войдем в командный интерфейс подсистемы НСИ, в которую я добавил все константы, то найдем их в группе команд «Панель действий. Сервис», в эту группу платформа поместила команды на открытие констант автоматически, после того, как мы добавили константы в подсистему.

Константы в командном интерфейсе

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

Свойство константы использовать стандартные команды

Например, если мы снимем это свойство у константы «Процент налога на прибыль».

Свойство константы использовать стандартные команды

То команда на открытие этой константы исчезнет, как и из
командного интерфейса подсистемы.

Константы в командном интерфейсе

Так и из командного интерфейса пользовательского приложения.

Константы в командном интерфейсе

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

Форма ввода константы

Подробно о командном интерфейсе подсистемы 1С

Форма констант 1С

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

Создадим форму констант. Для этого нужно выделить ветку
метаданных Константы, вызвать
контекстное меню, и выполнить команду «Создать форму констант…» этого меню.

Создание формы констант

Откроется конструктор общих форм.

Конструктор общих форм для формы констант

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

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

Выбор констант для общей формы

После того, как выбрали нужные константы, нажимаем кнопку Готово, и управляемая форма констант будет создана.

Форма констант 1С

Замечу, что форма добавилась в ветку Общие формы ветки Общие
дерева метаданных 1С.

Нам осталось включить общую форму констант в подсистему. Для
этого вызовем контекстное меню общей формы констант и выполним команду «Дополнительно»

Контекстное меню формы констант

В открывшемся окне включим форму констант в подсистему 1С.

Включение формы констант в подсистему

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

Включение формы констант в подсистему

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

Как в командном интерфейсе подсистемы в конфигураторе.

Форма констант в командном интерфейсе в конфигураторе

Так и в пользовательском режиме

Форма констант в командном интерфейсе пользовательского приложения

Если эту форму открыть, то в ней будут поля ввода для всех констант,
которые  мы добавили при создании этой
формы.

Открытая форма констант

Что делать, если форма уже создана, но позже добавили новую константу, например «ИНН Организации».

Новая константа 1С

Тогда следует добавить новую константу на форму. Для этого, нужно открыть форму на редактирование, развернуть в закладке Реквизиты дерево НаборКонстант, найти в этом дереве новую константу и перетащить её в элементы формы.

Добавление новой константы на форму констант

Как получить константу 1С

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

&НаСервереБезКонтекста
Процедура ПолучитьНаСервере()
    НазваниеОрганизации = Константы.НазваниеОрганизации.Получить();
    Сообщить(НазваниеОрганизации);
КонецПроцедуры

&НаКлиенте
Процедура Получить(Команда)
    ПолучитьНаСервере();
КонецПроцедур

В этом случае процедура Получить(Команда) это обработчик команды, которая вызывает процедуру ПолучитьНаСервере. В этой процедуре используется объект Константы, который имеет  тип КонстантыМенеджер, и посредством которого можно программно обратиться  к любой константе.

Выбор констант менеджера констант

Константы.НазваниеОрганизации – это уже менеджер конкретной константы, у которого есть метод Получить(), при помощи которого можно получить значение константы.

Вы заметили, что с менеджером команды я работаю в серверном контексте (под директивой &НаСервереБезКонтекста, но можно использовать и директиву &НаСервере ). Это потому что менеджер констант имеете доступность Сервер, Толстый клиент и прочее «тяжелые» режимы. В тонком клиенте нельзя обратиться к менеджеру констант!

Установить значение константы

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

&НаСервереБезКонтекста
 Процедура УстановитьНаСервере()
     Константы.ПроцентНалогаНаПрибыль.Установить(25);
 КонецПроцедуры
 
 &НаКлиенте
 Процедура Установить(Команда)
     УстановитьНаСервере();
 КонецПроцедуры

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

Другие статьи по теме конфигурирования:

Документы в 1С 8.3

Справочники в 1С 8.3

Предопределенные элементы справочников 1С

Формы справочников в 1С 8.3

Журнал документов в 1С 8.3

Табличные части объектов 1С

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

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

Основы разработки в 1С такси
  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Константы используются для хранения одного значения в базе данных. Обычно в константах хранится редко изменяемая информация, например, название организации, адрес организации, фио руководителя и т.д.

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

1. Чтение значения константы

Мы можем прочитать значение константы с помощью метода Получить()

// чтение значения Константы
Название = Константы.НазваниеОрганизации.Получить();

Обратите внимание на слово Константы (а не Константа, как было в версии 7.7).

2. Запись нового значения константы

Для записи (установки) нового значения константы используется метод Установить()

// запись нового значения Константы
Константы.НазваниеОрганизации.Установить(«ООО Рога и копыта»);
 

3. Работу с набором констант

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

//создаем набор из трех констант

//обратите внимание, что мы лишь создаем набор констант и пока не знаем их значения

Набор = Константы.СоздатьНабор(«Руководитель,НазваниеОрганизации,АдресОрганизации»);

//теперь с помощью метода Прочитать() мы можем прочитать значения констант нашего набора

Набор.Прочитать(); //прочитать из базы сразу три константы

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

//устанавливаем значение констант в наборе (не в базе)
Набор.Руководитель = «Иванов И.И.»;
Набор.НазваниеОрганизации = «ООО Новые рога и копыта»;
Набор.АдресОрганизации = «Россия, г. Москва, Кремль»;
Набор.Записать();   //записываем в базу сразу значения трех констант

4. Сравнение со значением константы в запросах

Иногда нам может потребоваться в запросе сравнить данные со значением константы. В данном примере мы выбираем записи из справочника Напоминания, у которых значение реквизита Код равно значению нашей константы НашеЧисло. Более подробно язык запросов 1С мы рассмотрим в следующих материалах по встроенному языку 1С. 

«ВЫБРАТЬ
|   НашеЧ.Значение,
|   Напоминания.Код,
|ИЗ
|   Константа.НашеЧисло КАК НашеЧ,
|   Справочник.Напоминания КАК Напоминания
|ГДЕ
|   Напоминания.Код = НашеЧ.Значение»

Количество просмотров: 61871

Модули в 1С: Предприятие 8.3

Модули — это те объекты, где содержится программный код.

Некоторые модули могут быть скомпилированы как на Клиенте, так и на Сервере, а некоторые только на Сервере.

Модуль может состоять из нескольких разделов. Раздел объявления переменных и основной программы существуют не для всех модулей, а раздел описания процедур и функций может быть абсолютно в любом.

Типы модулей:

  • Модуль приложения
  • Модуль внешнего соединения
  • Модуль сеанса
  • Общие модули
  • Модуль формы
  • Модуль объекта
  • Модуль менеджера

Модуль приложения

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

В модуле приложения отслеживается именно интерактивный запуск системы.

Модуль формы 

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

Модуль объекта

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

У некоторых объектов конфигурации не существует Модулей объектов. Это связано с особенностями самих объектов. К таким объектам относятся Константы и Регистры.

Язык программирования 1С не имеет названия, на официальных источниках обозначен как «встроенный язык программирования». Предварительно компилируемый предметно-ориентированным язык высокого уровня. По синтаксису напоминает VisualBasic в сочетании с языком запросов T-SQL. Создание новых классов программно в языке 1С:8.3 запрещено (нет наследования, инкапсуляции, полиморфизма).

Хорошо подходит для работы с календарем, для обработки текстовых данных, но имеет слабые математические функции, а также невнятную обработку времени.

Особенностью является двуязычный синтаксис команд: русский и английский.

Конструкция языка Примечание
//Это комментарий Так оформляются комментарии. Комментарий — это подсказки, пометки разработчика, которые помогают разобраться или вспомнить логику работы программного кода. Каждая новая строка комментария должна начинаться с символов //.
Перем ФИО; Явное объявление переменной. ФИО — имя переменной.
А = 3; Переменную можно не объявлять явно. При первом присвоении значения система создает данную переменную.
ЭтоЧисло = 23.5+12*2; Переменной ЭтоЧисло присваивается числовое значение. С данными числового типа можно выполнять арифметические операции: сложение, вычитание, умножение и деление. В качестве разделителя целой и дробной части используется точка!
А = -0.123; Числовые значения могут быть отрицательными.
А = (2+7) * 3; // в результате А=27 Приоритет выполнения арифметических операций:
А = Сначала вычисляем 2 + 7, затем полученное значение умножаем на 3;
В = 2 * ((2+7) — 4); // в результате В = 10 Приоритет выполнения арифметических операций:
В = Сначала вычисляем 2 + 7, затем от полученного значения отнимаем 4, затем полученное значение умножаем на 2.
ЭтоСтрока = «Пугачева»; Переменной ЭтоСтрока присваиваем строковое значение. Значение строкового типа пишется в кавычках.
ФИО = «Пугачёва» + » » + «Алла» + » «+»Борисовна»;
// результат: ФИО = «Пугачёва Алла Борисовна»
Сложение строк. Символ » » мы прибавляем, чтобы между фамилией, именем и отчеством были пробелы. Вторая строчка кода это просто комментарий.
ДатаОтчета = ‘2013.01.01’; Переменная, которая хранит дату. Значение типа Дата записывается в одинарных кавычках.
НоваяДата = ‘2013.01.01’+86400;
//НоваяДата = ‘2013.01.02’
К дате можно прибавлять и вычитать число. В результате к дате либо прибавится, либо отнимется число секунд.
Процедура РассчитатьЦену (Товар)
КонецПроцедуры
Простая процедура. Между словами Процедура и КонецПроцедуры записывается текст процедуры.
Функция РассчитатьНалог(Сотрудник, НекаяДата)
Возврат Налог;
КонецФункции
Функция должна возвращать результат в место ее вызова.
Если Доход > 20000 Тогда
Результат = «Жить можно»;
Иначе
Результат = «Так жить нельзя!»;
КонецЕсли;
Простое условие. После слова КонецЕсли должна быть точка с запятой, потому что так заканчивается оператор Если.
Результат = ?(Доход > 20000, «Жить можно «, «Так
жить нельзя!»);
Сокращенное Если. Краткая запись предыдущего простого условия.
Если Доход > 20000 Тогда
Результат = «Жить можно»;
ИначеЕсли Доход > 10000 Тогда
Результат = «Плохо»;

Иначе
Результат = «Так жить нельзя!»;
КонецЕсли;

Множественное условие. Если первое условие не выполняется, то проверяется второе. Если ни одно из условий не выполняется то выполняется блок Иначе.
Если (Доход > 20000) И (КодКатегории = 2) Тогда
КонецЕсли;
Составное логическое выражение.
Пока Номер <= 15 Цикл
КонецЦикла;
Простой цикл Пока (с неизвестным числом повторений). После слова КонецЦикла должна быть точка с запятой, потому что так заканчивается оператор Пока.
Для Номер = 1 По 15 Цикл
КонецЦикла;
Простой цикл Для (цикл с известным числом повторений).
Для каждого СтрокаТаблицы Из Таблицы Цикл
КонецЦикла;
Еще одна разновидность цикла. Оператор цикла Для каждого предназначен для циклического обхода коллекций значений (табличных частей справочников, документов и т.д.). При каждой итерации цикла возвращается новый элемент коллекции. Обход осуществляется до тех пор, пока не будут перебраны все элементы коллекции.
Пока <условие> Цикл
Если <условие> Тогда
Продолжить;
КонецЕсли;
КонецЦикла;
Оператор Продолжить передает управление в начало цикла.
Пока <условие> Цикл
Если <условие> Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Пока <условие> Цикл
Если <условие> Тогда
Прервать;
КонецЕсли;
КонецЦикла;

Структура программных модулей

Обычно программный модуль состоит из трех разделов:

  • Область объявление переменных;
  • Область описания процедур и функций;
  • Основной текст программы.

Пример

//***************** ОБЛАСТЬ ОБЪЯВЛЕНИЯ ПЕРЕМЕННЫХ **********************

Перем Фамилия Экспорт; //это глобальная переменная
Перем Имя, Отчество    //это переменная модуля
Перем ФИО;       //это тоже переменная модуля и к ней можно обращаться

                          //из любой процедуры и функции нашего модуля 

//*************** ОБЛАСТЬ ОПИСАНИЯ ПРОЦЕДУР И ФУНКЦИЙ ****************

Процедура Процедура1( )
    Перем Итог;    //Итог это локальная переменная (переменная процедуры)

Итог Фамилия+» «+Имя+» «+Отчество;

КонецПроцедуры

Функция Функция1( )

// операторы функции

Возврат(Фамилия + » «Имя);

КонецФункции

//******************* ОСНОВНОЙ ТЕКСТ ПРОГРАММЫ ***********************

Фамилия =«Иванов»;
Имя = «Иван»;
Отчество «Иванович»;

//******************************************************************************

Операции с константами

1. Чтение значения константы

Мы можем прочитать значение константы с помощью метода Получить():

Название = Константы.НазваниеОрганизации.Получить();

2. Запись нового значения константы

Для записи (установки) нового значения константы используется метод Установить():

Константы.НазваниеОрганизации.Установить(«ООО Рога и копыта»);

3. Работа с набором констант

Все входящие в набор константы считываются и записываются вместе в одной транзакции:

//создаем набор из трех констант

//обратите внимание, что мы лишь создаем набор констант и пока не знаем их значения

Набор Константы.СоздатьНабор(«Руководитель,НазваниеОрганизации,АдресОрганизации»);

//теперь с помощью метода Прочитать() мы можем прочитать значения констант нашего набора

Набор.Прочитать(); //прочитать из базы сразу три константы

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

//устанавливаем значение констант в наборе (не в базе)
Набор.Руководитель = «Иванов И.И.»;
Набор.НазваниеОрганизации «ООО Новые рога и копыта»;
Набор.АдресОрганизации «Россия, г. Москва, Кремль»;
Набор.Записать();   //записываем в базу сразу значения трех констант

4. Сравнение со значением константы в запросах 

 Иногда нам может потребоваться в запросе сравнить данные со значением константы. В данном примере мы выбираем записи из справочника Напоминания, у которых значение реквизита Код равно значению нашей константы НашеЧисло.

«ВЫБРАТЬ
|   НашеЧ.Значение,
|   Напоминания.Код,
|ИЗ
|   Константа.НашеЧисло КАК НашеЧ,
|   Справочник.Напоминания КАК Напоминания
|ГДЕ

|   Напоминания.Код = НашеЧ.Значение» 

Операции со справочниками

1. Ссылка на справочник 

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

СпрСотрудники Справочники.Сотрудники; // или 2 вариант
СпрДолжности Справочники[«Должности»];

2. Создание и запись нового элемента справочника

НовЭл Справочники.Сотрудники.СоздатьЭлемент();
НовЭл.Наименование «Петров Петр Петрович»;
НовЭл.Оклад 25000;
НовЭл.Записать(); // именно в этот момент происходит запись в базу данных

3. Создание и запись новой группы справочника (для иерархического справочника)

Нов Справочники.Сотрудники.СоздатьГруппу();
Нов.Наименование «Работающие»;
Нов.Записать();  
// или 2 вариант 
Нов Справочники[«Сотрудники»].СоздатьГруппу();
Нов.Наименование «Работающие»;
Нов.Записать();

4. Поиск элемента справочника

// если элемент найден, то он возвращается, иначе возвращается значение Неопределено

СпрСотр Справочники.Сотрудники;

НайденныйСотр СпрСотр.НайтиПоКоду(123);   //ищем по коду
НайденныйСотр СпрСотр.НайтиПоНаименованию(«Иванов Иван Иванович»); //по наименованию
НайденныйСотр СпрСотр.НайтиПоРеквизиту(«Оклад», 5000);    //по реквизиту

//далее нужно проверить найденное значение

Если НайденныйСотр = Неопределено Тогда
    //элемент не найден
КонецЕсли;

5. Удаление элемента справочника

СпрСотр Справочники.Сотрудники;

СпрСотр.Удалить(); //непосредственное удаление текущего элемента справочника

СпрСотр.УстановитьПометкуУдаления (Истина); //пометка на удаление
СпрСотр.УстановитьПометкуУдаления (Ложь); //снять пометку на удаление

//можно проверить, помечен ли элемент на удаление
//свойство ПометкаУдаления имеет тип Булево (Истина или Ложь)

Пометка СпрСотр.ПометкаУдаления//обратите внимание: это свойство
Если Пометка = Истина Тогда
    //элемент помечен на удаление
КонецЕсли;

6. Перебор элементов справочника

Выборка Справочники.Сотрудники.Выбрать();
Пока Выборка.Следующий() = Цикл // начало перебора элементов справочника в цикле
//действия с очередным элементом …
Сообщить(«Сотрудник » Выборка.Наименование);
КонецЦикла;

7. Родитель. 

Перебор элементов внутри группы.
Группа в терминах 1С — это «родитель».

СпрСотр Справочники.Сотрудники;
ГруппаРаботающие СпрСотр.НайтиПоНаименованию(«Работающие»);
Выборка СпрСотр.Выбрать(ГруппаРаботающие);
Пока Выборка.Следующий() = Цикл
   //действия с очередным элементом
   Сообщить(«Сотрудник » Выборка.Наименование);
КонецЦикла;

8. Владелец. 

Перебор элементов справочника, принадлежащих элементу другого справочника.
Один справочник подчинен другому справочнику, например справочник НалоговыеЛьготы подчинен справочнику Сотрудники.

Выборка Справочники.НалоговыеЛьготы.Выбрать( ,Сотрудник); //тут сотрудник — ссылка на элемент справочника сотрудники
Пока Выборка.Следующий() = Цикл
   //действия с очередным элементом
   Сообщить(«льгота « + Выборка.Наименование);
КонецЦикла;

9. Транзакция 

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

СпрСотр Справочники.Сотрудники;
НачатьТранзакцию();

Для Ном По 100 Цикл
   Нов СпрСотр.СоздатьЭлемент();
   Нов.Наименование «Новый » + Строка(Ном);
   Нов.Записать();
КонецЦикла;

ЗафиксироватьТранзакцию();

Понравилась статья? Поделить с друзьями:
  • Как программно изменить значение реквизита справочника
  • Как программно изменить значение регистра при вводе начальных остатков 1с
  • Как программно изменить значение константы
  • Как программно изменить заголовок формы 1с
  • Как программно изменить голос