Установка на предприятие АСУ

Диагностический анализ системы управления предприятия, построение функциональной схемы. Анализ информационного, технического и программного обеспечения. Разработка информационной подсистемы "Заработная плата" и экономическая эффективность проекта.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 21.06.2011
Размер файла 5,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

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

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

В шестом разделе дипломного проекта разделе произведён расчет трудоемкости работ по проектированию и внедрению проекта. На основании полученных результатов, составлена диаграмма распределения трудоемкости проекта, которая наглядно отображает доли видов каждого из видов в общем объеме трудоемкости выполняемой задачи. Кроме того, произведен расчет себестоимости разработки внедряемого программного продукта. Результаты расчета сведены в диаграмму распределения затрат при создании проекта, которая наглядно отображает долю каждого из видов затрат об общей себестоимости создания информационной подсистемы. Оценена экономическая эффективность внедряемого программного продукта. Годовая прибыль от внедрения данной подсистемы составит около 79 тыс. руб. Подсистема окупит себя через 1,64 года после внедрения в эксплуатацию. Таким образом, внедрение подсистемы складского учета на предприятии является экономически целесообразным.

Таким образом, в дипломном проекте решена задача по разработке подсистемы «Заработная плата» согласно выданному заданию. Внедрение подсистемы привело:

- к ускорению процесса обработки информации;

- к обеспечению простого доступа к необходимой информации в разумные сроки;

- к оптимизации качества обрабатываемой информации;

- к сокращению сроков подготовки данных;

- к уменьшению появления ошибок при расчете зарплаты.

ПЕРЕЧЕНЬ ПРИНЯТЫХ ТЕРМИНОВ

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

Вид удержания - любой вид удержания из заработной платы сотрудника, уменьшающий размер выплачиваемой сотруднику зарплаты (например, удержание по исполнительному листу);

Вид расчета - вид начисления или вид удержания;

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

Вытесняющие виды расчета - это список определенных видов расчетов, которые исключают действие указанного вида расчета во время периода действия вытесняющих видов расчетов (например, отпуск является вытесняющим видом расчета для оклада);

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

Период регистрации (начисления) - период, в котором был зарегистрирован (начислен) результат по виду расчета;

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Организационная директива предприятия №84 от 31.07.10 - 10 с.

2. Коллективный договор предприятия от 01.09.2009 - 27 с.

3. САНПИН 2.2.2/2.4.1340-03 «Гигиенические требования к персональным электронно-вычислительным машинам и организации работы».- 7 с.

4. Правила техники безопасности «Безопасность в компании «ЭНЕЛ»» от 01.01.2009 - 153 с.

5. Общие сведения о компании ОАО «Энел ОГК-5» [Электронный ресурс] // Сетевой портал компании ОАО «Энел ОГК-5». - 2011: http://www.ogk-5.com/ru/

6. 1С Зарплата и управление персоналом, расчет заработной платы предприятием [Электронный ресурс] // Сетевой портал компании «absolut1c.ru»- 2011: http://absolut1c.ru/1c80zik_podrobno.html

7. Информационное обеспечение. Классификаторы. Методы классификации. [Электронный ресурс] // Сетевой портал «itstan.ru»- 2011: http://www.itstan.ru/it-i-is/informacionnoe-obespechenie-klassifikatory-metody-klassifikacii.html

8. Фролова, Т.А. Экономика предприятия: конспект лекций. [Текст] / Т.А.Фролова - Таганрог: ТРТУ, 2006 - 68 с.

9. Методика расчета заработной платы в компании ОАО «Энел ОГК-5» от 30.10.2010 - 38 с.

10. Дубейковский, В.И. Эффективное моделирование с CA ERwin Process Modeler. [Текст] / В.И. Дубейковский - Диалог-МИФИ, 2009 - 384 с.

11. Харитонов, С.А. Настольная книга бухгалтера по учету и оплате труда. Издание 11. [Текст] / С.А. Харитонов - 1С-Паблишинг, 2008. - 500 c.

12. Хорев, П.Б. Методы и средства обеспечения информационной безопасности в системе 1С.[Текст] / П.Б Хорев - М.: 2009 101 c.

13. Калянов, Г. Н. CASE-технологии. Консалтинг в автоматизации бизнес-процессов. 3-е изд. [Текст] / Г. Н. Калянов - М.: Горячая линия, 2002. - 320 c.

14. Маклаков, С.В. Bpwin и Erwin. CASE-средства разработки информационных систем. [Текст] / С.В. Маклаков - М.: Диалог-МИФИ, 1999.

