Функции справочник


Справочники стандартных функций Си

Пожалуйста, приостановите работу AdBlock на этом сайте.

В прошлых уроках мы изучили много различных стандартных функций. Ещё больше их можно найти в каком-нибудь учебнике или справочнике по языку Си. Таких учебников и справочников великое-превеликое множество, возможно, и на этом сайте когда-нибудь появится подобный справочник, но это сейчас не очень важно. Важнее разобраться с тем, как с этими справочниками работать. Для примера я выбрал справочник, который стоит на первой позиции в гугле по запросу «справочник по функциям Си». Вот описание из справочника для функции abs .

Остановимся подробнее на содержимом отдельных блоков.

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

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

Блок Возвращаемое значение описывает, что вернёт функция. В случае такой простой функции, как abs , данный блок в принципе не нужен, т.к. и так понятно, что возвращает эта функция.

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

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

В общем со стандартными функциями всё ясно. А вот пользовательские функции мы обсудим в этом уроке. И первое, что мы сделаем, так это ответим на вопрос «Зачем нужны пользовательские функции?»

Тема: Заполнение справочников

Лабораторная работа № 2.

Цель: Познакомиться с объектом конфигурации Справочник. Узнать, для чего используется этот объект, какова его структура и какими основными свойствами он обладает.

Изучив эту тему вы узнаете:

1. Для чего предназначен объект конфигурации справочник;

2. Каковы характерные особенности справочника;

3. Для чего используются реквизиты и табличные части справочника;

4. Зачем нужны иерархические справочники и что такое родитель;

5. Зачем нужны подчиненные справочники и что такое владелец;

6. Какие основные формы существуют у справочника;

7. Что такое окно редактирования объекта конфигурации;

8. Как создать объект конфигурации справочник и описать его структуру;

9. Как добавить новые элементы в справочник;

10. Как создать группу справочника;

11. Как переместить элементы из одной группы справочника в другую;

12. Как запустить «1С:Предприятие 8.0» в режиме отладки;

На этом занятии Вы познакомитесь с объектом конфигурации Справочник. Вы узнаете, для чего используется этот объект, какова его структура и какими основными свойствами он обладает. На практических примерах Вы научитесь создавать справочники, описывать наиболее важные элементы их структуры и заполнять их данными. Кроме этого вы узнаете еще об одном объекте конфигурации – Форма. Для просмотра и редактирования справочники доступны из главного меню конфигурации. Заполнение и редактирование справочников возможны также в процессе работы с документами, однако для удобства работы рекомендуется перед началом оформления документов заполнить все справочники известной на данный момент информации.

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

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

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

I. Создание справочника «Клиенты»

1. Ваша задача – создать справочник, в котором будут храниться наименования наших клиентов. Также в данном справочнике Вы должны будете хранить личную информацию о клиенте (в данном случае это Ф.И.О., адрес и телефон) для этого необходимо установить курсор в дереве конфигурации на вид объектов конфигурации Справочники.

2. В командной панели окна конфигурации нажать кнопку Действия — Добавить.

3. После того, как вы нажмете Добавить, система откроет окно редактирования объекта конфигурации.

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

В открывшемся окне редактирования объекта конфигурации введем Имя – Клиенты.

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

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

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

Здесь необходимо ввести следующие данные длина кода и длинанаименования. Длина кода важное свойство справочника. Как правило, код справочника используется для идентификации элементов справочника и содержит уникальные для каждого элемента справочника значения. Платформа может сама контролировать уникальность кодов и поддерживать автоматическую нумерацию элементов справочника. Уникальность кодов платформа может отслеживать сама, поэтому от длины кода будет зависеть количество элементов, содержащихся в справочнике.Длина кода – 9 символов. В результате мы сможем использовать коды от 1 до 999999999 – этого вполне достаточно для нашей небольшой фирмы. Перейдем к длине наименования, установим ее на50 .Теперь создадим табличную часть. Для этого выделим слово Табличные части и нажмем на кнопку Добавить.

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

5. Теперь создайте для табличной части реквизит Адрес. Тип должен быть Строка, а длину возьмите 50. Для этого выделите в списке Табличная часть пункт Личные данные, нажмите на пиктограмму и заполните соответствующие поля в открывшемся окне. Аналогичным образом заполните реквизит Телефон.

6. Все остальные свойства объекта конфигурации Справочникоставьте такими, как их предлагает система по умолчанию, и нажмите Закрыть.

7. Теперь можно посмотреть, что создаст система на основе того объекта конфигурации Справочник, который был добавлен.

8. Выполните пункт меню Отладка — Начать отладку.

Появится следующий вопрос:

9. Ответьте Да и в следующем окне нажмите Принять:

Перед Вами откроется окно системы в режиме «1С:Предприятие 8.0». Поскольку Вы не создавали никаких интерфейсов пользователей, для просмотра результатов Вашей работы следует воспользоваться меню, которое создает система по умолчанию. Выполните пункт меню Операции — Справочник… и выберите справочник Клиенты:

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

II. Создание справочника «Мастера»

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

1.Вернитесь в конфигуратор (не закрывая окно отладчика) и создайте новый объект конфигурации Справочник. Назовите его Мастера.

Ваша задача – создать справочник, имеющий табличную часть.

2.На закладке Данные задайте длину кода – 9, тип кода – Строка, длину наименования справочника равной 50 символам и добавим в справочник новую табличную часть с именем ТрудоваяДеятельность.

3.Откроется окно, в котором введите Имя табличной части– ТрудоваяДеятельность:

4. Теперь создайте для табличной части реквизит Организация. Тип должен быть Строка, а длину возьмите 100. Для этого выделите в списке Табличная часть пункт ТрудоваяДеятельность, нажмите на пиктограмму и заполните соответствующие поля в открывшемся окне:

5.Аналогично создайте остальные реквизиты табличной части ТрудоваяДеятельность:

НачалоРаботы – тип Дата, состав даты – Дата,

ОкончаниеРаботы – тип Дата состав даты – Дата,

Для реквизитов НачалоРаботы и ОкончаниеРаботы Вы выбрали состав даты – Дата, поскольку в системе «1С:Предприятие 8.0» значения типа Дата содержат как дату, так и время. В данном случае время начала и окончания работы нам безразлично.

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

6.Теперь следует выбрать вариант редактирования справочника. Редактирование в списке нам уже не подойдет, поскольку в списке мы не сможем редактировать табличную часть справочника и вводить информацию о трудовой деятельности. Поэтому в справочнике Мастера выберите вариант редактирования справочника обоими способами – как в списке, так и в диалоге. Для этого перейдем на закладку Формы и установим соответствующий переключатель:

