
- •Корпоративные информационные системы
- •Введение
- •Кис 1с: Предприятие 7.7
- •Компонентная структура
- •Понятие конфигурации системы
- •Объекты метаданных компоненты “Оперативный учет”
- •Типы данных
- •Свойства объектов и реквизитов
- •Форма объекта метаданных
- •Пользовательский интерфейс
- •Набор прав пользователя
- •Справочники
- •Формы справочника
- •Элементы управления справочников
- •Документы
- •Форма документа
- •Определение свойств реквизитов документа
- •Модули документа
- •Журналы документов
- •Проведение документов
- •Регистры
- •Создание отчета
- •Запросы
- •Элементы встроенного языка 1с: Предприятие Понятие программного модуля (пм)
- •Виды модулей
- •Формат программного модуля
- •Структура программного модуля
- •Объявление переменных
- •Управляющие операторы Условный оператор
- •Оператор цикла Для
- •Оператор цикла Пока
- •Агрегатные типы данных
- •Позиционирование объекта на нужном элементе данных
- •Методы справочников
- •Методы документов
- •Модуль формы документа
- •Модуль документа
- •Создание модуля отчета
- •Создание запросов
- •Операторы языка запросов
- •Методы запросов
- •Создание таблиц значений в модулях
- •Методы таблиц
- •Варианты заданий для самостоятельной работы
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Оглавление
- •Библиографический список
- •Корпоративные информационные системы
- •620002, Екатеринбург, Мира, 19
- •620002, Екатеринбург, Мира, 19
Модуль документа
Модуль документа содержит процедуру проведения документа. При проведении документа информация, содержащаяся в документе, заносится в базу данных (справочники или регистры), т. е. с помощью документов происходит обновление базы данных.
Пример:
Процедура ОбработкаПроведения()
СпрСотр=СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.НайтиЭлемент(Сотрудник);
СпрСотр.Отдел=ОтделПосле;
СпрСотр.Записать();
КонецПроцедуры
Пример демонстрирует, как происходит изменение информации в справочнике Сотрудники при проведении документа Перемещение (рис. 27).
В справочнике Сотрудники с помощью метода НайтиЭлемент выполняется поиск конкретного элемента, определяемого значением реквизита документа Сотрудник. Затем в реквизит справочника Отдел заносится значение реквизита документа ОтделПосле. Метод справочника Записать фиксирует изменение данных в справочнике.
Рис. 27. Форма документа Перемещение
В модуле документа, содержащего табличную часть, ввод данных в механизмы хранения (справочник или регистр) выполняется в цикле.
Пример:
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Регистр.Остатки.Товар = Товар;
Регистр.Остатки.Количество = Количество;
Регистр.Остатки.ДвижениеПриходВыполнить();
КонецЦикла;
КонецПроцедуры
Пример демонстрирует, как происходит изменение информации в регистре Остатки при проведении документа Приход товара (рис. 28).
Рис. 28. Форма документа “Приход товара”
Данные в регистр Остатки заносятся в цикле. Значения поля Товар документа Приход товара заносятся в измерение регистра Товар, а значения поля Количество – в ресурс регистра Количество.
Метод регистра ДвижениеПриходВыполнить() записывает данные в регистр остатков со знаком плюс.
В модулях документов при записи данных в регистры могут использоваться также методы: ДвижениеРасходВыполнить() – записывает данные в регистр остатков со знаком минус, ДвижениеВыполнить() – записывает данные в оборотный регистр.
Создание модуля отчета
Модуль отчета содержит процедуру Сформировать, связанную с одноименной кнопкой в диалоге отчета. При создании отчета (подведении итогов) данные могут выбираться из справочников, из документов или из регистров. Удобнее всего выбирать данные с помощью запросов, так как запросы позволяют использовать вычислительные функции. Поэтому, как правило, при создании отчетов пользуются следующим алгоритмом.
Создание запроса.
Присвоение результатов выборки и вычислительных функций временным переменным.
Создание шаблона таблицы с использованием имен временных переменных.
Вывод таблицы на экран или печать.
Создание запросов
Запросы в компоненте “Оперативный учет” могут создаваться к документам, справочникам и регистрам. Запрос в системе 1С: Предприятие относится к агрегатному типу данных и создается только программно. При работе с запросами используется следующая последовательность действий:
создается новый объект с помощью функции СоздатьОбъект (в качестве параметра функции используется ключевое слово Запрос);
создается текст запроса с использованием языка запросов;
текст описания запроса передается методу Выполнить в качестве параметра для создания временного набора данных (выборки), который будет использоваться в отчете;
формируется таблица вывода отчета.
Ниже представлен пример отчета, который выводит список сотрудников, работающих на должности, определяемой переменной ВыбДолж (тип – Справочник.Должности).
Отчет формируется при выполнении процедуры Сформировать, которая запускается по нажатии одноименной кнопки в форме отчета (рис. 29).
Рис. 29. Форма отчета (диалог)
Пример:
Процедура Сформировать()
Запрос1 = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Сотр= Справочник.Сотрудники.Наименование;
|Долж = Справочник.Сотрудники.Должность;
|Группировка Сотр;
|Условие (Долж = ВыбДолж);
|Функция Колво = Счётчик();
|";
Запрос.Выполнить(ТекстЗапроса);
Рассмотрим на данном примере порядок работы с запросом.
Создается объект Запрос – переменной с произвольным именем (в примере используется имя Запрос1) присваивается ссылка на объект.
Формируется текст запроса – переменной с произвольным именем (в примере используется имя ТекстЗапроса) присваивается текстовая константа, каждая строка которой начинается с вертикальной черты. В данном примере текст запроса содержит следующие типы операторов языка запросов:
объявление внутренней переменной (объявляются переменные Сотр и Долж);
группировка – группируются записи справочника Сотрудники по реквизиту Сотрудник для возможности дальнейшего вывода списка сотрудников, работающих на выбранной должности;
условие – выбираются записи из справочника Сотрудники, должности которых соответствуют значению переменной ВыбДолж;
функция – вычисляется количество записей, соответствующих значению выбранной должности (в операторе Функция используется произвольное имя Колво).
Запрос запускается на выполнение с помощью метода Выполнить(ТекстЗапроса).
Результаты выполнения запроса сохраняются в тех переменных, которые были задействованы в тексте запроса (Сотр и Долж).
Для вывода результатов выборки создается объект Таблица и организуется циклическая обработка сформированной выборки с целью получения требуемого отчета.
Продолжение процедуры Сформировать:
Таб = CоздатьОбъект("Таблица");
Таб.ВывестиСекцию("Все<");
Пока Запрос.Группировка("Сотр")=1 Цикл
К = Запрос.Сотр;
К1=Запрос.Код;
Таб.ВывестиСекцию("Сотр");
КонецЦикла;
Таб.ВывестиСекцию("Все>");
Таб.Показать();
КонецПроцедуры
Ячейки таблицы могут содержать данные трех типов (тип выбирается в окне свойств ячейки):
текст – ячейка содержит только текстовые данные;
выражение – ячейка содержит имя переменной;
шаблон – ячейка содержит текстовые данные и имя переменной, заключенное в квадратные скобки (рис. 30).
Рис. 30. Окно свойств ячейки таблицы вывода
Если имена переменных берутся из текста запроса, то ячейки заполняются с использованием синтаксиса: Запрос.ИмяПеременной. (рис. 31).
Рис. 31. Таблица вывода результатов запроса
Можно добавить в процедуру операторы присваивания временным переменным с произвольными именами (в нашем примере К и К1) результатов выполнения запроса:
К = Запрос.Сотр; К1=Запрос.Код
В этом случае ячейки таблицы должны содержать имена временных переменных (рис. 32).
Рис. 32. Таблица вывода результатов запроса
Отчеты, соответствующие таблицам, представленным на рис. 31 и рис. 32, будут выглядеть одинаково (рис. 33).
Рис. 33. Вид готового отчета