15. Рекомендации по использованию организационно-функциональной модели в управлении предприятием [Электронный ресурс] // Сетевой портал «ISO-9001». - 2011 http://www.iso-9001.ru/index.php3?mode=&id=516

16. Алексеев, А.П. Информатика. [Текст] / А.П. Алексеев - М.: СОЛОН-Р, 2002. - 400 с.

17. Карпов, Т.С. Базы данных: модели, разработка, реализация. [Текст] / Т.С. Карпова. - СПб.: Питер, 2002. - 304 с.

18. Гаврилова, Т.А., Хорошевский, В.Ф. Базы знаний интеллектуальных систем. [Текст] / Т.А. Гаврилова. - СПб.: Питер, 2001. - 384 с.

19. Горячев А.В., Шафрин, Ю.В. Практикум по информационным технологиям. [Текст] / А.В. Горячев. - М.: БИНОМ Л3, 2002. - 272 с.

20. Макарова, Н.В. Информатика: Практикум по технологии работы на компьютере. [Текст] / Н.В. Макарова. - 3-е перераб. изд. - М.: Финансы и статистика, 2001. - 256 с.:

21. Титоренко, Г.А. Информационные технологии управления: Учеб. пособие для вузов. [Текст] / Г.А. Титоренко. - М.: ЮНИТИ-ДАНА, 2002.

22. Айзенберга, Ю.Б. Справочная книга по светотехнике / [Текст] / Ю.Б. Айзенберга. -М.: Энергоатомиздам, 1983.- 472 с.

23. Макарова, Н.В. Информатика: Учебник. - 3-е перераб. изд. [Текст] /. Н.В. Макарова. - М.: Финансы и статистика, 2000. - 768 с.

24. Кнорринг, Г. М. Справочная книга для проектирования электрического освещения. [Текст] / Г.М. Кнорринг.- Энергия, 1976. - 384 с.

25. ГОСТ 24.103-84 Автоматизированные системы управления. Общие положения - 5 c.

ПРИЛОЖЕНИЕ А. ОТЧЕТЫ CASE - СРЕДСТВА «ERWIN PROCESS MODELER»

Таблица А.1 -Arrow report. Расчет заработной платы промышленно-производственного персонала (TO-BE)

Arrow Name

Arrow Definition

Arrow Source Type

Балльная оценка индивидуальных качеств работника

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

Input

Данные о категории и профессии работника

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

Input

Коллективный договор

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

Control

Локальные нормативные акты

Локальные нормативные акты

Control

Локальные нормативные акты и приказы

Акт приема/сдачи о особо важном производственном задании и различные приказы локального характера

Input

Отчет о КПЭ

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

Input

Перечисление средств на индивидуальный счет в банке

Перечисление средств на индивидуальный счет в банке

Output

Бухгалтерский отдел

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

Mechanism

Arrow Name

Arrow Definition

Arrow Source Type

Ставка ММТС

Минимальная месячная тарифная ставка (ММТС) рабочего первого разряда промышленно-производственного персонала, работающего в производственных филиалах Общества, полностью отработавшего определенную работодателем на этот период норму рабочего времени и выполнившего свои трудовые обязанности (нормы труда).

Input

Табель учета рабочего времени

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

Input

Тарифная сетка

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

Input

Трудовой договор работника

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

Control

Трудовой кодекс РФ

Основополагающий документ, регулирующий трудовые отношения в РФ.

Control

Таблица А.2 - Diagram object report. Расчет заработной платы промышленно-производственного персонала (TO-BE)

Name

Definition

Number

Расчет заработной платы

Расчет заработной платы промышленно-производственного персонала

0

Расчет базового оклада

Базовый оклад (тарифная ставка) = ММТС * Кбаз

1

Расчет доплат и надбавок

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

2

Расчет оценки выполнения КПЭ

Расчет базового, подразделения и индивидуального КПЭ

3

Расчет индивидуального коэффициента дифференциации

Коэффициент дифференциации должностного оклада (тарифной ставки). Устанавливается индивидуально для каждого работника филиала. Максимальный размер коэффициента дифференциации должностного оклада (тарифной ставки) не может быть более 1,5

4

Расчет базовой и мотивационной частей премии

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

5

Расчет должностного оклада

Должностной оклад (тарифная ставка) = ММТС* Кбаз * Кдиф , с учетом отработанного рабочего времени.

6

Расчет премии

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

7

Начисление заработной платы