7.Создание справочника Мастера завершено – теперь можно запустить «1С: Предприятие 8.0» в режиме отладки и заполнить справочник.

Выполните пункт меню Отладка — Продолжить отладку, на вопрос системы «Программа запущена! Перезапустить?»ответьте «Да», на последующие вопросы ответьте так же, как и ранее.

8. В появившемся окне программы откройте справочник Мастера и убедитесь, что установлен режим редактирования справочника в диалоге (меню Действия — Редактировать в диалоге или аналогичная иконка в командной панели).

9. Создайте мастеров, как показано на рисунках:

III. Создание справочника «Номенклатура»

Справочник Номенклатура будет содержать информацию об услугах, которые оказывает фирма «ТрансСервис» и о тех материалах, которые при этом могут быть использованы.

Этот справочник должен обладать наличием иерархической структуры. Для того чтобы справочником было удобно пользоваться, необходимо сгруппировать услуги в одну группу, а материалы – в другую. Кроме этого, поскольку фирма «ТрансСервис» оказывает разные услуги, они будут логически собраны в несколько групп. То же самое можно сказать и про материалы. Ваша задача будет состоять в создании иерархического справочника. В группе Материалы Вам необходимо будет создать еще несколько групп: групп различных марок автомобилей (отечественные, а также иномарки). Например, в данной лабораторной работе в группе материалы будут созданы еще две группы: ВАЗ-21074 и Huinday Gets.

1.Создадим новый объект конфигурации Справочник и назовите его Номенклатура. Перейдите на закладку Иерархия и установите флаг Иерархический справочник.

На закладке Данные задайте длину кода – 9, тип кода – Строка, длину наименования справочника равной 100 символам.

2. Теперь запустите «1С:Предприятие 8.0» в режиме отладки и заполните справочник Номенклатура. В процессе заполнения справочника Вы научитесь создавать группы справочника и переносить элементы из одной группы в другую.

3. Создайте две группы в корне справочника: Материалы и Услуги (меню Действия — Новая группа):


4. В группе Услуги создайте следующие группы:

  1. Кузовные работы;
  2. Мелкосрочный ремонт;
  3. ТО.

В группе Материалы тоже создайте несколько групп:

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

В открывшемся окне выберите новую группу:

IV. Создание справочника «Склады»

Теперь создайте справочник Склады, который будет содержать информацию о складах, используемых фирмой «ТрансСервис». Этот справочник будет содержать один предопределенный элемент – склад Основной, на который будут поступать все материалы. Наша задача – создать справочник, содержащий предопределенные элементы.

1.Откройте конфигуратор и создайте новый объект конфигурации Справочник с именем Склады. На закладке Данные установим длину кода – 9 и тип кода – Строка. Перейдем на закладку Прочее и нажмем кнопку Предопределенные. Система откроет список предопределенных элементов справочника. Сейчас он пуст, поэтому выполним команду ДействияДобавить и создайте предопределенный элемент с именем Основной: обратите внимание на то, что помимо наименования Вы задали еще и имя предопределенного элемента справочника. В дальнейшем, когда Вы будете использовать средства встроенного языка, Вы сможете обратиться к этому элементу справочника, используя имя, которое присвоили ему в конфигураторе.

2. Запустите «1С:Предприятие 8.0» в режиме отладки и откройте справочник Склады. Добавьте в справочник еще несколько складов:

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

Таким образом, теперь вы можете обозначить две характерные особенности предопределенных элементов:

1.На предопределенные элементы могут опираться алгоритмы работы конфигурации (т.к. возможно обращение к ним из встроенного языка по имени);

2.Предопределенные элементы являются объектами базы данных, которые нельзя удалить в режиме «1С: Предприятие 8.0».

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

Илон Маск рекомендует:  Как увеличить число подписчиков на 254%

V. Создание справочника «Единицы»

Теперь Вам необходимо создать справочник Единицы.Аналогичным образом создайте данный справочник:

VI. Создание справочника «Поставщики»

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

1. Для чего предназначен объект конфигурации Справочник?

2. Каковы характерные особенности Справочника?

3. Для чего используются реквизиты и табличные части справочника?

4. Зачем нужны иерархические Справочники?

5. Какие основные формы существуют у Справочника?

6. Что такое предопределенные элементы?

7. Как создать объект конфигурации справочник и описать его структуру?

8. Когда следует использовать редактирование справочника в списке, а когда – в диалоге?

9. Как добавить новые элементы в справочник?

10. Как создать группу справочника?

11. Как пользователь может отличить обычные элементы справочника от предопределенных элементов?

12. Как переместить элементы из одной группы справочника в другую?

13. Как запустить «1С:Предприятие 8.0» в режиме отладки?

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Для студентов недели бывают четные, нечетные и зачетные. 9440 — | 7438 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Функции справочник

Справочник по макрофункциям
с подробной справкой.

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

С писок всех существующих функций Excel на основных европейских языках
В список входят все существующие функции Excel (функции листа, макрофункции, функции надстройки Analysis ToolPack и другие) на 12 европейских языках: Русский (RUS), Английский(ENG), Немецкий(GER), Французский(FRA), Итальянский(ITA), Испанский(ESP), Португальский(POR), Голландский(NED), Шведский(SWE), Норвежский(NOR), Датский(DEN), Финский(FIN).

Список всех сочетаний клавиш Excel
Полный список всех «Горячих клавиш» Excel

Справка по VBA на русском языке
Справка по Visual Basic for Application для Excel и Access на русском языке.

Справка по функциям VBA на русском языке
Справка по функциям Visual Basic for Application на русском языке.

Описание полезных приёмов работы в MS Excel
Этого нет в стандартной справке Excel или на официальном сайте Microsoft.

Внимание! На компьютерах с операционной системой Windows Vista, Windows 7, Windows Server 2008 или Windows Server 2008 R2 файлы справки открываться не будут!
Как открыть файл справки? Инструкция по этой ссылке.

Функции

Дата изменения: 03.09.2020

Методы

В C# методом называется некий именованный блок кода, который, после описания, можно повторно применять дальше в программе. При использовании методу можно передавать параметры, которые будут ним обрабатываться. Общий вид объявления метода следующий:

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

type – тип данных, возвращаемых методом.

name – имя метода, по которому к нему можно будет обращаться.

args – параметры, которые иногда также называют аргументами. Это набор переменных указанных типов, которые можно передать методу. Подробнее о возможностях параметров методов рассказано в соответственном разделе.

Пример объявления и вызова метода:

Процедуры

В примере выше в качестве типа использовался void. Это особый тип, который сообщает о том, что метод не будет возвращать никаких значений. Методы с ключевым словом void в качестве типа называют процедурами.

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

Функции

