Практикум по курсу «Автоматизация бухгалтерского учета» Задачник по курсу icon

Практикум по курсу «Автоматизация бухгалтерского учета» Задачник по курсу


Смотрите также:
Практикум по курсу «Автоматизация бухгалтерского учета» Задачник по курсу...
Программа учебной дисциплины «Автоматизация бухгалтерского учета» 351400 «Прикладная информатика...
Тематический план занятий группы по курсу: “ Бухгалтерский учёт и налогообложение в рф” Тема...
Автономная некоммерческая организация...
Организация бухгалтерского учета в коммерческих организациях методические указания к курсовой...
Методические рекомендации и указания по выполнению курсовых работ по курсу «Бухгалтерское дело»...
Практикум по курсу Москва 200 4...
Программа повышения квалификации «основы бухгалтерского и налогового учета в коммерческом...
Учебно-методическое пособие можно рассматривать как задачник по учебным дисциплинам...
Методические указания по курсу «Теория бухгалтерского учета» для специальности 080502 "Экономика...
Практикум по курсу москва 2000 удк-34 (091)...
Программа курса Теория бухгалтерского учета Сущность и содержание бухгалтерского учета...



Загрузка...
скачать
Практикум по курсу «Автоматизация бухгалтерского учета»


Задачник по курсу.


Глава 3. Программирование в среде «1С:Предприятие» для реализации задач бухгалтерского учета.


С помощью платформы «1С:Предприятие» можно создать собственные конфигурации, в которых реализовать все необходимые возможности учета для организации.


Создание собственной конфигурации производится по следующим шагам:

  1. Запуск системы 1С:Предприятие.

  2. На этапе выбора конфигурации нажать кнопку «Добавить».

  3. Указать, что будет новая база данных без использования шаблона, указать ее местоположение и имя.

  4. Далее можно запустить систему в режиме «1С:Предприятие» (режим работы с данными).


Настройка и разработка системы производится в режиме Конфигуратора. Собственно доступ к элементам конфигурации получаем через меню «Конфигурация»- «Открыть конфигурацию».



Рис.1. Окно конфигурации системы «1С:Предприятие»


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

Каждый справочник и документ характеризуется определенным набором реквизитов, которые отражаются на вкладке «Данные». Повторяющиеся реквизиты объединяются в табличные части. Например, в документе «Чек» реквизитами являются клиент, наличие дисконтной карты, а повторяющиеся данные объединены в табличную часть с указанием товара, цены и количества, которые клиентом приобретаются. Естественно, что товаров в одном чеке может быть несколько.

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




Рис.2. Окно создания реквизитов справочника.


Платформа сама предоставит формы по умолчанию, с помощью которых можно будет вводить и просматривать всю информацию. Для введения новых возможностей на формах требуется создать собственные. Это делается с помощью инструментов, расположенных на вкладке «Формы» настройки справочника, документа или другого элемента конфигурации.


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




Рис.3. Назначение события «Нажатие» на кнопку.


При редактировании форм внизу окна будет расположена панель инструментов, которая позволяет добавлять на форму новые элементы управления:




Рис.4. Панель инструментов для добавления новых элементов управления.


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


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


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


^ Работа со справочниками


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


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


Элементы справочника можно группировать по каким-либо признакам. Тогда справочник будет иерархическим. Справочники могут быть подчинены друг другу. Тогда говорят о наличии владельцев справочника. Это позволяет моделировать отношение «один ко многим».


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

Основными справочниками в этой системе будут:

  • Отделы – его можно сделать иерархическим, указывая в качестве групп элементов управления, а в качестве самих элементов – отделы.

  • Сотрудники – этот справочник может быть подчинен справочнику Отделы, демонстрируя, что каждый сотрудник работает в одном из отделов предприятия. Реквизитами сотрудника могут стать Должность, Оклад, ДатаРождения, НомерПаспорта, флаг увольнения. Табличная часть может содержать список детей (часто нужен для осуществления вычетов при начислении подоходного налога сотрудников).


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