Работодатель выплачивает заработную плату 2 раза в месяц, путем перечисления денежных средств на счета работников в банке.

8

ПРИЛОЖЕНИЕ Б. ТАБЛИЦЫ ДЛЯ НАЧИСЛЕНИЯ ЗАРАБОТНОЙ ПЛАТЫ

Таблица Б.1 - Реквизиты начислений заработной платы

№ п/п

Наименование реквизита

Назначение реквизита

Используемый классификатор/Тип поля/Доступные значения

1.

Код

Код вида расчета

2.

Наименование

Наименование вида расчета

3.

Описание

Описание, раскрывающее назначение вида расчета

4.

Последовательность расчета

Определяет последовательность расчета по отношению к другим видам расчета

Классификатор последовательностей видов расчета

5.

Алгоритм

Ссылка на алгоритм

Классификатор алгоритмов видов расчета (см. соответствующий пункт настоящей методики)

6.

Вид тарифной ставки

Используется или не используется тарифная сетка или тарифные разряды при определении оклада

Не используется /один из видов тарифных сеток, представленных в Классификаторе тарифных сеток

7.

Вид времени

Вид времени по данному виду расчета

Классификатор видов времени

8.

Учет в табеле

Буквенное обозначение в табеле

Классификатор использования рабочего времени

9.

Пособие по соц. страху

Определяет, является ли вид расчета одним из видов социальных пособий по страхованию или нет, и если да, то каким видов

Классификатор видов пособий по социальному страхованию

10.

Вид ежегодного отпуска

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

Классификатор ежегодных отпусков

11.

Вид стажа для ПФР

Порядок учета для отчетности в ПФР

Классификатор видов стажа для ПФР

Натуральный доход

Определяет, является ли вид расчета натуральным доходом, или нет

Является/не является

12.

Отражение в бухгалтерском учете

Определяет, как задается проводка по данному виду расчета, и какая проводка

Не отражается/По плановым начислениям сотрудника/Один из видов проводок, определенных в Классификаторе видов проводок отражения заработной платы в бухгалтерском учете

13.

Учет для НДФЛ

Определяет порядок использования вида расчета при вычислении НДФЛ

Классификатор видов дохода для НДФЛ

14.

Учет для ЕСН

Определяет порядок использования вида расчета при вычислении ЕСН

Классификатор видов дохода для ЕСН

15.

Учет для ФСС_НС

Определяет, облагается ли вид расчета взносом в ФСС от несчастных случаев или не облагается

Облагается/не облагается

16.

Учет для прибыли

Определяет порядок использования вида расчета при исчислении налога на прибыль

Классификатор видов дохода для прибыли

17.

Входит в базу для расчета среднего заработка и отпуска

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

Классификатор типов включения в базу для расчета среднего и отпусков

18.

Входит в базу для расчета больничного листа

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

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

19.

Вид стажа

Вид стажа, в зависимости от значения которого исчисляется данный вид расчета

Классификатор видов стажа

20.

Шкала стажа

Используемая при расчете шкала стажа

Классификатор размеров начислений в зависимости от стажа

Таблица Б.2 - Удержания, используемые на предприятии

Код

Наименование

Алгоритм

Последовательность расчета

Отражение в бухгалтерском учете

20001

Проф. взносы

процентом

Зависимое первого уровня

Проф. взносы

20002

Удержания по заявлению работника

суммой

Первичное

Удержания по прочим операциям

20003

Удержание подотчетных сумм

суммой

Первичное

Удержание подотчетных сумм

20004

Почтовый сбор по исп. листам

почтовый сбор

Зависимое второго уровня

Удержание по исп. листам

20005

Удержание по исп. листу процентом

процентом

Зависимое первого уровня

Удержание по исп. листам

20006

Удержание по исп. листу процентом без учета БЛ

процентом

Зависимое первого уровня

Удержание по исп. листам

20007

Удержание по исп. листу процентом до предела

процентом

Зависимое первого уровня

Удержание по исп. листам

20008

Удержание по исп. листу процентом до предела без учета БЛ

процентом

Зависимое первого уровня

Удержание по исп. листам

20009

Удержание по исп. листу фикс. суммой

суммой

Первичное

Удержание по исп. листам

20010

Удержание по исп. листу фикс. суммой до предела

суммой

Первичное

Удержание по исп. листам

20011

Прочие удержания

суммой

Первичное

Удержания по прочим операциям

20012

Дополнительные взносы в ПФ суммой

суммой

Первичное

Взносы в ПФ

20013

Дополнительные взносы в ПФ процентом

процентом

Зависимое первого уровня

Взносы в ПФ

20014

Удержание за телефон

суммой

Первичное

Удержания по прочим операциям

20015

Удержание квартплаты

суммой

Первичное

Удержания по прочим операциям

20016

Удержание за путевку

суммой

Первичное

Удержания по прочим операциям

20017

Погашение займа

погашение займа

Первичное

Погашение займа

20018

Удержание за услуги связи

суммой

Первичное

Удержания по прочим операциям

20019

Удержание платы за детский сад

суммой

Первичное

Удержания по прочим операциям

20020

Удержание по прочим долгам

суммой

Первичное

Удержания по прочим операциям

Таблица Б.3 - Классификаторы видов проводок

№ п/п

Наименование

Счет Дт

Счет Кт

Аналитика по счету Дт

Аналитика по счету Кт

1.

20 счет

20

70

Статья оплаты труда

Сотрудник организации

1.

Подразделение, в котором работает сотрудник

1.

Номенклатурная группа

2.

26 счет

26

70

Статья оплаты труда

Сотрудник организации

1.

Подразделение, в котором работает сотрудник

3.

25 счет

25

70

Статья оплаты труда

Сотрудник организации

1.

Подразделение, в котором работает сотрудник

4.

23 счет

23

70

Статья оплаты труда

Сотрудник организации

1.

Подразделение, в котором работает сотрудник

1.

Номенклатурная группа

5.

29 счет

29

70

Статья оплаты труда

Сотрудник организации

1.

Подразделение, в котором работает сотрудник

1.

Номенклатурная группа

6.

91 счет

91

70

Статья прочих расходов

Сотрудник организации

7.

Проф. взносы

70

76

Сотрудник

Контрагент

1.

Договор

8.

Взносы в ПФ

70

69.2

Сотрудник

Начислено

9.

Удержания по прочим операциям

70

73.3

Сотрудник

Сотрудник

10.

Удержание подотчетных сумм

70

71

Сотрудник

Сотрудник

11.

Удержание по исполнительным листам

70

76

Сотрудник

Контрагент

1.

Договор

ПРИЛОЖЕНИЕ В. ЛИСТИНГ ПРОГРАММЫ

Листинг программы (фрагмент)

Перем ЖурналРасчетовЗарплата; // журнал расчетов Зарплата

Перем ЖурналРасчетов; // журнал расчетов Зарплата

Перем ЕстьЗаписиПоОбъекту; // 1 - есть записи по сотруднику в ж.р.

//Перем ЕстьПериодПоОбъекту; // 1 - есть записи, действующие в указанном периоде по сотруднику в ж.р.

//************************************************************

// ДополнительныйВидРасчета(Расчет)

//// Параметры:

// Расчет - вид расчета

// Возвращаемое значение:

// Число 1 - если переданный вид расчета являеьтся "дополнительным", т.е. не отражаемым в бухучете

// 0 - если это обычный вид расчета

// Описание:

// Вызывается при вводе расчетов для фильтрации видов расчета в "дополнительном" и обычном начислении зпл

Функция ДополнительныйВидРасчета(Расчет)

Если Расчет.ВходитВГруппу(ГруппаРасчетов.НастраиваемыеВидыРасчета)=0 Тогда

Возврат 0;

КонецЕсли;

Если глСпрВидыРасчетов.НайтиПоРеквизиту("Расчет",Расчет,1) = 0 Тогда

Возврат 0;

КонецЕсли;

Возврат глСпрВидыРасчетов.Дополнительный;

КонецФункции

//************************************************************

ПолучитьТаблицуДатНовыхЗаписей(Сотрудник,НачалоПериода,КонецПериода,ВводимыйРасчет)

// Параметры:

// Сотрудник - сотрудник, по которому формируется таблица

// НачалоПериода - дата начала поиска вытесняющих ВР

// КонецПериода - дата окончания поиска вытесняющих ВР

// ВводимыйРасчет - расчет, который надо ввести в журнал расчетов

// Возвращаемое значение:

// таблица из дат начала и окончания вводимого вида расчета, третья колонка:

// МетодомНовая = 1, если должен ввестись и не может (есть вытесняющие ВР и есть на них сторно),

// МетодомНовая = 0, если не должен вводиться совсем (есть вытесняющие ВР и нет на них сторно)

// МетодомНовая = -1, если должен вводиться методом ВвестиРасчет (нет вытесняющих ВР)

// Описание:

// Формируются интервалы за которые вид расчета должен ввестись, но не может, т.к. есть вытесняющие ВР.

//

Функция ПолучитьТаблицуДатНовыхЗаписей(Сотрудник,НачалоПериода,КонецПериода,ВводимыйРасчет)

// определения дат текущего периода

// если приравняем к началу периода, а не к началу реального действия ВР, то

//в случае досрочного выхода из отпуска с середины месяца запись по окладу введется за весь месяц (09088)

//НачалоПериодаПоДате = ЖурналРасчетов.НачалоПериодаПоДате(НачалоПериода);

НачалоПериодаПоДате = НачалоПериода;

// если приравняем к концу периода, а не к концу реального действия ВР, то

//в случае увольнения с середины месяца запись по окладу введется за весь месяц (09000)

//КонецПериодаПоДате = ЖурналРасчетов.КонецПериодаПоДате(КонецПериода);

КонецПериодаПоДате = КонецПериода;

ТаблицаВРвЖЗ = СоздатьОбъект("ТаблицаЗначений"); //сюда сложим ВР, встретившиеся в ЖЗ по каждому сотруднику отдельно

ТаблицаВРвЖЗ.НоваяКолонка("Расчет", "ВидРасчета",,,,15);

Для Сч = НачалоПериодаПоДате По КонецПериодаПоДате Цикл

ТаблицаВРвЖЗ.НоваяКолонка("День"+Сред(Строка(Сч),1,2),"Число",1);

КонецЦикла;

ТаблицаВытесняющихВРДляВводимомогоВР = СоздатьОбъект("ТаблицаЗначений");

ТаблицаНеобходимостиРучногоВводаВР = СоздатьОбъект("ТаблицаЗначений");

СписокДней = СоздатьОбъект("СписокЗначений"); //в этом списке будет количество значений, равное количеству дней в тек. месяце, значение будет равно 1, если надо ввести ВР вручную

ТаблицаДатДействия = СоздатьОбъект("ТаблицаЗначений");

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

//посмотрим что у сотра уже введено (раньше или сейчас, но с нужными датами начала и(или) окончания):

Если ЖурналРасчетов.ВыбратьЗаписиПоОбъекту(Сотрудник,НачалоПериода,КонецПериода)=1 Тогда

Пока ЖурналРасчетов.ПолучитьЗапись()=1 Цикл

// если эта запись не вытесняет "наш" ВР, то она нам не интересна:

ВРвЖР = ЖурналРасчетов.ВидРасч;

НашВР = ВидРасчета.ПолучитьАтрибут(ВводимыйРасчет.Код);

ВытесняющийВР = ВидРасчета.ПолучитьАтрибут(ВРвЖР.Код);

Если СпособНачисленияЗарплаты < 4 Тогда

Если ВытесняющийВР.ВытесняетВидРасчета(НашВР)=0 Тогда //значит, эта строка не мешает

Продолжить;

КонецЕсли;

КонецЕсли;

ТаблицаВРвЖЗ.НоваяСтрока();

НомерСтрокиТаблицыВРвЖЗ = ТаблицаВРвЖЗ.КоличествоСтрок();

ТаблицаВРвЖЗ.УстановитьЗначение(НомерСтрокиТаблицыВРвЖЗ,"Расчет",ВРвЖР);

Для Сч = НачалоПериода По КонецПериода Цикл

//запись действует и при этом является сторно - тогда в таблицу в этот день помещаем "-1"

//действует и не сторно - тогда в таблицу в этот день помещаем "+1"

//не действует - ничего не вводим

Если (Сч>=ЖурналРасчетов.ДатаНачала)и(Сч<=ЖурналРасчетов.ДатаОкончания) Тогда

Если ЖурналРасчетов.Сторно=1 Тогда

ТаблицаВРвЖЗ.УстановитьЗначение(НомерСтрокиТаблицыВРвЖЗ,"День"+Сред(Строка(Сч),1,2),-1);

Иначе//Если ЖурналРасчетов.Перерасчет=0 Тогда, перерасчет может потом сторнироваться, поэтому его обязательно нужно учесть!

ТаблицаВРвЖЗ.УстановитьЗначение(НомерСтрокиТаблицыВРвЖЗ,"День"+Сред(Строка(Сч),1,2),1);

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЦикла;

КонецЕсли;

ТаблицаВытесняющихВРДляВводимомогоВР.Очистить();//для каждого вводимого вида расчета она будет своя

ТаблицаНеобходимостиРучногоВводаВР.Очистить();//для каждого вводимого вида расчета она будет своя

СписокДней.УдалитьВсе(); //для каждого ВР список свой

ТаблицаДатДействия.Очистить();//для каждого вводимого вида расчета она будет своя

ТаблицаВРвЖЗ.Выгрузить(ТаблицаВытесняющихВРДляВводимомогоВР); //таблица заполняется на одного сотрудника

//если таблица ТаблицаВРвЖЗ была непустой, то теперь у нас возможно непустая таблица с расшифровкой по дням "сторно-неСторно"

//с помощью пересечения "сторно-Несторно" определим какие из ВР не смогут физически быть введены методом Ввести расчет, но должны быть введены, т.к. на несторно есть компенсирующее сторно

//сформируем итоговую таблицу, состоящуюю из двух строк:

//в первой строке - итоги сложения сторно и несторно (1 и -1)

//во второй строке- признак того, что во время обхода встречались сторно записи (если встречались, а в первой строке стоит 0, значит метод "ввести расчет" не сработал, а запись быть должна)

ТаблицаНеобходимостиРучногоВводаВР.НоваяСтрока();

ТаблицаНеобходимостиРучногоВводаВР.НоваяСтрока();

Для СчКолонок = 2 По ТаблицаВытесняющихВРДляВводимомогоВР.КоличествоКолонок() Цикл

ТаблицаНеобходимостиРучногоВводаВР.НоваяКолонка(,"Число",2);

ОбрабатываемаяКолонка = ТаблицаНеобходимостиРучногоВводаВР.КоличествоКолонок();

Для СчПеребираемыхВРвЖР = 1 По ТаблицаВытесняющихВРДляВводимомогоВР.КоличествоСтрок() Цикл

ЗначениеТекЯчейки = ТаблицаВытесняющихВРДляВводимомогоВР.ПолучитьЗначение(СчПеребираемыхВРвЖР,СчКолонок);

Если ЗначениеТекЯчейки<0 Тогда

//надо внести 1 во вторую строку:

ТаблицаНеобходимостиРучногоВводаВР.УстановитьЗначение(2,ОбрабатываемаяКолонка,1);

КонецЕсли;

ТаблицаНеобходимостиРучногоВводаВР.УстановитьЗначение(1,ОбрабатываемаяКолонка,ЗначениеТекЯчейки+ТаблицаНеобходимостиРучногоВводаВР.ПолучитьЗначение(1,ОбрабатываемаяКолонка));

КонецЦикла;

КонецЦикла;

//теперь из этой таблицы сформируем список дней, за которые надо вводить запись - это те дни, у которых

//1) в первой строке стоит 0(все несторно компенсировались сторно-записями в этот день), а во ворой стоит 1(сторно-запись была в этот день)

//2) в первой строке стоит 0(не было ни сторно, ни не сторно), и во ворой стоит 0(сторно-записей не было)

Для СчКолонок = 1 По ТаблицаНеобходимостиРучногоВводаВР.КоличествоКолонок() Цикл

Если (ТаблицаНеобходимостиРучногоВводаВР.ПолучитьЗначение(1,СчКолонок)=0)и(ТаблицаНеобходимостиРучногоВводаВР.ПолучитьЗначение(2,СчКолонок)=1) Тогда

СписокДней.ДобавитьЗначение(1);

ИначеЕсли (ТаблицаНеобходимостиРучногоВводаВР.ПолучитьЗначение(1,СчКолонок)=0)и(ТаблицаНеобходимостиРучногоВводаВР.ПолучитьЗначение(2,СчКолонок)=0) Тогда

СписокДней.ДобавитьЗначение(-1);

Иначе

СписокДней.ДобавитьЗначение(0);

КонецЕсли;

КонецЦикла;

Если СписокДней.РазмерСписка()>0 Тогда

ТаблицаДатДействия.НоваяКолонка("ДатаНачала","Дата");

ТаблицаДатДействия.НоваяКолонка("ДатаОкончания","Дата");

ТаблицаДатДействия.НоваяКолонка("МетодомНовая","Число",1);

ОбразецСравнения = СписокДней.ПолучитьЗначение(1); //признак на первый день

ОчереднаяДата = НачалоПериодаПоДате; //дата первого дня

ТаблицаДатДействия.НоваяСтрока();

ТаблицаДатДействия.УстановитьЗначение(ТаблицаДатДействия.КоличествоСтрок(),1,ОчереднаяДата);

ТаблицаДатДействия.УстановитьЗначение(ТаблицаДатДействия.КоличествоСтрок(),3,ОбразецСравнения);