Функции отличаются от процедур тем, что по завершении работы метода возвращают некое значение, которое может быть присвоено переменной или использовано в выражении. Возвращаемое значение обозначается ключевым словом return и должно быть того же типа, который указан в объявлении функции.

Рассмотрим пример функции, которая принимает на вход синус угла и возвращает косинус (либо наоборот).

Справочник по специальным функциям

Справочник состоит из введения и двадцати девяти глав. Каждая глава содержит основную часть, примеры, таблицы и библиографию. Основная часть делится на пункты с двойной нумерацией, которые тематически объединяют в себе формулы и таблицы, имеющие тройной номер. Рисунки либо являются иллюстрациями к тексту, либо несут самостоятельную смысловую нагрузку. В конце каждой главы имеется библиография книг, теоретических работ и таблиц.
Книга охватывает все важные классы специальных функций: элементарные трансцендентные функции (логарифмическую, показательную, тригонометрические и гиперболические); интегральную показательную функцию и гамма-функцию, а так же родственные им функции; интеграл вероятностей и интеграл Френеля; функции Лежандра; функции Бесселя целого и дробного порядка, а так же интеграллы от них; функции Струве и родственные им функции; вырожденные и невырожденные гипергеометрические функции; волновые функции Кулона и сфероидальные волновые функции; эллиптические функции Якоби и Веерштрасса; тэта-функции; элиптические интеграллы; функции парабалического цилиндра; функции Матье; ортогональные многочлены, многочлены Бернулли, Эёлера и дзетта-функцию Риммана и т.д. Для каждой функции даётся широкий обзор её свойств, причем делается упор на свойства, полезные при вычислениях, даются давольно полные и точные таблицы её значений. Кроме того, в каждой главе рассматриваются методы вычислений функций с использованием приведённых формул и таблиц. Кроме того, в справочнике рассматриваются вопросы, так или иначе связанные со специальными функциями и их вычислениями; комбинаторный анализ, распределение вероятностей, системы счисления, интерполяция, численное дифференцирование и интегрирование, преобразование Лапласа. Кроме того в справочнике приведены таблицы математических и физических постоянных и коэффициенты перевода. Присутствие этих таблиц создает большие удобства для пользования книгой физиками и инженерами. Справочник состоит из введения и двадцати девяти глав. Каждая глава содержит основную часть, примеры, таблицы и библиографию. Основная часть делится на пункты с двойной нумерацией, которые тематически объединяют в себе формулы и таблицы, имеющие тройной номер. Рисунки либо являются иллюстрациями к тексту, либо несут самостоятельную смысловую нагрузку. В конце каждой главы имеется библиография книг, теоретических работ и таблиц. Каждая глава «Справочника» написана индивидуальным автором — специалистом по соответствующим вопросам. Несмотря на некоторую возникшую из-за этого разницу в стиле написания отдельных глав, «Справочник» представляет собой единое целое, содержащее всю основную информацию, необходимую для работы со специальными функциями.

Функции справочник

Справочник функций («Настройка» — «Функции») содержит все функции программы, которые можно использовать при настройке панелей инструментов и меню. Этот справочник не предназначен для редактирования конечными пользователями. Он используется для выбора функций в Редакторе интерфейса («Настройка» — «Настройка интерфейса»).

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

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

Записи о функциях редактируются при помощи следующей формы:

Поля формы записи о программе:

  • «Группа» — Группа функций
  • «Код» — Код функции в данной группе
  • «Название» — Название функции. Будет выводится в качестве краткой подсказки к кнопке.
  • «Описание» — Текст описания функции
  • «Обозначение» — Условное обозначение функции. Это обозначение изменять нельзя!
  • «Значок» — Имя файла, содержащего значок функции (обычно *.ico)
  • «Параметров» — Количество параметров функции
  • «Параметр 1» — Тип первого параметра
  • «Параметр 2» — Тип второго параметра
  • «Параметр 3» — Тип третьего параметра

Условные обозначения типов параметров:

  • Time — Время в минутах
  • Money — Сумма оплаты
  • Uslug — Код услуги
  • BegTime — Время начала сеанса (чч:мм)
  • Command — Строка команды
  • Volume — Уровень громкости в диапазоне от 0 до 127
  • String — Строка сообщения
  • ShowTime — Время вывода сообщения в секундах


Скачать справочник по функциям

24.04.2009, 11:21

Справочник по функциям C/C++
Есть вообще справочник по всем функциям C/C++

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

Задачи по функциям. Объясните задачу по функциям)
Вводится последовательность из N целых чисел. Для каждого числа последовательности вывести новое.

