Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
часть 3 раздел 2.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
102.13 Кб
Скачать

23. Архитектура системы «1с:Предприятие 8.1»

Технологическая платформа «1С:Предприятие» представляет собой программную оболочку над базой данных. Используются базы на основе DBF-файлов в 7.7, собственный формат 1CD с версии 8.0 или СУБД Microsoft SQL Server на любой из этих версий. Кроме того, с версии 8.1 хранение данных возможно в PostgreSQL и IBM DB2, а с версии 8.2 добавилась и Oracle. Платформа имеет свой внутренний язык программирования, обеспечивающий, помимо доступа к данным, возможность взаимодействия с другими программами посредством OLE и DDE, в версиях 7.7, 8.0 и 8.1 — с помощью COM-соединения.

Клиентская часть платформы функционирует в среде Microsoft Windows, а начиная с версии 8.3, также в среде Linux и Mac OS X. Начиная с версии 8.1, серверная часть платформы в клиент-серверном варианте работы «1С:Предприятия» может функционировать на ОС Microsoft Windows и Linux.Существуют специальные версии среды исполнения 1С для ноутбуков и PDA, ПО создания веб-приложений, взаимодействующих с базой данных «1С:Предприятие».

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

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

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

Основы программирования 

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

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

7.7

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");

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

8.0

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

СпрДолж = Справочники["Должности"]

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

7.7

СпрСотр.Новый();

СпрСотр.Наименование = "Иванов Иван Иванович";

СпрСотр.Оклад = 5000;

СпрСотр.Записать();

8.0

НовЭл = СпрСотр.СоздатьЭлемент();

НовЭл.Наименование = "Иванов Иван Иванович";

НовЭл.Оклад = 5000;

НовЭл.Записать();

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

7.7

//например, в приказе об увольнении

СпрСотр.НайтиЭлемент(Сотрудник);

СпрСотр.НайтиПоКоду(123);

СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович");

СпрСотр.НайтиПоРеквизиту("Оклад", 5000);

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

Если СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович")=1 Тогда

........НайденныйСотр = СпрСотр.ТекущийЭлемент();

КонецЕсли;

8.0

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

НайденныйСотр = СпрСотр.НайтиПоКоду(123);

НайденныйСотр = СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович");

НайденныйСотр СпрСотр.НайтиПоРеквизиту("Оклад", 5000);

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

НайденныйСотр = СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович");

Если НайденныйСотр = Неопределено Тогда

.....//элемент не найден

КонецЕсли;

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

7.7

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

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

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

//можно проверить, помечен ли элемент на удаление

//функция возвращает 1 - если помечен, 0 - если нет

Пометка = СпрСотр.ПометкаУдаления(); //обратите внимание: это метод

8.0

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

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

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

//можно проверить, помечен ли элемент на удаление

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

Пометка = СпрСотр.ПометкаУдаления; //обратите внимание: это свойство

Если Пометка = Истина Тогда

.....//элемент помечен на удаление

КонецЕсли;

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

7.7

СпрСотр.ВыбратьЭлементы();

Пока СпрСотр.ПолучитьЭлемент() = 1 Цикл

... //действия с очередным элементом

...Сообщить("Сотрудник " + СпрСотр.Наименование);

КонецЦикла;

8.0

выборка = Справочники.Сотрудники.Выбрать();

Пока выборка.Следующий() = 1 Цикл

... //действия с очередным элементом

...Сообщить("Сотрудник " + выборка.Наименование);

КонецЦикла;

Родитель

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

7.7

СпрСотр.НайтиПоНаименованию("Работающие");

Работающие = СпрСотр.ТекущийЭлемент();

СпрСотр.ИспользоватьРодителя(Работающие);

//дальше, например, цикл по сотрудникам (см. выше)

...

8.0

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

ГруппаРаботающие = СпрСотр.НайтиПоНаименованию("Работающие");

выборка = СпрСотр.Выбрать(ГруппаРаботающие);

Пока выборка.Следующий() = 1 Цикл

... //действия с очередным элементом

...Сообщить("Сотрудник " + выборка.Наименование);

КонецЦикла;

Владелец

Перебор элементов справочника принадлежащих элементу другого справочника.

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

7.7

СпрНЛ = СоздатьОбъект("Справочник.НалоговыеЛьготы");

СпрНЛ.ИспользоватьВладельца(Сотрудник);

//дальше, например, цикл по льготам этого сотрудника (см. выше)

...

8.0

выборка = Справочники.НалоговыеЛьготы.Выбрать( ,Сотрудник);

Пока выборка.Следующий() = 1 Цикл

... //действия с очередным элементом

...Сообщить("льгота " + выборка.Наименование);

КонецЦикла;

Периодические реквизиты

Чтение и запись периодических реквизитов.

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

7.7

//так мы узнаем, какая была у сотрудника

//категория на определенную дату

Катег = СпрСотр.Категория.Получить(НекаяДата);

//так мы установим сотруднику категорию

//на определенную дату

СпрСотр.Категория.Установить(НекаяДата, НоваяКатегория);

//можно установить дату выборки периодических

//реквизитов для всего справочника

СпрСотр.ИспользоватьДату(НекаяДата);

//тогда ниже уже нельзя использовать Установить и Получить

//доступ к периодическим реквизитам становится

//такой же, как к обычным реквизитам

Катег = СпрСотр.Категория;

СпрСотр.Оклад = 6000;