Для Сч =1 По СписокДней.РазмерСписка() Цикл

ОчереднойЭталон = СписокДней.ПолучитьЗначение(Сч);

Если ОбразецСравнения <> ОчереднойЭталон Тогда

ТаблицаДатДействия.УстановитьЗначение(ТаблицаДатДействия.КоличествоСтрок(),2,НачалоПериодаПоДате + Сч - 2);

ОбразецСравнения = ОчереднойЭталон; //признак на очередной день

ТаблицаДатДействия.НоваяСтрока();

ТаблицаДатДействия.УстановитьЗначение(ТаблицаДатДействия.КоличествоСтрок(),1,НачалоПериодаПоДате + Сч - 1);

ТаблицаДатДействия.УстановитьЗначение(ТаблицаДатДействия.КоличествоСтрок(),3,ОбразецСравнения);

КонецЕсли;

КонецЦикла;

ТаблицаДатДействия.УстановитьЗначение(ТаблицаДатДействия.КоличествоСтрок(),2,НачалоПериодаПоДате + Сч - 2);

КонецЕсли;

Возврат ТаблицаДатДействия;

КонецФункции // ПолучитьТаблицуДатНовыхЗаписей

//***********************************************************

//ПолучитьТаблицуДатДляВводаРасчетов(Сотрудник,НачалоПериода,КонецПериода,Документ)

//

// Параметры:

// Сотрудник - сотрудник, по которому формируется таблица

// НачалоПериода - дата начала поиска существующих записей по документу

// КонецПериода - дата окончания поиска существующих записей по документу

// Документ - документ, по которому надо ввести записи в журнал расчетов

// ВводимыйРасчет - расчет, который надо ввести в журнал расчетов

//

// Возвращаемое значение:

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

//

// Описание:

// Формируются интервалы за которые можно ввести расчет методом ВвестиРасчет.

//

Функция ПолучитьТаблицуДатДляВводаРасчетов(Сотрудник,НачалоПериода,КонецПериода,Документ,ВводимыйРасчет,НомерСтрокиДокумента=0)

БинарнаяТаблица = СоздатьОбъект("ТаблицаЗначений");

ТаблНевведенныхЗаписей = СоздатьОбъект("ТаблицаЗначений");

ТаблНевведенныхЗаписей.НоваяКолонка(,"Дата");

ТаблНевведенныхЗаписей.НоваяКолонка(,"Дата");

//интервал может быть длиной в несколько периодов, разложим его:

ТаблицаДат=глРазложитьНаПериоды(НачалоПериода,КонецПериода);

КолПериодов = ТаблицаДат.КоличествоСтрок();

//пройдемся по полученным периодам:

Для СчПериодов = 1 По КолПериодов Цикл

ДНачала = ТаблицаДат.ПолучитьЗначение(СчПериодов,1);

ДОконч = ТаблицаДат.ПолучитьЗначение(СчПериодов,2);

НП = ЖурналРасчетовЗарплата.НачалоПериодаПоДате(ДНачала);

КП = ЖурналРасчетовЗарплата.КонецПериодаПоДате(ДНачала);

Встречался = 0;

Если ЖурналРасчетовЗарплата.ВыбратьЗаписиПоОбъекту(Сотрудник,ДНачала,ДОконч)=1 Тогда

Пока ЖурналРасчетовЗарплата.ПолучитьЗапись()=1 Цикл

ПроверяемыйВР =

ВидРасчета.ПолучитьАтрибут(ВводимыйРасчет.Код);

ПроверяющийВР =

ВидРасчета.ПолучитьАтрибут(ЖурналРасчетовЗарплата.ВидРасч.Код);

Если (ЖурналРасчетовЗарплата.Документ<>Документ)или(ПроверяющийВР<>ПроверяемыйВР)или

//документ нужный, но строка не та:

(ЖурналРасчетовЗарплата.Документ = Документ) и

(ЖурналРасчетовЗарплата.НомерСтрокиДокумента <> НомерСтрокиДокумента)

Тогда

Продолжить; //нам интересны только записи этого ВР нашим документом

КонецЕсли;

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

Встречался = 1;

НачЗаписи = ЖурналРасчетовЗарплата.ДатаНачала;

ОкончЗаписи = ЖурналРасчетовЗарплата.ДатаОкончания;

Если (НачЗаписи < НП) или (ОкончЗаписи > КП) Тогда

Продолжить; //эта запись не в нужном периоде

КонецЕсли;

БинарнаяТаблица.Очистить();

