Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба №3кис Новиков.doc
Скачиваний:
19
Добавлен:
01.06.2015
Размер:
3.5 Mб
Скачать

Министерство образования и науки РФ

Федеральное государственное автономное образовательное учреждение

Высшего профессионального образования

Инженерно-технологическая академия ЮФУ в г.Таганроге

Институт управления в экономических, экологических и социальных системах

ОТЧЁТ

По лабораторной работе №3

КИС

На тему:

«Документы, регистры, накопления 1с:Предприятие 8.2»

Выполнил:ст.гр.УЭбо 4-6

Новиков Д.С.

Проверила:

Бричеева Н. Н.

Таганрог 2014

Лабораторная работа

Документы, регистры, накопления 1С:Предприятие 8.2

Цель работы:

  • научиться создавать документы и настраивать проведение документов по регистрам накопления 1С:Предприятие 8.2 и получить начальные навыки по работе с ними;

  • научиться разрабатывать печатные формы документов, работать с журналами документов системы 1С:Предприятие 8.

  1. Практические задания

Упражнение 1. Знакомство с документами и регистрами накопления

      1. Задание 1. Создание нового документа

Ранее мы собирались создать документ ПоступлениеМатериалов, который планировалось использовать для отражения в учетной системе факта поступления материалов.

Добавим новый документ в ветви дерева конфигурации Документы. Откроется окно редактирования объекта (рис. 2.1).

Рисунок 2.1 - Вкладка Основные окна редактирования свойств документа

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

Таблица 2.1 -Реквизиты документа ПоступлениеМатериалов

Имя реквизита

Тип

Параметры типа

Контрагент

СправочникСсылка.Контрагенты

ПредставительКонтрагента

СправочникСсылка.ПредставителиКонтрагентов

ОтветственныйСотрудник

СправочникСсылка.Сотрудники

На рис. 2.2 вы можете видеть вкладку Данные с заполненными реквизитами.

Рисунок 2.2 - Вкладка Данные окна редактирования свойств документа

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

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

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

После того, как табличная часть добавлена, мы можем добавлять ее реквизиты, используя кнопку Добавить реквизит . При добавлении реквизитов табличной части их параметры настраиваются аналогично параметрам обычных реквизитов документа. В таблице 2.2 вы можете видеть список реквизитов табличной части документа. А на рис. 2.3 вы можете видеть список реквизитов табличной части Материалы и окно настройки свойств одного из них.

Таблица 2.2 - Реквизиты табличной части Материалы документа Поступление Материалов

Имя реквизита

Тип

Параметры типа

Номенклатура

СправочникСсылка.Номенклатура

Цена

Число

Длина 10, точность 2

Количество

Число

Длина 10, точность 3

Сумма

Число

Длина 10, точность 2

Рисунок 2.3 - Реквизиты табличной части Материалы

Перейдем на вкладку Формы окна настройки объекта. Создадим форму документа, нажав кнопку Открыть в поле Документа группы параметров Основные формы. Появится окно конструктора форм (рис. 2.4).

Здесь мы оставим всѐ по умолчанию и нажмем на кнопку Далее и попадем в следующее окно настройки параметров формы документа, рис. 2.5.

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

Обратите внимание на то, что документ имеет реквизиты по умолчанию Номер и Дата. Нажмем кнопку Готово - будет создана форма и открыт редактор форм, рис. 2.6. Понятно, что форма требует доработки.

Есть ли у нашей формы еще какие-нибудь проблемы, которые нужно решить перед началом ее практического использования?

Рисунок 2.4 - Создание формы документа

Рисунок 2.5 - Выбор элемента управления

Рисунок 2.6 - Форма документа после работы редактора форм

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

Поработав с формой в режиме 1С:Предприятие, понимаем, что ей нужны еще некоторые улучшения.