Рис.5. Форма обработки «Работа с сотрудниками»


Приведем процедуры-обработчики нажатия всех кнопок формы.


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


Процедура ДобавитьСотрудника(Элемент)

// если не заполнено поле отдела или выбрано управление,

// выводим сообщение об обязательном выборе отдела

Если (Отдел.ЭтоГруппа=Истина) или (Отдел.Пустая()) Тогда

Сообщить("Выберите отдел");

Возврат;

КонецЕсли;

// обязательными также являются поля Сотрудник и Должность

// функция СокрЛП уничтожает пробелы в строке

Если (СокрЛП(Сотрудник)="") или (СокрЛП(Должность)="") Тогда

Сообщить("Не все данные заполнены");

Возврат;

КонецЕсли;


// создание нового элемента справочника Сотрудники

НовыйСотрудник=Справочники["Сотрудники"].СоздатьЭлемент();

// к справочнику можно получить доступ : Справочники.Сотрудники


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

НовыйСотрудник.Владелец=Отдел.Ссылка;

НовыйСотрудник.Наименование=Сотрудник;

НовыйСотрудник.Должность=Должность;

// фиксация новых данных в базе

НовыйСотрудник.Записать();

// вызов формы для ввода остальных реквизитов нового сотрудника

Форма=НовыйСотрудник.ПолучитьФорму("ФормаЭлемента");

Форма.ОткрытьМодально();

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


  1. Найти сотрудника по ФИО. Требуется заполнить только поле Сотрудник.


Процедура НайтиСотрудника(Элемент)

// поиск по ФИО – это поиск по Наименованию. Его осуществляет специальная функция

СотрудникСсылка=Справочники.Сотрудники.НайтиПоНаименованию(Сотрудник);

// если требуемого элемента не нашлось, возвращается пустая ссылка

Если СотрудникСсылка.Пустая() Тогда

Сообщить("Такого сотрудника нет");

Возврат;

КонецЕсли;

// поиск завершился успешно – вывод данных о найденном сотруднике

// в окно служебных сообщений

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

Сообщить("Должность - "+СотрудникСсылка.Должность);

Сообщить("Оклад - "+СотрудникСсылка.Оклад);

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

  1. Найти по должности. Найти сотрудника, занимающего определенную должность можно с помощью функции НайтиПоРеквизиту, в параметрах которой указать имя реквизита и значение поиска. Функция вернет ссылку на первый встреченный элемент справочника, удовлетворяющий условию поиска. Далее поиск не продолжается.


Процедура НайтиДолжность(Элемент)

СотрудникСсылка=Справочники.Сотрудники.НайтиПоРеквизиту("Должность",Должность);

Если СотрудникСсылка.Пустая() Тогда

Сообщить("Сотрудника с такой должностью не найдено");

Возврат;

КонецЕсли;

// поиск завершился успешно – вывод данных о найденном сотруднике

// в окно служебных сообщений

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

Сообщить("Должность - "+СотрудникСсылка.Должность);

Сообщить("Оклад - "+СотрудникСсылка.Оклад);

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


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


Процедура ИзменитьДолжность(Элемент)

// новая должность должна быть задана

Если СокрЛП(Должность)="" Тогда

Сообщить("Введите должность");

Возврат;

КонецЕсли;

// найти сотрудника, которому меняется должность

СотрудникСсылка=Справочники.Сотрудники.НайтиПоНаименованию(Сотрудник);

Если СотрудникСсылка.Пустая() Тогда

Сообщить("Такого сотрудника нет");

Возврат;

КонецЕсли;

// если сотрудник будет найден, получение доступ для редактирования

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

// редактирование

СотрудникОбъект.Должность=Должность;

// запись изменения в базу данных

СотрудникОбъект.Записать();

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



  1. Удалить данные о сотруднике. Удаление элемента справочника осуществляется также с помощью объекта, а не ссылки. Например, удаление данных о конкретном сотруднике производятся следующим образом:


Процедура УдалитьСотрудника(Элемент)

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

СотрудникСсылка=Справочники.Сотрудники.НайтиПоНаименованию(Сотрудник);

Если СотрудникСсылка.Пустая() Тогда

Сообщить("Такого сотрудника нет");

Возврат;

КонецЕсли;

// получение его объекта

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

// удаление

СотрудникОбъект.Удалить();

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


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

Например, цикл перебора всего справочника Сотрудники выглядит так:

// выбираются все элементы справочника сотрудников

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

// цикл продолжается, пока выборка указывает на существующий элемент

// когда элементы закончатся, функция Следующий() вернет ложное значение

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

// печать в окно служебных сообщений ФИО сотрудника

Сообщить("ФИО: "+Выборка.Наименование);

КонецЦикла;


Пусть требуется получить информацию только о сотрудниках данного отдела. Отдел является владельцем элементов справочника Сотрудники. Поэтому при создании выборки следует указать выбранный отдел:


// проверка выбора отдела

Если (Отдел.ЭтоГруппа=Истина) или (Отдел.Пустая()) Тогда

Сообщить("Выберите отдел");

Возврат;

КонецЕсли;


// владелец в выборке задается с помощью второго параметра

// родитель(группа) – с помощью первого параметра

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

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

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

Сообщить("ФИО: "+Выборка.Наименование);

КонецЦикла;


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


// проверка того, что должность введена

Если ПустаяСтрока(СокрЛП(Должность)) Тогда

Сообщить("Введите должность");

Возврат;

КонецЕсли;


// создание отбора – указывается имя реквизита и его значение

Отбор = Новый Структура;

Отбор.Вставить("Должность",Должность);


// отбор устанавливается в третьем параметре

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

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

Сообщить("ФИО: "+Выборка.Наименование);

КонецЦикла;


  1. Работа с табличной частью элемента справочника. Табличная часть доступна как отдельный реквизит. При получении доступа к строке табличной части ее можно рассматривать как ассоциативный массив по именам реквизитов табличной части.


Например, добавление информации о еще одном ребенке в табличную часть сотрудника осуществляется так:


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

СотрудникСсылка=Справочники.Сотрудники.НайтиПоНаименованию(Сотрудник);

Если СотрудникСсылка.Пустая() Тогда

Сообщить("Такого сотрудника нет");

Возврат;

КонецЕсли;

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

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


// добавление новой строки в табличную часть Дети

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

// задание реквизитов табличной части

Строка["Имя"]=Ребенок;

Строка["ДатаРождения"]=ДатаРождения;

// запись в базу данных

СотрудникОбъект.Записать();


Перебор строк табличной части удобно производить с помощью цикла «Для каждого»:


// поиск элемента справочника, чью табличную часть нужно распечатать

СотрудникСсылка=Справочники.Сотрудники.НайтиПоНаименованию(Сотрудник);

Если СотрудникСсылка.Пустая() Тогда

Сообщить("Такого сотрудника нет");

Возврат;

КонецЕсли;


// перебор строк табличной части

Для каждого Строка из СотрудникСсылка.Дети Цикл

Сообщить(Строка["Имя"]);

КонецЦикла;


^ Домашнее задание


Реализовать хранение информации о товарах некоторого магазина. Создать справочник Поставщики, подчиненный ему справочник Товары, справочник Клиенты, который группируется по типам скидки (без скидки, 3%, 5%, 10% и пр.).


Создать специальные обработки, которые позволяют:

  1. Добавить новый товар.

  2. Изменить принадлежность клиента группе (перевод на другой вид скидки).

  3. Вывод информации обо всех товарах заданного поставщика.

  4. Вывод информации обо всех клиентах, имеющих заданный тип скидки.

  5. Вывести весь каталог товаров.

  6. Удалить поставщика, с которым больше не сотрудничает наш магазин.

  7. Изменить цены на товары некоторого поставщика на определенный процент.


Работа с документами


Документы, также как и справочники, предназначены для хранения данных. Однако в отличие от справочников документы отражают операции, которые происходят с объектами учета – покупка клиентами товаров, начисление заработной платы сотрудникам и пр. Все операции происходят на конкретную дату. Поэтому любой документ уже имеет реквизиты Дата и Номер, которые идентифицируют документ в системе.


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


Приведем пример создания из специальной обработки документа «Начисление заработной платы», который генерирует для выбранного отдела (реквизит документа) таблицу начислений его сотрудников (ФИО сотрудника, Оклад, Налог, К выдаче). Пока для упрощения ситуации будем считать, что размер налога составляет 13% (стандартные вычеты пока применять не будем). Следует также отслеживать, что каждый месяц заработная плата начисляется только один раз, т.е. документ не должен создаваться, если в этом месяце заработная плата уже начислялась.


На форме обработки выбран отдел и введена дата генерации документа. Процедура создания документа выглядит так:


Процедура НачислитьЗП(Кнопка)

// если не была введена дата, выводится сообщение об ошибке

Если Год(Дата)=1 Тогда

Сообщить("Введите корректную дату");

Возврат;

КонецЕсли;

// если не выбран отдел, выводится сообщение об ошибке

Если Отдел.Пустая() Тогда

Сообщить("Выберите отдел для начисления зар.платы");

Возврат;

КонецЕсли;

// поиск документов начисления заработной платы для выбранного отдела

// в месяце введнной даты

Отбор=Новый Структура;

Отбор.Вставить("Отдел",Отдел);

// выборка документов получается с помощью указания периода и отбора

ДокВыборка=Документы.НачислениеЗарПлаты.Выбрать

(НачалоМесяца(Дата),КонецМесяца(Дата),Отбор);

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

Если ДокВыборка.Следующий() Тогда