Справочник по функциям
Добрый день всем! Подскажите, пожалуйста, справочник по функциям для JS (да и по языку в целом.

Краткий справочник по функциям
Может кто дать ссылку на сайт, где есть краткий справочник по всем функциям в питоне на русском.

Функции справочник

Форум

mista.ru / 1С:Предприятие / Учебник / Справочники Психушка. Один придурок другому:
-Тебе понравился мой рассказ, который я тебе вчера дал почитать?
-Да, но как-то всё размыто и много действующих лиц.
Входит врач:
-Так, придурки, кто спёр мою телефонную книгу.

Назначение справочников

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

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

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

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

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

Для каждого атрибута справочника нужно указать его тип данных, например, «число«, «строка«, «дата» (в версии 8.0 есть еще тип Булево — Истина или Ложь). Это базовые типы, но можно указать и сложные типы данных. Например атрибут Должность имеет тип данных Должности. В этом случае, значения этого атрибута будут выбираться из справочника Должности. Так реализуется простейшая связь между справочниками, когда значения атрибутов одного справочника выбираются из другого справочника.

Иванов Иван Иванович Бухгалтер Петров Петр Петрович Кадровик

Список элементов справочника в системе 1С:Предприятие может быть многоуровневым. В этом случае все строки справочника будут разделяться на 2 вида: «просто» элементы справочника и группы справочника. Группы позволяют переходить на нижележащие уровни многоуровневого справочника. Использование многоуровневых справочников позволяет организовать ввод информации в справочник с нужной степенью детализации. Элементы и группы элементов в многоуровневом справочнике можно переносить из одной группы в другую.

  • Работающие
    • Иванов Иванов Иванов
    • Петров Петр Петрович
  • Уволенные
    • Светлов Михаил Петрович
    • Цветков Антон Васильевич
  • Партнеры
    • Партнер 1
    • Партнер 2
  • Поставщики
    • Поставщик 1
    • Поставщик 2

Между справочниками может быть установлено отношение подчиненности. В терминах реляционных баз данных, между таблицами устанавливается связь «один-ко-многим». В этом случае каждый элемент подчиненного справочника будет связан с одним из элементов справочника-владельца.Иногда можно сказать, что элементы одного справочника принадлежат элементам другого. Например, в системе может быть справочник НалоговыеЛьготы. Тогда его можно сделать подчиненным справочнику Сотрудники. Это означает, что «Сотрудник владеет налоговыми льготами».

  • Иванов Иванов Иванов
  • Петров Петр Петрович
  • Светлов Михаил Петрович
  • Цветков Антон Васильевич
  • Льгота ветеранам
  • Льгота на детей
  • Иванов Иванов Иванов
  • Петров Петр Петрович
  • Светлов Михаил Петрович
  • Цветков Антон Васильевич
  • Льгота афганцам

Табличные части (только версия 8.0)

В версии 8.0 появилась возможность для элемента справочника иметь несколько табличных частей. Эту возможность рекомендуется использовать для отражения информации, связанной с данным элементом, но не имеющей собственной объектной сущности (для которых рекомендуется завести подчиненный справочник). Например, для спр. Товары может быть заведена табличная часть ЕдиницыИзмерения, для справочника Сотрудники могут быть заведены табличные части Образование и СоставСемьи. Работа с табличными частями похожа на работу с подчиненными справочниками за исключением того, что табличные части не могут быть типами, а значит уже будет нельзя создать реквизит типа Образование.

Сравнение справочников с другими объектами


Константы хранит значение, сохраняется в базе данных Справочник хранит не одно значение, а целый список однородных объектов. Документы сохраняется в базе данных, имеет реквизиты, документы могут быть подчиненными друг другу Справочник хранит нормативно-справочную информацию, а документы отражают события реального мира. Обычно значения реквизитов документов выбираются из справочников. Документ обычно проводится, документ обязательно имеет дату и время, документ может содержать табличную часть, чего нет в справочниках (в версии 8.0 справочники и документы могут иметь по несколько табличных частей). Справочники могут быть многоуровневыми, в справочнике могут быть периодические реквизиты, чего нет в документах (в версии 8.0 периодических реквизитов нет, а есть периодические регистры сведений). Перечисления хранится в БД, хранит список значений Множество значений в справочник вводит пользователь в режиме Предприятие, а для перечислений список значений задается разработчиком в режиме Конфигуратор. Перечисления обычно используются в операторах Если. ТаблицаЗначений имеет строки и колонки (не хранится в БД) ТаблицаЗначений предназначена для хранения промежуточных данных в памяти компьютера, возникающих во время работы программы. Таблица значений может хранить разнородные объекты, а в справочнике все элементы одного типа. Таблицы значений не могут быть многоуровневыми или подчиненными друг другу. СписокЗначений хранит список значений (не сохраняется в БД) Список значений может хранить разнородные объекты, а в справочнике все элементы одного типа

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

СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
СпрДолж = СоздатьОбъект(«Справочник.Должности»); СпрСотр = Справочники.Сотрудники;
СпрДолж = Справочники[«Должности»]

Создание и запись нового элемента

СпрСотр.Новый();
СпрСотр.Наименование = «Иванов Иван Иванович»;
СпрСотр.Оклад = 5000;
СпрСотр.Записать();

НовЭл = СпрСотр.СоздатьЭлемент();
НовЭл.Наименование = «Иванов Иван Иванович»;
НовЭл.Оклад = 5000;
НовЭл.Записать();

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

//например, в приказе об увольнении
СпрСотр.НайтиЭлемент(Сотрудник);

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

//если элемент найден, он становится текущим и его можно прочитать так:

Если СпрСотр.НайтиПоНаименованию(«Иванов Иван Иванович»)=1 Тогда
. НайденныйСотр = СпрСотр.ТекущийЭлемент();
КонецЕсли;

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

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

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

НайденныйСотр = СпрСотр.НайтиПоНаименованию(«Иванов Иван Иванович»);
Если НайденныйСотр = Неопределено Тогда
. //элемент не найден
КонецЕсли;

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

СпрСотр.Удалить(1); //непосредственное удаление

СпрСотр.Удалить(0); //пометка на удаление
СпрСотр.СнятьПометкуУдаления();

//можно проверить, помечен ли элемент на удаление
//функция возвращает 1 — если помечен, 0 — если нет
Пометка = СпрСотр.ПометкаУдаления(); //обратите внимание: это метод

СпрСотр.Удалить(); //непосредственное удаление

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

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

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

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

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

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

СпрСотр.НайтиПоНаименованию(«Работающие»);
Работающие = СпрСотр.ТекущийЭлемент();
СпрСотр.ИспользоватьРодителя(Работающие);
//дальше, например, цикл по сотрудникам (см. выше)
.

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

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

СпрНЛ = СоздатьОбъект(«Справочник.НалоговыеЛьготы»);
СпрНЛ.ИспользоватьВладельца(Сотрудник);
//дальше, например, цикл по льготам этого сотрудника (см. выше)
.

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

Периодические реквизиты
Чтение и запись периодических реквизитов.
Установка даты выборки периодических реквизитов для всего справочника.

//так мы узнаем, какая была у сотрудника
//категория на определенную дату
Катег = СпрСотр.Категория.Получить(НекаяДата);

//так мы установим сотруднику категорию
//на определенную дату
СпрСотр.Категория.Установить(НекаяДата, НоваяКатегория);

//можно установить дату выборки периодических
//реквизитов для всего справочника
СпрСотр.ИспользоватьДату(НекаяДата);

//тогда ниже уже нельзя использовать Установить и Получить
//доступ к периодическим реквизитам становится
//такой же, как к обычным реквизитам
Катег = СпрСотр.Категория;
СпрСотр.Оклад = 6000;

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

Экранные формы справочников

Форма списка справочника

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

Лучше один раз увидеть, чем сто раз услышать, поэтому ниже для примера приведена форма списка справочника Сотрудники:

Модуль формы списка содержит процедуры и функции, которые действуют в контексте данной формы (в контексте объекта Справочник).

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

ПриОткрытии Вызывается при открытии формы списка справочника. Можно задать начальные значения для переменных, проверить права пользователя на открытие данного справочника и т.д. ПриЗакрытии Вызывается при закрытии формы списка справочника. ПриЗаписи

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

Пример, справочник Должности

Процедура ПриЗаписи()
. Если СокрЛП(Наименование)=»» Тогда
. Предупреждение(«Не указано название должности!»,30);
. СтатусВозврата(0);
. КонецЕсли;
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
. Если СокрЛП(Наименование)=»» Тогда
. Предупреждение(«Не указано название должности!»,30);
. Отказ = Истина;
. КонецЕсли;
КонецПроцедуры

ПриВыбореРодителя(НовРодитель) Вызывается при выборе родителя (группы). В этой процедуре можно проверить права пользователя на просмотр элементов данной группы. ПриВыбореВладельца(НовВладелец) Вызывается при выборе владельца справочника-хозяина. Имеет смысл, если данный справочник подчинен другому. ПриУстановкеОтбора(Реквизит,Значение) Предопределенная процедура при интерактивной установке отбора любым способом (отбор, быстрый отбор, отбор по значению, история отбора) и при отключении отбора. ПриВыбореСтроки() Режим обработки выбора строки (двойной щелчок мыши или клавиша Enter) включается в форме списка справочника, журнала документов, счетов, журнала операций, журнала проводок при помощи метода Форма.ОбработкаВыбораСтроки(1). Тогда при выборе строки будет вызываться эта предопределенная процедура.

В форме списка справочника элементы могут быть отсортированы в различном порядке: по коду, по наименованию или по любому реквизиту, у которого в Конфигураторе установлен флажок Сортировка. Задать тип сортировки можно программно методом Сортировка (Способ, ФлагРазрешенияИзменения)

Процедура ПриОткрытии()
. Сортировка(«Код»,0); //сортировка по коду, пользователь изменить не может
КонецПроцедуры

Процедура ПриОткрытии()
. СправочникСписок.Порядок.Установить(«Наименование Asc, Карточка Asc»);
. //вопрос читателям: как запретить пользователю изменять порядок сортировки?
КонецПроцедуры

В форме списка справочника элементы могут быть отфильтрованы, т.е. пользователю будут показаны только нужные элементы. Программно установить отбор можно методом УстановитьОтбор (Реквизит, Значение). Для этого у реквизита должен быть установлен флажок «Отбор по реквизиту» в Конфигураторе .

Процедура ПриОткрытии()
. УстановитьОтбор(«Год»,1980);
КонецПроцедуры

Процедура ПриОткрытии()
. СправочникСписок.Отбор.Карточка.Установить(Год,1980);
. //вопрос читателям: как запретить пользователю изменять условия отбора?
КонецПроцедуры

Статический фильтр (только версия 7.7)

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

СписокЭлементов = создатьОбъект(«СписокЗначений»);
СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
СпрСотр.ИспользоватьДату(РабочаяДата());
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
. Если (СпрСотр.Родитель = группаРаботающие) И (СпрСотр.Должность=длжПлотник) Тогда
. СписокЭлементов.ДобавитьЗначение(СпрСотр.ТекущийЭлемент());
. КонецЕсли;
КонецЦикла;

ИспользоватьСписокЭлементов(СписокЭлементов);

Форма элемента и форма группы

Если справочник имеет сложную структуру, тогда его элементы удобнее редактировать в отдельном окне, а не в списке. Ниже приведена форма элемента справочника Сотрудники.

В форме элемента справочника также есть предопределенные процедуры (события):

ПриОткрытии() Вызывается при открытии формы элемента справочника. Можно задать начальные значения для переменных, проверить права пользователя на открытие данного элемента справочника и т.д. ПриЗакрытии() Вызывается при закрытии формы элемента справочника. ПриЗаписи()

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

Пример, справочник Сотрудники

Процедура ПриЗаписи
. Если Категория.Выбран()=0 Тогда
. Предупреждение(«Не указана категория сотрудника!»);
. СтатусВозврата(0);
. КонецЕсли;
КонецПроцедуры

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

Следует заметить, что вверсии 8.0 список событий всех объектов значительно расширен.

Создание и запись элемента

Программное создание элемента справочника

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

СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
СпрСотр.ИспользоватьРодителя(грпРаботающие);
СпрСотр.Новый();
СпрСотр.Наименование = «Иванов Иван Иванович»;
СпрСотр.ДатаПриема = ‘01.01.2002’;
СпрСотр.Записать();
//установка периодических реквизитов возможна только после записи элемента
СпрСотр.Категория.Установить (СпрСотр.ДатаПриема, ктгСовместители);
СпрСотр.Должность.Установить (СпрСотр.ДатаПриема, длжПлотник);

а можно сделать красивее:


СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
СпрСотр.ИспользоватьРодителя(грпРаботающие);
СпрСотр.ИспользоватьДату(ДатаПриема); //внимание!
СпрСотр.Новый();
СпрСотр.Наименование = «Иванов Иван Иванович»;
СпрСотр.ДатаПриема = ‘01.01.2002’;
//доступ к периодическим реквизитам становится такой же, как к обычным
СпрСотр.Категория = ктгСовместители;
СпрСотр.Должность = длжПлотник;
СпрСотр.Записать();

Нов = Справочники.Сотрудники.СоздатьЭлемент();
Нов.Родитель = грпРаботающие;
Нов.Наименование = «Иванов Иван Иванович»;
Нов.ДатаПриема = ‘01.01.2002’;
Нов.Записать();

//в версии 8.0 нет периодических реквизитов

Программное создание групп

СпрСотр.НоваяГруппа();
СпрСотр.Наименование = «Работающие»;
СпрСотр.Записать();

СпрСотр.НоваяГруппа();
СпрСотр.Наименование = «Уволенные»;
СпрСотр.Записать();

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

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

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

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

СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
НачатьТранзакцию();

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

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

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

СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
Режим = 0; //выбирать без учета иерархии, 1 — с учетом (по умолч.)
СпрСотр.ВыбратьЭлементы(Режим);
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
.
КонецЦикла;

СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
РежимИерархии = 1; //1- выбирать с учетом иерархии, 0 — без учета
РежимГрупп = 0; //0 — не включать в выборку группы, 1 — включать
ИмяРеквизита = «Год»; //в Конфигураторе у реквизита должен быть установлен флажок Отбор
Значение = 1980;
СпрСотр.ВыбратьЭлементыПоРеквизиту(ИмяРеквизита,Значение,РежимИерархии, РежимГрупп);
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
.
КонецЦикла;

Фильтрация в цикле

СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
СпрСотр.ИспользоватьРодителя(грпРаботающие);
СпрСотр.ИспользоватьДату(РабочаяДата());
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл

Если СпрСотр.Должность <> длжПлотник Тогда
. Продолжить; //этого сотрудника пропускаем, перейти в начало цикла
КонецЕсли;

Перед выборкой можно задать порядок сортировки следующими методами:

ПорядокКодов()
ПорядокНаименований()
ПорядокРеквизита(ИмяРекв) //у реквизита должен быть установлен флажок Сортировка в Конфигураторе
ОбратныйПорядок()

Например, ниже открывается выборка сотрудников, отсортированных по номерам по убыванию:

СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
СпрСотр.ПорядокКодов();
СпрСотр.ОбратныйПорядок();
СпрСотр.ВыбратьЭлементы();

Запрос к справочнику

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

СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
Если СпрСотр.НайтиЭлемент(ВыбрСотр)=1 Тогда
. //элемент становится текущим
. СпрСотр.Родитель = грпРаботающие;
. СпрСотр.Записать();
КонецЕсли;

Если СпрСотр.НайтиПоКоду(1) = 1 Тогда
. ЭлементИлиГруппа = СпрСотр.ТекущийЭлемент();
КонецЕсли;

Поиск по наименованию

Если СпрСотр.НайтиПоНаименованию(«Работающие»)=1 Тогда
. грпРаботающие = СпрСотр.ТекущийЭлемент();
КонецЕсли;

Режим = 1; // 1 — поиск внутри установленного подчинения (родителя) (по умолч.); 0 — поиск во всем справочнике
ФлагПоиска = 0; //1 — найти точное соответствие; 0 — найти наименование по первым символам (по умолч)
СпрСотр.ИспользоватьРодителя(грпРаботающие);
Если СпрСотр.НайтиПоНаименованию(«Ив»,Режим,ФлагПоиска)=1 Тогда
. ПервыйРаботающийИв = СпрСотр.ТекущийЭлемент();
КонецЕсли;

Поиск по реквизиту

ИмяРекв = «Год»; //у реквизита должен быть установлен флажок Сортировка в Конфигураторе
ФлагГлобПоиска = 1; // 1- искать во всем справочнике, 0 — искать в пределах подчинения
Если СпрСотр.НайтиПоРеквизиту(ИмяРекв,1980,ФлагГлобПоиска)=1 Тогда
. НайденныйЭлемент = СпрСотр.ТекущийЭлемент();
КонецЕсли;

Поиск элемента в цикле

СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
СпрСотр.ИспользоватьРодителя(грпРаботающие);
СпрСотр.ИспользоватьДату(РабочаяДата());
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл

Если СпрСотр.Должность = длжПлотник Тогда
. Прервать; //нашли работающего плотника! выйти из цикла
КонецЕсли;

Запрос к справочнику

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

СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
СпрСотр.НайтиЭлемент(ВыбрСотрудник);
СпрСотр.Удалить(); //непосредственное удаление

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

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

Пометка на удаление

Для контроля ссылочной целостности базы данных удаляемые элементы всего лишь помечаются на удаление. Затем специальной командой меню Операции => «Удаление помеченных объектов» в монопольном режиме система 1С проконтролирует ссылочную целостность и физически удалит элементы из базы данных, если на них нет ссылок в других объектах.

СпрСотр = СоздатьОбъект («Справочник.Сотрудники»);
СпрСотр. НайтиЭлемент (ВыбрСотрудник);
СпрСотр. Удалить (0); //пометка на удаление

//можно проверить, помечен ли элемент на удаление
//функция возвращает 1 — если помечен, 0 — если нет
Пометка = СпрСотр. ПометкаУдаления ();

//можно снять пометку на удаление
СпрСотр. НайтиЭлемент (ВыбрСотрудник);
СпрСотр. СнятьПометкуУдаления ();

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

СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
НачатьТранзакцию();

СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
. СпрСотр.Удалить(0); //пометка на удаление
КонецЦикла;

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

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

Внимание! Иерархический справочник — это также многоуровневый справочник, или справочник с группами.
Группа справочника в 1С часто называется «родитель«.

Программное создание группы

СпрСотр.НоваяГруппа();
СпрСотр.Наименование = «Работающие»;
СпрСотр.Записать();

СпрСотр.НоваяГруппа();
СпрСотр.Наименование = «Уволенные»;
СпрСотр.Записать();

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

Установка текущей группы

СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
СпрСотр.ИспользоватьРодителя(грпРаботающие); //теперь мы внутри группы Работающие
СпрСотр.ВыбратьЭлементы(); //открыть выборку элементов группы Работающие

СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
СпрСотр.ИспользоватьРодителя(грпРаботающие);
СпрСотр.Новый(); //создание нового элемента в группе Работающие

Информация о текущем элементе

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

Этот метод возвращает уровень текущего элемента. Например, для сотрудника, который находится в группе Работающие, мы получим число 2.

Пример, вывод иерархического справочника в виде дерева:

СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлементы()=1 Цикл

//вывести отступ в соответствии с глубиной вложенности элемента
Для Ном=1 По СпрСотр.Уровень() Цикл
. Сообщить(«. «);
КонецЦикла;
Сообщить(СпрСотр.Наименование);

ЭтоГруппа() Этот метод возвращает 1, если текущий элемент справочника является группой, или 0 если группой не является.

Пример, вывод сотрудников (группы не выводятся):

СпрСотр = СоздатьОбъект(«Справочник.Сотрудники»);
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлементы()=1 Цикл

Если СпрСотр.ЭтоГруппа()=1 Тогда
. Продолжить; //группы пропускаем, перейти в начало цикла
КонецЕсли;
Сообщить(СпрСотр.Наименование);

ПринадлежитГруппе(. ) Метод проверяет, принадлежит ли указанной группе текущий элемент справочника (независимо от того, на каком нижележащем уровне он находится).
Возвращает: 1 — если элемент принадлежит указанной группе , 0 — если нет.

Пример, вывод товаров, принадлежащих к группе Спиртное, независимо от того входят ли они в подгруппы Шампанское, Пиво, Водка, Вино и т.д.:

СпрТовары = СоздатьОбъект(«Справочник.Товары»);
СпрТовары.ВыбратьЭлементы();
Пока СпрТовары.ПолучитьЭлементы()=1 Цикл

Если СпрТовары.ПринадлежитГруппе(грпСпиртное)=1 Тогда
. Сообщить(СпрТовары.Наименование);
КонецЕсли;

атрибут Родитель

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


Пример, перенос всех товаров из группы Спиртное в группу Распродажа:

СпрТовары = СоздатьОбъект(«Справочник.Товары»);
СпрТовары.ВыбратьЭлементы();
Пока СпрТовары.ПолучитьЭлементы()=1 Цикл

Если СпрТовары.ПринадлежитГруппе(грпСпиртное)=1 Тогда
. СпрСотр.Родитель = грпРаспродажа;
. СпрСотр.Записать();
КонецЕсли;

А можно сделать красивее и перенести всю группу Спиртное в группу Распродажа, тогда все подгруппы и элементы также перенесутся в группу Распродажа.

СпрТовары = СоздатьОбъект(«Справочник.Товары»);
СпрТовары.НайтиЭлемент(грпСпиртное);
СпрТовары.Родитель = грпРаспродажа;
СпрТовары.Записать();

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

ПолноеНаименование()

Возвращает строку, содержащую полное наименование выбранного элемента справочника со всеми вышестоящими уровнями, разделенными символом «/».

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

Часто бывает удобно для реквизитов на форме, имеющих тип Справочник, отключить возможность выбора группы. Тогда в данное поле может быть выбран только элемент и не может быть выбрана группа. В общем, проще один раз попробовать, чем несколько раз объяснять.

Форма.ВыбрСотрудник.ВыборГруппы(0); //отключить возможность выбора группы

Справочник-владелец, это также справочник-хозяин.
Справочник-владелец и подчиненный справочник также называются связанными справочниками.
В терминах реляционных баз данных справочник-владелец — это родительская таблица, подчиненный справочник — это дочерняя таблица.

Назначение подчиненных справочников

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

Чтобы подчинить справочник какому-либо из справочников, уже существующих в системе, в поле «Подчинен» следует выбрать наименование этого справочника. Такой справочник в системе 1С:Предприятие называется владельцем.

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

Внешне работа с подчиненным справочником в системе 1С:Предприятие будет выглядеть следующим образом.

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

Если открыть подчиненный справочник, не выбрав элемент-владелец, то в окне подчиненного справочника не будет отображаться ни одного элемента, а в заголовке окна будет выдано сообщение «Не задан элемент-владелец».

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

Установка текущего владельца

СпрДоговоры = СоздатьОбъект(«Справочник.Договоры»);
СпрДоговоры.ИспользоватьВладельца(ВыбрКонтрагент);
СпрДоговоры.ВыбратьЭлементы(); //открываем выборку по договорам выбранного контрагента

Информация о текущем элементе

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

атрибут Владелец

Этот атрибут содержит владельца текущего элемента подчиненного справочника, т.е. элемент справочника-хозяина, к которому относится данный элемент. Атрибут доступен для чтения и записи.

Пример, перенос всех договоров от одного котрагента к другому (справочник Договоры подчинен справочнику Контрагенты):

СпрДоговоры = СоздатьОбъект(«Справочник.Договоры»);
СпрДоговоры.ИспользоватьВладельца(Контрагент1);
СпрДоговоры.ВыбратьЭлементы();
Пока СпрДоговоры.ПолучитьЭлементы()=1 Цикл

СпрДоговоры.Владелец = Контрагент2;
СпрДоговоры.Записать();

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

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

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

В режиме использования конфигурации для периодического реквизита можно вызвать окно «История». Это окно представляет собой таблицу, состоящую из двух граф: дата изменения значения реквизита справочника и значение на эту дату. Окно «История» позволяет редактировать историю изменений значения реквизита напрямую: вводить новые строки, редактировать или удалять существующие.

Методы периодических реквизитов
//так мы узнаем, какая была у сотрудника категория на определенную дату
Катег = СпрСотр.Категория. Получить (НекаяДата);

//так мы установим сотруднику категорию на определенную дату
СпрСотр.Категория. Установить (НекаяДата, НоваяКатегория);

Внимание! Эти методы можно применять, если ранее не применялся метод ИспользоватьДату

Установка даты выборки периодических реквизитов

//можно установить дату выборки периодических реквизитов для всего справочника
СпрСотр. ИспользоватьДату (НекаяДата);

//тогда ниже уже нельзя использовать методы Установить и Получить
//доступ к периодическим реквизитам становится такой же, как к обычным реквизитам
Катег = СпрСотр.Категория;
СпрСотр.Оклад = 6000;

Для работы с историей периодического реквизита очень удобно использовать объект «Периодический».

Пример, вывести историю карьеры сотрудника за текущий год:

ИсторияКарьеры = СоздатьОбъект(«Периодический»);
ИсторияКарьеры.ИспользоватьОбъект(«Должность»,ВыбрСотрудник);
ИсторияКарьеры.ВыбратьЗначения(НачГода(РабочаяДата(),КонГода(РабочаяДата()));
Пока ИсторияКарьеры.ПолучитьЗначение()=1 Цикл
. Сообщить(Строка(ИсторияКарьеры.ДатаЗнач) + » » + Строка(ИсторияКарьеры.Значение));
КонецЦикла;

С помощью объекта Периодический можно также редактировать и удалять значения. Полный список методов см. в Синтакс-помощнике.

При проведении документа часто требуется установить новое значение периодического реквизита на определенную дату. Это называется движение документа. В этом случае следует применять метод УстановитьРеквизитСправочника:

УстановитьРеквизитСправочника(Сотрудник, «Должность», НоваяДолжность, ДатаПеремещения);

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

ПривязыватьСтроку(НомерСтроки);
УстановитьРеквизитСправочника(Сотрудник, «Должность», НоваяДолжность, ДатаПеремещения);

Подбор из справочника

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

Процедура ОбработкаПодбора(Элемент,КонтФормы)
. НоваяСтрока();
. Товар = Элемент;
КонецПроцедуры

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

Процедура ОбработкаПодбора(Элемент,КонтФормы)
. НоваяСтрока();
. Товар = Элемент;
КонецПроцедуры

Установка и получение значений из подбора

— строка с именем реквизита формы подбора значения;
— значение реквизита.

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

Другие полезные методы

Вид() Установить или считать текущее название вида справочника. Возвращает текущее название вида справочника, как оно задано в Конфигураторе, например «Сотрудники». Установка вида справочника возможна для реквизитов типа «Справочник», т.е. справочник неопределенного вида. ПредставлениеВида() Получить пользовательское представление вида справочника, как он задан в конфигураторе.
Возвращает строковое значение, содержащее пользовательское представление вида справочника (синоним). УстановитьАтрибут(ИмяРеквизита, Значение) Установить значение реквизита по его имени.
— строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе. — выражение, содержащее устанавливаемое значение реквизита. ПолучитьАтрибут(ИмяРеквизита) Получить значение реквизита по его имени. Возвращает значение реквизита. Выбран()

Возвращает 1 — если элемент справочника выбран, 0 — если не выбран. Часто применяется для проверки на ошибки, чтобы все необходимые данные были указаны.

Выбрать(. ) Вызов диалога для выбора элемента справочника.
Возвращает: 1 — если элемент выбран; 0 — если не выбран. Выбранный элемент становится текущим.

Чтение структуры справочников

Цикл по справочникам

КолвоСправочниковВКонфигурации = Метаданные.Справочник();
Для Ном=1 to КолвоСправочниковВКонфигурации Цикл

кфгСпр = Метаданные.Справочник(Ном);
Идентификатор = кфгСпр.Идентификатор();
ПолныйИдентификатор = кфгСпр.ПолныйИдентификатор();
Синоним = кфгСпр.Синоним();
Комментарий = кфгСпр.Комментарий();
КоличествоУроней = кфгСпр.КоличествоУроней();
ПодчиненЛи = кфгСпр.Владелец().Выбран();
Владелец = кфгСпр.Владелец();
ИдентификаторВладельца = кфгСпр.Владелец().Идентификатор;
.

т.е. если вызвать метод Метаданные.Справочник() без параметров, то он вернет общее количество справочников в конфигурации. Если передать ему в качестве параметра номер или название справочника, то он вернет справочник как объект конфигурации.

Цикл по реквизитам справочника

КолвоРеквизитов = кфгСпрСотр.Реквизит();
Для Ном=1 to КолвоРеквизитов Цикл

кфгРекв = кфгСпрСотр.Реквизит(Ном);
Идентификатор = кфгРекв.Идентификатор();
ПолныйИдентификатор = кфгРекв.ПолныйИдентификатор();
Синоним = кфгРекв.Синоним();
Комментарий = кфгРекв.Комментарий();
Тип = кфгРекв.Тип(); //»Строка», «Число», «Справочник»
Вид = кфгРекв.Вид(); //напр. «Сотрудники»
Длина = кфгРекв.Длина();
Точность = кфгРекв.Точность();
Периодический = кфгРекв.Периодический();
.

т.е. если вызвать метод Метаданные.Справочник(Х).Реквизит() без параметров, то он вернет общее количество реквизитов справочника Х в конфигурации. Если передать ему в качестве параметра номер или название реквизита, то он вернет реквизит справочника как объект конфигурации.

Обращение к атрибутам по имени

При работе с метаданными часто применяются следующие методы:

УстановитьАтрибут(ИмяРеквизита, Значение) Установить значение реквизита по его имени.
— строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе. — выражение, содержащее устанавливаемое значение реквизита. ПолучитьАтрибут(ИмяРеквизита) Получить значение реквизита по его имени. Возвращает значение реквизита.

Что можно скачать

Так как работа с метаданными плохо документирована самой фирмой 1С, то рекомендуется скачать следующий файл, который является файлом для Синтакс-помощника. В нем содержится описание работы с некоторыми методами объекта Метаданные.


Распакуйте и поместите als-файл в каталог Program Files\1cv77\BIN и он будет подключен к Синтакс-помощнику.

Скачать справочник по функциям

24.04.2009, 11:21

Справочник по функциям C/C++
Есть вообще справочник по всем функциям C/C++

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

Задачи по функциям. Объясните задачу по функциям)
Вводится последовательность из N целых чисел. Для каждого числа последовательности вывести новое.

Справочник по функциям
Добрый день всем! Подскажите, пожалуйста, справочник по функциям для JS (да и по языку в целом.

Краткий справочник по функциям
Может кто дать ссылку на сайт, где есть краткий справочник по всем функциям в питоне на русском.

Форум

Справочник

Поиск по форуму
Расширенный поиск
К странице.

Справочник

Добро пожаловать в справочник по современному javascript!

Информация также доступна напрямую по ссылкам: http://javascript.ru/Array/slice.

Объекты

Стандартные объекты

Массив пронумерованных элементов, также может служить стеком или очередью

Объект для булевых значений

Функции для работы с датой и временем

объект для представления ошибок

Ошибка при выполнении функции eval

Каждая функция в яваскрипт является объектом класса Function .

Встроенный объект, предоставляющий константы и методы для математических вычислений.

Объект для работы с числами

Базовый объект javascript

Ошибка, когда число не лежит в нужном диапазоне

Ошибку при ссылке на несуществующую переменную

Позволяет работать с регулярными выражениями.

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

Ошибка при интерпретации синтаксически неверного кода

Ошибка в типе значения

Ошибка при некорректном URI

Объекты браузера

Два в одном: глобальный объект и окно браузера

Глобальные методы

Выводит модальное окно с сообщением

Останавливает выполнение кода, заданное setInterval

Отменяет выполнение кода, заданное setTimeout

Выводит сообщение в окне с двумя кнопками: «ОК» и «ОТМЕНА» и возвращает выбор посетителя

Раскодирует URI, закодированный при помощи encodeURI

Раскодирует URI, закодированный при помощи encodeURIComponent

Кодирует URI, заменяя каждое вхождение определенных символов на escape-последовательности, представляющие символ в кодировке UTF-8.

Кодирует компоненту URI, заменяя определенные символы на соответствующие UTF-8 escape-последовательности

Выполняет строку javascript-кода без привязки к конкретному объекту.

возвращает, является ли аргумент конечным числом

Проверяет, является ли аргумент NaN

преобразует строковой аргумент в число с плавающей точкой

преобразует строковой аргумент в целое число нужной системы счисления

Выводит окно с указанным текстом и полем для пользовательского ввода.

Выполняет код или функцию через указанный интервал времени

Выполняет код или функцию после указанной задержки

Глобальные свойства

Переменная, доступная внутри функции и содержащая аргументы и ссылку на саму функцию.

Отвечает за взаимодействие JavaScript с объектом документа(страницей)
Является корневым элементом DOM-дерева страницы (объект типа DOMDocument согласно спецификации DOM)

Обозначает неопределенное значение

Синтаксические конструкции

Завершает текущий цикл или конструкции switch и label и передает управление на следующий вызов

Прекращает текущую итерацию цикла и продолжает выполнение со следующей итерации

Задает цикл с проверкой условия после каждой итерации

Создать цикл, указав начальное состояние, условие и операцию обновления состояния

Перебрать свойства объекта, для каждого свойства выполнить заданный код

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

Указать идентификатор для использования в break и continue

Возвратить результат работы функции

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

Ловить все исключения, выпадающие из блока кода

Объявить переменную (или несколько) в текущей области видимости

Задает цикл, который выполняется до тех пор, пока условие верно. Условие проверяется перед каждой итерацией.

Добавить новую область видимости

Группировка javascript-вызовов внутри фигурных скобок

Операторы

object.property и object[«property»]

condition ? ifTrue : ifFalse

Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Последние комментарии
  • Nice
    1 день 21 час назад
  • Комментарий
    4 дня 4 часа назад
  • A very nice blog, I like the way you.
    5 дней 14 часов назад
  • This is a great thing, I think everyone.
    5 дней 14 часов назад
  • It is wonderful to be here with.
    5 дней 14 часов назад
  • Download and play DOM Level 0 — это.
    5 дней 18 часов назад
  • We are the children
    6 дней 19 часов назад
  • function firstUniqLiter(str) <
    1 неделя 3 часа назад
  • Великие посты! Я на самом деле.
    1 неделя 21 час назад
  • artical is really informative and.
    1 неделя 1 день назад
Последние темы на форуме

Do you want to master web development?

Card title

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

Card title

This card has supporting text below as a natural lead-in to additional content.

Card title

This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.

Card title

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

Card title

This card has supporting text below as a natural lead-in to additional content.

Card title

This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.

Илон Маск рекомендует:  Что такое код dba_replace
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL