Разработка программного обеспечения для автоматизации документооборота в фонде жилого дома

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    550,44 Кб
  • Опубликовано:
    2015-06-23
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка программного обеспечения для автоматизации документооборота в фонде жилого дома

Введение

Городской житель должен всегда быть обеспечен водой, газом, канализацией, теплом и т.д. Услуги, оказываемые ЖКХ (жилищно-коммунальное хозяйство), важный фактор поддержания и развития не только дома, но и двора, дорог, окрестных улиц.

Учет услуг оказываемых ЖКХ, является неотъемлемой частью их деятельности. Принятие заявок от жильцов, составление заданий для ремонтных бригад, учёт хозяйственной части, оплата услуг ЖКХ - все эти и другие операции нуждаются в автоматизации. Ручное ведение документации занимает очень много времени. Необходимо систематизировать данные для быстрого ввода и поиска, хранения и обработки.

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

Исходя из этого, выстраивается ряд задач, а именно:

изучить теоретические аспекты АС, понятия и специфику;

ознакомиться со спецификой работы фонда жилого дома;

рассмотреть методику разработки программ;

произвести программирование, тестирование и отладку;

произвести внедрение АС в работу фонда жилого дома ;

проанализировать результаты внедрения.

Предметом исследования является изучение возможностей системы программирования программы 1С: Предприятие, использующей объектно-ориентированный язык 1С.

Объектом исследования является процесс автоматизации учета услуг в фонде жилого дома.

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

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

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

Источниками для написания работы послужили работы таких авторов как Нуралиев С. В., Федоров Б. Н., Филиппов В. Байдаков С.Н. Нуралиев С.В Брага В.В., Левкин А.А. Михайлов C., Черков А.Сергеева К.

Глава I. Теоретические аспекты внедрения АС в работу предприятия

.1      Автоматизированные системы: Понятия спецификации

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

Программа «1С:Предприятие 7.7» как учетная система имеет четыре компонента:

·        систему хранения, поиска и редактирования информации, которая изменяется достаточно редко (справочники).

·        систему ввода и фиксации бизнес-процессов (документы).

·        систему работы с динамической информацией (регистры).

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

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

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

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

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

·        настройку внешнего вида форм ввода информации;

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

·        широкие оформительские способности создания печатных форм документов и отчётов с использованием различных шрифтов, рамок, цветов, рисунков;

·        возможность наглядного представления информации в виде диаграмм;

·        быстрое изменение конфигурации с помощью «конструкторов».

Всё выше описанное делает программу «1С:Предприятие 7.7» привлекательной, как для руководителей, так и для сотрудников.

Требования к программному обеспечению:

Для работы программы необходимо, чтобы на компьютере были установлены:

· операционная система Microsoft Windows 98/2000/XP/7;

·        установленное ядро «1С:Предприятие 7.7».

.2 Специфика работы фонда жилого дома

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

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

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

в) незамедлительное устранение аварий и неисправностей в общем имуществе жилого дома, восстановление условий жизнеобеспечения и безопасности потребителей;

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

Глава II. Методика разработки и внедрения автоматизированной системы в работу предприятия

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

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

2.1 Методика разработки программы

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

В конфигурации присутствуют следующие основные справочники:

Таблица 1 Справочник «Жильцы»

Имя поля

Тип данных

Размер поля

Обязательное поле

Код

Число

5

Да

ФИО

Строка

50

Да

Родственные отношения

Перечисление

-

Нет

Статус жильца

Перечисление

-

Нет


Таблица 2 Справочник «Номенклатура»

Имя поля

Тип данных

Размер поля

Обязательное поле

Код

Число

5

Да

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

Строка

50

Да

Единица измерения

Перечисление

-

Нет

Цена

Число

10

Нет


Таблица 3 Справочник «Лицевые счета»

Имя поля

Тип данных

Размер поля

Обязательное поле

Код

Число

5

Да

Улица

Строка

50

Нет

Дом

Число

3

Нет

Квартира

Число

3

Нет

Подъезд

Число

2

Нет

Этаж

Число

2

Нет

Общая площадь

Число

3

Нет

Жилая площадь

Число

3

Нет

Дополн площадь

Число

3

Нет

Тип жилья

Перечисление

-

Нет

Тип собствен.

Перечисление

-

Нет

Тип постройки

Перечисление

-

Нет

Квартиросъёмщ.

Строка

40

Нет


Таблица 4 Справочник «Счетчик»

Имя поля

Тип данных

Размер поля

Обязательное поле

Код

Число

5

Да

Дата

Дата

-

Да

Предыдущие

Строка

6

Нет

Текущие

Строка

6

Нет

Количество

Число

10

Нет


Таблица 5 Справочник «Услуги»

Имя поля

Тип данных

Размер поля

Обязательное поле

Код

Число

5

Да

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

Строка

50

Да

Тариф

Число

6

Нет


В конфигурацию входят следующие формы документов:

1.  «Заявка мастеру» - приём заявки от жильцов на ремонтные работы. Ремонтной бригаде печатается заявка.

2.      «Отчёт мастера» - создаётся на основании документа «Заявка мастеру», с заполнением некоторых значений. В документ заносятся данные из печатной заявки. Списываются израсходованные материалы (номенклатура).

.        «Оплата» - документ производит расчёт счётчиков и списание денег по лицевым счетам жильцов.

.        «Ввод начального сальдо» - состояние лицевого счёта жильцов на начало учёта.

.        «Начальное показание» - показание счётчиков в начале установки.

В состав конфигурации присутствуют следующие отчётные формы:

1.  «Сводная ведомость по жилому фонду» - информация по адресу и месту проживания жильцов.

2.      «Отчёт по заявкам» - отчёт ремонтных бригад о проделанной работе.

.        «Прейскурант» - прейскурант стоимости на внутренние сантехнические работы.

.        «Сводная ведомость платежей» - отчёт по оплате жильцов коммунальных услуг.

Рис. 1 Структурная схема

Таблица 5

Описание аномалии

Реакция на аномалию

Способ защиты

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

Поле остается пустым

Защищено с помощью 1С автоматически

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

Поле остается пустым

Защищено с помощью 1С автоматически

При записи строки с нулевыми суммами удаляются в документе ВводНачСальдо.

Удаление строки

Защищено разработчиком

Не выбор даты начала или даты конца периода в отчётах

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

Защищено разработчиком

Выбор неверного диапазона дат в отчетах (начальная дата больше конечной)

Выводится сообщение о том, что диапазон дат неправильный, отчет не будет сформирован

Защищено разработчиком


.2 Программирование, тестирование и отладка

В соответствии со структурой программы, приведённой выше в пункте «Структурная схема», в представленной программе разработаны программные модули, макеты на «1С:Предприятие 7.7». Тексты программных модулей приведены в пункте «V Приложение».

С целью повышения надёжности функционирования программного продукта необходимо обеспечить программный контроль:

·   авторизация пользователя при входе в систему;

·        ограничение доступа пользователей к данным по их роли;

·        невозможность записи данных в справочник, если не заполнены необходимые поля формы;

·        невозможность проведения документа, если не заполнены необходимые поля формы и значения таблицы;

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

Основные принципы организации тестирования:

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

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

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

·        необходимо тщательно подбирать тест не только для правильных (предусмотренных) входных данных, но и для неправильных (непредусмотренных);

· при анализе результатов каждого теста необходимо проверять, не делает ли программа того, что она не должна делать;

·        следует сохранять использованные тесты (для повышения эффективности повторного тестирования программы после ее модификации или установки у заказчика);

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

·        следует учитывать так называемый «принцип скопления ошибок»: вероятность наличия не обнаруженных ошибок в некоторой части программы прямо пропорциональна числу ошибок, уже обнаруженных в этой части;

Хотя программа прошла тестирование успешно, в ней, тем не менее, могут содержаться ошибки, появление которых зависит от обрабатываемых данных (т.е. на одних исходных данных программа работает правильно, а на других - с ошибкой).

2.3 Внедрение автоматизированной системы в работу фонда жилого дома

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

Достоинства программы: удобство и простота в эксплуатации (минимальные навыки работы пользователя на 1С); существенное облегчение работы сотрудника организации; электронное хранение документации организации.

Запуск программы

Запуск программы «1С:Предприятие 7.7» осуществляется двойным нажатием мыши ярлыка на рабочем столе: . После этого по центру экрана открывается окно «Запуск 1С:Предприятия»:

Рис. 2

Для запуска информационной базы необходимо мышкой в списке информационных баз выбрать необходимую («Диплом») и нажать кнопку ОК.

Далее система предложит ввести логин и пароль для авторизованного входа в систему.

Рис. 3

Напротив Пользователь выбираем свой логин (Админ, Диспетчер или Расчётчик) и вводим пароль:

Рис. 4

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

После успешного прохождения авторизации открывается главное окно программы:

Рис. 5

Меню и Панель инструментов

Меню включает в себя стандартный набор пунктов: «Файл», «Операции», «Справочники», «Документы», «Отчёты», «Журнал», «Сервис», «Окна», «Помощь».

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

Состав операций Меню и Панель инструментов программируется разработчиком на основании роли пользователя и его прав.

Далее рассмотрим подробнее содержание и работу каждого элемента меню. Для удобства выбран пользователь с полными правами и полным интерфейсом - Админ.

Меню «Справочники»

Рис. 6

1. 
Справочник «Единицы измерения» содержит информацию по единицам измерения для материалов и товаров.

Рис 7

2.  Справочник «Лицевой счёт» имеет несколько форм. При открытии справочника открывается форма списка:

Рис. 8

Справочник является многоуровневым. Слева присутствует дерево иерархии. В форме списка находится Поиск лицевого счёта по улице, дому и квартире. Если мы в табличной части выделим мышкой лицевой счёт и нажмём кнопку Жильцы, то нам откроется список жильцов по этому адресу. По кнопке Отчёты выпадет список из двух отчётов: Свод по жилому фонду и Реестр оплаты.

Ниже приведена карточка лицевого счёта, т.е. форма элемента:

Рис. 9

Поле Ответственный квартиросъёмщик заполняется автоматически по реквизиту Родственные отношения со значением «Наниматель» из справочника Жильцы.

Модуль формы справочника лицевые счета

Процедура Исправить Номер Счета()

Форма. Код. Доступность(1);

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

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

//кнопка Расчет

Процедура ОткрытьЖР()

Перем Конт;

/////////////////////////////////////

ОткрытьФормуМодально("ЖурналРасчетов.Начисления.ПоСчету#"+СокрЛП

Конт.УстановитьПредставление(2,ТекущийЭлемент());

Конт.Форма.Обновить();

КонецПроцедуры//ОткрытьЖР()

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

Процедура НовыйКод()

Если ПустоеЗначение(Код) = 1 Тогда

Код = Лсч(дом,квартира,улица.Код,корпус,ЛитераКвартиры); //Лсч(НомерДома,НомерКвартиры,НомерУлицы,ЛитераКорпуса)

КонецЕсли;

КонецПроцедуры //ПриЗаписи()

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

// ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ

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

Процедура ПриОткрытии()

//заполняем поле Ответственный квартиросъемщик

квартиросъемщик = "";

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

СпрЖильцов.ИспользоватьВладельца(ТекущийЭлемент());//воборка в подчиненном

СпрЖильцов.ВыбратьЭлементы();

квартиросъемщик =ПолучитьПустоеЗначение("Строка");

Пока СпрЖильцов.ПолучитьЭлемент()=1 Цикл

Если СпрЖильцов.РодствОтношение = Перечисление.Родственники.Наниматель Тогда

квартиросъемщик = СпрЖильцов.Наименование;

КонецЕсли;

КонецЦикла;

Если ПустоеЗначение(квартиросъемщик) = 1 Тогда

СпрЖильцов.ОбратныйПорядок(1);

СпрЖильцов.ВыбратьЭлементы();

Пока СпрЖильцов.ПолучитьЭлемент()=1 Цикл

Если СпрЖильцов.РодствОтношение = Перечисление.Родственники.Наниматель Тогда

квартиросъемщик = СпрЖильцов.Наименование;

КонецЕсли;

КонецЦикла;

КонецЕсли;

СпрЖильцов = 0;

// Если ПустоеЗначение(Электросчетчик) = 1 Тогда

// Форма.кнЭлектросчетчик.Видимость(0)

// Иначе

// Форма.кнЭлектросчетчик.Видимость(1)

// КонецЕсли;

// Если ПустоеЗначение(ВодосчетчикХ) = 1 Тогда

// Форма.кнВодосчетчикХ.Видимость(0)

// Иначе

// Форма.кнВодосчетчикХ.Видимость(1)

// КонецЕсли;

// Если ПустоеЗначение(ВодосчетчикГ) = 1 Тогда

// Форма.кнВодосчетчикГ.Видимость(0)

// Иначе

// Форма.кнВодосчетчикГ.Видимость(1)

// КонецЕсли;

КонецПроцедуры // ПриОткрытии

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

3.  Справочник «Начисления» отражает виды начислений коммунальных услуг:

Рис. 10

4.  Справочник «Сантехнические услуги» - перечень работ, оказываемых организацией жильцам.

Рис. 11

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

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

Рис. 12


Рис. 13

Меню «Документы»

Рис. 14

1.  Документ «Ввод начального сальдо» - вводится один раз и содержит остатки по лицевым счетам:

Рис. 15

Модуль формы документа «Ввод начальных остатков»

Перем ЖрнНачисления;

// ЗаголовокФормы()

Функция ЗаголовокФормы()

Перем Заголовок, Название;

Заголовок= "Ввод начального сальдо";

Название = Заголовок+" №";

Если Выбран() = 1 Тогда

Если Проведен() = 1 Тогда

Заголовок = Заголовок + ". Проведен";

Иначе

Заголовок = Заголовок + ". Не проведен";

КонецЕсли;

Иначе

Заголовок = Заголовок + ". Новый";

КонецЕсли;

Форма.Заголовок(Заголовок);

Возврат Название;

КонецФункции //ЗаголовокФормы()

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

Процедура Заполнить()

УдалитьСтроки();

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

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

СпрЛицсчет.НайтиПоКоду("Работа",0);//в группу "Рабочие записи"

Род=СпрЛицсчет.ТекущийЭлемент();

СпрЛицсчет.ИспользоватьРодителя(Род);

СпрЛицсчет.ВыбратьЭлементы();

Состояние("Заполнение документа лицевыми счетами...");

Пока СпрЛицсчет.ПолучитьЭлемент()=1 Цикл

Если СпрЛицсчет.ПометкаУдаления() =0 Тогда//все кроме помеченных на удаление

Если СпрЛицсчет.ЭтоГруппа()=0 Тогда

НоваяСтрока();

ЛицСчетДок=СпрЛицсчет.ТекущийЭлемент();

СпрЖильцов.ИспользоватьВладельца(СпрЛицсчет.ТекущийЭлементСпрЖильцов.ВыбратьЭлементы();

Пока СпрЖильцов.ПолучитьЭлемент()=1 Цикл

Если СпрЖильцов.РодствОтношение = Перечисление.Родственники.Наниматель Тогда

квартиросъемщик = СпрЖильцов.Наименование;

КонецЕсли;

КонецЦикла;

Адрес = "улица: "+СпрЛицсчет.улица.Наименование + " дом: " + Строка(СпрЛицсчет.дом) + " " + СпрЛицсчет.корпус + " квартира: " + Строка(СпрЛицсчет.квартира);

КонецЕсли;

КонецЕсли;

КонецЦикла;

////////////////////////////////////////////

СпрЖильцов = 0;

СпрЛицсчет=0;

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

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

//т.к. строки при удалении прыгают

//то получить следующую строку нереально

//удаление лишних строк сделано так

Процедура УдалитьЛишнее()

Если ВыбратьСтроки()=1 Тогда

ПолучитьСтроку();

Пока 1=1 Цикл

Если Сумма=0 Тогда //удаление строк с 0 суммами

УдалитьСтроку();

Иначе

Если ПолучитьСтроку()=0 Тогда

Прервать

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЕсли;

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

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

// ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ

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

Процедура ПриОткрытии()

Форма.ДатаДок.Доступность(0);

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

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

Процедура ПриЗаписи()

УдалитьЛишнее();

Автор=Константа.Пользователь;

АвтоВремяТекущее();

//ЖрнНачисления =0;

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

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

2.  Документ «Начальное показание счётчиков» - вводится при начале эксплуатации счётчиков:

Рис. 16

Модуль формы документа «Начальное показание счетчиков»

Перем ЖрнНачисления,ТекстЗапросаДокументы;

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

Процедура ПриВводеСчета()

Если ЛицСчетДок.Выбран() = 1 Тогда

Адрес = "улица: "+ ЛицСчетДок.улица.Наименование + " дом: " + Строка(ЛицСчетДок.Дом) + " " + ЛицСчетДок.корпус + " квартира: " + Строка(ЛицСчетДок.квартира);

Квартиросъемщик = ЛицСчетДок.квартиросъемщик;

КонецЕсли;

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

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

Функция ПолучитьПоказаниеСчетчика(ЛицевойСчет)

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

ТекущееЭ = "";

ПредыдущееЭ = "";

ТекущееГ = "";

ПредыдущееГ = "";

ТекущееХ = "";

ПредыдущееХ = "";

Если Запрос.Выполнить(ТекстЗапросаДокументы) = 0 Тогда

Предупреждение("Ошибка в выполнении запроса",3);

Запрос = 0;

Возврат 0;

Иначе //запрос выполнен

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

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

Дока = Запрос.ТекущийДокумент;

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

Пока Дока.ПолучитьСтроку() > 0 Цикл

Если ЛицевойСчет.Электросчетчик = 1 Тогда //"Электросчетчик"

Если ПустоеЗначение(Дока.ПредыдущееЭ) = 0 Тогда

ПредыдущееЭ = Дока.ПредыдущееЭ;

КонецЕсли;

Если ПустоеЗначение(Дока.ПоказанияСчетчикаЭ) = 0 Тогда

ТекущееЭ = Дока.ПоказанияСчетчикаЭ;

КонецЕсли;

КонецЕсли;

Если ЛицевойСчет.ВодосчетчикГ = 1 Тогда //ВодосчетчикГ

Если ПустоеЗначение(Дока.ПредыдущееГ) = 0 Тогда

ПредыдущееГ = Дока.ПредыдущееГ;

КонецЕсли;

Если ПустоеЗначение(Дока.ПоказаниеСчетчикаВодыГ) = 0 Тогда

ТекущееГ = Дока.ПоказаниеСчетчикаВодыГ;

КонецЕсли;

КонецЕсли;

Если ЛицевойСчет.ВодосчетчикХ = 1 Тогда //ВодосчетчикХ

Если ПустоеЗначение(Дока.ПредыдущееХ) = 0 Тогда

ПредыдущееХ = Дока.ПредыдущееХ;

КонецЕсли;

Если ПустоеЗначение(Дока.ПоказаниеСчетчикаВодыХ) = 0 Тогда

ТекущееХ = Дока.ПоказаниеСчетчикаВодыХ;

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЦикла;

КонецЦикла;

КонецЕсли;

Запрос = 0;

Если ПустоеЗначение(ТекущееЭ) = 1 Тогда

ТекущееЭ = ПредыдущееЭ;

КонецЕсли;

Если ПустоеЗначение(ТекущееГ) = 1 Тогда

ТекущееГ = ПредыдущееГ;

КонецЕсли;

Если ПустоеЗначение(ТекущееХ) = 1 Тогда

ТекущееХ = ПредыдущееХ;

КонецЕсли;

СохранитьЗначение("ТекущееЭ",ТекущееЭ);

СохранитьЗначение("ТекущееГ",ТекущееГ);

СохранитьЗначение("ТекущееХ",ТекущееХ);

Возврат 1;

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

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

Процедура Заполнить()

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

"//{{ЗАПРОС(Заполнить)

|Обрабатывать НеПомеченныеНаУдаление;

|Без итогов;

|ЛицСчет = Справочник.Лицсчет.ТекущийЭлемент;

|ЛицСчетквартиросъемщик = Справочник.Лицсчет.квартиросъемщик;

|ЛицСчетУлица = Справочник.Лицсчет.улица;

|ЛицСчетДом = Справочник.Лицсчет.дом;

|ЛицСчетКв = Справочник.Лицсчет.квартира;

|ЛицСчетДатазакрытия = Справочник.Лицсчет.датазакрытия;

|Группировка ЛицСчет Без Групп Упорядочить по ЛицСчет.Код;

|Условие ((ПустоеЗначение(ЛицСчетДатазакрытия) = 1) ИЛИ (ЛицСчетДатазакрытия > НачМесяца(РабочаяДата())));

|"//}}ЗАПРОС;

Если (Улица.Выбран()=1) И (ПустоеЗначение(дом) = 0) Тогда //улица и дом выбрана

ТекстЗапроса01 = ТекстЗапроса + "Условие (ЛицСчетУлица = Улица);";

ТекстЗапроса01 = ТекстЗапроса01 + "Условие (ЛицСчетДом = дом);";

Если ПустоеЗначение(квартира) = 0 Тогда

ТекстЗапроса01 = ТекстЗапроса01 + "Условие (ЛицСчетКв = квартира);";

КонецЕсли;

ИначеЕсли Улица.Выбран()=1 Тогда //улица выбрана

ТекстЗапроса01 = ТекстЗапроса + "Условие (ЛицСчетУлица = Улица);";

КонецЕсли;

Если ПустоеЗначение(ТекстЗапроса01) = 1 Тогда

ТекстЗапроса01 = ТекстЗапроса;

КонецЕсли;

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

Если Запрос.Выполнить(ТекстЗапроса01) = 0 Тогда

Предупреждение("Ошибка в выполнении запроса",3);

Запрос = 0;

Возврат;

Иначе //запрос выполнен

//УдалитьСтроки();

Пока Запрос.Группировка() = 1 Цикл //группировака по лицевым счетам

НоваяСтрока();

ЛицСчетДок = Запрос.ЛицСчет;

Адрес = "улица: "+ Запрос.ЛицСчетУлица.Наименование + " дом: " + Строка(Запрос.ЛицСчетДом) + " " + Запрос.ЛицСчет.корпус + " квартира: " + Строка(Запрос.ЛицСчет.квартира);

Квартиросъемщик = Запрос.ЛицСчетквартиросъемщик;

Если ПолучитьПоказаниеСчетчика(Запрос.ЛицСчет) = 1 Тогда

Электросчетчик = ВосстановитьЗначение("ТекущееЭ");

ВодоСчетчикГ = ВосстановитьЗначение("ТекущееГ");

ВодоСчетчикХ = ВосстановитьЗначение("ТекущееХ");

Иначе

Электросчетчик = "";

ВодоСчетчикГ = "";

ВодоСчетчикХ = "";

КонецЕсли;

КонецЦикла;

КонецЕсли;

Запрос = 0;

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

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

// ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ

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

Процедура ПриОткрытии()

Форма.ДатаДок.Доступность(0);

Форма.Улица.ВыборГруппы(1);//в графе "Улица" выбор с учетом групп

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

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

Процедура ПриЗаписи()

//если документ введен в прошлом периоде

Если ДатаДок < ЖрнНачисления.НачалоТекущегоПериода() Тогда

Предупреждение(" Документ прошлого месяца!

|Перезапись и проводка невозможна!",3);

СтатусВозврата(0);

Возврат;

КонецЕсли;

Автор = Константа.Пользователь;

АвтоВремяПослеТА();

ЖрнНачисления = 0;

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

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

Процедура ВводНового()

ДатаДок = ЖрнНачисления.НачалоТекущегоПериода();

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

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

Процедура ПриЗакрытии()

//ОткрытьФорму("Обработка.ПровестиНачальныеПоказания");

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

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

ЖрнНачисления = СоздатьОбъект("ЖурналРасчетов.Начисления");

ДатаНачала = '01.01.2000';

ДатаКонца = ЖрнНачисления.НачалоТекущегоПериода()-1;//до начала расчетного месяца

ТекстЗапросаДокументы =

"//{{ЗАПРОС(ЗаполнитьДокументы)

|Обрабатывать НеПомеченныеНаУдаление;

|С (ДатаНачала) По (ДатаКонца);

|ЛицСчет = Документ.Оплата.ЛицСчетДок;

|ТекущийДокумент = Документ.Оплата.ТекущийДокумент;

|Группировка ЛицСчет Без Групп Упорядочить по ЛицСчет.Код;

|Группировка ТекущийДокумент;

|Условие (ЛицСчет = ЛицевойСчет);

|"//}}ЗАПРОС;

По кнопке Заполнить, если не выбрана улица, дом и квартира, заполняются в табличную часть автоматически все действующие лицевые счета. Если же выставить существующий адрес, то добавится строка с соответствующим лицевым счётом. Если квартиросъёмщик не использует какой-либо счётчик, то заполнять не надо.

3.  Документ «Оплата» - отражает показания счётчиков и рассчитывает оплату коммунальных услуг. Печатная форма «Квиток».

Рис. 17

Документ Оплата начисленных расчётов можно вызвать из карточки лицевого счёта (справочник Лицевые счета). Откроется форма с отбором документов оплаты по вызываемому лицевому счёту:

Рис. 18

По кнопке Квиток формируется печатная форма счет-извещение:

Рис. 19

4.  Документ «Заявка мастеру» - формирование диспетчером заявки от жильцов на ремонтные работы. В форму документа вводится ремонтная группа из рабочий сотрудников; ФИО диспетчера, сформировавшего заявку; лицевой счёт жильца. В табличной части указывается задание из справочника Сантехнические услуги.

Рис. 20

Модуль формы документа «Заявка мастеру»

Процедура ПриОткрытии()

ДатаДок=ТекущаяДата();

ПриЗаписиПерепроводить(1);

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

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

Процедура Печать()

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

Таблица.ИсходнаяТаблица("Таблица");

Таблица.Опции(0,0,,0);

Датадок=датадок;

Выдан=Выдан;

выдал=выдал;

времянач=времянач;

времякон=времякон;

статус=статус;

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

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

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

Задание = Наименование;

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

КонецЦикла;

Таблица.ВывестиСекцию("Шапка2");

Таблица.Показать("Заявка");

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

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

Процедура пересчет()

ЕдИзм=Наименование.ЕдИзм;

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

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

Процедура ПриВыбореСчета(Откуда)

Если Откуда=0 Тогда

//документ новый из журнала

Иначе

ЛицСчетДок = Откуда //новый документ из справочника

КонецЕсли;

Если ЛицСчетДок.Выбран()=1 Тогда

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

СпрЖильцов.ИспользоватьВладельца(ЛицСчетДок.ТекущийЭлемент());

//выборка только в подчиненном

Жильцы = 0;

СпрЖильцов.ВыбратьЭлементы();

Пока СпрЖильцов.ПолучитьЭлемент()=1 Цикл

Жильцы = Жильцы + 1;

Если СпрЖильцов.РодствОтношение = Перечисление.Родственники.Наниматель Тогда

квартиросъемщик = СпрЖильцов.Наименование;

КонецЕсли;

КонецЦикла;

Адрес = "улица: "+ЛицСчетДок.улица.Наименование + " дом: " + Строка(ЛицСчетДок.дом) + " " + ЛицСчетДок.корпус + " квартира: " + Строка(ЛицСчетДок.квартира);

СпрЖильцов =0;

КонецЕсли;

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

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

Рис. 21

5. 
Документ «Отчёт мастера» - отражает результаты выполнения и ход работы заявки жильцов на ремонтные работы. Документ можно сформировать на основании документа Заявка мастеру. Для этого выделяем нужный документ в Журнале Заявок и нажимаем кнопку Ввести на основании:

Рис. 22

Рис. 23

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

Модуль документа «Отчет мастера»

Процедура ПриОткрытии()

ПриЗаписиПерепроводить(1);

// Инициализируем

Форма.ИспользоватьЗакладки(1);

Форма.Закладки.ДобавитьЗначение(1,"Основной");

Форма.Закладки.ДобавитьЗначение(2,"ХодРаботы");

Форма.ИспользоватьСлой("Основной,Шапка",2);

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

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

Процедура ПриВыбореЗакладки(НомерЗакладки, ЗначениеЗакладки)

Если НомерЗакладки = 1 Тогда

Форма.ИспользоватьСлой("Основной");

Иначе

Форма.ИспользоватьСлой("ХодРаботы");

КонецЕсли;

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

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

Процедура ВводНаОсновании(ДокОснование)

//{{ВВОД_НА_ОСНОВАНИИ

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

Если ДокОснование.Вид() = "ЗаявкаМастеру" Тогда

Адрес = ДокОснование.Адрес;

Выдал = ДокОснование.Выдал;

Выдан = ДокОснование.Выдан;

Выдан2 = ДокОснование.Выдан2;

Выдан3 = ДокОснование.Выдан3;

Выдан4 = ДокОснование.Выдан4;

ЛицСчет = ДокОснование.ЛицСчетДок;

КонецЕсли;

//}}ВВОД_НА_ОСНОВАНИИ

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

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

процедура пересчет()

ЕдИзм=НАименование.ЕдИзм;

конецпроцедуры

Документ имеет вторую закладку Ход работы. Куда заносится отчёт о проделанной работе:

Рис. 24

Меню «Отчёты»

Рис. 25

1.  «Отчёт по жилому фонду» выглядит так:

Рис. 26

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

Печатная форма отчёта:

Рис. 27

2.  Отчёт «Реестр оплаты» имеет следующую форму:

Рис. 28

Сводная ведомость по оплате жильцов за коммунальные услуги выглядит так:

Рис. 29

3.  «Отчёт по заявкам» формирует данные по документу Отчёт мастера. Отчёт о проделанной работе ремонтных бригад по заявкам жильцов.

Рис. 30

4. 
Отчёт «Прейскурант» - прейскурант стоимости на внутренние сантехнические работы. Заполняется по данным справочника Сантехнические услуги.

Рис. 31

.4 Анализ результатов внедрения

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

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

Расчёт затрат на разработку:

Разработка:

Распределение трудоемкости по стадиям разработки приведено в таблице 6.

Таблица 6

Этап разработки

Описание содержания работ

Трудоёмкость (час.)

Постановка задачи

Предпроектное обследование. Разработка, согласование и утверждение технико-экономического обоснования.

10

Технический проект

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

39




Рабочий проект

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

85

Разработка рабочей документации и внедрение

Разработка программной документации. Сдача программы и программной документации

22




ИТОГО:

 

156 часов


Расчет коэффициентов:

1.      Коэффициент сложности задачи С - характеризует относительную сложность программы по отношению к типовой задаче, сложность которой принята равной единице (величина С лежит в пределах от 0,5 до 1). Так как данная конфигурация не является сложной и уступает успешным разработкам фирмы 1С, то сложность задачи берем 0,6.

2.      Коэффициент Р - увеличение объема работ за счет внесения изменений в алгоритм или программу по результатам уточнения постановок (меняется от 0,1 до 0,5). С учетом того, что производились небольшие доработки программы, возьмем коэффициент равный 0,2.

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

.        Коэффициент квалификации разработчика К определяется в зависимости от стажа работы и составляет: для работающих до двух лет - 0,8; от трех лет до пяти лет - 1,0; от пяти до восьми - 1,2; более восьми лет - 1,5. Поскольку стажа работы по специальности нет, то возьмем К= 0,8.

Расчет затрат предприятия:

С учётом коэффициентов заработной платы основная заработная плата разработчика программного продукта составит:

З/Посн = З/П * c * (p+1) * b * k = (5500 руб. * 0,6 * (0,2 + 1) * 1.2 * 0.8) = 3801,6 руб. - в месяц.

Поскольку дополнительная заработная плата в виде премии работнику за это время не выплачивалась, то суммарная заработная плата (ЗПсум) будет равна основной заработной плате:

З/Псум = З/Посн = 3801,6.

Страховые отчисления берутся в размере 34% от основной заработной платы:

Со = З/Посн * 34%,

Со = 3801,6руб. * 34% =1292,54 руб.

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

З/Побщ = (ЗПосн + страховые отчисления) * 156 / (8ч * 22дня) = (3801,6+ 1292,54) * 156 /( 8 * 22) = 4515,26 руб.

Содержание и эксплуатация вычислительной техники:

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

1.  Стоимость потребляемой электроэнергии

2.      Амортизационные отчисления

.        Техническое обслуживание, или затраты на ремонт

Стоимость 1 КВТ/час электроэнергии составляет 4 руб.

Один компьютер потребляет в среднем 300 Вт в час.

За год отчисления за электроэнергию, потребляемую одной ЭВМ, составляет:

ч. * 22дня * 12мес. * 0,3КВт/ч. * 4 руб. = 2534,4 руб.

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

Затраты на амортизацию = стоимость ПК/срок полезного использования.

Стоимость компьютера равна 20000руб. Количество лет полезного использования 4 года. Поскольку компьютер по-прежнему находится в эксплуатации, отчисления составят: 20000 руб. / 4 года = 5000руб.

Затраты на ремонт ПЭВМ составляют 5% от его стоимости:

/100*5 = 1000 руб.

Фвт - действительный фонд времени работы вычислительного комплекса.

Фвт = Фном - Фпроф.

Фном - номинальный фонд работы ПК.

Фпроф - годовые затраты времени на профилактические работы (5%).

Фном = 8 *22 *12 = 2112 часов в год.

Фпроф = 2112 /100*5 = 106 часов в год.

Фвт = 2112 - 106 = 2006 часов.

Стоимость 1 часа работы ПК = (стоимость электроэнергии в год + стоимость амортизации за год + затраты на ремонт за год) / Фвт.

Стоимость 1 часа работы ПК = (2534,4 + 5000 + 1000)/2006 = 4,3 руб.

Содержание и эксплуатация ПК = Стоимость 1 часа работы ПК * Число часов отладки = 4,3 * 156 = 670,8 руб.

Затраты на разработку программного продукта приведены в таблице 7.

Таблица 7

Наименование расходов

Затраты (руб.)

1

Основная заработная плата

3801,6 руб.

2

Страховые отчисления

1292,54 руб.

3

Содержание и эксплуатация вычислительного комплекса

670,8 руб.

ИТОГО

5764,94руб.

 

Расчет экономического эффекта от разработки и внедрения программного продукта

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

Для ведения расчетов введем следующие обозначения:

Т1 - время, затрачиваемое на операции до внедрения программного продукта;

Т2 - время, затрачиваемое на операции после внедрения программного продукта.

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

Т1 = 20мин. или 0,33часа.

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

Т2 = 5мин. или 0,08ч.

∆t = 20 - 5 = 15 мин. Или 0,25 часа.

3.      Рассчитаем стоимость выполняемых работ сотрудника притом, что в месяц он работает 8ч*22дня = 176 часов. Должностной оклад сотрудника 11000 рублей. Следовательно, стоимость 1 часа работы = 11000/176 = 62,5руб.

Страховые взносы, начисляемы на з/п = 11000*0,34/176 = 21,25 руб.

Определяем суммарные затраты работника с учетом страховых взносов = 62,5 + 21,25 = 83,75 руб в час - Рсумм.

4.      Расчет годовой экономии экономического эффекта и срока окупаемости.

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

∆Т = 0,25 * 10 * 22 * 11 = 605 часа.

Рассчитывается размер годовой экономии от внедрения программного продукта: ∆Т * Рсумм = 605 * 83,75= 50668,75руб.

Экономический эффект составляет величину, равную годовой экономии средств за вычетом затрат на разработку и реализацию программного продукта = 50668,75 - 5764,94 = 44903,81руб.

Расчет срока окупаемости = 5764,94/50668,75 = 0,11 года.

Вывод: разработанный и реализованный программный продукт окупится менее, чем за 2 месяца, что является приемлемым в качестве срока окупаемости затрат по автоматизации рабочего процесса.

Заключение

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

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

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

В ходе решения поставленной цели были решены следующие задачи:

рассмотрены теоретические аспекты АС, понятия и специфика;

рассмотрена методику разработки программ;

разработана программа для автоматизации, произведено тестирование и отладка;

произведено внедрение АС в работу фонда жилого дома;

проанализированы результаты внедрения.

На основании проведенного исследования были сделаны следующие выводы:

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

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

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

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

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

По результатам экономической оценки данная конфигурация может успешно эксплуатироваться в компаниях ЖКХ. Срок окупаемости затрат на автоматизацию приемлемый.

Литература

1. Нуралиев С.В., Федоров Б.Н., Филиппов В.С. 1С:Предприятие версия 7.7 /С.В. Нуралиев, Б.Н. Федоров, В.С. Филиппов// Конфигурирование и администрирование:- Москва - 2009г, С - 654.

. Официальный сайт компании 1С

. Байдаков С.Н. Нуралиев С.В. Введение в конфигурирование 1С:Бухгалтерия 7.7./ С.В. Байдаков, С.Н. Нуралиев/:- Москва - 2011г, C - 309.

. Брага В.В., Левкин А.А. Компьютерные технологии в бухгалтерском учете на базе автоматизированных систем. Практикум./ В.В. Брага, A.A Левкин/ М.: ЗАО «Финстатинформ», 2010.C - 220.

. Ивлиев М.К. Пошаговая методика обучения автоматизации бухгалтерского учета/ М.К. Ивлиев/М.: Интеллект-Сервис, 2010. C - 123

. Михайлов C., Черков А., Цветков И. 1С:Бухгалтерия 7.7. Решение типичных проблем пользователя/ С. Михайлов, А. Черков, И. Цветков/ БХВ-Петербург - 2008. C - 731.

. Сергеева К. 1С:Предприятие 7.7. Конфигурация «Бухгалтерия для бюджетных учреждений»./ К. Сергеева/ Фирма 1С - 2012. С - 731.

. Рязанцева Н., Рязанцев Д. 1С:Предприятие. Зарплата и кадры. Секреты работы/Н. Рязанцева, Д. Рязанцев/ СПб.: БХВ-Петербург - 2012. С - 304.

. Митичкин С. Практика программирования в среде 1С: Предприятие 7.7/ С. Митичкин / КомБук - 2010. С - 272.

. Фирма 1С 1С: Предприятие версия 7.7 Конфигурация “Торговля + склад” Редакция 9.2 Описание/ Фирма 1С - 2011. С - 607.

автоматизация программа тестирование

Приложение № 1

Документ “Ввод начального сальдо”

1.     Перем ЖрнНачисления;

2.      Функция ЗаголовокФормы()

.        Перем Заголовок, Название;

.        Заголовок= "Ввод начального сальдо";

.        Название = Заголовок+" №";

.        Если Выбран() = 1 Тогда

.        Если Проведен() = 1 Тогда

.        Заголовок = Заголовок + ". Проведен";

.        Иначе

.        Заголовок = Заголовок + ". Не проведен";

.        КонецЕсли;

.        Иначе

.        Заголовок = Заголовок + ". Новый";

.        КонецЕсли;

.        Форма.Заголовок(Заголовок);

.        Возврат Название;

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

.        //*******************************************************

.        Процедура Заполнить()

.        УдалитьСтроки();

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

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

.        СпрЛицсчет.НайтиПоКоду("Работа",0);//в группу "Рабочие записи"

.        Род=СпрЛицсчет.ТекущийЭлемент();

.        СпрЛицсчет.ИспользоватьРодителя(Род);

.        СпрЛицсчет.ВыбратьЭлементы();

.        Состояние("Заполнение документа лицевыми счетами...");

.        Пока СпрЛицсчет.ПолучитьЭлемент()=1 Цикл

.        Если СпрЛицсчет.ПометкаУдаления() =0 Тогда//все кроме помеченных на удаление

.        Если СпрЛицсчет.ЭтоГруппа()=0 Тогда

.        НоваяСтрока();

.        ЛицСчетДок=СпрЛицсчет.ТекущийЭлемент();

.        СпрЖильцов.ИспользоватьВладельца(СпрЛицсчет.ТекущийЭлемент());

.        //воборка только в подчиненном

.        СпрЖильцов.ВыбратьЭлементы();

.        Пока СпрЖильцов.ПолучитьЭлемент()=1 Цикл

.        Если СпрЖильцов.РодствОтношение = Перечисление.Родственники.Наниматель Тогда

.        квартиросъемщик = СпрЖильцов.Наименование;

.        КонецЕсли;

.        КонецЦикла;

.        Адрес = "улица: "+СпрЛицсчет.улица.Наименование + " дом: " + Строка(СпрЛицсчет.дом) + " " + СпрЛицсчет.корпус + " квартира: " + Строка(СпрЛицсчет.квартира);

.        КонецЕсли;

.        КонецЕсли;

.        КонецЦикла;

.        СпрЖильцов = 0;

.        СпрЛицсчет=0;

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

.        //*******************************************************

.        //удаление лишних строк

.        Процедура УдалитьЛишнее()

.        Если ВыбратьСтроки()=1 Тогда

.        ПолучитьСтроку();

.        Пока 1=1 Цикл

.        Если Сумма=0 Тогда //удаление строк с 0 суммами

.        УдалитьСтроку();

.        Иначе

.        Если ПолучитьСтроку()=0 Тогда

.        Прервать

.        КонецЕсли;

.        КонецЕсли;

.        КонецЦикла;

.        КонецЕсли;

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

.        //*******************************************************

.        // ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ

.        //******************************************************

.        Процедура ПриОткрытии()

.        Форма.ДатаДок.Доступность(0);

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

.        //*******************************************************

.        Процедура ПриЗаписи()

.        УдалитьЛишнее();

.        Автор=Константа.Пользователь;

.        АвтоВремяТекущее();

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

Приложение № 2

Документ “Заявка мастеру”

1.     Процедура ПриОткрытии()

2.      ДатаДок=ТекущаяДата();

.        ПриЗаписиПерепроводить(1);

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

.        //*********************************************

.        Процедура Печать()

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

.        Таблица.ИсходнаяТаблица("Таблица");

.        Таблица.Опции(0,0,,0);

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

.        Выдан=Выдан;

.        выдал=выдал;

.        времянач=времянач;

.        времякон=времякон;

.        статус=статус;

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

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

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

.        Задание = Наименование;

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

.        КонецЦикла;

.        Таблица.ВывестиСекцию("Шапка2");

.        Таблица.Показать("Заявка");

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

.        //*********************************************

.        Процедура пересчет()

.        ЕдИзм=Наименование.ЕдИзм;

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

.        //**********************************************

.        Процедура ПриВыбореСчета(Откуда)

.        Если Откуда=0 Тогда

.        //документ новый из журнала

.        Иначе

.        ЛицСчетДок = Откуда //новый документ из справочника

.        КонецЕсли;

.        Если ЛицСчетДок.Выбран()=1 Тогда

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

.        СпрЖильцов.ИспользоватьВладельца(ЛицСчетДок.ТекущийЭлемент());

.        //выборка только в подчиненном

.        Жильцы = 0;

.        СпрЖильцов.ВыбратьЭлементы();

.        Пока СпрЖильцов.ПолучитьЭлемент()=1 Цикл

.        Жильцы = Жильцы + 1;

.        Если СпрЖильцов.РодствОтношение = Перечисление.Родственники.Наниматель Тогда

.        квартиросъемщик = СпрЖильцов.Наименование;

.        КонецЕсли;

.        КонецЦикла;

.        Адрес = "улица: "+ЛицСчетДок.улица.Наименование + " дом: " + Строка(ЛицСчетДок.дом) + " " + ЛицСчетДок.корпус + " квартира: " + Строка(ЛицСчетДок.квартира);

.        СпрЖильцов =0;

.        КонецЕсли;

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

Приложение № 3

Документ “Начальное показание”

1.  Перем ЖрнНачисления,ТекстЗапросаДокументы;

2.      //**********************************************************

.        Процедура ПриВводеСчета()

.        Если ЛицСчетДок.Выбран() = 1 Тогда

.        Адрес = "улица: "+ ЛицСчетДок.улица.Наименование + " дом: " + Строка(ЛицСчетДок.Дом) + " " + ЛицСчетДок.корпус + " квартира: " + Строка(ЛицСчетДок.квартира);

.        Квартиросъемщик = ЛицСчетДок.квартиросъемщик;

.        КонецЕсли;

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

.        //**********************************************************

.        Функция ПолучитьПоказаниеСчетчика(ЛицевойСчет)

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

.        ТекущееЭ = "";

.        ПредыдущееЭ = "";

.        ТекущееГ = "";

.        ПредыдущееГ = "";

.        ТекущееХ = "";

.        ПредыдущееХ = "";

.        Если Запрос.Выполнить(ТекстЗапросаДокументы) = 0 Тогда

.        Предупреждение("Ошибка в выполнении запроса",3);

.        Запрос = 0;

.        Возврат 0;

.        Иначе //запрос выполнен

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

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

.        Дока = Запрос.ТекущийДокумент;

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

.        Пока Дока.ПолучитьСтроку() > 0 Цикл

.        Если ЛицевойСчет.Электросчетчик = 1 Тогда //"Электросчетчик"

.        Если ПустоеЗначение(Дока.ПредыдущееЭ) = 0 Тогда

.        ПредыдущееЭ = Дока.ПредыдущееЭ;

.        КонецЕсли;

.        Если ПустоеЗначение(Дока.ПоказанияСчетчикаЭ) = 0 Тогда

.        ТекущееЭ = Дока.ПоказанияСчетчикаЭ;

.        КонецЕсли;

.        КонецЕсли;

.        Если ЛицевойСчет.ВодосчетчикГ = 1 Тогда //ВодосчетчикГ

.        Если ПустоеЗначение(Дока.ПредыдущееГ) = 0 Тогда

.        ПредыдущееГ = Дока.ПредыдущееГ;

.        КонецЕсли;

.        Если ПустоеЗначение(Дока.ПоказаниеСчетчикаВодыГ) = 0 Тогда

.        ТекущееГ = Дока.ПоказаниеСчетчикаВодыГ;

.        КонецЕсли;

.        КонецЕсли;

.        Если ЛицевойСчет.ВодосчетчикХ = 1 Тогда //ВодосчетчикХ

.        Если ПустоеЗначение(Дока.ПредыдущееХ) = 0 Тогда

.        ПредыдущееХ = Дока.ПредыдущееХ;

.        КонецЕсли;

.        ТекущееХ = Дока.ПоказаниеСчетчикаВодыХ;

.        КонецЕсли;

.        КонецЕсли;

.        КонецЦикла;

.        КонецЦикла;

.        КонецЦикла;

.        КонецЕсли;

.        Запрос = 0;

.        Если ПустоеЗначение(ТекущееЭ) = 1 Тогда

.        ТекущееЭ = ПредыдущееЭ;

.        КонецЕсли;

.        Если ПустоеЗначение(ТекущееГ) = 1 Тогда

.        ТекущееГ = ПредыдущееГ;

.        КонецЕсли;

.        Если ПустоеЗначение(ТекущееХ) = 1 Тогда

.        ТекущееХ = ПредыдущееХ;

.        КонецЕсли;

.        СохранитьЗначение("ТекущееЭ",ТекущееЭ);

.        СохранитьЗначение("ТекущееГ",ТекущееГ);

.        СохранитьЗначение("ТекущееХ",ТекущееХ);

.        Возврат 1;

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

.        //**********************************************************

.        Процедура Заполнить()

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

.        "//{{ЗАПРОС(Заполнить)

.        |Обрабатывать НеПомеченныеНаУдаление;

.        |Без итогов;

.        |ЛицСчет = Справочник.Лицсчет.ТекущийЭлемент;

.        |ЛицСчетквартиросъемщик = Справочник.Лицсчет.квартиросъемщик;

.        |ЛицСчетУлица = Справочник.Лицсчет.улица;

.        |ЛицСчетДом = Справочник.Лицсчет.дом;

.        |ЛицСчетКв = Справочник.Лицсчет.квартира;

.        |ЛицСчетДатазакрытия = Справочник.Лицсчет.датазакрытия;

.        |Группировка ЛицСчет Без Групп Упорядочить по ЛицСчет.Код;

.        |Условие ((ПустоеЗначение(ЛицСчетДатазакрытия) = 1) ИЛИ (ЛицСчетДатазакрытия > НачМесяца(РабочаяДата())));

.        |"//}}ЗАПРОС;

.        Если (Улица.Выбран()=1) И (ПустоеЗначение(дом) = 0) Тогда //улица и дом выбрана

.        ТекстЗапроса01 = ТекстЗапроса + "Условие (ЛицСчетУлица = Улица);";

.        ТекстЗапроса01 = ТекстЗапроса01 + "Условие (ЛицСчетДом = дом);";

.        Если ПустоеЗначение(квартира) = 0 Тогда

90.                                                                                 ТекстЗапроса01 = ТекстЗапроса01 + "Условие (ЛицСчетКв = квартира);";

91.                                                                                 КонецЕсли;

92.    ИначеЕсли Улица.Выбран()=1 Тогда //улица выбрана

.        ТекстЗапроса01 = ТекстЗапроса + "Условие (ЛицСчетУлица = Улица);";

.        КонецЕсли;

.        Если ПустоеЗначение(ТекстЗапроса01) = 1 Тогда

.        ТекстЗапроса01 = ТекстЗапроса;

.        КонецЕсли;

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

.        Если Запрос.Выполнить(ТекстЗапроса01) = 0 Тогда

100.  Предупреждение("Ошибка в выполнении запроса",3);

101.  Запрос = 0;

.        Возврат;

103.  Иначе //запрос выполнен

104.  //УдалитьСтроки();

105.   Пока Запрос.Группировка() = 1 Цикл //группировака по лицевым счетам

106.  НоваяСтрока();

.        ЛицСчетДок = Запрос.ЛицСчет;

108.  Адрес = "улица: "+ Запрос.ЛицСчетУлица.Наименование + " дом: " + Строка(Запрос.ЛицСчетДом) + " " + Запрос.ЛицСчет.корпус + " квартира: " + Строка(Запрос.ЛицСчет.квартира);

109.  Квартиросъемщик = Запрос.ЛицСчетквартиросъемщик;

.        Если ПолучитьПоказаниеСчетчика(Запрос.ЛицСчет) = 1 Тогда

.        Электросчетчик = ВосстановитьЗначение("ТекущееЭ");

.        ВодоСчетчикГ = ВосстановитьЗначение("ТекущееГ");

.        ВодоСчетчикХ = ВосстановитьЗначение("ТекущееХ");

.        Иначе

.        Электросчетчик = "";

.        ВодоСчетчикГ = "";

.        ВодоСчетчикХ = "";

.        КонецЕсли;

.        КонецЦикла;

.        КонецЕсли;

.        Запрос = 0;

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

.        //******************************************************

.        // ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ

.        //******************************************************

.        Процедура ПриОткрытии()

.        Форма.ДатаДок.Доступность(0);

.        Форма.Улица.ВыборГруппы(1);//в графе "Улица" выбор с учетом групп

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

.        //******************************************************

.        Процедура ПриЗаписи()

.        //если документ введен в прошлом периоде

.        Если ДатаДок < ЖрнНачисления.НачалоТекущегоПериода() Тогда

.        Предупреждение(" Документ прошлого месяца!

.        |Перезапись и проводка невозможна!",3);

.        СтатусВозврата(0);

.        Возврат;

.        КонецЕсли;

.        Автор = Константа.Пользователь;

.        АвтоВремяПослеТА();

.        ЖрнНачисления = 0;

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

.        //******************************************************

.        Процедура ВводНового()

.        ДатаДок = ЖрнНачисления.НачалоТекущегоПериода();

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

.        //******************************************************

.        Процедура ПриЗакрытии()

.        //ОткрытьФорму("Обработка.ПровестиНачальныеПоказания");

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

.        //*******************************************************

.        ЖрнНачисления = СоздатьОбъект("ЖурналРасчетов.Начисления");

.        ДатаНачала = '01.01.2000';

.        ДатаКонца = ЖрнНачисления.НачалоТекущегоПериода()-1;//до начала расчетного месяца

.        ТекстЗапросаДокументы =

.        "//{{ЗАПРОС(ЗаполнитьДокументы)

.        |Обрабатывать НеПомеченныеНаУдаление;

.        |С (ДатаНачала) По (ДатаКонца);

.        |ЛицСчет = Документ.Оплата.ЛицСчетДок;

.        |ТекущийДокумент = Документ.Оплата.ТекущийДокумент;

.        |Группировка ЛицСчет Без Групп Упорядочить по ЛицСчет.Код;

.        |Группировка ТекущийДокумент;

.        |Условие (ЛицСчет = ЛицевойСчет);

164.  |"//}}ЗАПРОС;

Приложение № 4

Документ “Оплата”

1.     Перем ЖрнНачисления,Новый;

2.      //*******************************************************

.        Функция ПолучитьПоследниеПоказания(ЛицевойСчет,Счетчик)

.        Показание = 0;

.        Рег = СоздатьОбъект("Регистр.ПоказанияСчетчиков");

.        Рег.УстановитьФильтр(ЛицевойСчет);

.        Рег.ОбратныйПорядок(1);

8.  Рег.ВыбратьДвижения(,ЖрнНачисления.КонецТекущегоПериода());

9.     Послед = 0;

10.    Пока Рег.ПолучитьДвижение() > 0 Цикл

.        Если Счетчик = "Электросчетчик" Тогда

.        Показание = Рег.ПоказаниеЭлСчетчика;

.        ИначеЕсли Счетчик = "ВодосчетчикХ" Тогда

.        Показание = Рег.ПоказаниеСчетчикаХ;

.        ИначеЕсли Счетчик = "ВодосчетчикГ" Тогда

.        Показание = Рег.ПоказаниеСчетчикаГ;

.        КонецЕсли;

.        Прервать;

.        КонецЦикла;

.        Рег = 0;

.        Возврат Показание;

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

.        //*******************************************************

.        // ЗаголовокФормы()

.        Функция ЗаголовокФормы()

.        Перем Заголовок, Название;

.        Заголовок= "Оплата начисленных расчетов";

.        Название = Заголовок+" №";

.        Если Выбран() = 1 Тогда

.        Если Проведен() = 1 Тогда

.        Заголовок = Заголовок + ". Проведен";

.        Иначе

.        Заголовок = Заголовок + ". Не проведен";

.        КонецЕсли;

.        Иначе

.        Заголовок = Заголовок + ". Новый";

.        КонецЕсли;

.        Форма.Заголовок(Заголовок);

.        Возврат Название;

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

.        //ЗаголовокФормы()

.        //*******************************************************

.        Процедура ПриВыбореСчета(Откуда)

.        Если Откуда = 0 Тогда

.        Иначе

.        НоваяСтрока();

.        ЛицСчетДок = Откуда;

.        КонецЕсли;

.        ВидОплаты = Перечисление.ВидОплат.Касса;

.        Если ЛицСчетДок.Выбран()=1 Тогда

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

.        СпрЖильцов.ИспользоватьВладельца(ЛицСчетДок.ТекущийЭлемент()); //воборка только в подчиненном

.        СпрЖильцов.ВыбратьЭлементы();

.        Пока СпрЖильцов.ПолучитьЭлемент()=1 Цикл

.        Если СпрЖильцов.РодствОтношение = Перечисление.Родственники.Наниматель Тогда

.        квартиросъемщик = СпрЖильцов.Наименование;

.        КонецЕсли;

.        КонецЦикла;

.        Адрес = "улица: "+ЛицСчетДок.улица.Наименование + " дом: " + Строка(ЛицСчетДок.дом) + " " + ЛицСчетДок.корпус + " квартира: " + Строка(ЛицСчетДок.квартира);

.        СпрЖильцов =0;

.        Если ПустоеЗначение(ЛицСчетДок.Электросчетчик) = 0 Тогда

.        ПредыдущееЭ = Число(ПолучитьПоследниеПоказания(ЛицСчетДок.ТекущийЭлемент(),"Электросчетчик"));

.        КонецЕсли;

.        Если ПустоеЗначение(ЛицСчетДок.ВодосчетчикХ) = 0 Тогда

.        ПредыдущееХ = Число(ПолучитьПоследниеПоказания(ЛицСчетДок.ТекущийЭлемент(),"ВодосчетчикХ"));

.        КонецЕсли;

.        Если ПустоеЗначение(ЛицСчетДок.ВодосчетчикГ) = 0 Тогда

.        ПредыдущееГ = Число(ПолучитьПоследниеПоказания(ЛицСчетДок.ТекущийЭлемент(),"ВодосчетчикГ"));

.        КонецЕсли;

.        КонецЕсли;

.        Форма.Обновить();

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

.        //*******************************************************

.        Процедура ВывестиКвиток()

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

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

.        Таблица.ИсходнаяТаблица("Таблица");

.        Таблица.Опции(0,0);

.        Д=Формат(датадок,"ДММММГГГГ");

.        Адрес=Адрес;

.        лс=ЛицСчетДок;

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

.        Квартиросъемщик=Квартиросъемщик;

.        Организация=Константа.Организация;

.        ЮрАдрес=Константа.ЮрАдрес;

.        ИННОрганизации=Константа.ИННОрганизации;

.        Телефон=Константа.Телефон;

.        площадь=ЛицСчетДок.жилаяплощадь;

.        Если ЛицСчетДок.Выбран()=1 Тогда

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

.         СпрЖильцов.ИспользоватьВладельца(ЛицСчетДок.ТекущийЭлемент());//выборка только в подчиненном

.        Жильцы = 0;

.        СпрЖильцов.ВыбратьЭлементы();

.        Пока СпрЖильцов.ПолучитьЭлемент()=1 Цикл

.        Жильцы = Жильцы + 1;

.        КонецЦикла;

.        КонецЕсли;

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

.        СуммаОплаты=Константа.ТарифЭлектро*площадь;

.        ПоказаниеСч = ПоказанияСчетчикаЭ;

.        СуммаОплаты=СуммаОплаты;

.        дд= Формат(датадок,"ДММММ");

.        Таблица.ВывестиСекцию("шапка2");

.        тариф=Константа.ТарифЭлектро;

.        площадь=ЛицСчетДок.жилаяплощадь;

.        Если жильцы=1 тогда

.        норма=константа.НормаКвтЧ1;

.        иначеесли жильцы=2 тогда

.        норма=константа.НормаКвтЧ2;

.        иначеесли жильцы=3 тогда

.        норма=константа.НормаКвтЧ3;

.        иначеесли жильцы=4 тогда

.        норма=константа.НормаКвтЧ4;

.        иначеесли жильцы=5 тогда

.        норма=константа.НормаКвтЧ5;

.        КонецЕсли;

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

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

.        Таблица.Показать("Таблица");

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

.        //*******************************************************

.        // ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ

.        //*******************************************************

.        Процедура ПриОткрытии()

.        Если Новый = 1 Тогда

.        Форма.ДатаДок.Доступность(1);

.        Иначе

.        Форма.ДатаДок.Доступность(0);

.        конецЕсли;

.        СписокПараметров = Форма.Параметр;

.        Если ТипЗначенияСтр(СписокПараметров)="СписокЗначений"

.        Тогда

.        Счет = СписокПараметров.Получить("Хозяин");

.        Если ПустоеЗначение(Счет.Электросчетчик) = 0 Тогда

.        Форма.Электросчетчик.Видимость(1);

.        КонецЕсли;

.        Если ПустоеЗначение(Счет.ВодосчетчикХ) = 0 Тогда

.        Форма.Вода_холодная.Видимость(1);

.        КонецЕсли;

.        Если ПустоеЗначение(Счет.ВодосчетчикГ) = 0 Тогда

.        Форма.Вода_горячая.Видимость(1);

.        КонецЕсли;

.        Иначе

.        Форма.Электросчетчик.Видимость(1);

.        Форма.Вода_холодная.Видимость(1);

.        Форма.Вода_горячая.Видимость(1);

.        КонецЕсли;

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

.        //*******************************************************

.        Процедура ПриЗаписи()

.        //если документ введен в прошлом периоде

.        Если ДатаДок < ЖрнНачисления.НачалоТекущегоПериода() Тогда

.        Предупреждение(" Документ прошлого месяца!

.        |Перезапись и проводка невозможна!",3);

.        СтатусВозврата(0);

.        Возврат;

.        КонецЕсли;

.        ВыбратьСтроки();//открыть перебор по документу

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

.        Если (ПустоеЗначение(ПредыдущееЭ) = 0) И (ПустоеЗначение(ПоказанияСчетчикаЭ) = 1) Тогда

.        ПоказанияСчетчикаЭ = ПредыдущееЭ;

.        КонецЕсли;

.        Если (ПустоеЗначение(ПредыдущееХ) = 0) И (ПустоеЗначение(ПоказаниеСчетчикаВодыХ) = 1) Тогда

.        ПоказаниеСчетчикаВодыХ = ПредыдущееХ;

.        КонецЕсли;

.        Если (ПустоеЗначение(ПредыдущееГ) = 0) И (ПустоеЗначение(ПоказаниеСчетчикаВодыГ) = 1) Тогда

.        ПоказаниеСчетчикаВодыГ = ПредыдущееГ;

.        КонецЕсли;

.        КонецЦикла;

.        Автор = Константа.Пользователь;

.        АвтоВремяПослеТА();

.        ЖрнНачисления = 0;

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

.        //*******************************************************

.        Процедура ВводНового()

.        СписокПараметров = Форма.Параметр;

.        Если ТипЗначенияСтр(СписокПараметров)="СписокЗначений"

.        Тогда

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

.        КонецЕсли;

.        Если ТипЗначенияСтр(Форма.Параметр) = "Справочник" Тогда

.        ПриВыбореСчета(СписокПараметров);

.        КонецЕсли;

.        ДатаДок = РабочаяДата();

.        Новый = 1;

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

.        ////////////////////////////////////////////////////////////

.        //********************************************************

.        ////////////////////////////////////////////////////////////

.        ЖрнНачисления = СоздатьОбъект("ЖурналРасчетов.Начисления");

.        Новый = 0;

Приложение № 5

Документ “Отчёт мастера”

1.      Процедура ПриОткрытии()

2.      ПриЗаписиПерепроводить(1);

.        // Инициализируем

.        Форма.ИспользоватьЗакладки(1);

.        Форма.Закладки.ДобавитьЗначение(1,"Основной");

.        Форма.Закладки.ДобавитьЗначение(2,"ХодРаботы");

.        Форма.ИспользоватьСлой("Основной,Шапка",2);

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

.        //******************************************************

.        Процедура ПриВыбореЗакладки(НомерЗакладки, ЗначениеЗакладки)

.        Если НомерЗакладки = 1 Тогда

.        Форма.ИспользоватьСлой("Основной");

.        Иначе

.        Форма.ИспользоватьСлой("ХодРаботы");

.        КонецЕсли;

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

.        //******************************************************

.        Процедура ВводНаОсновании(ДокОснование)

.        //{{ВВОД_НА_ОСНОВАНИИ

.        //Данный фрагмент построен конструктором.

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

.        Если ДокОснование.Вид() = "ЗаявкаМастеру" Тогда

.        Адрес = ДокОснование.Адрес;

.        Выдал = ДокОснование.Выдал;

.        Выдан = ДокОснование.Выдан;

.        Выдан2 = ДокОснование.Выдан2;

.        Выдан3 = ДокОснование.Выдан3;

.        Выдан4 = ДокОснование.Выдан4;

.        ЛицСчет = ДокОснование.ЛицСчетДок;

.        КонецЕсли;

.        //}}ВВОД_НА_ОСНОВАНИИ

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

.        //******************************************************

.        процедура пересчет()

.        ЕдИзм=НАименование.ЕдИзм;

.        конецпроцедуры

Приложение № 6 - отчёт “Жилой фонд”

1.      Перем ЖрнНачисления;

2.      Перем ДатаАктуальности;

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

.        ТекстЗапросаЖФ =

.        "//{{ЗАПРОС(ЖилойФонд)

.        |Обрабатывать НеПомеченныеНаУдаление;

.        |ЛицСчет = Справочник.Лицсчет.ТекущийЭлемент;

.        |ЛицСчетУлица = Справочник.Лицсчет.улица;

.        |ЛицСчетДом = Справочник.Лицсчет.дом;

.        |ЛицСчетКорпус = Справочник.Лицсчет.корпус;

.        |ЛицСчетКвартира = Справочник.Лицсчет.квартира;

.        |ЛицСчетДатазакрытия = Справочник.Лицсчет.датазакрытия; 

.        |ЛицСчетКомнат = Справочник.Лицсчет.количествокомнат;

.        |ЛицСчетОбПлощадь = Справочник.Лицсчет.общаяплощадь;

.        |ЛицСчетЖилая = Справочник.Лицсчет.жилаяплощадь;

.        |ЛицСчетДополнительная = Справочник.Лицсчет.дополнительнаяплощадь;

.        |ЛицСчетСобственность = Справочник.Лицсчет.типсобственности;

.        |Условие (ЛицСчет.Родитель.Код <>""Архив"");

.        |Группировка ЛицСчетУлица Без Групп;

.        |Группировка ЛицСчетДом Без Групп;

.        |Группировка ЛицСчетКорпус Без Групп;

.        |Группировка ЛицСчетКвартира Без Групп;

.        |Группировка ЛицСчет Без Групп;

.        |"//}}ЗАПРОС;

.        ЗапросЖильцы = СоздатьОбъект("Запрос");

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

.        ТекстЗапросаЖФ01 = ТекстЗапросаЖФ;

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

.        Если ЗапросЖФ.Выполнить(ТекстЗапросаЖФ01) = 0 Тогда

.        Состояние("Ошибка запроса");

.        ЗапросЖФ = 0;

.        Возврат;

.        Иначе

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

.        Таблица.ИсходнаяТаблица("Свод");

.        Организация=Константа.Организация;

.        ЮрАдрес=Константа.ЮрАдрес;

.        Таблица.ВывестиСекцию("Шапка|Жилье");

.        пп = 0;

.        ДомовИтого = 0;

.        КвартирИтого = 0;

.        СчетовИтого = 0;

.        КомнатИтого = 0;

.        ОбщаяИтого = 0;

.        ПрописаноИтого = 0;

.        Льгота1Итого = 0;

.        Льгота2Итого = 0;

.        НормаИтого = 0;

.        СверхНормыИтого = 0;

.        Пока ЗапросЖФ.Группировка(1) = 1 Цикл //группировка по улицам

.        ДомовУлица = 0;

.        КвартирУлица = 0;

.        СчетовУлица = 0;

.        КомнатУлица = 0;

.        ОбщаяУлица = 0;

.        ПрописаноУлица = 0;

.        Льгота1Улица = 0;

.        Льгота2Улица = 0;

.        НормаУлица = 0;

.        СверхНормыУлица = 0;

.        пп = пп + 1;

.        Пока ЗапросЖФ.Группировка(2) = 1 Цикл //группировка по домам

.        КвартирДом = 0;

.        СчетовДом = 0;

.        КомнатДом = 0;

.        ОбщаяДом = 0;

.        ПрописаноДом = 0;

.        Льгота1Дом = 0;

.        Льгота2Дом = 0;

.        НормаДом = 0;

.        СверхНормыДом = 0;

.        ДомовУлица = ДомовУлица + 1;

.        ДомовИтого = ДомовИтого + 1;

.        Пока ЗапросЖФ.Группировка(3) = 1 Цикл //группировка по корпусам

.        Пока ЗапросЖФ.Группировка(4) = 1 Цикл //группировка по квартирам

.        ПрописаноКвартира = 0;

.        Льгота1Квартира = 0;

.        Льгота2Квартира = 0;

.        НормаКвартира = 0;

.        СверхНормыКвартира = 0;

.        КвартирДом = КвартирДом + 1;

.        КвартирУлица = КвартирУлица + 1;

.        КвартирИтого = КвартирИтого + 1;

.        КомнатДом = КомнатДом + ЗапросЖФ.ЛицСчетКомнат;

.        КомнатУлица = КомнатУлица + ЗапросЖФ.ЛицСчетКомнат;

.        КомнатИтого = КомнатИтого + ЗапросЖФ.ЛицСчетКомнат;

.        Пока ЗапросЖФ.Группировка(5) = 1 Цикл //группировка по счетам

.        Счет = ЗапросЖФ.ЛицСчет;

.        СчетовДом = СчетовДом + 1;

.        СчетовУлица = СчетовУлица + 1;

.        СчетовИтого = СчетовИтого + 1;

.        Прописано = КолВоПрописанныхИБезРегистрации(ЗапросЖФ.ЛицСчет);

.        ПрописаноКвартира = ПрописаноКвартира + Прописано;

.        ПрописаноДом = ПрописаноДом + ПрописаноКвартира;

.        ПрописаноУлица = ПрописаноУлица + ПрописаноКвартира;

.        ПрописаноИтого = ПрописаноИтого + ПрописаноКвартира;

.        СпрЖильцов.ИспользоватьВладельца(ЗапросЖФ.ЛицСчет);//выборка только в одном счете

.        СпрЖильцов.ВыбратьЭлементы();

.        Если Прописано = 1 Тогда //если количество комнат в квартире =1

.        Если ЗапросЖФ.ЛицСчетКомнат = 1 Тогда //если в 1 комнате прописан 1 человек то свя площадь по соц норме

.        Норма = ЗапросЖФ.ЛицСчетОбПлощадь;

.        Иначе //комнат больше 1 для 1 человека

.        Норма = Константа.Норма1.Получить(ДатаАктуальности);//получили

.        количество площади по соц норме для 1 человека

.        КонецЕсли;

.        ИначеЕсли Прописано > 1 Тогда //количество прописанных более 1

.        Если Прописано = 2 Тогда

.        Норма = Константа.Норма2.Получить(ДатаАктуальности);//получили количество площади по соц норме для 2 человек

.        Иначе

.        Норма = Константа.Норма3.Получить(ДатаАктуальности);//получили количество площади по соц норме для 3 и более человек

.        КонецЕсли;

.        Иначе //прописано 0

.        Норма = 0;

.        КонецЕсли;

.        Льгота1Дом = Льгота1Дом + Льгота1Квартира;

.        Льгота1Улица = Льгота1Улица + Льгота1Квартира;

.        Льгота1Итого = Льгота1Итого + Льгота1Квартира;

.        Льгота2Дом = Льгота2Дом + Льгота2Квартира;

.        Льгота2Улица = Льгота2Улица + Льгота2Квартира;

.        Льгота2Итого = Льгота2Итого + Льгота2Квартира;

.        НормаЖилья = Мин((Норма * Прописано),ЗапросЖФ.ЛицСчетОбПлощадь);

.        НормаКвартира = НормаКвартира + НормаЖилья;

.        НормаДом = НормаДом + НормаКвартира;

.        НормаУлица = НормаУлица + НормаКвартира;

.        НормаИтого = НормаИтого + НормаКвартира;

.        НормаСверх = Макс((ЗапросЖФ.ЛицСчетОбПлощадь - НормаЖилья),0);

.        СверхНормыКвартира = СверхНормыКвартира + НормаСверх;

.        СверхНормыДом = СверхНормыДом + СверхНормыКвартира;

.        СверхНормыУлица = СверхНормыУлица + СверхНормыКвартира;

.        СверхНормыИтого = СверхНормыИтого + СверхНормыКвартира;

.        ОбщаяДом = ОбщаяДом + ЗапросЖФ.ЛицСчетОбПлощадь;

.        ОбщаяУлица = ОбщаяУлица + ЗапросЖФ.ЛицСчетОбПлощадь;

.        ОбщаяИтого = ОбщаяИтого + ЗапросЖФ.ЛицСчетОбПлощадь;

.        КонецЦикла;// Группировка по счетам

.        Если ПустоеЗначение(ПоказК) = 0 Тогда

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

.        КонецЕсли;

.        КонецЦикла;// Группировка по квартирам

.        КонецЦикла;// Группировка по корпусам

.        Если ПустоеЗначение(ПоказД) = 0 Тогда

.        Таблица.ВывестиСекцию("СтрокаДом|Жилье");

.        КонецЕсли;

.        КонецЦикла;// Группировка по домам

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

.        КонецЦикла;// Группировка по улицам

.        Таблица.ВывестиСекцию("Подвал|Жилье");

.        Таблица.ТолькоПросмотр(1);

.        Таблица.Опции(0,0,10,0,"_ПАРАМЕТРЫ_ПЕЧАТИ_СЖ_");

.        Таблица.ПараметрыСтраницы(2,,,0,0,0,0,0,0,1,1,);

.        Таблица.Показать("Свод по жилому фонду за " + ЖрнНачисления.ОписательПериода(ДатаАктуальности));

.        Таблица = 0;

.        КонецЕсли;

.        СпрЖильцов = 0;

.        ЗапросЖФ = 0;

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

.        //******************************************************

.        // ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ

.        //******************************************************

.        Процедура ПриОткрытии()

.        Форма.кнНазад.Видимость(1);

.        Форма.кнВперед.Видимость(1);

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

.        //*******************************************************

.        Процедура ПриЗакрытии()

.        ЖрнНачисления = 0;

.        ДатаАктуальности = 0;

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

.        //******************************************************

.        ЖрнНачисления = СоздатьОбъект("ЖурналРасчетов.Начисления");

.        ДатаАктуальности = ЖрнНачисления.НачалоТекущегоПериода();

Приложение № 7

Отчёт “Отчёт по заявкам”

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

2.      Если ПустоеЗначение(НачДата) = 1 Тогда

.        Сообщить("Укажите начальную дату формирования отчета!");

.        Возврат;

.        КонецЕсли;

.        Если ПустоеЗначение(кондата) = 1 Тогда

.        Сообщить("Укажите конечную дату формирования отчета!");

.        Возврат;

.        КонецЕсли;

.        Если кондата < начдата Тогда

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

.        Возврат;

.        КонецЕсли;

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

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

.        |Период с НачДата по КонДата;

.        |ОбрабатыватьДокументы Проведенные;

.        |Д=Документ.ОтчётМастера.ДатаДок;

.        |Адрес=Документ.ОтчётМастера.Адрес;

.        |ВремяНач=Документ.ОтчётМастера.ВремяНач;

.        |ВремяКон=Документ.ОтчётМастера.ВремяКон;

.        |выдал=Документ.ОтчётМастера.Выдал;

.        |выдан=Документ.ОтчётМастера.Выдан;

.        |выдан2=Документ.ОтчётМастера.Выдан2;

.        |выдан3=Документ.ОтчётМастера.Выдан3;

.        |выдан4=Документ.ОтчётМастера.Выдан4;

.        |ход=Документ.ОтчётМастера.текст;

.        |Документы=Документ.ОтчётМастера.ТекущийДокумент;

.        |Группировка Документы;

.        |"//}}ЗАПРОС

.        ;

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

.        Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

.        Возврат;

.        КонецЕсли;

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

.        Таблица.ИсходнаяТаблица("Таблица");

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

.        Таблица.Опции(0,0,Таблица.ВысотаТаблицы(),0);

.        пп=0;

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

.        Д=Запрос.Д;

.        Адрес = Запрос.Адрес;

.        ВремяНач = Запрос.ВремяНач;

.        ВремяКон = Запрос.ВремяКон;

.        выдал = Запрос.выдал;

.        выдан = Запрос.выдан;

.        выдан2 = Запрос.выдан2;

.        выдан3 = Запрос.выдан3;

.        выдан4 = Запрос.выдан4;

.        ход=Запрос.ход;

.        //наим=Запрос.наим;

.        пп=пп+1;

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

.        КонецЦикла;

.        Запрос.Документы.ВыбратьСтроки();

.        Пока Запрос.Документы.ПолучитьСтроку() = 1 Цикл

.        наим = наим + Запрос.Документы.Наименование;

.        Сообщить(Запрос.Документы.Наименовани);

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

.        КонецЦикла;

.        Таблица.ПараметрыСтраницы(2);

.        Таблица.ТолькоПросмотр(1);

.        Таблица.Показать("Взаиморасчеты с контрагентами.Приход","");

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

Приложение № 8

Отчёт “Прейскурант”

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

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

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

.        Таблица.ИсходнаяТаблица("Таблица");

.        Организация=Константа.Организация;

.        ЮрАдрес=Константа.ЮрАдрес;

.        Дат=ТекущаяДата();

.        ГенДир=Константа.ГенДир;

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

.        Спр.ВыбратьЭлементы();

.        ном=0;

.        Пока Спр.ПолучитьЭлемент()=1 Цикл

.        Если Спр.ЭтоГруппа()=1 Тогда

.        Наименование=Спр.Наименование;

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

.        Иначе

.        ном=ном+1;

.        пп=ном;

.        Наименование=Спр.Наименование;

.        ЕдИзм=Спр.ЕдИзм;

.        Цена=Спр.Тариф;

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

.        КонецЕсли;

.        КонецЦикла;

.        ГлЭкономист=Константа.ГлЭкономист;

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

.        Таблица.Опции(0,0,,0);

.        Таблица.Показать("Прейскурант");

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

Приложение № 9

Отчёт “Реестр оплаты”

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

2.      //формируем запрос

.        //проверка данных

.        Если ПустоеЗначение(ДатаНачала) = 1 Тогда

.        ДатаНачала = РабочаяДата()

.        КонецЕсли;

.        Если ПустоеЗначение(ДатаОкончания) = 1 Тогда

.        ДатаОкончания = РабочаяДата()

.        КонецЕсли;

.        Если ВыбВидОплат.Выбран() = 0 Тогда

.        Предупреждение("Выберите вид оплаты");

.        Возврат;

.        КонецЕсли;

.        ЗапросОтборСчетовОплаченных = СоздатьОбъект("Запрос");

.        ТекстЗапроса = "//{{ЗАПРОС(Сформировать)

.        |Период с ДатаНачала по ДатаОкончания;

.        |ОбрабатыватьДокументы Проведенные;

.        |ДокОплаты = Документ.Оплата.ТекущийДокумент;

.        |СуммаОплаты = Документ.Оплата.СуммаОплаты;

.        |СчетЛицевой = Документ.Оплата.ЛицСчетДок;

.        |СчетАдрес = Документ.Оплата.Адрес;

.        |СчетКвартиросъемщик = Документ.Оплата.Квартиросъемщик;

.        |ВидОплаты = Документ.Оплата.ВидОплаты;

.        |Группировка СчетЛицевой Без Групп;

.        |Группировка ДокОплаты;

.        |Функция Итого = Сумма(СуммаОплаты);

.        |Условие (ВидОплаты = ВыбВидОплат);

.        |"//}}ЗАПРОС

.        ;

.        // Если ошибка в запросе, то выход из процедуры

.        Если ЗапросОтборСчетовОплаченных.Выполнить(ТекстЗапроса) = 0 Тогда

.        ЗапросОтборСчетовОплаченных = 0;

.        Сообщить("Ошибка выполнения запроса");

.        Возврат;

.        Иначе //запрос выполнен

.        //ЗапросОтборСчетовОплаченных.Выгрузить(ТаблЗнач);

.        Если ЗапросОтборСчетовОплаченных.Итого = 0 Тогда

.        Предупреждение ("Нет данных за выбранный период по выбранному виду оплаты");

.        ЗапросОтборСчетовОплаченных = 0;

.        Возврат;

.        КонецЕсли;

.        // описание таблицы

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

.        Таблица.ИсходнаяТаблица("Таблица");

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

.        ИтогиСтрокой = Формат(ЗапросОтборСчетовОплаченных.Итого,"ЧПДС");

.        Итого = Формат(ЗапросОтборСчетовОплаченных.Итого,"Ч10.2");

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

.        Пока ЗапросОтборСчетовОплаченных.Группировка(1)=1 Цикл //по лицевым счетам

.        Пока ЗапросОтборСчетовОплаченных.Группировка(2)=1 Цикл //по документам лицевого счета

.        ЛицевойСчет = ЗапросОтборСчетовОплаченных.СчетЛицевой;

.        Адрес = ЗапросОтборСчетовОплаченных.СчетАдрес;

.        Квартиросъемщик = ЗапросОтборСчетовОплаченных.СчетКвартиросъемщик;

.        СуммаОплаты = Формат(ЗапросОтборСчетовОплаченных.Итого,"Ч10.2");

.        //ЗапросОтборСчетовОплаченных.СчетЛицевой

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

.        КонецЦикла;//конец

.        КонецЦикла;//конец Группировкапо лицевым счетам

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

.        ////показ таблицы

.        Таблица.ТолькоПросмотр(1);

.        Таблица.ПовторятьПриПечатиСтроки(9,9);

.         Таблица.Опции(0,0,0,0,"_ПАРАМЕТРЫ_ПЕЧАТИ_СВОДНАЯ_ВЕДОМОСТЬ_");

.        Таблица.ПараметрыСтраницы(1,,,10,0,0,0,0,0,1,1,);

.        Таблица.Показать("Сводная ведомость платежей за "+ ДатаНачала);

.        Таблица = 0;

.        КонецЕсли;

.        ЗапросОтборСчетовОплаченных = 0;

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

.        //*******************************************************

.        // ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ

.        //******************************************************

.        Процедура ПриОткрытии()

.        ДатаНачала = РабочаяДата();

.        ДатаОкончания = РабочаяДата();

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

.        //*******************************************************

.        Процедура ПриЗакрытии()

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

.        //******************************************************

.        Процедура ОбработкаЯчейкиТаблицы(Расшифровка,ФлагОбработки)

.        Если ТипЗначенияСтр(Расшифровка)="Справочник" Тогда

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

.        Если СпрЛицсчет.НайтиПоКоду(Расшифровка.Код,0)=1 Тогда

.        Параметр = СпрЛицсчет.ТекущийЭлемент();

.        ОткрытьФорму("Справочник.Лицсчет",Параметр);

.        КонецЕсли;

.        СпрЛицсчет = 0;

.        ИначеЕсли ТипЗначенияСтр(Расшифровка)="Документ" Тогда

.        ФлагОбработки = 1;

.        КонецЕсли;

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

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!