- •Ведение
- •1 Основные теоретические сведения
- •1.1 Архитектура среды 1с:Предприятие
- •1.2 Разработка конфигурации
- •1.3 Инструменты разработки
- •1.3.1 Дерево конфигурации
- •1.3.2 Палитра свойств
- •1.3.2.1 Основные свойства
- •1.3.2.2 Группа свойств «Представление»
- •1.3.2.3 Группа свойств «Разработка»
- •1.3.3 Объектные и необъектные данные
- •1.3.4 Конструкторы
- •1.3.4 Редакторы
- •1.3.4.1 Редактор экранных форм
- •1.3.4.2 Редактор интерфейсов
- •1.3.4.3 Табличный редактор
- •1.3.4.4 Редактор программных модулей
- •1.3.5 Встроенный язык
- •1.3.6 Синтакс – помощник
- •1.3.7 Отладчик
- •1.3.8 Замер производительности
- •1.3.9 Механизм запросов
- •1.3.10 Работа с конфигурацией
- •1.3.10.1 Сохранение конфигурации
- •1.3.10.2 Обновление конфигурации
- •1.3.10.3 Сохранение конфигурации в файл
- •1.3.10.4 Создание резервной копии иб
- •1.3.10.5 Сравнение и объединение конфигураций
- •1.3.11 Работа в пользовательском режиме
- •1.3.12 Основная конфигурация и конфигурация базы данных
- •1.3.13 Средства групповой разработки
- •1.4 Объекты системы
- •1.4.1 Классификация объектов конфигурации
- •1.4.1.1 Прикладные объекты
- •1.4.1.2 Подчиненные объекты
- •1.4.2 Типы данных
- •1.4.3 Встроенный язык программирования
- •1.4.3.1 Виды модулей
- •1.4.3.2 Контекст выполнения модуля
- •1.4.3.3 Формат описания элементов языка
- •1.4.3.4 Формат программного модуля
- •1.4.3.5 Формат операторов
- •1.4.3.6 Имена переменных, процедур и функций
- •1.4.3.7 Зарезервированные слова
- •1.4.3.8 Структура программного модуля
- •1.4.3.9 Специальные символы, используемые в исходном тексте
- •1.4.3.10 Примитивные типы данных
- •1.4.3.10.2 Булево (Boolean)
- •1.4.3.10.3 Дата (Date)
- •1.4.3.10.4 Неопределено (Undefined)
- •1.4.3.10.5 Строка (String)
- •1.4.3.10.7 Число (Number)
- •1.4.3.11 Оператор присваивания
- •1.4.3.12 Выражения языка
- •1.4.3.12.1 Арифметические операции
- •1.4.3.12.2 Логические операции
- •1.4.3.12.3 Операции сравнения:
- •1.4.3.12.4 Булевы операции:
- •1.4.3.13 Оператор объявления переменной
- •1.4.3.14 Оператор условного выполнения
- •1.4.3.15 Операторы цикла
- •1.4.3.16 Оператор управления циклом
- •1.4.3.17 Оператор прерывания цикла
- •1.4.3.17 Оператор перехода
- •1.4.3.18 Оператор обработки исключительных ситуаций
- •1.4.3.19 Процедуры и функции
- •1.4.3.19.1 Описание процедур и функций
- •1.4.3.19.1.1 Процедура
- •1.4.3.19.1.2 Функция
- •1.4.3.19.1.3 Предварительное описание процедур и функций
- •1.4.3.19.2 Вызов процедур и функций. Передача параметров
- •1.4.4 Основные приемы работы с объектами в программе
- •1.4.4.1 Обращение к свойствам объектов
- •1.4.4.2 Дополнение контекста объектов и форм
- •1.4.4.3 Работа с прикладными объектами средствами встроенного языка
- •1.4.4.4 Специфические объекты
- •1.4.4.5 Взаимосвязь объектов
- •1.4.4.6 Иерархия объектов
- •1.4.5 Работа с коллекциями значений
- •1.4.5.1 Использование номеров и индексов
- •1.4.5.2 Массив
- •1.4.5.3 Структура
- •1.4.5.4 Соответствие
- •1.4.5.5 Список значений, таблица значений, дерево значений
- •1.4.5.5.1 Список значений
- •1.4.5.5.2 Таблица значений
- •1.4.5.5.3 Дерево значений
- •1.5 Варианты работы системы
- •1.5.1 Файл - серверный вариант
- •1.5.2 Клиент - серверный вариант
- •1.5.2.1 Сервер 1с:Предприятия
- •1.5.2.2 Безопасная зона
- •1.6 Постановка задачи
- •2.1.1.2 Подсистемы
- •2.1.1.3 Константы
- •2.1.1.4. Перечисления
- •2.1.2 Задание на лабораторную работу
- •2.1.3 Контрольные вопросы
- •2.2 Лабораторная работа № 2. Справочники.
- •2.2.1 Теоретические сведения
- •2.2.1.1 Создание справочника с табличной частью
- •2.2.1.2 Создание иерархического справочника
- •2.2.1.3 Создание справочника с предопределенными элементами
- •2.2.1.4 Создание подчиненного справочника
- •2.2.1.5 Создание формы для работы со связанными справочниками
- •2.2.2 Задание на лабораторную работу
- •2.2.3 Контрольные вопросы
- •2.3 Лабораторная работа № 3. Документы
- •2.3.1 Теоретические сведения
- •2.3.1.1 Проведение документа
- •2.3.1.2 Создание документа
- •2.3.1.3 Создание формы документа
- •2.3.1.4 Создание процедуры обработки события в модуле формы
- •2.3.1.5 Создание процедуры обработки события в общем модуле
- •2.3.1.6 Усовершенствование формы документа
- •2.3.1.7 Ввод документов на основании
- •2.3.2 Задание на лабораторную работу
- •2.3.3 Контрольные вопросы.
- •2.4 Лабораторная работа № 4. Регистры сведений
- •2.4.1 Теоретические сведения
- •2.4.1.1 Регистр сведений «КурсыВалют»
- •2.4.1.2 Отбор в диалоге
- •2.4.1.3 Чтение значения курса валют
- •2.4.1.4 Регистр сведений «Цены поставщиков»
- •2.4.1.5 Регистр сведений «Цены номенклатуры»
- •2.4.1.6 Создание функции РозничнаяЦена()
- •2.4.1.7 Автоматическое заполнение цены документа «ОказаниеУслуги»
- •2.4.2 Задание на лабораторную работу
- •2.4.3 Контрольные вопросы
- •2.5 Лабораторная работа № 5. Регистры накопления
- •2.5.1 Теоретические сведения
- •2.5.1.1 Проведение документа по нескольким регистрам
- •2.5.1.2 Регистр «Остатки номенклатуры»
- •2.5.1.2 Проведение документа «РасходнаяНакладная»
- •2.5.1.3 Оборотный регистр накопления «Продажи»
- •2.5.2 Задание на лабораторную работу
- •2.5.3 Контрольные вопросы
- •2.6 Лабораторная работа № 6. Журналы документов. Критерии отбора.
- •2.6.1 Теоретические сведения
- •2.6.1.1 Создание журнала документов
- •2.6.1.2 Создание критерия отбора
- •2.6.2 Задание на лабораторную работу
- •2.7.1.2 Макеты
- •2.7.1.2.1 Фиксация таблицы (шапки и боковика).
- •2.7.1.2.2 Защита от редактирования.
- •2.7.1.2.3 Перемещение по таблице.
- •2.7.1.2.4 Управление видом таблицы.
- •2.7.1.2.5 Масштабирование изображения.
- •2.7.1.3 Построение отчета
- •2.7.1.4 Печатная форма элемента справочника
- •2.7.1.5 Печатная форма списка справочника
- •2.7.1.6 Расшифровка ячейки печатной формы
- •2.7.1.7 Печатная форма документа
- •2.7.1.8 Печатная форма журнала документов
- •2.7.2 Задание на лабораторную работу
- •2.7.3 Контрольные вопросы
- •2.8 Лабораторная работа № 8. Отчеты и обработки.
- •2.8.1 Теоретические сведения
- •2.8.1.1 Создание отчета «Материалы»
- •2.8.1.2 Печать прайс-листа
- •2.8.1.3 Отчет «ЦеныПоставщиков» на заданную дату
- •2.8.2 Задание на лабораторную работу
- •2.8.3 Контрольные вопросы
- •Список литературы
1.4.5.3 Структура
Структура является универсальной коллекцией, т.е. объектом, предназначенным для работы с не хранящимися в базе данных совокупностями значений. Необходимость в ее использовании возникает, когда требуется работать с временным набором данных с чуть более сложной природой, нежели в массиве. Если элемент массива можно было характеризовать только числовым индексом и значением произвольного типа, то элемент структуры характеризуется строковым ключом и значением произвольного типа.
Чаще всего структуры применяют в ситуациях, когда необходимо узнать или использовать имена реквизитов, свойств, полей, подчиненных объектов для тех или иных объектов; узнать или использовать значения реквизитов, свойств, полей, подчиненных объектов по их именам для тех или иных объектов.
Кроме того, структуры удобно использовать для передачи параметров при работе с различными объектами.
Структуры могут создаваться конструктором «НОВЫЙ» или получаться в результате применения методов некоторых объектов. Ввод элементов в структуру можно осуществлять как посредством параметров конструктора, так и посредством метода «Вставить()».
Структура представляет собой динамический набор данных - коллекцию значений, каждый элемент которой состоит из пар (Ключ, Значение). Ключи структуры уникальны, и поэтому ими можно идентифицировать значения. Ключ может быть только строковым и должен удовлетворять требованиям, предъявляемым к именованию переменных встроенного языка. К значениям структуры можно обращаться как к свойствам объекта. При этом ключ используется как имя свойства. Для объекта доступен обход коллекции посредством оператора «Для каждого ... из ... Цикл». При обходе выбираются элементы коллекции. Структура используется обычно для хранения небольшого количества значений, каждое из которых имеет некоторое имя.
«КлючИЗначение» – объект является элементом коллекции «Структура», представляя собой пару из ключа и соответствующего ключу значения. Объект содержит значение элемента структуры и используется только для чтения.
«Ключ» – объект строкового типа, используется только для чтения. Содержит ключ элемента структуры. Он должен соответствовать требованиям, предъявляемым к именованию переменных встроенного языка. Регистр символов при обращении к ключу не имеет значения.
<Имя ключа> – объект произвольного типа, используемый только для чтения. Набор свойств содержит значения, соответствующие ключам. Имена свойств совпадают со значениями ключей.
Создание структуры чаще всего происходит посредством конструктора «Новый»:
СозданнаяСтруктура=Новый Структура;
где «СозданнаяСтруктура» – имя переменной, которая будет содержать созданный объект типа Структура.
После вышеприведенного создания в структуру можно вставлять произвольное количество элементов.
Если же мы хотим создать структуру с заранее определенными элементами – это можно сделать, например, так:
Оппонент=Новый Структура («Фамилия,Имя,Отчество,Возраст»,
«Иванов», «Иван», «Иванович», 70);
Первым параметром передается строка, в которой через запятую перечисляются ключи элементов структуры. Остальные параметры содержат значения для элементов структуры в том же порядке, в котором были перечислены ключи.
Для такой структуры впоследствии можно обращаться к любому из элементов для записи или для чтения значения. В случае необходимости к этой структуре можно еще добавлять новые элементы.
Для добавления элементов в структуру используется метод «Вставить()». Первым параметром указывается ключ, вторым – значение нового элемента.
Замечание: если в составе структуры уже был элемент с подобным ключом – то старый элемент будет замещен новым.
Например:
Оппонент=Новый Структура («Фамилия,Имя,Отчество,Возраст»,
«Иванов», «Иван», «Иванович», 70);
Оппонент.Вставить(«Обращение», «Господин»);
Оппонент.Вставить(«Возраст», 65);
Для чтения значений элементов структуры можно использовать несколько вариантов написания кода.
Для структуры «Оппонент», в составе которой есть элемент с ключом «Возраст» можно использовать явное указание значения ключа:
ТекущийВозраст=Оппонент.Возраст;
или передачу ключа в переменной:
КлючСтруктуры= «Возраст»;
ТекущийВозраст=Оппонент[КлючСтруктуры];
Также можно использовать метод «Свойство()», который получает значение элемента структуры по указанному ключу:
ТекущийВозраст=Неопределено;
Оппонент.Свойство(«Возраст»,ТекущийВозраст);
Для записи значений элементов структуры также можно использовать несколько вариантов написания кода.
Если мы хотим изменить значение возраста в структуре из вышеописанного примера – можно это сделать так:
Оппонент.Возраст=32;
или так:
Оппонент[«Возраст»]=32;
или так:
Оппонент.Вставить(«Возраст»,32);
Поскольку структура является коллекцией – перебрать элементы структуры можно посредством цикла перебора коллекции.
Например, чтобы сообщить обо всех ключах и значениях элементов структуры «СтруктураПараметров», можно сделать следующее:
Для Каждого Элемент из СтруктураПараметров Цикл
Сообщить(Элемент.Ключ+ «:»+Элемент.Значение);
КонецЦикла;
Чтобы удалить элемент структуры – необходимо знать его ключ.
Например, чтобы удалить из структуры «СтруктураПараметров» элемент с ключом «Номенклатура», достаточно сделать следующее:
СтруктураПараметров.Удалить(«Номенклатура»);
Если же нужно удалить все элементы структуры – применяется метод «Очистить()»:
СтруктураПараметров.Очистить();
Все ключи элементов структуры – уникальны. Поэтому добавление новых элементов и замена (установка) значений для «старых» элементов выполняется одним и тем же методом «Вставить()»:
Структура=Новый Структура;
// Добавить новый элемент
Структура.Вставить(«Цвет»,WebЦвета.Белый);
// Установить значение для элемента с ключом «Цвет»
Структура.Вставить(«Цвет», WebЦвета.Синий);
Результатом работы представленного примера будет структура, состоящая только из одного элемента: ключ у него – «Цвет», значение – «Синий» из системного набора значений «WebЦвета».