БинарнаяТаблица.НоваяСтрока();

БинарнаяТаблица.НоваяСтрока();

Для Сч = НП По КП Цикл

ИмяКолонки = "День"+Сред(Строка(Сч),1,2);

БинарнаяТаблица.НоваяКолонка(ИмяКолонки,"Число",1);

Если (Сч >= НачЗаписи) и (Сч <= ОкончЗаписи) Тогда

БинарнаяТаблица.УстановитьЗначение(1,ИмяКолонки,1)

Иначе

БинарнаяТаблица.УстановитьЗначение(1,ИмяКолонки,0)

КонецЕсли;

КонецЦикла;

Для Сч = НП По КП Цикл

ИмяКолонки = "День"+Сред(Строка(Сч),1,2);

Если (Сч >= ДНачала) и (Сч <= ДОконч) Тогда

БинарнаяТаблица.УстановитьЗначение(2,ИмяКолонки,1)

Иначе

БинарнаяТаблица.УстановитьЗначение(2,ИмяКолонки,0)

КонецЕсли;

КонецЦикла;

//заполнили бинарную таблицу для очередного разбиваемого интервала

//проанализируем и введем новые интервалы:

НачалоНайдено = 0;

Для Сч = НП По КП Цикл

ИмяКолонки = "День"+Сред(Строка(Сч),1,2);

ЗначениеДняПоЗаписиЖР =

БинарнаяТаблица.ПолучитьЗначение(1,ИмяКолонки);

ЗначениеДняПоВводимойЗаписи =

БинарнаяТаблица.ПолучитьЗначение(2,ИмяКолонки);

Если ЗначениеДняПоВводимойЗаписи=1 Тогда

Если ЗначениеДняПоЗаписиЖР=0 Тогда

Если НачалоНайдено = 0 Тогда

НовоеНачало = Сч;

НачалоНайдено = 1;

КонецЕсли;

Иначе //ЗначениеДняПоЗаписиЖР=1 и

ЗначениеДняПоВводимойЗаписи=1

Если НачалоНайдено = 1 Тогда

НачалоНайдено = 0;

ТаблНевведенныхЗаписей.НоваяСтрока();

ТаблНевведенныхЗаписей.УстановитьЗначение(ТаблНевведенныхЗаписей.КоличествоСтрок(),1,НовоеНачало);

ТаблНевведенныхЗаписей.УстановитьЗначение(ТаблНевведенныхЗаписей.КоличествоСтрок(),2,Сч-1);

КонецЕсли;

КонецЕсли;

Иначе //ЗначениеДняПоВводимойЗаписи=0

Если (НачалоНайдено = 1) Тогда

НачалоНайдено = 0;

ТаблНевведенныхЗаписей.НоваяСтрока();

ТаблНевведенныхЗаписей.УстановитьЗначение(ТаблНевведенныхЗаписей.КоличествоСтрок(),1,НовоеНачало);

ТаблНевведенныхЗаписей.УстановитьЗначение(ТаблНевведенныхЗаписей.КоличествоСтрок(),2,Сч-1);

КонецЕсли;

КонецЕсли;

КонецЦикла;

//возможно, последняя дата периода все еще удовлетворяла условию, тогда ее еще не занесли в таблицу:

Если (НачалоНайдено = 1) Тогда

НачалоНайдено = 0;

ТаблНевведенныхЗаписей.НоваяСтрока();

ТаблНевведенныхЗаписей.УстановитьЗначение(ТаблНевведенныхЗаписей.КоличествоСтрок(),1,НовоеНачало);

ТаблНевведенныхЗаписей.УстановитьЗначение(ТаблНевведенныхЗаписей.КоличествоСтрок(),2,Сч-1);

КонецЕсли;

КонецЦикла; //перебрали все записи ЖР

КонецЕсли; //выборка записей в ЖР

Если Встречался = 0 Тогда //этот период можно целиком включить в таблицу:

ТаблНевведенныхЗаписей.НоваяСтрока();

ТаблНевведенныхЗаписей.УстановитьЗначение(ТаблНевведенныхЗаписей.КоличествоСтрок(),1,ДНачала);

ТаблНевведенныхЗаписей.УстановитьЗначение(ТаблНевведенныхЗаписей.КоличествоСтрок(),2,ДОконч);

КонецЕсли;

КонецЦикла; //проверили все вводимые записи по записям ЖР

Возврат ТаблНевведенныхЗаписей;

КонецФункции // ПолучитьТаблицуДатДляВводаРасчетов

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.