Сообщить("В этом месяце для сотрудников этого отдела

уже начислялась заработная плата");

Отдел=0; // сброс значения отдела

Возврат;

КонецЕсли;

// если начисление заработной платы в этом месяце происходит впервые,

// генерируется новый документ

Док=Документы.НачислениеЗарПлаты.СоздатьДокумент();

// номер задается автоматически, остальные реквизиты заполняются

Док.Дата=Дата;

Док.Отдел=Отдел.Ссылка;

//создание строк табличной части документа – заполнение данными

// сотрудников выбранного отдела

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

Пока Выборка.Следующий() цикл

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

// табличной части документа – данные для заполнения

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

Строка=Док.Сотрудники.Добавить();

Строка["ФИО"]=Выборка.Ссылка;

Строка["Оклад"]=Выборка.Оклад;

Строка["Налог"]=Выборка.Оклад*0.13;

Строка["КВыдаче"]=Выборка.Оклад*0.87;

КонецЦикла;

// фиксируются изменения в базу данных

Док.Записать();


// форма документа показывается пользователю для последующей работы с ним

Форма=Док.ПолучитьФорму("ФормаДокумента");

Форма.ОткрытьМодально();

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


При просмотре документа было бы удобно показать общую сумму, начисленную по документу. Эта сумма может являться реквизитом документа, а может вычисляться только для просмотра. Во втором случае требуется создать специальный элемент управления формы документа, который будет отображать эту сумму – например, специальная Надпись (метка). Доступ к этой надписи можно получить через коллекцию ЭлементыФормы. Далее можно изменять любые ее свойства. Например, для формирования этой надписи создадим процедуру РасчетИтого(). Эта процедура изменяет Заголовок (текст) надписи на итоговое значение столбца «КВыдаче», полученное из таблицы сотрудников:


Процедура РасчетИтого()

ЭлементыФормы.Надпись2.Заголовок=""+Сотрудники.Итог("КВыдаче")+" рублей";

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




Рис.6. Форма документа «Начисление заработной платы»


Вызвать эту процедуру можно как обработчик открытия формы – событие «ПриОткрытии», а также в случаях, когда вручную меняются данные табличной части. Во втором случае придется производить перерасчет измененной строки. Делается это с помощью обработчик события изменения полей таблицы. Они могут выглядеть так:


Процедура ИзменитьСтроку(Элемент)

// получение доступа к выбранной строке таблицы сотрудников – той строке,

// в которой происходят изменения

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

// изменения значений в столбцах таблицы для этой строки – новый расчет

// налога и заработной платы к выдаче

строка["Налог"]=строка["Оклад"]*0.13;

строка["КВыдаче"]=строка["Оклад"]*0.87;

// новый расчет итоговой суммы

РасчетИтого();

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


Часто один документ предоставляет свои данные для другого документа. В этом случае говорят о вводе документа на основании другого документа. Например, документ «Начисление заработной платы» может являться основанием для документа «Выдача заработной платы». Эта связь указывается на вкладке «Ввод на основании». Там же можно вызвать конструктор заполнения реквизитов нового документа:



Рис.7. Окно конструктора заполнения документа на основании.

Конструктор позволяет задать, какие данные документа-основания переносятся в реквизиты создаваемого документа. В результате будет сгенерирована специальная процедура модуля документа (доступен через вкладку «Прочие»), которая срабатывает при создании документа на основании другого (выбрать документ-основание, вызвать контекстное меню, в котором выбрать пункт «На основании»). Эту процедуру можно создать и вручную. Также можно редактировать процедуру сгенерированную конструктором.


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

// данное условие было дополнено вручную

// документ не должен заполняться, если тип документ-основания не является

// документом начисления заработной платы. Также не должен заполняться

// документ, если документ-основание уже был оплачен – вторая проверка

// дополнена вручную

Если (ТипЗнч(Основание) = Тип("ДокументСсылка.НачислениеЗарПлаты"))

и (Основание.Выдана=Ложь) Тогда

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

ДокОсн=Основание;

Отдел = Основание.Отдел;

// заполнение таблицы выдачи заработной платы

Для Каждого ТекСтрокаСотрудники Из Основание.Сотрудники Цикл

НоваяСтрока = Сотрудники.Добавить();

НоваяСтрока.Сумма = ТекСтрокаСотрудники.КВыдаче;

НоваяСтрока.ФИО = ТекСтрокаСотрудники.ФИО;

КонецЦикла;

Иначе

Сообщить("По данному документу начисления уже выдана заработная плата");

КонецЕсли;

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


^ Домашнее задание


В конфигурацию магазина добавить документы «Поступление товаров от поставщиков», «Реализация товаров покупателю». Документы должны содержать табличные части, которые содержат информацию о товарах – ссылка на товар, цена, количество, общая сумма. Создать документ «Поступление оплаты от покупателя», который вводится на основании документа «Реализация товаров покупателю».


Создать специальные обработчики, которые позволяют:

  1. Заполнить цены на товары и осуществить расчет общей суммы поставки/покупки.

  2. Изменить общую стоимость покупки с учетом скидки, которая предоставляется клиенту (хранится в группе справочника «Клиенты»).

  3. Вывести информацию, которая является чеком покупателя.

  4. Вывод информации обо всех клиентах и общих суммах их покупок за заданный период времени.

  5. Вывод информации о товарах с указанием количества проданных за заданный период времени.


Работа с регистрами накопления




Скачать 190.76 Kb.
оставить комментарий
Дата03.10.2011
Размер190.76 Kb.
ТипДокументы, Образовательные материалы
Добавить документ в свой блог или на сайт

Ваша оценка этого документа будет первой.
Ваша оценка:
Разместите кнопку на своём сайте или блоге:
rudocs.exdat.com

Загрузка...
База данных защищена авторским правом ©exdat 2000-2017
При копировании материала укажите ссылку
обратиться к администрации
Анализ
Справочники
Сценарии
Рефераты
Курсовые работы
Авторефераты
Программы
Методички
Документы
Понятия

опубликовать
Загрузка...
Документы

Рейтинг@Mail.ru
наверх