Перечислим доработки, которые мы планируем выполнить:

  1. Автоматическое дополнение поля СтоимостьМатериалов на основании данных, введенных в табличное поле.

  2. Автоматическое заполнение поля Сумма для каждой строки табличного поля.

  3. Ограничение списка представителей контрагентов (поле ПредставительКонтрагента) тем контрагентом, который выбран в поле Контрагент.

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

Проверил поведение формы документа после указанной настройки. Можно отметить одну проблему при использовании полей Контрагент и ПредставительКонтрагента. Опишем эту проблему. Предположим, у нас есть контрагент А, которому соответствуют представители кА1 и кА2. Так же имеется контрагент В, которому соответствуют представители кВ1 и кВ2. В поле Контрагент мы выбрали контрагента А. После этого в поле ПредставительКонтрагента мы можем выбирать лишь из представителей кА1 и кА2. Выберем в поле ПредставительКонтрагента представителя кА1. Если теперь в поле Контрагент выбрать контрагента В, то в поле представителя останется все тот же кА1. В нашей форме нет механизма, который отслеживал бы правильность заполнения поля ПредставительКонтрагента при изменении содержимого поля Контрагент.

Рисунок 2.6 - Настройка связи

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

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

Процедура КонтрагентПриИзменении(Элемент)

Если Не Объект.ПредставительКонтрагента.Пустая() Тогда

Если Объект.Контрагент<>Объект.ПредставительКонтрагента.Владелец Тогда

Объект.ПредставительКонтрагента = Справочники.ПредставителиКонтрагентов.ПустаяСсылка();

КонецЕсли;

КонецЕсли;

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

В этом коде есть некоторые команды, новые для вас. Рассмотрим их. Управляющая конструкция Если - Тогда - КонецЕсли позволяет управлять ходом программы. На обычном языке вышеприведенный код можно описать так:

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

Если логическое выражение, которое вычисляется после ключевого слова Если, истинно, выполняется код, расположенный между Тогда и КонецЕсли. В нашем случае этот код выполнится только в том случае, если в поле ПредставительКонтрагента что-то есть.

Функция Пустая() возвращает значение Истина, если ссылка (в нашем случае - ссылка на элемент справочника) не указывает ни на какой объект, то есть ссылка пустая. Если ссылка не пустая - функция возвращает Ложь. Результат вычисления логического выражения Не Ложь получается Истина и начинается выполнение кода. Если же ссылка пустая, ничего модифицировать не нужно и выполнение программы прекращается.

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

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

Для того, чтобы система автоматически рассчитывала поле Сумма для каждой номенклатурной позиции, нам понадобится написать обработчик событий изменений полей таблицы. А именно - при изменении поля Цена или Количество в поле Сумма должен подставляться результат умножения цены и количества материалов.

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

&НаКлиенте

Процедура РассчитатьСумму()

ТекущаяСтрока=Элементы.Материалы.ТекущиеДанные;

ТекущаяСтрока.Сумма=ТекущаяСтрока.Цена* ТекущаяСтрока.Количество;

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

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

Создадал два обработчика событий для полей ввода Цена и Количество. Они будут выглядеть так:

&НаКлиенте

Процедура МатериалыЦенаПриИзменении(Элемент)

РассчитатьСумму();

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

&НаКлиенте

Процедура МатериалыКоличествоПриИзменении(Элемент)

РассчитатьСумму();

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

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

У табличных частей есть метод Итог, который возвращает сумму всех строк в колонке, указанной при его вызове. В нашем случае это - колонка Сумма. Этот реквизит – ИтогСумма – нужно перетащить на вкладку Элементы. Он будет отображаться на форме, изменяясь при изменениях суммы в строках табличной части, рис. 2.7. Изменим имя реквизита формы МатериалыИтогСумма на СтоимостьМатериалов, и посмотрим, как в в режиме 1С:Предприятие будет выглядеть форма, и какие возможности по заполнению мы добавили, рис.2.8

Рисунок 2.7 - Настройка связи

Рисунок 2.8 - Форма после модификации

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

Рисунок 2.9 - Создание нового регистра накопления