Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 С Предприятие (варианты сам работы).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.25 Mб
Скачать

Модуль документа

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

Пример:

Процедура ОбработкаПроведения()

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

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

СпрСотр.Отдел=ОтделПосле;

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

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

Пример демонстрирует, как происходит изменение информации в справочнике Сотрудники при проведении документа Перемещение (рис. 27).

В справочнике Сотрудники с помощью метода НайтиЭлемент выполняется поиск конкретного элемента, определяемого значением реквизита документа Сотрудник. Затем в реквизит справочника Отдел заносится значение реквизита документа ОтделПосле. Метод справочника Записать фиксирует изменение данных в справочнике.

Рис. 27. Форма документа Перемещение

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

Пример:

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл

Регистр.Остатки.Товар = Товар;

Регистр.Остатки.Количество = Количество;

Регистр.Остатки.ДвижениеПриходВыполнить();

КонецЦикла;

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

Пример демонстрирует, как происходит изменение информации в регистре Остатки при проведении документа Приход товара (рис. 28).

Рис. 28. Форма документа “Приход товара”

Данные в регистр Остатки заносятся в цикле. Значения поля Товар документа Приход товара заносятся в измерение регистра Товар, а значения поля Количество – в ресурс регистра Количество.

Метод регистра ДвижениеПриходВыполнить() записывает данные в регистр остатков со знаком плюс.

В модулях документов при записи данных в регистры могут использоваться также методы: ДвижениеРасходВыполнить() – записывает данные в регистр остатков со знаком минус, ДвижениеВыполнить() – записывает данные в оборотный регистр.

Создание модуля отчета

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

  1. Создание запроса.

  2. Присвоение результатов выборки и вычислительных функций временным переменным.

  3. Создание шаблона таблицы с использованием имен временных переменных.

  4. Вывод таблицы на экран или печать.

Создание запросов

Запросы в компоненте “Оперативный учет” могут создаваться к документам, справочникам и регистрам. Запрос в системе 1С: Предприятие относится к агрегатному типу данных и создается только программно. При работе с запросами используется следующая последовательность действий:

  • создается новый объект с помощью функции СоздатьОбъект (в качестве параметра функции используется ключевое слово Запрос);

  • создается текст запроса с использованием языка запросов;

  • текст описания запроса передается методу Выполнить в качестве параметра для создания временного набора данных (выборки), который будет использоваться в отчете;

  • формируется таблица вывода отчета.

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

Отчет формируется при выполнении процедуры Сформировать, которая запускается по нажатии одноименной кнопки в форме отчета (рис. 29).

Рис. 29. Форма отчета (диалог)

Пример:

Процедура Сформировать()

Запрос1 = СоздатьОбъект("Запрос");

ТекстЗапроса = "

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

|Долж = Справочник.Сотрудники.Должность;

|Группировка Сотр;

|Условие (Долж = ВыбДолж);

|Функция Колво = Счётчик();

|";

Запрос.Выполнить(ТекстЗапроса);

Рассмотрим на данном примере порядок работы с запросом.

  1. Создается объект Запрос – переменной с произвольным именем (в примере используется имя Запрос1) присваивается ссылка на объект.

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

  • объявление внутренней переменной (объявляются переменные Сотр и Долж);

  • группировка – группируются записи справочника Сотрудники по реквизиту Сотрудник для возможности дальнейшего вывода списка сотрудников, работающих на выбранной должности;

  • условие – выбираются записи из справочника Сотрудники, должности которых соответствуют значению переменной ВыбДолж;

  • функция – вычисляется количество записей, соответствующих значению выбранной должности (в операторе Функция используется произвольное имя Колво).

  1. Запрос запускается на выполнение с помощью метода Выполнить(ТекстЗапроса).

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

  3. Для вывода результатов выборки создается объект Таблица и организуется циклическая обработка сформированной выборки с целью получения требуемого отчета.

Продолжение процедуры Сформировать:

Таб = CоздатьОбъект("Таблица");

Таб.ВывестиСекцию("Все<");

Пока Запрос.Группировка("Сотр")=1 Цикл

К = Запрос.Сотр;

К1=Запрос.Код;

Таб.ВывестиСекцию("Сотр");

КонецЦикла;

Таб.ВывестиСекцию("Все>");

Таб.Показать();

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

  1. Ячейки таблицы могут содержать данные трех типов (тип выбирается в окне свойств ячейки):

  • текст – ячейка содержит только текстовые данные;

  • выражение – ячейка содержит имя переменной;

  • шаблон – ячейка содержит текстовые данные и имя переменной, заключенное в квадратные скобки (рис. 30).

Рис. 30. Окно свойств ячейки таблицы вывода

Если имена переменных берутся из текста запроса, то ячейки заполняются с использованием синтаксиса: Запрос.ИмяПеременной. (рис. 31).

Рис. 31. Таблица вывода результатов запроса

Можно добавить в процедуру операторы присваивания временным переменным с произвольными именами (в нашем примере К и К1) результатов выполнения запроса:

К = Запрос.Сотр; К1=Запрос.Код

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

Рис. 32. Таблица вывода результатов запроса

Отчеты, соответствующие таблицам, представленным на рис. 31 и рис. 32, будут выглядеть одинаково (рис. 33).

Рис. 33. Вид готового отчета