Дипломный проект
Пояснительная записка: 121 с, 18 рис., 22 табл., 14 источников, одно приложение.
Информационная система, информационные ресурсы, моделирование объекта, фактографические системы, информационно-управляющие системы, кодирование информации.
В данном дипломном проекте была решена задача по автоматизации учета основных средств на предприятии ООО "Алеф". В качестве основы для автоматизации был выбран и сконфигурирован под нужды предприятия комплекс УСН 1С Бухгалтерия. Второй частью создания АРМ бухгалтера была разработка отдельного программного блока для формирования унифицированных форм учета основных средств предприятия. Программный блок был разработан в СУБД MS Access, что позволяет автономно быстро и легко формировать унифицированные формы документов. Основными плюсами разработанного модуля является его относительная автономность, низкая экономическая затратность, легкость с точки зрения технологической установки, а также широкие возможности по дальнейшему усовершенствованию. Проведена предварительная работа по подбору технических средств реализации блока, проанализирована и доказана его экономическая окупаемость. Продумана дальнейшая оптимизация бухгалтерского документооборота и учета на предприятии "Алеф" - добавление полной его интеграции с экспортными данными из программного комплекса УСН 1С Бухгалтерии 7.7.
Оглавление
Реферат
Введение
1. Аналитическая часть
1.1 Организационно-экономическая характеристика предметной области. Краткое описание компании ООО "Алеф", анализ административной и хозяйственной деятельности предприятия
1.1.1 Организационная структура объекта управления
1.1.2 Функциональная характеристика объекта управления
1.1.3 Экономическая характеристика предметной области
1.2 Экономическая сущность комплекса экономических информационных задач. Реализация экономической модели предприятия с помощью учетной системы 1С УCН
1.2.1 Общие сведения о задачах. Описание имеющейся учетной схемы предприятия в рамках УСН 1С
1.2.2 Обоснование выбора задач, входящих в комплекс. Преимущества основной учетной системы 1С УСН, а также недостающие звенья автоматизированного учета
1.2.3 Способы решения задачи. Общая модель подбора решения
1.3 Обоснование проектных решений по автоматизированному решению экономико-информационных задач. Основные моменты автоматизации учета деятельности предприятия. Решение наших задач с точки зрения автоматизации учета на предприятии
1.3.1 Обоснование проектных решений по информационному обеспечению комплекса задач. Подбор информационного обеспечения для блока работы с унифицированными формами
1.3.2 Обоснование проектных решений по технологии сбора, передачи, обработки и выдачи информации. Реализация недостающего в УСН блока работы с унифицированными формами
1.3.3 Обоснование проектных решений по программному обеспечению комплекса задач
1.3.4 Обоснование необходимости использования вычислительной техники и создания АРМ для решения данного комплекса задач
2. Проектная часть
2.1 Информационное обеспечение комплекса задач
2.1.1 Инфологическая (информационная) модель (схема данных) и ее описание
2.1.2 Используемые классификаторы и системы кодирования
2.1.3 Характеристика входной информации
2.1.4 Нормативно-справочная информация
2.1.5 Характеристика результатной информации
2.2 Внутримашинная реализация комплекса задач
2.2.1 Формализация расчетов (алгоритмы расчета и решения задач)
2.2.2 Структурная схема использования комплекса программ (дерево диалога). Взаимодействие УСН с блоком формирования унифицированных форм
2.2.3 Описание интерфейса приложения.
2.3.1 Организация технологии сбора, передачи, обработки и выдачи информации
2.3.2 Схема технологического процесса сбора, передачи, обработки и выдачи информации
2.4 Программное обеспечение комплекса задач
2.4.1 Общие положения
2.4.2 Структурная схема пакета (дерево вызова процедур и программ). Описание программных модулей
2.5 Схема взаимосвязи программных модулей и информационных файлов
2.6 Выбор и обоснование технических средств
2.7 Экономическое обоснование проекта
Заключение
Список использованных источников
Приложения
Последнее десятилетие характеризуется не только радикальным изменением социально-экономической среды, в которой функционируют российские предприятия и организации всех форм собственности, но и устойчивой тенденцией развития информатизации процессов управления.
Необходимость действовать в условиях рыночной экономики, все обостряющейся конкуренции товаропроизводителей обусловливает повышенные требования к профессиональным качествам специалистов, ответственности руководителей за результаты и последствия принимаемых решений. Чрезвычайно актуальными становятся учет временного фактора и организация анализа материальных, товарных, финансовых потоков, поиск обоснованных решений в регулировании производственно-хозяйственных и финансовых ситуаций.
Внедрение в управленческую деятельность исследовательского подхода базируется на применении современных достижений в области информационных технологий, обеспечивающих полноту, своевременность информационного отображения управляемых процессов, возможность их моделирования, анализа, прогнозирования. Исследовательский подход, лежащий в основе менеджмента, одинаково присущ как федеральным, региональным, местным органам управления, так и предприятиям, фирмам, корпорациям, которые проводят инжиниринговые исследования и реинжиниринг организационных структур, тесно увязывая их с проектируемыми бизнес-процессами и добиваясь при этом реального выигрыша во времени и экономического эффекта.
В перечень задач, связанных с указанной выше глобальной тенденцией автоматизации производственных и учетных, а также управленческих процессов, усовершенствования имеющихся АСУ входят следующие: построение (разработка) ЭИС на основе анализа экономико-информационной среды, применения новых технических средств сбора, передачи, обработки и выдачи информации; совершенствование информационной базы предметной области на основе новых методик и концепций; новые автоматизированные решения комплексов управленческих и экономических задач.
Цельи данного дипломного проекта связаны с совершенствованием информационной базы предметной области на основе новых методик и концепций; с разработкой новых автоматизированных решений комплексов управленческих и экономических задач. Одна из конкретных задач проекта - применение для учета основных средств комплекса УСН 1С Бухгалтерии, а также его дополнение для облегчения ведения документооборота унифицированных стандартных форм.1С УСН базовая версия не позволяет вносить коррективы в программу, но во всех отношениях учета устраивает фирму, кроме учета ОС, поэтому возникла необходимость в создании отдельного учетного блока для основных форм. Такое решение вопроса значительно выгоднее, чем покупка новой расширенной конфигурации.
Актуальность данного дипломного проекта также весьма очевидна в русле указанной глобальной тенденции - автоматизация подобного рода рутинных процессов позволяет значительно повысить эффективность работы указанного отдела компании (фирмы), избежать огромного количества технических ошибок, возникающих при ручном формировании унифицированных учетных документов.
Новизна проведенной работы заключается в том, что обычно в комплекс 1С Бухгалтерии УСН не входит блок автоматизации заполнения стандартных унифицированных форм, что составляет определенные затруднения и требует разработки отдельного бизнес-процесса в учетной схеме предприятия. Это несколько осложняет и затрудняет общую учетную схему. Тот комплекс, который разработан в результате данной дипломной работы, построен на основании общедоступной программной среды - СУБД MS Access, которая легка и удобна для внедрения на любом рабочем месте, кроме того, разработанный блок не требователен к ресурсам системы, не требует особо сложной настройки, а также при необходимости легко интегрируется в дальнейшие схемы расширения бизнес-процессов. При всех указанных плюсах он прекрасно справляется с указанной задачей.
Таким образом, основные этапы реализации данного дипломного проекта должны включать:
детальное исследование структуры хозяйственной деятельности предприятия
разработку системы и методов автоматизированного учета основных средств предприятия в целом при помощи готового комплекса учетного ПО, настройку выбранного продукта ПО под нужды предприятия (т.е. УСН 1С Бухгалтерии)
разработку схему дополнительного блока, предназначенного для формирования унифицированных форм по учету основных средств, входящих в систему обязательного учета.
непосредственную реализацию этого программного блока, разработку интерфейсной части, части хранения и работы с данными, подготовку необходимых шаблонов
дальнейшее планирование схемы взаимосвязи с основной учетной системы - УСН 1С путем прямого интегрирования блока работы с унифицированными формами путем импорта данных
Прежде чем приступить непосредственно к конкретной реализации задачи, описанной в цели дипломной работы, рассмотрим ряд аспектов функционирования нашего предприятия, а также конкретного отдела - бухгалтерии.
Общество с ограниченной ответственностью "Алеф" создано в соответствии с действующим законодательством Российской Федерации и Федеральным Законом "Об обществах с ограниченной ответственностью" и зарегистрировано Инспекцией Федеральной налоговой службы по Ленинскому району г. Самары 13.04.1999. Юридический адрес ООО "АЛЕФ": 443041, г. Самара, ул. Красноармейская, д.62. "АЛЕФ" является малым предприятием с количеством сотрудников - 20 человек.
Права и обязанности общество приобретает с момента его государственной регистрации. Общество имеет самостоятельный баланс, круглую печать со своим фирменным наименованием, расчетный и иные счета в учреждениях банков.
Общество самостоятельно определяет сферы своей деятельности, осуществляет планирование и организацию, определяет объем и структуру работ и услуг, определяет условия реализации.
Фирма занимается звуковым, световым и сценическим обеспечением мероприятий, поэтому требуется постоянное пополнение основных фондов (закупка оборудования). Обороты предприятия - в пределах 20 миллионов (условия применения упрощенного налогообложения) в год, основное вложение прибыли - в основные средства.
Мы сдаем в аренду как целые концертные комплексы для проведения грандиозных шоу, так и отдельные единицы оборудования. Грамотный технический персонал обслуживает аппаратуру во время проведения концертов. За эти годы нами осуществлено техническое обеспечение огромного количества мероприятий, среди которых концерты групп "E-Type" в 1999г., "Eiffel 65" в 2000г. "Deep Purpule", Joe Cocker, A-ha, Cesaria Evora, SPACE, Prodigy, E. L. O, Kingdom Come, Glenn Hughes, Nazareth, Rasmus, Soulfly, TaTu, Дмитрий Хворостовский, Tomas Anders, а также туры по городам России группы "Scorpions" и шоу-балета "Rhythm Of The Dance", звезд российской эстрады, тур Аллы Пугачевой в 2005... 2006гг и другие различные концертные и праздничные мероприятия в городах: Самара, Тольятти, Уфа, Пенза, Саратов, Рязань, Оренбург, Уральск, Москва, Волгоград, Казань, Ярославль и др.
В настоящее время "АЛЕФ" также занимается организацией мероприятий "под ключ". Мы берём на себя решение всех вопросов, связанных с техническим обеспечением шоу-программ, включая организацию электропитания, постановку барьеров ограждения и мобильных гримёрных, обогрев площадки в холодное время года. Привлекая наших партнёров, мы способны выполнить заказы по видеотрансляции шоу на проекционных и светодиодных экранах, постановке лазерных и пиротехнических шоу с использованием различных спецэффектов, изготовлению и установке декораций и элементов оформления. Мы также осуществляем координацию деятельности всех задействованных служб на площадке.
Структурно и административно фирма объединяет следующие отделы административно-управленческий аппарата: бухгалтерию, юридический отдел, финансовый отдел, и производственного аппарата: звуковой отдел, световой отдел, сценический отдел (см. рис.1.1):
Все отделы непосредственно подчиняются директору. Непосредственное руководство ООО "Алеф" осуществляет директор. Права и обязанности директора и сотрудников ООО "АЛЕФ" определены должностными инструкциями.
Структура документооборота имеет следующий вид (см. рис.1.2).
Рис.1.1 Структура ООО "Алеф".
"
АЛЕФ" не является производственным объединением, то есть сама не является производителем какой-то продукции, а лишь оказывает услуги по определенному перечню и предоставляет имеющиеся на балансе основные объекты основных средств в арендное пользование. Анализируемый отдел предприятия, где производится разработка и внедрение АСУ - бухгалтерия предприятия. Структура и учетная схема бухгалтерии полностью совпадает со стандартной конфигурацией УСН 1С Бухгалтерии.
Рассмотрим общий подход для анализа организационной структуры предприятия как объекта информационного управления. Он включает:
предварительное выявление требований, предъявляемых к будущей системе;
определение оргштатной и топологической структур предприятия;
определение перечня целевых задач (функций) предприятия;
анализ распределения функций по подразделениям и сотрудникам;
определение перечня применяемых на предприятии средств автоматизации.
Рис.1.2 Структура документооборота ООО "Алеф".
При этом выявляются функциональные деятельности каждого из подразделений предприятия и функциональные взаимодействия между ними, информационные потоки внутри подразделений и между ними, внешние по отношению к предприятию объекты и внешние информационные взаимодействия, см. рис 1.3.
Рис.1.3 Структура подхода
В качестве исходной информации при проведении обследования и выполнении дальнейших этапов служат:
данные по оргштатной структуре предприятия;
информация о принятых технологиях деятельности;
стратегические цели и перспективы развития;
результаты интервьюирования сотрудников (от руководителей до исполнителей нижнего звена);
предложения сотрудников по усовершенствованию бизнес-процессов предприятия;
нормативно-справочная документация;
опыт системных аналитиков в части наличия типовых решений.
Длительность обследования составляет 1-2 недели. По окончании обследования строится и согласуется с заказчиком предварительный вариант функциональной модели предприятия, включающей идентификацию внешних объектов и информационных взаимодействий с ними, а также детализацию до уровня основных деятельностей предприятия и информационных связей между этими деятельностями [1, c.57].
Далее осуществляется обработка результатов обследования и построение моделей деятельности предприятия следующих двух видов:
модели “как есть”
, представляющей собой "снимок" положения дел на предприятии (оргштатная структура, взаимодействия подразделений, принятые технологии, автоматизированные и неавтоматизированные бизнес-процессы и т.д.) на момент обследования и позволяющей понять, что делает и как функционирует данное предприятие с позиций системного анализа, а также на основе автоматической верификации выявить ряд ошибок и узких мест и сформулировать ряд предложений по улучшению ситуации;
модели “как должно быть",
интегрирующей перспективные предложения руководства и сотрудников предприятия, экспертов и системных аналитиков и позволяющей сформировать видение новых рациональных технологий работы предприятия.
Переход от модели “как есть” к модели ”как должно быть” осуществляется следующими двумя способами.
Совершенствование технологий на основе оценки их эффективности. При этом критериями оценки являются стоимостные и временные затраты выполнения бизнес-процессов, дублирование и противоречивость выполнения отдельных задач бизнес-процесса, степень загруженности сотрудников (“легкий” реинжиниринг).
Радикальное изменение технологий и переосмысление бизнес-процессов (“жесткий" реинжиниринг). Например, вместо попыток улучшения бизнес-процесса проверки кредитоспособности клиента, может быть следует задуматься, а нужна ли вообще такая проверка? Возможно затраты на такие проверки каждого из клиентов во много раз превышают убытки, которые может понести компания в отдельных случаях недобросовестности (в случае, когда клиентов много, а суммы закупок незначительны).
Построенные модели являются не просто реализацией начальных этапов разработки системы и техническим заданием на последующие этапы. Они представляют собой самостоятельный отделяемый результат, имеющий большое практическое значение, в частности:
Модель “как есть” включает в себя существующие неавтоматизированные технологии, работающие на предприятии. Формальный анализ этой модели позволит выявить узкие места в технологиях и предложить рекомендации по ее улучшению (независимо от того, предполагается на данном этапе автоматизация предприятия или нет).
Она позволяет осуществлять автоматизированное и быстрое обучение новых работников конкретному направлению деятельности предприятия (так как ее технология содержится в модели) с использованием диаграмм (известно, что "одна картинка стоит тысячи слов").
С ее помощью можно осуществлять предварительное моделирование нового направления деятельности с целью выявления новых потоков данных, взаимодействующих подсистем и бизнес-процессов [3, c.14].
Что касается применения данного подхода к конкретному предприятию "АЛЕФ", то можно определить нашу методику как базовое использование модели "как есть", потому как основной АСУ для нашего отдела бухгалтерии предприятия является комплекс 1С Бухгалтерии, а далее мы можем провести на базе выбранной АСУ совершенствование технологии бухгалтерского документооборота, с учетом оценки их эффективности, не изменяя структуру уже разработанных бизнес-процессов.
Директор является первым должностным лицом - руководителем компании. Директор осуществляет общее руководство, управление работой отделов и взаимодействием между ними, решение коммерческих и административных вопросов, выбор стратегии развития, разрешение спорных ситуаций, внутренних и внешних; решает все необходимые вопросы, возникающие в процессе работы.
В непосредственном подчинении директора находятся, начальники отделов закупок, продаж, финансового отдела, главный бухгалтер.
Директор осуществляет:
Представление интересов ООО “Алеф" во всех организациях и учреждениях по делам, возникающим в связи с деятельностью организации.
Подбор и назначение кадров.
Привлечение работников компании к дисциплинарной и материальной ответственности.
Принятие локальных нормативных актов.
Бухгалтерия:
1. Формирование полной и достоверной информации о финансовых результатах и имущественном положении компании, ведение бухгалтерского и налогового учета хозяйственно-финансовой деятельности компании.
2. Обеспечение своевременного и полного отражения на счетах бухгалтерского учета, в учетных регистрах фактов хозяйственной деятельности на основе применения принципов бухгалтерского учета, положений по бухгалтерскому учету и иных нормативных документов.
3. Составление форм бухгалтерской и налоговой отчетности и дополнений к ним с достоверным и полным отражением в них фактов хозяйственной деятельности и имущественного положения компании.
4. Обеспечение соблюдения технологии обработки бухгалтерской информации и порядка документооборота.
5. Контроль соблюдения порядка оформления первичных бухгалтерских документов, графика документооборота; соблюдения установленных правил проведения инвентаризации денежных средств, товарно-материальных ценностей, основных фондов, расчетов и платежных обязательств.
6. Правильное начисление налогов и сборов.
7. Обеспечение сохранности и оформление бухгалтерских документов в соответствии с установленным порядком.
8. Формирование, ведение и хранение БД бухгалтерской информации.
Юридический отдел:
Правовая экспертиза документов, проектов ответов на обращения, заявления и жалобы физических и юридических лиц, органов государственной власти, органов местного самоуправления.
Оказание правовой помощи подразделениям фирмы по вопросам применения законодательства Российской Федерации.
Оформление и предъявление в суды исков по всем основаниям в соответствии с законодательством Российской Федерации.
Защита интересов Учреждения в арбитражных судах и судах общей юрисдикции.
Согласование проектов договоров, подготавливаемых Учреждением.
Производственные отделы (звуковой, световой, сценический):
Обслуживают клиентов.
Прием и выполнение заказов.
Контролирует составление заявок (заказов), обеспечение, реализацию услуг в соответствии с условиями договоров.
Расширение клиентской базы.
Работа с партнерами.
Составление заявок на закупку оборудования.
Финансовый отдел:
Обеспечивает разработку финансовой стратегии предприятия и его финансовую устойчивость.
Осуществляет разработку проектов перспективных и текущих финансовых планов, прогнозных балансов и бюджетов денежных средств.
Определяет источники финансирования финансово-хозяйственной деятельности предприятия, краткосрочное и долгосрочное кредитование, привлечение заемных и использование собственных средств, проводит исследование и анализ финансовых рынков, оценивает возможный финансовый риск применительно к каждому источнику средств и разрабатывает предложения по его уменьшению.
Осуществляет инвестиционную политику и управление активами предприятия, определяет оптимальную их структуру, проводит анализ и оценку эффективности финансовых вложений.
Анализирует финансово-хозяйственную деятельность предприятия, разрабатывает предложения, направленные на обеспечение платежеспособности, предупреждение образования и ликвидацию неиспользуемых товарно-материальных ценностей, увеличение прибыли, снижение издержек на содержание и реализацию услуг, укрепление финансовой дисциплины.
Составляет ежемесячные отчеты руководителю о возникшей задолженности, количестве обслуживаемых клиентов, о количестве и сумме заключенных договоров.
Предоставляет в требуемые сроки по установленным формам отчетность по проделанной работе.
Ежеквартально проводит полный анализ финансово-хозяйственной деятельности (развернутый анализ состава затрат по экономическим элементам в динамике с предшествующим годом).
Рассмотрим что представляет из себя анализ финансово-хозяйственной деятельности предприятия.
Экономический анализ
финансового состояния предприятия представляет собой аналитическое исследование способности предприятия финансировать свою деятельность.
Финансовое состояние характеризуется обеспеченностью финансовыми ресурсами, необходимыми для нормального функционирования предприятия, целесообразным их размещением и эффективным использованием, финансовыми взаимоотношениями с другими юридическими и физическими лицами, платёжеспособностью и финансовой устойчивостью.
Предметом экономического анализа являются хозяйственно-финансовые процессы, их результаты и факторы их формирования.
Цель анализа состоит в том, чтобы установить и оценить финансовое состояние предприятия и постоянно проводить работу, направленную на его улучшение. Анализ финансового состояния показывает, по каким конкретным направлениям надо вести эту работу. В соответствии с этим результаты анализа дают ответ на вопрос, каковы важнейшие способы улучшения финансового состояния предприятия в конкретный период его деятельности.
Таким образом, главная цель экономического анализа - своевременно выявлять и устранять недостатки в финансовой деятельности и находить резервы улучшения финансового состояния предприятия, его платёжеспособности. Не менее важная перспективная цель анализа - выработка наиболее достоверных предположений и прогнозов будущих финансовых условий функционирования субъекта хозяйствования.
Финансовое состояние - это важнейшая характеристика экономической деятельности предприятия во внешней среде. Оно определяет конкурентоспособность предприятия, его потенциал в деловом сотрудничестве, оценивает, в какой степени гарантированы экономические интересы самого предприятия и его партнёров.
Основными задачами экономического анализа финансового состояния являются:
объективная оценка состава и использования финансовых ресурсов на предприятии;
определение факторов и причин достигнутого состояния;
выявление, измерение и мобилизация резервов улучшения финансового состояния и повышения эффективности всей хозяйственной деятельности;
подготовка и обоснование принимаемых управленческих решений в области финансов.
Ключевым вопросом для понимания сущности и результативности финансового анализа является концепция хозяйственной деятельности как потока решений для развёртывания ресурсов (капиталов) с целью получения прибыли.
Получение прибыли является конечной целью хозяйственной деятельности предприятия не только потому, что в результате этого улучшается экономическое положение предприятия, но главное - получение достаточной прибыли необходимо для сохранения экономической жизнеспособности предприятия, сохранения возможности дальнейших вложений капитала.
Независимо от того, в какой сфере деятельности осуществляется бизнес (производство, торговля, сервис), конечная цель не меняется. Она сводится к тому, что первоначальный капитал в форме денежных средств через определённое время развёртывается в экономически выгодную величину (производственный потенциал) для возмещения этих средств и получения достаточной прибыли.
Все многообразие решений для достижения этой цели может быть сведено к трём основным направлениям:
решения по вложению капиталов (ресурсов);
операции, проводимые с помощью этих ресурсов;
определение структуры финансового бизнеса.
Своевременное и качественное обеспечение этих направлений финансовых решений является сущностью финансового анализа.
К объектам экономического анализа относятся: промышленные предприятия, торговые организации, акционерные общества, фирмы, концерны, банки, инвестиционные фонды и другие хозяйствующие субъекты, а также конкретные финансового - экономические показатели (ликвидность, прибыльность и пр).
В зависимости от пользователей аналитической информации финансовый анализ подразделяется на внутренний и внешний.
Внутренний анализ
проводится непосредственно на предприятии для нужд оперативного, краткосрочного и долгосрочного управления производственной, коммерческой и финансовой деятельностью. Его цель - обеспечить планомерное поступление денежных средств и разместить собственные и заёмные средства таким образом, чтобы получить максимальный доход и прибыль. Для проведения внутреннего финансового анализа используется не только информация финансовой отчётности, но также данные управленческого учёта, синтетического и аналитического бухгалтерского учёта (например, оборотные ведомости о поступлении и движении хозяйственных средств), данные о технической подготовке производства, сбыте продукции, организации маркетинговой и коммерческой деятельности, нормативная и плановая информация.
Внешний анализ
осуществляется на основании публичной финансовой и статистической отчётности органами хозяйственного управления, банками, финансовыми органами, инвесторами, аудиторами, хозяйственными партнёрами.
Внешний анализ отличает не только множественность субъектов анализа - пользователей финансовой информацией о деятельности предприятия, но и разнообразие целей и задач, которые они перед собой ставят.
Каждый хозяйствующий субъект изучает информацию, исходя из своих интересов. Так, акционерам и другим собственникам необходимо определить долю собственного капитала и динамику его изменения, оценить эффективность использования ресурсов администрацией предприятия, возможность получения дивидендов по результатам хозяйственной деятельности.
Кредиторы изучают финансовое состояние предприятия, его кредитоспособность с целью определения условий кредитования, выбора форм залогового обеспечения, оценки надёжности потенциального заёмщика, гарантий возврата кредита.
Инвесторов интересует не только текущее финансовое состояние, но и деловая активность предприятия, перспективы экономического роста, гарантии окупаемости возможных инвестиций, прибыльность проектов в сочетании с реальным финансовым положением предприятия.
Как показывает практика, финансовая нестабильность предприятия может отразиться на своевременности получения текущих платежей и потребовать изменений в формах расчёта. Поэтому хозяйственных партнёров - поставщиков материально-технических ресурсов, интересует в первую очередь финансовая устойчивость и платёжеспособность предприятия, независимость его от внешних кредиторов. Устойчивое финансовое состояние предприятия является также важным фактором определения дальнейших связей и условий хозяйствования с потребителями продукции, которые заинтересованы в успехах предприятия, так как от этого зависит их благополучие.
Налоговые органы контролируют правильность начислений налогов и своевременную и полную их оплату для поступления средств в бюджет; аудиторские фирмы - правильность отражения финансовой отчётности в соответствующих формах бухгалтерского учёта.
В отделе бухгалтерии предприятия "АЛЕФ" используется стандартная конфигурация АСУ 1С Бухгалтерия - УСН, которая полностью отвечает рабочим бизнес-процессам предприятия.
С 1 января 2003 года в систему налогообложения хозяйствующих субъектов введены специальные налоговые режимы, одним из которых является упрошенная система налогообложения.
Применение организациями упрощенной системы налогообложения предусматривает замену уплаты налога на прибыль организаций, налога на имущество организаций и единого социального налога уплатой единого налога, исчисляемого по результатам хозяйственной деятельности организаций за налоговый период. Организации, применяющие УСН, не признаются также налогоплательщиками налога на добавленную стоимость, за исключением налога, подлежащего уплате в соответствии с главой 21 НК РФ при ввозе товаров на таможенную территорию Российской Федерации.
В то же время за такими организациями сохраняется обязанность по уплате страховых взносов на обязательное страхование в соответствии с Федеральными законами от 15 декабря 2001 г. №167-ФЗ - Об обязательном пенсионном страховании в Российской Федерации - и от 24 июля 1998 г. №125-ФЗ - Об обязательном социальном страховании от несчастных случаев на производстве и профессиональных заболеваний". Иные налоги уплачиваются организациями, применяющими упрощенную систему налогообложения, в соответствии с общим режимом налогообложения.
Что касается экономической эффективности применения УСН, для конкретного предприятия, то необходимо провести следующий анализ.
У каждого из налогов, уплата которых в совокупности заменяется уплатой единого налога, свой объект налогообложения и порядок его определения. Поэтому нельзя простым сложением ставок всех налогов определить, насколько выгодно той или иной организации применять упрощенную систему налогообложения.
Для того чтобы оценить экономическую эффективность перехода на упрощенную систему налогообложения, организациям следует провести расчет и сопоставить общую сумму налогов, которую они в сравнимых условиях хозяйствования и момента признания доходов и расходов уплачивали бы при обычной и упрощенной системах налогообложения.
Переход на применение упрощенной системы при правильно проведенном предварительном расчете может дать серьезную выгоду при налогообложении, в то время как ошибка в выборе объекта налогообложения может ухудшить экономическое положение организации.
В соответствии со статьей 346-4 нк РФ организациям предоставлено право выбора объекта налогообложения. Это могут быть либо доходы, либо доходы, уменьшенные на величину расходов.
В соответствии с пунктом 3 статьи 346.21 НК РФ налогоплательщиками, выбравшими в качестве объекта налогообложения доходы, сумма налога (квартальных авансовых платежей), исчисленная за налоговый (отчетный) период, уменьшается на сумму страховых взносов на обязательное пенсионное страхование, уплачиваемых за этот же период времени, а также на сумму выплаченных работникам пособий по временной нетрудоспособности. При этом сумма страховых взносов на обязательное пенсионное страхование не может уменьшать сумму исчисленного налога (авансовых платежей по налогу) более чем на 50 процентов. Таким образом, минимальная сумма единого налога, уплачиваемая такими налогоплательщиками, без учета пособий по временной нетрудоспособности, не может быть меньше 3 процентов от полученного дохода. Это соответствует ситуации, когда величина расходов составляет 80 процентов от суммы доходов. Однако это не означает, что если расходы составляют 80 процентов и более от полученного дохода, то организации выгоднее выбрать объект налогообложения доходы, уменьшенные на величину расходов. Дело в том, что ограничение, предусмотренное для взносов на обязательное пенсионное страхование, не распространяется на выплаченные работникам пособия по временной нетрудоспособности. Если эти суммы значительны, то сумма налога (авансовых платежей по налогу), подлежащая уплате в бюджет, может оказаться равной нулю.
Если величина фактических расходов окажется меньше этого показателя, то организациям выгоднее выбрать объект налогообложения доходы, в противном случае доходы, уменьшенные на величину расходов.
При оценке экономической целесообразности перехода на упрощенную систему налогообложения следует учитывать еще один важный аспект. В рассмотренном выше примере расчета налоговой нагрузки при общей системе налогообложения и в условиях применения упрощенной системы налогообложения продажные цены сохранены без изменения. Предположим, что они уменьшаются на сумму НДС, оплачиваемых покупателем. Казалось бы, налоговая нагрузка снижается еще больше. Однако при этом торговая деятельность станет убыточной, поскольку общая сумма расходов, понесенных организацией, превысит сумму полученного дохода.
Таким образом, организациям при переходе на упрощенную систему налогообложения следует очень осмотрительно подходить к формированию цен на реализуемые товары, работы, услуги.
Что касается конкретно компании "АЛЕФ", то проведенный анализ показал целесообразность выбора такого налогообложения, а соответственно, выбранная модель налогообложения позволила выбрать и необходимую конфигурацию 1С.
1.2.1 Общие сведения о задачах
. Описание имеющейся учетной схемы предприятия в рамках УСН 1С
Система автоматизации для ведения учета организациями, применяющими упрошенную систему налогообложения, построена на компоненте "Бухгалтерский учет" системы 1С: Предприятие в виде специализированной конфигурации "Упрошенная система налогообложения".
Необходимость в специализации конфигурации обусловлена отличиями, присущими упрошенной системе налогообложения.
Во-первых, объектом налогообложения единым налогом являются либо доходы, либо доходы, уменьшенные на величину расходов. При этом доходы и расходы признаются только кассовым методом. В отношении расходов это означает, что при определении налоговой базы учитываются лишь оплаченные расходы.
Во-вторых, перечень видов расходов, на которые могут быть уменьшены доходы при втором варианте объекта налогообложения, не охватывает всех расходов организации. При этом в особом порядке признаются расходы на приобретение основных средств, понесенные организацией до перехода на упрощенную систему налогообложения.
В-третьих, бухгалтерский учет имущества, доходов и расходов, обязательств и т.д. такие организации могут вести по упрошенным правилам, за исключением учета основных средств и нематериальных активов.
Основным учетным регистром при упрощенной системе налогообложения является Книга учета доходов и расходов. Порядком се ведения предусмотрено, что доходы и расходы отражаются в ней по мере их признания в целях налогообложения. Для правильного определения налоговой базы плательщику единого налога необходимо, в частности, обеспечить:
раздельный учет доходов, подлежащих и не подлежащих налогообложению;
обособленный учет расходов, признаваемых для целей налогообложения, от остальных расходов для объекта налогообложения доходы, уменьшенные на величину расходов;
контроль оплаты доходов и расходов, учитываемых для целей налогообложения;
бухгалтерский и налоговый учет основных средств и нематериальных активов, в том числе основных средств, приобретенных до перехода на УСН. Проведя всесторонний и глубокий анализ, специалисты фирмы "1С" сочли целесообразным создание отдельной специализированной конфигурации для ведения учета и отчетности в организациях, применяющих упрощенную систему налогообложения.
Как и любая конфигурация в системе 1С: Предприятие, "Упрощенная система налогообложения" представляет собой совокупность трех взаимосвязанных частей: структуры метаданных, набора пользовательских интерфейсов и набора прав.
Рис.1.4 Пример журнала операций над основными средствами.
Структура метаданных конфигурации "Упрощенная система налогообложения" представляет собой совокупность взаимосвязанных объектов метаданных, настроенных на хранение и обработку информации о хозяйственной деятельности организаций, применяющих этот специальный налоговый режим см. рис.1.4
Для описания модели предметной области используются следующие виды объектов:
константы;
справочники;
документы;
журналы документов;
перечисления;
отчеты;
обработки;
бухгалтерские счета;
виды субконто;
операции и проводки.
В константах хранится постоянная или условно-постоянная информация, т.е. такая информация, которая либо совсем не изменяется в процессе эксплуатации системы, либо изменяется достаточно редко. Например, в конфигурации "Упрощенная система налогообложения" они используются для хранения сведений об организации, применяющей упрощенную систему налогообложения, ее руководителе, главном бухгалтере и кассире, об объекте налогообложения и т.д.
Справочники предназначены для хранения сведений о множестве однородных объектов. Каждый справочник представляет собой список однородных объектов предметной области: сотрудников, контрагентов, номенклатуры материально-производственных запасов и т.д. Отдельные объекты справочника называют элементами справочника. В типовой конфигурации справочники используются, главным образом, для организации аналитического учета (справочники "Сотрудники", "Статьи затрат", "Банковские счета") или в качестве источников информации (справочники "Валюты", "Единицы измерений", "Классификатор ЕНАОФ").
Для хранения информации о различных фактах хозяйственной деятельности организации предназначены документы. Документы играют центральную роль в системе автоматизации. С их помощью в информационной базе регистрируются операции по движению денежных средств ("Приходный кассовый ордер", "Расходный кассовый ордер", "Выписка"), поступлению и отпуску материально-производственных запасов ("Поступление МПЗ", "Перемещение МПЗ"), начислению оплаты труда ("Начисление зарплаты") и т.д.
Отчеты предназначены для получения результатной информации по некоторому алгоритму, описанному на встроенном языке системы 1С: Предприятие. Различают внутренние и внешние отчеты. Внутренние являются частью конфигурации, внешние хранятся в отдельных файлах. Внутренние отчеты подразделяются на стандартные и специализированные, С помощью стандартных отчетов проводится анализ остатков и оборотов на счетах рабочего плана счетов с различными вариантами группировки данных. Специализированные отчеты предназначены для обобщения определенных учетных данных и их представления в определенном виде, например, "Кассовая книга", "Книга учета доходов и расходов".
Рис.1.5 Пример реестра основных средства предприятия "Алеф".
Стержнем учетной системы конфигурации "Упрощенная система налогообложения" является рабочий план счетов, который базируется на Плане счетов, утвержденном приказом Минфина РФ от 31 октября 2000г №94н.
В конфигурации сохранены номера и наименования большинства синтетических счетов. Это позволяет снизить трудозатраты пользователей как при переходе на УСН с общего режима налогообложения, а также при возможном возврате на общий режим или переходе на него с УСН.
Вместе с тем, в конфигурации не используется ряд субсчетов первого уровня, предусмотренных Планом счетов и открытых к синтетическим счетам в конфигурации "Бухгалтерский учет", предназначенной для ведения учета при общем режиме налогообложения, или открыты новые, необходимость в которых обусловлена особенностями учета доходов и расходов в условиях применения упрощенной системы налогообложения.
Аналитический учет ведется по отдельным инвентарным объектам с помощью справочника "Основные средства" см. рис.1.5 и 1.6
Для обобщения информации о наличии и движении нематериальных активов организации и суммах начисленной по ним амортизации, предназначены соответственно счета 04 "Нематериальные активы" и 05 "Амортизация нематериальных активов". На счете 04 учитываются также принятые к учету расходы на НИОКР. Учет НМЛ ведется на субсчете 04.1 "Нематериальные активы", расходов на научно-исследовательские, опытно-конструкторские и технологические работы - на субсчете 04.2 "Расходы на НИОКР".
Для обобщения информации о затратах организации в объекты, которые впоследствии будут приняты к бухгалтерскому учету в качестве основных средств, нематериальных активов и расходов на НИОКР предназначен счет 08 "Вложения во внеоборотные активы", к которому открыты субсчета:
08.3 "Строительство объектов основных средств";
08.4 "Приобретение отдельных объектов основных средств";
08.5 "Приобретение нематериальных активов"; 08.8 "Выполнение НИОКР".
Аналитический учет ведется с использованием справочника "Объекты внеоборотных активов".
Для обобщения информации о наличии и движении материально-производственных запасов в виде сырья, материалов, топлива, запасных частей, инвентаря и хозяйственных принадлежностей, тары и т.д. (далее - материалы) предназначен синтетический счет 10 "Материалы", к которому открыто несколько субсчетов первого уровня. В отличие от "стандартного" Плана счетов, субсчета открыты не по видам материалов, а по видам затрат на их приобретение:
10.1 "Материалы, расходы на приобретение которых не принимаются для целей налогообложения";
10.2 "Материалы, расходы на приобретение которых принимаются для целей налогообложения";
10.3 "Материалы, расходы на приобретение которых принимаются для целей налогообложс1П1я (в валюте)";
10.11 "Транспортно - заготовительные расходы, не принимаемые для целей налогообложения";
10.12 "Транспортно-заготовительные расходы, принимаемые для целей налогообложения";
10.13 "Транспортно-заготовительные расходы, принимаемые для целей налогообложения (в валюте)".
На субсчетах 10.1-10.3 отражаются только суммы, уплачиваемые в соответствии с договором поставщику (продавцу) включая суммы налога на добавленную стоимость, а на субсчетах 10.11-10.13 - все остальные затраты, формирующие фактическую себестоимость материалов.
При отражении информации о фактических затратах на приобретение материалов следует учитывать, что на субсчетах 10.2-10.3 и 10.12-10.13 отражаются лишь та их часть, которая признается материальными расходами в целях налогообложения в соответствии с главой 26 2 - Упрощенная система налогообложения - части второй НК РФ.
Организации, выбравшие объектом налогообложения доходы, все расходы на приобретение материалов отражают с использованием субсчетов 10.1 и 10.11.
Организации, выбравшие объектом налогообложения доходы, уменьшенные на величину расходов, используют субсчета 10.1 и 10.11 для материалов, принятие к учету которых не связано с возникновением материальных расходов в целях налогообложения, например внесенных в счет вклада в уставный (складочный) капитал организации.
Система аналитического учета материалов в конфигурации построена таким образом, чтобы обеспечить информацией как пользователя для принятия управленческих решений, так и систему - для автоматического распознавания оплаченных материальных расходов при объекте налогообложения доходы, уменьшенные на величину расходов.
Рис.1.6 Пример справочника основных средства предприятия "Алеф".
Ведение учета в конфигурации "Упрощенная система налогообложения" подразумевает сплошную, непрерывную, документально обоснованную и взаимосвязанную регистрацию всех совершаемых в организации хозяйственных операций.
Под сплошным отражением хозяйственной деятельности понимается обязательный учет всего имущества, всех видов обязательств, всех хозяйственных операций организации.
Непрерывность подразумевает постоянное (во времени) наблюдение и документирование фактов хозяйственной деятельности.
Под документированием понимается оформление первичного учетного документа, фиксирующего факт совершения хозяйственной операции. Например, операции по кассе оформляются приходным и расходным ордерами, отгрузка товара - выпиской накладной.
Первичные документы, в том числе подготовленные средствами конфигурации, должны содержать следующие обязательные реквизиты:
наименование документа (формы);
код формы;
дата составления;
содержание хозяйственной операции;
измерители хозяйственной операции (в натуральном и денежном выражении);
наименование должностей лиц, ответственных за совершение хозяйственной операции и правильность ее оформления;
личные подписи и расшифровки.
Взаимосвязанность отражения обусловлена зависимостью совершаемых фактов между собой. Например, после перечисления налогов уменьшится не только задолженность перед бюджетом, но и остаток денежных средств на расчетном счете.
Взаимосвязанное отражение хозяйственной деятельности организации в типовой конфигурации обеспечивается способом двойной записи на счетах бухгалтерского учета рабочего плана счетов. Двойная запись или проводка подразумевает, что сумма каждой хозяйственной операции записывается на счетах дважды (по дебету одного счета и кредиту другого).
Для регистрации всех совершаемых в организации хозяйственных операций в конфигурации предназначены объекты метаданных "Операция" и "Проводка". Операция является минимальной единицей учетной информации в системе.
Каждая операция может содержать одну или несколько проводок, отражающих хозяйственную операцию в бухгалтерском учете в натуральном и денежном выражении.
Операция включает не только проводки, но и некоторую общую часть, характеризующую ее в целом: дату, номер, сумму, содержание и комментарий.
Проводки операции могут быть сформированы документами, входящими в состав структуры метаданных, введены вручную или с помощью шаблона типовой операции. Принципиально возможно спроектировать документы, которые будут автоматически генерировать проводки всех операций, фиксирующих факты хозяйственной деятельности организации. Но на практике это не всегда экономически выгодно. Возможны случаи, когда хозяйственные операции единичны или лишь изредка повторяются, например выдача работнику займа или увеличение уставного капитала. Затраты на разработку документов с автоматическим формированием проводок в этом случае будут несоизмеримо больше, чем ввод проводок вручную.
При отражении хозяйственных операций вручную в экранной форме самостоятельно заполняют сумму и содержание операции, а также вводят бухгалтерские проводки с заполнением всех необходимых сведений об объектах аналитического учета, если по счету ведется аналитический учет.
Поскольку основанием регистрации операции является первичный учетный документ, в реквизите "Комментарий" указывают наименование и номер первичного документа.
Дата операции должна соответствовать дате составления первичного учетного документа.
Ввод и редактирование операции вручную производится в конфигурации при работе с журналом операций или проводок с помощью соответствующих пунктов меню "Действия" или пиктограмм.
Запись операции в информационную базу производится нажатием на кнопку "Записать" или "ОК".
Наиболее удобным является способ регистрации учетной информации с помощью документов. Режим использования настроенных документов позволяет автоматически генерировать операцию, а при необходимости - и проводки на основании информации, введенной в экранную форму документа.
Набор документов, автоматизирующих учет хозяйственных операций, рассчитан на ведение наиболее важных разделов учета:
учет операций по кассе;
учет операций по банку;
учет основных средств;
учет нематериальных активов;
учет материалов;
учет товаров;
учет затрат на производство;
учет издержек обращения;
учет выпуска продукции;
учет взаиморасчетов с поставщиками и покупателями;
учет оплаты труда;
учет расчетов с подотчетными лицами.
Документы типовой конфигурации позволяют практически полностью автоматизировать большинство участков учета. Они охватывают учет кассовых и банковских операций, материально-производственных запасов, расчетов с поставщиками и подрядчиками, покупателями и заказчиками, продаж товаров, работ, услуг и т.д.
В конфигурации "Упрощенная система налогообложения" использование документов для регистрации хозяйственных операций имеет первостепенное значение, поскольку при их проведении записи формируются на счетах не только бухгалтерского, но и налогового учета.
Документы типовой конфигурации классифицируют по различным основаниям.
По отношению к хозяйственной операции различают документы для отражения совершенных и совершаемых хозяйственных операций.
К первым относятся документы, которые фиксируют уже совершенные хозяйственные операции, например списание денежных средств с расчетного счета, потребление услуг сторонних организаций т.д.
Отличительной особенностью этих документов является отсутствие печатной формы, поскольку первичными являются те документы, на основании которых компьютерный документ собственно и вводится в информационную базу. Примерами документов первой группы являются "Выписка", "Услуги сторонних организаций".
Ко вторым относятся компьютерные документы, предназначенные для отражения совершаемых хозяйственных операций. Такие документы, как правило, имеют печатную форму для вывода на бумажный носитель первичного документа установленного образца. Работают с документом этого вида, как правило, в два этапа. Первый этап совпадает с началом совершения хозяйственной операции. Он включает заполнение экранной формы документа, вывод печатной формы на бумажный носитель и сохранение документа в информационной базе. На втором этапе документ вновь открывают, уточняют значение отдельных реквизитов, вновь сохраняют, но при этом проводят. В качестве примера можно привести документы "Приходный кассовый ордер", "Расходный кассовый ордер".
Учитывая выше описанную схему работы с документами, основанную на готовых шаблонах, в которые вносится ряд изменений при формировании, можно преобразовать эту часть работы в отдельный блок не нарушая общей системы работы, что ускорило бы и оптимизировало процесс.
Как мы уже упоминали ранее, основой учета является АСУ - является 1С Бухгалтерия 7.7, УСН типовая конфигурация. Несомненно, эта система имеет огромное количество преимуществ, из них самые главные:
это открытость системы. Многие привыкли к тому, что компьютерная программа - это черный ящик. Что в нем происходит - никому, кроме разработчика, не понятно, а программа может делать только то, что в нее изначально заложено, и большего от нее не добиться. С системой 1С все с точностью до наоборот. По сути дела компания 1С продает не только готовые программы экономического назначения для ведения тех или иных видов учета, она еще и комплектует их инструментами, с помощью которых (обладая определенной квалификацией программиста, конечно же) можно перенастроить (перепрограммировать), доработать существующие решения индивидуально под нужды конкретного предприятия. Более того, с помощью имеющихся средств пользователю дается возможность создавать свои собственные учетные конфигурации. Такой подход придает системе 1С колоссальную гибкость, что выделяет ее из ряда подобных программ очень и очень сильно.
Вторым важным преимуществом систем 1С является наличие широкой партнерской сети - большого количества компании, способных обслуживать данные программные продукты. И действительно, ведь сама по себе открытость системы обычному пользователю мало что дает. На рынке и помимо 1С присутствуют системы с открытой платформой. Однако часто адаптировать программы под собственный учет можно, а специалистов способных это квалифицированно сделать нет.
Еще одно важнейшее преимущество 1С заключается в высокой оперативности поддержки системы со стороны разработчика. Наиболее значимым это преимущество является для тех, кто пользуется конфигурацией "Бухгалтерский учет". Фирма 1С же, являясь, по сути, очень крупной и мощной компаний, всегда обеспечивает своих пользователей своевременным обновлением. Более того, все обновления распространяются для зарегистрированных пользователей бесплатно.
Тем не менее, несмотря на эти три главных плюса системы, а также несмотря на довольно гибкую настраиваемую систему, встроенный язык (макроязык) программирования, есть весьма трудные комплексные моменты, которые возникают при работе с 1С Предприятием, в частности с 1С Бухгалтерией.
Один из таких минусов - это индивидуальные конфигурации предприятия.
Самой сложной с точки зрения организации учета является ситуация, когда вам необходимо автоматизировать и бухгалтерский учет, и управленческий. Имеется в виду, что два вида учета должны быть связаны между собой определенным образом. Самое простое решение этой задачи - использовать для ведения учета входящую в состав комплексной поставки 1С: Предприятие 7.7 комплексную конфигурацию.
Управленческий учет, в отличие от бухгалтерского, целиком и полностью определяется нами - это обычно наше поле для творчества. Здесь мы решаем, что и как должно быть устроено, чтобы отражать реальную картину на нашем предприятии. А это означает, что рано или поздно, заложенных в типовую конфигурацию механизмов нам не хватит, и мы вынуждены будем воспользоваться созданием в ней "индивидуальных настроек", которые будут описывать наши специфические потребности в учете.
Более скромной проблемой является та задача, которую призван решить данный дипломный проект - быстрая и удобная система заполнения унифицированных форм. Функциональная насыщенность комплекса 1С Бухгалтерия достаточно высока для обеспечения основных необходимостей бухгалтерского учета и документооборота и позволяет охватить максимум необходимых задач. По функциональности, однако, мы дополняем имеющуюся схему отдельным блоком автоматизации документооборота - т.е. автоматическое формирование на основании имеющихся динамических данных 1С заполненных документов - стандартных форм документооборота. Таким образом, так как наш блок АСУ является дополнительным и внешним к основной учетной системе, а не конкурирующим, то его функциональность должна быть очень высока при правильной реализации.
В современных условиях динамично развивается рынок комплексных интегрированных систем автоматизации предприятий и учреждений самого различного профиля (финансовых, промышленных, офисных) и самых различных размеров с разнообразными схемами иерархии, начиная от малых предприятий численностью в несколько десятков человек и завершая крупными корпорациями численностью в десятки тысяч сотрудников. Такие системы предназначены для решения задач как предприятия в целом (управление финансовыми ресурсами, управление запасами, планирование и производство, сбыт и снабжение, техническое обслуживание и ремонт оборудования, управление персоналом и т.п.), так и уровня его производственных подразделений, цехов и участков.
Фактически проблема комплексной автоматизации стала актуальной для каждого предприятия. Уже не стоит вопрос “надо или не надо автоматизировать”, предприятия столкнулись с проблемой: каким образом это осуществить. Подобная переориентация предприятий объясняется следующими основными причинами:
повышением степени организационной и финансовой самостоятельности;
выходом на зарубежный рынок;
стремлением ряда западных компаний производить свои товары в России;
возрастающей ориентацией предприятий на бизнес-процессы, т.е. деятельности, имеющие ценность для клиента;
появлением на рынке как зарубежных, так и отечественных систем автоматизации, опыта их внедрения и использования и др.
Главная особенность индустрии систем автоматизации различных предприятий и учреждений, характеризующихся широкой номенклатурой входных данных с различными (и нетривиальными) маршрутами их обработки, состоит в концентрации сложности на начальных этапах анализа требований и проектирования спецификаций системы при относительно невысокой сложности и трудоемкости последующих этапов. Фактически здесь и приходит понимание того, что будет делать будущая система и каким образом она будет работать, чтобы удовлетворить предъявленным к ней требованиям. А именно нечеткость и неполнота системных требований, нерешенные вопросы и ошибки, допущенные на этапах анализа и проектирования, порождают на последующих этапах трудные, часто неразрешимые проблемы и, в конечном счете, приводят к неуспеху всей работы в целом.
С другой стороны, не существует двух одинаковых организаций. Даже в таком учреждении как Сбербанк России на уровне его отделений и филиалов выявляются различия в применяемых технологиях. А следовательно, простое тиражирование даже очень хорошей системы управления предприятием никогда не устроит заказчика полностью, поскольку не может учесть его специфики. Более того, в данном случае возникает проблема выбора именно той системы, которая наиболее подходит для конкретного предприятия. А эта проблема осложняется еще и тем, что ключевые слова, характеризующие различные системы, практически одни и те же:
единая информационная среда предприятия;
режим реального времени;
независимость от законодательства;
интеграция с другими приложениями (в том числе с уже работающими на предприятии системами);
поэтапное внедрение и т.п.
Следует отметить, что для большинства предприятий необходим и предваряющий автоматизацию этап - наведение порядка в их деятельности, создание рациональных технологий и бизнес-процессов. Речь даже не идет о жестком их реинжиниринге, в современных российских условиях происходит массовый бизнес-инжиниринг.
Ниже сформулированы два крайних подхода к автоматизации предприятий, полностью игнорирующие приведенные тезисы.
1. Короткое и “легкое" обследование предприятия и дальнейшее лоббирование одной из интегрированных систем управления предприятием под красивыми лозунгами настройки и адаптации под конкретного заказчика (кстати, стоимость такой настройки может на порядок превышать стоимость модулей системы и требовать серьезных временных затрат, совместимых с затратами на разработку новой системы). При этом, как правило, фирма-исполнитель еще до проведения обследования (да и вообще, до появления заказчика на ее горизонте) знает, какую именно систему она будет внедрять, и осуществляет соответствующую “адаптацию” результатов обследования.
2. Детальное обследование предприятия и разработка на его основе собственной системы управления, дублирующей существующие на предприятии технологии, что только усугубляет ситуацию (автоматизируя хаос и неразбериху, можно получить только “автоматизированный хаос”).
Очевидно, что перечисленные подходы к автоматизации уже не могут устроить заказчика, желающего “увидеть” и скорректировать будущую систему до того, как она будет реализована физически, и в конечном итоге за свои немалые деньги получить реальную выгоду от ее эксплуатации.
С другой стороны, самостоятельно с задачей выбора и тем более разработки собственной системы предприятие справиться не в состоянии. И прежде всего потому, что на предприятии, как правило, отсутствует единая концепция автоматизации. Возникает необходимость в услугах независимых от производителей систем автоматизации консалтинговых фирм.
На основе системного проекта и принятых решений по автоматизации осуществляется проектирование системы. Фактически здесь дается ответ на вопрос: "Как (каким образом) мы будем строить систему, чтобы она удовлетворяла предъявленным к ней требованиям?".
Этот этап разделяется на два подэтапа:
проектирование архитектуры системы, включающее разработку структуры и интерфейсов ее компонент (автоматизированных рабочих мест), согласование функций и технических требований к компонентам, определение информационных потоков между основными компонентами, связей между ними и внешними объектами;
детальное проектирование, включающее разработку спецификаций каждой компоненты, разработку требований к тестам и плана интеграции компонент, а также построение моделей иерархии программных модулей и межмодульных взаимодействий и проектирование внутренней структуры модулей.
При этом происходит расширение системного проекта:
за счет его уточнения;
за счет построения моделей автоматизированных рабочих мест, включающих подсхемы информационной модели и функциональные модели, ориентированные на эти подсхемы вплоть до идентификации конкретных сущностей информационной модели;
за счет построения моделей межмодульных и внутримодульных взаимодействий с использованием техники структурных карт.
Что касается конкретно нашей задачи, то для ее решения удобно использовать какое-то хранилище данных (для формирования документов), а также интерфейсную часть, для того чтобы организовать программное и интерфейсное взаимодействие с самими данными. Для того, чтобы провести разработку такого дополнительного модуля, нам надо было провести работу по выбору инструментария для разработки интерфейсной части, а также СУБД для хранения данных.
Эта работа предваряет собственно систему автоматизации (именно, фазой анализа требований к системе), на которой требования заказчика уточняются, формализуются и документируются. Фактически на этом этапе дается ответ на вопрос: "Что должна делать будущая система?". Именно здесь лежит ключ к успеху всего проекта автоматизации. В практике создания больших программных систем известно немало примеров неудачной реализации именно из-за неполноты и нечеткости определения системных требований.
На этом этапе определяются:
архитектура системы, ее функции, внешние условия ее функционирования, распределение функций между аппаратной и программной частями;
интерфейсы и распределение функций между человеком и системой;
требования к программным и информационным компонентам системы, необходимые аппаратные ресурсы, требования к базе данных, физические характеристики компонент системы, их интерфейсы;
состав людей и работ, имеющих отношение к системе;
ограничения в процессе разработки (директивные сроки завершения отдельных этапов, имеющиеся ресурсы, организационные процедуры и мероприятия, обеспечивающие защиту информации).
Системный проект строится на основе модели “как должно быть” и включает функциональную модель будущей системы в соответствии с одним из общеупотребительных стандартов (например, IDEF0 или IDEF3), информационную модель, например, в соответствии со стандартом IDEF1X, а также техническое задание на создание автоматизированной системы (например, в соответствии с ГОСТ 34.602-89).
По завершении данного этапа (после согласования системного проекта с заказчиком) изменяется роль консультанта. Отныне он как бы становится на сторону заказчика, и одной из его основных функций на всех последующих этапах работ будет являться контроль на соответствие требованиям, зафиксированным в системном проекте.
Необходимо отметить следующее достоинство системного проекта. Для традиционной разработки характерно осуществление начальных этапов кустарными неформализованными способами. В результате заказчики и пользователи впервые могут увидеть систему после того, как она уже в большей степени реализована. Естественно, эта система отличается от того, что они ожидали увидеть. Поэтому далее следует еще несколько итераций ее разработки или модификации, что требует дополнительных (и значительных) затрат денег и времени. Ключ к решению этой проблемы и дает системный проект, позволяющий:
описать, "увидеть" и скорректировать будущую систему до того, как она будет реализована физически;
уменьшить затраты на разработку и внедрение системы;
оценить разработку по времени и результатам;
достичь взаимопонимания между всеми участниками работы (заказчиками, пользователями, разработчиками, программистами и т.д.);
улучшить качество разрабатываемой системы, а именно: создать оптимальную структуру интегрированной базы данных, выполнить функциональную декомпозицию типовых модулей.
Системный проект полностью независим и отделяем от конкретных разработчиков, не требует сопровождения его создателями и может быть безболезненно передан другим лицам. Более того, если по каким-либо причинам предприятие не готово к реализации на основе проекта, он может быть положен "на полку" до тех пор, пока в нем не возникнет необходимость. Кроме того, его можно использовать для самостоятельной разработки или корректировки уже реализованных на его основе программных средств силами программистов отдела автоматизации предприятия.
На основании системного проекта осуществляется:
составление перечня автоматизированных рабочих мест предприятия и способов взаимодействия между ними;
анализ применимости существующих систем управления предприятиями для решения требуемых задач и формирование рекомендаций по выбору такой системы;
совместное с заказчиком принятие решения о выборе конкретной системы управления предприятием или разработке собственной системы;
разработка требований к техническим средствам;
разработка требований к программным средствам;
разработка предложений по этапам и срокам автоматизации.
Что касается конкретно нашей задачи, то исключительно практическая необходимость и целесообразность позволяет правильно сформировать постановку задачи и разработать схему интерфейса, а также саму структуру данных.
Что касается информационного обеспечения комплекса для решения поставленной задачи, то как мы выше уже указывали для этих целей нам необходимо подобрать максимально простую, но эффективную СУБД для работы с данными, а также собственно язык программирования, который сможет обеспечить взаимодействие с данными и пользовательский интерфейс. Начнем с СУБД.
Общая классификация
. База данных (БД) - это данные, организованные в виде набора записей определенной структуры и хранящиеся в файлах, где, помимо самих данных, содержится описание их структуры. Система управления базами данных (СУБД) - это система, обеспечивающая ввод данных в БД, их хранение и восстановление в случае сбоев, манипулирование данными, поиск и вывод данных по запросу пользователя. По моделям представления данных базы данных делят на:
иерархические
сетевые
реляционные
объектно-реляционные
Иерархические базы данных
- это самая первая модель представления данных, в которой все записи базы данных представлены в виде дерева, с отношениями предок-потомок. Физически данные отношения реализуются в виде указателей на предков и потомков, содержащихся в самой записи. Такая модель представления данных связана с тем, что на ранних этапах базы данных часто использовались для планирования производственного процесса: каждое выпускаемое изделие состоит из узлов, каждый узел из деталей и т.п.
Однако иерархическая модель не является оптимальной. Допустим, что один и тот же тип болтов используется в автомобиле 300 раз в различных узлах. При использовании иерархической модели, данный тип болтов будет фигурировать в базе данных не 1 раз, а 300 раз (в каждом узле - отдельно). Налицо дублирование информации. Чтобы устранить этот недостаток была введена сетевая модель представления данных.
Сетевая база данных
- это база данных, в которой одна запись может участвовать в нескольких отношениях предок-потомок. Т.е. фактически, база данных представляет собой не дерево, а граф.
Физически данная модель также реализуется за счет хранящихся внутри самой записи указателей на другие записи, только, в отличие от иерархической модели, число этих указателей может быть произвольным. И иерархическая и сетевая модель достаточно просты, однако они имеют общий недостаток: для того, чтобы получить ответ даже на простой вопрос, программист был должен написать программу, которая просматривала базу данных, двигаясь по указателям от одной записи к другой. Написание программы занимало некоторое время, и часто к тому моменту, когда такая программа была написана, необходимость в получении данных уже отпадала. Поэтому в середине 80-х годов 20 века произошел практически повсеместный переход к реляционным базам данных.
В реляционной базе данных
вся информация представляется в виде таблиц и любые операции над данными - это операции над таблицами. Таблицы состоят из строк и столбцов. Строки - это записи, а столбцы представляют структуру записи (каждый столбец имеет определенный тип данных и длину данных). Строки в таблице не упорядочены - не существует первой или десятой строки. Однако поскольку на строки надо как-то ссылаться, то вводится понятие "первичный ключ". Первичный ключ - это столбец, значения которого во всех строках разные. Используя первичный ключ можно однозначно сослаться на какую-либо строку таблицы. Первичный ключ может состоять и из нескольких столбцов (составной первичный ключ).
Некоторые СУБД требуют в явном виде указать первичный ключ таблицы, а некоторые позволяют пользователю не задавать для таблицы первичный ключ - в таком случае СУБД сама добавляет в таблицу столбец - первичный ключ, не отображаемый на экране (так, например, в СУБД Oracle у любой таблицы существует псевдо-столбец ROWID, формируемый Oracle, который содержит уникальный адрес каждой строки).
Отношения предок-потомок в реляционных БД реализуются при помощи внешних ключей. Внешний ключ это столбец таблицы, значения которого совпадают со значениями первичного ключа некоторой другой таблицы.
Объектно-реляционные
базы данных появились в последнее время у значительного числа производителей СУБД (Oracle, Informix, PostgreSQL) и сочетают в себе реляционную модель данных с концепциями объектно-ориентированного программирования (полиморфизм, инкапсуляция, наследование).
СУБД Oracle
. СУБД ORACLE является на сегодняшний день самой мощной, многофункциональной и легко масштабируемой СУБД, построенной по архитектуре "клиент/сервер", поддерживающей практически все существующие платформы. Это прекрасный выбор для крупной организации: первоначальные затраты на установку (лицензия, приобретение высокопроизводительных серверов) в будущем обернутся значительной экономией средств при необходимости расширения базы данных. Для небольшой организации мощь Oracle может оказаться чрезмерной, в таком случае можно рекомендовать использование Microsoft SQL Server (Windows NT/2000) или PostgreSQL (Linux/Unix). Для фирм малого бизнеса стандартом остается СУБД MS Access. Тем не менее, Oracle продолжает занимать значительную долю рынка, являясь пожалуй самой передовой СУБД.
База данных Oracle содержит различные типы объектов. Эти объекты можно подразделить на две категории: объекты схемы и объекты, не принадлежащие схемам. Схема (
schema) - это набор объектов различной логической структуры данных. Каждая схема принадлежит пользователю базы данных и имеет одинаковое с ним имя. Каждый пользователь владеет одной схемой. Схема может содержать следующие объекты:
таблицы;
индексы;
кластеры;
представления (виды);
снимки - snapshots, журналы репликаций;
линки/связи базы данных (содержат информацию о подключении к удаленной базе данных);
последовательности;
синонимы;
пакеты, хранимые процедуры, функции, триггеры;
библиотеки внешних процедур;
СУБД
MS SQL Server, сравнение с MS Access. MS SQL Server - это реляционная СУБД, построенная по архитектуре клиент-сервер. MS SQL Server ориентирован на использование в операционных системах Windows NT/2000 и использует в своей работе системные функции этих ОС, что значительно упрощает архитектуру MS SQL Server, в отличие от других СУБД, вынужденных дублировать некоторые функции ядра операционной системы, для обеспечения межплатформенной переносимости. За счет такой тесной интеграции с Windows NT/2000, СУБД MS SQL Server работает на всех платформах, для которых реализована Windows NT/2000.
SQL Server - это не просто улучшенный Access. В SQL Server реализована система разграничения доступа к объектам базы данных (разные пользователи имеют разные права по работе с различными таблицами, запросами и т.д.). Ограничения доступа можно выставлять не только на таблицу в целом, но даже и на отдельные ее столбцы. Также в SQL Server поддерживается механизм ролей. Роль - это набор прав доступа к объектам базы данных. Роли для каждой базы данных можно определять самостоятельно или пользоваться заранее определенными ролями. Например, роль администраторы безопасности (security admin) - это пользователи которые могут допускать других пользователей к работе с базой данных, роль создатели базы данных (db creators, database creators) - пользователи которые могут создавать и изменять структуру базы данных и т.д. Используя роли можно быстро и удобно разграничить доступ между пользователями, предоставив им только те права, которые действительно необходимы. Причем нарушения прав доступа, также как и сама работа SQL Server будут протоколироваться в специальных log-файлах. SQL Server также позволяет пользователям, правильно указавшим свой пароль при входе в сеть (домен Windows NT/2000), повторно не вводить пароль при доступе к базе данных (Windows authentication mode).
К другим существенным отличиям относится то, что если в Access хранимые процедуры и функции пишутся на VBA (Visual Basic for Applications), то в SQL Server основным языком написания хранимых процедур является Transact SQL (хотя могут использоваться и внешние хранимые процедуры, написанные на других языках). Transact SQL - это диалект SQL, в котором, помимо стандартных инструкций SQL, предусмотрены возможности организации циклов, условного выполнения операторов и т.д.
MS SQL Server может содержать несколько баз данных. На одном компьютере может быть установлено несколько экземпляров MS SQL Server. Каждая база данных содержит следующие объекты:
таблицы
индексы
представления (виды, запросы)
диаграммы (схема данных)
курсоры (окно накладываемое на набор данных, аналог окна в текстовом редакторе, в котором в каждый момент времени отображается только часть документа)
триггеры, хранимые и внешние процедуры, функции пользователя, пользовательские типы данных
правила (ограничения на значения столбцов) и умолчания (значения столбцов по умолчанию) - необходимо для совместимости со старыми версиями, в новых версиях все эти ограничения указываются в инструкции Create языка SQL.
перечень пользователей, допущенных к базе данных и их разрешения, роли пользователей
каталоги полнотекстного поиска (позволяет осуществлять поиск текста по столбцам таблицы, включая столбцы, в которых в качестве значений содержатся файлы. doc,. xls,. txt,. htm)
СУБД Informix Universal Server. Работы над системой управления базами данных Informix были начаты в 1980 г. Согласно начальному замыслу Informix рассматривалась как СУБД, специально ориентированная для работы в среде ОС UNIX и использующая реляционную модель данных. Однако чисто реляционная модель данных не лишена определенных недостатков. За счет использования концепций объектно-ориентированного программирования (инкапсуляция, полиморфизм и наследование) Informix Universal Server позволяет вводить новые базовые типы данных, одновременно с введением для них специальных алгоритмов хранения, доступа и индексирования. При этом можно использовать как встроенные в Informix Universal Server методы доступа и хранения, так и определять новые
СУБД DB2. Одна из первых реляционных СУБД. Разработка фирмы IBM. Построена по архитектуре клиент-сервер и имеет огромный набор возможностей. Первоначально предназначалась для работы на мэйнфреймах, под управлением операционной системы OS/390. Существуют также версии под ОС Windows NT/2000, Linux и др. операционные системы.
СУБД Visual FoxPro, Corel Paradox, MS Access. Общей отличительной особенностью этих реляционных СУБД является то, что они построены по архитектуре файл-сервер и предназначены для баз данных с небольшим числом пользователей и небольшими объемами обрабатываемой информации (офисные СУБД). На территории СНГ наиболее распространенной является СУБД MS Access, о которой и пойдет речь в последующих главах.
Что касается, конкретно нашей задачи, то нам нет необходимости использовать серьезные сетевые ресурсы, обеспечивать высокое быстродействие, высокую степень защиту данных и критически минимальные сроки неработоспособности. У нас не столь серьезные требования к качеству СУБД, чтобы выбирать самое мощное из имеющихся в сегодняшнем арсенале разработчика. Нам нужно обеспечить одно локальное рабочее место, модуль, не имеющий ограничений на доступ, без шифрования данных, без каких-то либо автоматических сервисов. Кроме того. одно из условий выбора - доступность среды, а также нетребовательность к ресурсам системы, отсутствие какого-либо сложного инсталляционного пакета.
Общая цепочка обработки информации довольно простая. На данном этапе реализована схема, дублирующая аналогичные данные в 1С Бухгалтерии. Так как модуль получился внешним, и соответственно, достаточно гибким в эксплуатации и модификации, то часть связи с 1С может быть обеспечена в любом удобным момент путем добавления еще одного блока в уже существующий.
На текущем этапе разработана схема, позволяющая занести все необходимые для заполнения унифицированных форм данные с помощью отдельного программного интерфейса. Данный интерфейс представлен в виде логически упорядоченных форм. расположенных по разделах. Формы разработаны по подобию аналогичных в 1С Бухгалтерии. Далее, на основании шаблонов 1С Бухгалтерии подключены необходимые шаблоны документов, которые привязаны программным образом к данным из соответствующих форм.
Для того, чтобы вывести в унифицированную форму какой-либо документ, необходимо заполнить информацию по данному документу, т.е. добавить его в базу, выбрать его в перечне соответствующих интерфейсных форм, после чего с помощью соответствующих управляющих элементов запустить печать для необходимой выбранной формы. Вот собственно и весь перечень действий, которые нужно произвести пользователю для того, чтобы получить готовую стандартную документацию.
Для реализации задуманной схемы используется выбранная СУБД MS Access при использовании встроенного языка программирования VBA.
Таким образом, существует достаточно большое количество популярных СУБД. Что же позволило нам остановиться на MS Access?
Основные достоинства этой СУБД - доступность, простота удобство в конструировании, доработке, администрировании. Вместе с тем Access позволяет надежно хранить данные и эффективно их обрабатывать. Поэтому, начиная с Access 97, этот продукт стабильно держится в рейтинге настольных СУБД на первых местах. Сегодня наиболее популярен Access 2003, который входит в состав пакета MS Office 2003. К отдельным перечням достоинств стоит отнести и полную интеграцию с другими офисными приложениями - Word, Outlook, Excel.
Программное обеспечение позволяет усовершенствовать организацию работы вычислительной системы с целью максимального использования ее техники.
Необходимость в разработке ПО обусловливается следующим:
обеспечить работоспособность технических средств, так как без программного обеспечения они не могут осуществить никаких вычислительных и логических операций;
обеспечить взаимодействие пользователя с техникой;
сократить цикл от постановки задачи до получения результата ее решения;
повысить эффективность использования ресурсов технических средств.
В настоящее время распространены такие формы ИС в управлении предприятиями:
индивидуальное использование компьютеров;
автоматизированные рабочие места (АРМ);
локальные вычислительные сети (ЛВС).
Эти формы децентрализации ресурсов существенно различаются по концентрации вычислительных средств.
Опыт автоматизации управления в производственно-экономических структурах показал, что степень влияния ИС с развитыми информационно-справочными функциями на эффективность управленческой деятельности очень существенна. К наиболее важным результатам ее работы можно отнести:
расширение информационных возможностей и повышение оперативности принятия решений для ранее действовавших и вновь создаваемых структурных подразделений;
усиление на этой основе координирующих функций звеньев центрального аппарата управления;
значительное повышение информированности и рабочей квалификации работников всех уровней управления.
Применение АРМ не должно нарушать привычный пользователю ритм его работы, должно обеспечивать концентрацию внимания пользователя на логической структуре решаемых задач. Однако если заданное действие не производится или результат искажается, пользователь должен знать причину и информация об этом должна выдаваться на экран.
В составе программного обеспечения АРМ можно выделить два основных вида обеспечения, различающихся по функциям: общее (системное) и специальное (прикладное). К общему программному обеспечению относится комплекс программ, обеспечивающий автоматизацию разработки программ и организацию экономичного вычислительного процесса на ПК безотносительно к решаемым задачам. Специальное (прикладное) программное обеспечение представляет собой совокупность программ решения конкретных задач пользователя.
Режим работы различных технологий, технические особенности вычислительных устройств, разнообразие и массовый характер их применения предъявляют особые требования к программному обеспечению. Такими требованиями являются: надежность, эффективность использования ресурсов ПК, структурность, модульность, эффективность по затратам, дружественность по отношению к пользователю. При разработке и выборе программного обеспечения необходимо ориентироваться в архитектуре и характеристиках ПК, имея в виду минимизацию времени обработки данных, системное обслуживание программ большого количества пользователей, повышение эффективности использования любых конфигураций технологических схем обработки данных.
Классификация программного обеспечения АРМ приведена на рис.1.7.
Рис.1.7 Структура подхода
Главное назначение общего ПО - запуск прикладных программ и управление процессом их выполнения.
Специальное программное обеспечение АРМ обычно состоит из уникальных программ и функциональных пакетов прикладных программ. Именно от функционального ПО зависит конкретная специализация АРМ. Учитывая, что специальное ПО определяет область применения АРМ, состав решаемых пользователем задач, оно должно создаваться на основе инструментальных программных средств диалоговых систем, ориентированных на решение задач со схожими особенностями обработки информации.
Программное обеспечение АРМ должно обладать свойствами адаптивности и настраиваемости на конкретное применение в соответствии с требованиями пользователя.
В качестве операционных систем АРМ, созданных на базе 16-разрядных компьютеров, обычно используется MS DOC, на базе 32-разрядных - OS/2 и UNIX.
Основными приложениями пакетов прикладных программ, входящих в состав специального ПО АРМ, являются обработка текстов, табличная обработка данных, управление базами данных, машинная и деловая графика, организация человеко-машинного диалога, поддержка коммуникаций и работа в сетях.
Эффективными в АРМ являются многофункциональные интегрированные пакеты, реализующие несколько функций переработки информации, например табличную, графическую, управление базами данных, текстовую обработку в рамках одной программной среды.
Интегрированные пакеты удобны для пользователей. Они имеют единый интерфейс, не требуют стыковки входящих в них программных средств, обладают достаточно высокой скоростью решения задач.
Эффективное функционирование ИС управления и АРМ специалиста базируется на комплексном использовании современных программных средств обработки информации в совокупности с современными организационными формами размещения техники.
Выбор организационных форм использования программных средств целесообразно осуществлять с учетом их рассредоточения по уровням иерархии управления в соответствии с организационной структурой автоматизируемого объекта. При этом основным принципом выбора является коллективное обслуживание пользователей, отвечающее структуре экономического объекта.
С учетом современной функциональной структуры территориальных органов управления совокупность программно-технических средств должна образовывать по меньшей мере трехуровневую глобальную систему обработки данных с развитым набором периферийных средств каждого уровня (рис.1.8).
Первый уровень - центральная вычислительная система территориального или корпоративного органа, включающая одну или несколько мощных ЭВМ, или мэйнфреймов. Ее главная функция - общий, экономический и финансовый контроль, информационное обслуживание работников управления.
Второй уровень - вычислительные системы предприятий (объединений), организаций и фирм, которые включают мэйнфреймы, мощные ПК, обеспечивают обработку данных и управление в рамках структурной единицы.
Рис.1.8 Структура подхода
Третий уровень - локально распределенные вычислительные сети на базе ПК, обслуживающие производственные участки нижнего уровня. Каждый участок оснащен собственным ПК, который обеспечивает комплекс работ по первичному учету, учету потребности и распределения ресурсов. В принципе это может быть автоматизированное рабочее место (АРМ), выполняющее функциональные вычислительные процедуры в рамках определенной предметной области.
Пакеты прикладных программ являются наиболее динамично развивающейся частью программного обеспечения: круг решаемых с их помощью задач постоянно расширяется. Внедрение компьютеров во все сферы деятельности стало возможным благодаря появлению новых и совершенствованию существующих ППП.
Структура и принципы построения ППП зависят от класса ЭВМ и операционной системы, с которой этот пакет будет функционировать. Наибольшее количество ППП создано для IBM PC-совместимых компьютеров с операционной системой MS DOS и операционной оболочкой WINDOWS. Классификация этих пакетов программ по функционально-организационному признаку представлена на рис.1.9.
Рис.1.9 Структура подхода.
Проблемно-ориентированные ППП - наиболее функционально развитые и многочисленные ППП. Они включают следующие программные продукты: текстовые процессоры, издательские системы, графические редакторы, демонстрационную графику, системы мультимедиа, ПО САПР, организаторы работ, электронные таблицы (табличные процессоры), системы управления базами данных, программы распознавания символов, финансовые и аналитико-статистические программы.
Обеспечение эффективности информационных технологий и систем в решающей степени определяется программно-техническим оснащением, которое должно отвечать ряду требований. Программно-технические средства организуются на системной основе, что делает их использование более экономичным и надежным.
Широкие возможности компьютеров разных классов и моделей позволяют реализовать любые конфигурации сложных сетевых информационных систем. Аппаратные характеристики ЭВМ влияют на выбор системного и прикладного программного обеспечения. Высокий уровень техники дает возможность использовать и более качественную программную продукцию с большим количеством функций. Развитие программного обеспечения автоматизированного рабочего места (АРМ) экономиста постоянно совершенствует функции пользователя, повышает производительность его труда, одновременно расширяя масштабы деятельности. Совокупный эффект от качества программно-технического оснащения множества АРМ сказывается на процессах управления организацией в целом, на ее доходности и стабильности функционирования.
Что же касается конкретно нашей задачи, то с ней ситуация такова: основная часть АРМ бухгалтера уже готова и продумана в АСУ 1С Бухгалтерия. Наша задача организовать удобный интерфейс для нашего дополнительного блока, который позволит максимально эффективно проводить требуемые операции.
Для построения модели данных удобно воспользоваться языком диаграмм "сущность-связь".
Диаграммы "сущность-связь" (ERD) предназначены для разработки моделей данных и обеспечивают стандартный способ определения данных и отношений между ними. Фактически с помощью ERD осуществляется детализация хранилищ данных проектируемой системы, а также документируются сущности системы и способы их взаимодействия, включая идентификацию объектов, важных для предметной области (сущностей), свойств этих объектов (атрибутов) и их отношений с другими объектами (связей).
СУЩНОСТЬ представляет собой множество экземпляров реальных или абстрактных объектов (людей, событий, состояний, идей, предметов и т.п.), обладающих общими атрибутами или характеристиками. Любой объект системы может быть представлен только одной сущностью, которая должна быть уникально идентифицирована.
ОТНОШЕНИЕ в самом общем виде представляет собой связь между двумя и более сущностями. Именование отношения осуществляется с помощью грамматического оборота глагола (ИМЕЕТ
, ОПРЕДЕЛЯЕТ, МОЖЕТ ВЛАДЕТЬ
и т.п.).
Другими словами, сущности представляют собой базовые типы информации, хранимой в базе данных, а отношения показывают, как эти типы данных взаимоувязаны друг с другом. Введение подобных отношений преследует две основополагающие цели:
обеспечение хранения информации в единственном месте (даже если она используется в различных комбинациях);
использование этой информации различными приложениями.
Для идентификации требований, в соответствии с которыми сущности вовлекаются в отношения, используются СВЯЗИ
. Каждая связь соединяет сущность и отношение и может быть направлена только от отношения к сущности.
ЗНАЧЕНИЕ
связи характеризует ее тип и, как правило, выбирается из следующего множества:
{"O или 1", "0 или более", "1", "1 или более", "p: q" (диапазон) }.
Пара значений связей, принадлежащих одному и тому же отношению, определяет тип этого отношения. Практика показала, что для большинства приложений достаточно использовать следующие типы отношений:
1*1 (один-к-одному). Отношения данного типа используются, как правило, на верхних уровнях иерархии модели данных, а на нижних уровнях встречаются сравнительно редко.
1*n (один-к-многим). Отношения данного типа являются наиболее часто используемыми.
n*m (многие-к-многим). Отношения данного типа обычно используются на ранних этапах проектирования с целью прояснения ситуации. В дальнейшем каждое из таких отношений должно быть преобразовано в комбинацию отношений типов 1 и 2 (возможно, с добавлением вспомогательных сущностей и с введением новых отношений).
Разработка ERD включает следующие основные этапы:
Идентификация сущностей, их атрибутов, а также первичных и альтернативных ключей.
Идентификация отношений между сущностями и указание типов отношений.
Разрешение неспецифических отношений (отношений n*m).
Этап 1 является определяющим при построении модели, его исходной информацией служит содержимое хранилищ данных, определяемое входящими и выходящими в/из него потоками данных. Его единственное хранилище ДАННЫЕ О ПЕРСОНАЛЕ
должно содержать информацию о всех сотрудниках: их имена, адреса, должности, оклады и т.п.
Первоначально осуществляется анализ хранилища, включающий сравнение содержимого входных и выходных потоков и создание на основе этого сравнения варианта схемы хранилища.
Следующий шаг - упрощение схемы при помощи нормализации (удаления повторяющихся групп). Единственным способом нормализации является расщепление данной схемы на две, являющиеся более простыми.
Определение отношений включает выявление связей, для этого отношение должно быть проверено в обоих направлениях следующим образом: выбирается экземпляр одной из сущностей и определяется, сколько различных экземпляров второй сущности может быть с ним связано, и наоборот.
Этап 2 предназначен для разрешения неспецифических (многие ко многим) отношений. Для этого каждое неспецифическое отношение преобразуется в два специфических отношения с введением новых (а именно, ассоциативных) сущностей.
По существу информационно-логическая модель представляет собой иллюстрированную, развернутую, подробную функциональную спецификацию будущей системы.
Инфологическая модель должна выражать информацию о предметной области в виде, независимом от используемой СУБД. Эта модель отражает в естественной и удобной для разработчиков и других пользователей форме информационно-логический уровень абстрагирования, связанный с фиксацией и описанием объектов предметной области, их свойств и их взаимосвязей. Инфологические модели данных используются на ранних стадиях проектирования для описания структур данных в процессе разработки приложения, см. рис 2.1.
Далее на рис.2.2 представлено схематичное изображение потоков данных в системе.
Рисунок 2.1
Рисунок 2.2.
Что касается нашего случая построения схемы данных, то для ее разработки использовалась уже готовая модель, которая имелась в основной АСУ, а также сами шаблоны унифицированных форм, которые позволяли отобрать необходимые для работы данные.
В структуре данной модели присутствуют: две внешних сущности - “Директор”, “Финансовый отдел"; два процесса - “Ведение исходной информации для заполнения форм”, “Заполнение форм ОС”.
Разработанная схема данных представлена на рис.2.3.
Что касается системы кодирования данных, а также схемы классификации, то она полностью идентична таковой, которая имеет место в главной АСУ.
Для принятия к бухгалтерскому учету активов в качестве основных средств необходимо единовременное выполнение следующих условий:
а) при выполнении работ или оказании услуг либо для нужд управления организацией;
б) использование в течение длительного времени, т. с. срока полезного использования продолжительностью свыше 12 месяцев или обычного операционного цикла, если он превышает 12 месяцев;
в) организацией не предполагается последующая перепродажа данных активов;
г) способность приносить организации экономические выгоды (доход) в будущем.
Сроком полезного использования является период, в течение которого использование объекта основных средств приносит доход организации.
Для отдельных групп основных средств срок полезного использования определяется исходя из количества продукции (объема работ в натуральном выражении), ожидаемого к получению в результате использования этого объекта.
Рис.2.3 Рабочая схема данных
Не относятся к основным средствам для целей бухгалтерского учета:
машины, оборудование и иные аналогичные предметы, числящиеся как готовые изделия на складах организаций-изготовителей, как товары - на складах организаций, осуществляющих торговую деятельность;
предметы, сданные в монтаж или подлежащие монтажу, находящиеся в пути;
капитальные и финансовые вложения.
Основные средства организации разнообразны по составу и назначению. В составе основных средств обычно выделяют следующие виды:
здания;
сооружения;
рабочие и силовые машины и оборудование;
измерительные и регулирующие приборы и устройства;
вычислительная техника;
транспортные средства;
инструмент.
производственный и хозяйственный инвентарь и принадлежности;
рабочий, продуктивный и племенной скот;
многолетние насаждения;
капитальные вложения на коренное улучшение земель (осушительные, оросительные и другие мелиоративные работы);
капитальные вложения в арендованные объекты основных средств;
земельные участки, объекты природопользования (вода, недра и другие природные ресурсы);
прочие основные средства.
Единицей бухгалтерского учета основных средств является инвентарный объект. Под инвентарным объектом основных средств признается объект со всеми приспособлениями и принадлежностями или отдельный конструктивно обособленный предмет, предназначенный для выполнения определенных самостоятельных функций, или же обособленный комплекс конструктивно сочлененных предметов, представляющих собой единое целое и предназначенных для выполнения определенной работы. В случае наличия у одного объекта нескольких частей, имеющих разный срок полезного использования, каждая такая часть учитывается как самостоятельный инвентарный объект.
Необходимым условием правильного учета основных средств является единый принцип их оценки. Различают несколько видов оценки основных средств: первоначальная, текущая, восстановительная и остаточная.
Что касается конкретной классификации объектов учета (т.е. товаров или изделий), то она полностью зависит от природы объекта и произвольна. В нашем модуле мы разделили на два уровня классификации наших объектов учета - это категории и подкатегории. При этом структура ступенчатая - категории могут иметь несколько привязанных подкатегорий. А каждый объект учета (т.е. собственно товар - уже может относиться к какой-то категории и подкатегории). Что касается системы кодирования объектов. То каждый и них имеет свой код поставщика, который включен в наименование объекта и является определенной комбинацией букв и цифр. Кроме того, в обязательном порядке каждый объект имеет свой инвентарный уникальный номер, благодаря которому всегда можно получить информацию о местонахождении объекта или его движении.
Используемые классификаторы и системы кодирования отражены в табл.2.1
Таблица 2.1
№ п\п
|
Наименование кодируемого подмножества
|
Система кодирования
|
Вид классификатора
|
1
|
Код статьи формы №1 бухгалтерской отчётности
|
Последовательная
|
Общероссийский
|
2
|
Код статьи формы №2 бухгалтерской отчётности
|
Последовательная
|
Общероссийский
|
3
|
Код показателя
|
Последовательная
|
Общесистемный
|
4
|
Формы ОС-1, ОС-2, ОС-3, ОС-4, ОС-6, ОС-6б, инвентаризационная ведомость
|
Последовательная
|
Общесистемный
|
Все перечисленные коды являются индексированными полями.
Входная информация состоит из первичных данных. которые по своей структуре полностью идентичны таковой в главной АСУ а также шаблонов унифицированных форм.
Для документального оформления операций поступления и выбытия основных средств используются следующие унифицированные формы.
№ОС-1 "Акт о приеме-передаче объектов основных средств (кроме зданий, сооружении)"
Применяется для зачисления в состав основных средств отдельных объектов (кроме зданий, сооружений), поступивших путем:
приобретения за плату у других организаций;
получения от других организаций и лиц в безвозмездное пользование;
внесения учредителями (участниками) в счет их вкладов в уставный (складочный) капитал;
получения в хозяйственное ведение или оперативное управление;
взятия в аренду с последующим выкупом;
получения по акту дарения;
передачи в совместную деятельность и доверительное управление;
передачи в обмен на другое имущество и другими способами, не противоречащими действующему законодательству. При оформлении приемки основных средств акт составляется в одном экземпляре на каждый отдельный объект основных средств членами приемочной комиссии, назначаемой распоряжением (приказом) руководителя организации.
Акт с приложенной технической документацией, относящейся к данному объекту, передается в бухгалтерию организации, подписывается главным бухгалтером и утверждается руководителем организации или лицом, на это уполномоченным.
№ОС-1а "Акт о приеме-передаче здания (сооружения)"
Применяется для зачисления в состав основных средств отдельных зданий и сооружений.
№ОС-1б "Акт о приеме-передаче групп объектов основных средств"
Применяется для зачисления в состав основных средств однородных объектов, имеющих одинаковую стоимость и принятых к учету в одном календарном месяце.
№ОС-2 "Накладная на внутреннее перемещение объектов основных средств", см. образец формы на рис.2.4
Применяется для оформления внутреннего перемещения объектов основных средств из одного структурного подразделения организации в другое и для оформления передачи основных средств со склада (из запаса) в эксплуатацию.
Выписывается в двух экземплярах работником сгруктурного подразделения организации-сдатчика: первый экземпляр с распиской получателя и сдатчика передается в бухгалтерию; второй структурному подразделению организации-сдатчика.
Рис.2.4 Пример формы ОС-2
№ ОС-3 "Акт о приемке-сдаче отремонтированных, реконструированных и модернизированных объектов основных средств"
Форма № ОС-3 применяется для оформления приемки-сдачи основных средств из ремонта, реконструкции и модернизации.
Акт, подписанный работником структурного подразделения организации, уполномоченным на приемку основных средств, и представителем организации, производившей ремонт, реконструкцию и модернизацию, сдают в бухгалтерию организации, где он подписывается главным бухгалтером (бухгалтером) и утверждается затем руководителем организации или лицом, на это уполномоченным.
Если ремонт, реконструкцию и модернизацию выполняет сторонняя организация, акт составляется в двух экземплярах: первый остается у организации; второй передают организации, проводившей ремонт, реконструкцию, модернизацию.
№ ОС-4 "Акт о списании объекта основных средств (кроме автотранспортных средств)"
Форма № ОС-4 применяется для оформления полного или частичного списания основных средств (кроме автотранспортных средств).
Акт составляется в двух экземплярах, подписывается членами комиссии, утверждается руководителем организации или уполномоченным лицом.
Первый экземпляр акта передается в бухгалтерию, второй остается у лица, ответственного за сохранность основных средств, и является основанием для сдачи на склад и реализации оставшихся в результате списания запчастей, материалов, металлолома.
№ ОС-4а "Акт о списании автотранспортных средств"
Форма № ОС-4а применяется для оформления списания автотранспортных средств.
Акт составляется в двух экземплярах и подписывается членами комиссии, утверждается руководителем или лицом, на это уполномоченным. Первый экземпляр с документом, подтверждающим снятие с учета в ГИБДД, передастся в бухгалтерию, второй остается у лица, ответственного за сохранность автотранспортных средств, и является основанием для сдачи на склад и реализации материальных ценностей и металлолома, оставшихся в результате списания.
№ ОС-46 "Акт о списании групп объектов основных средств (кроме автотранспортных средств)"
Форма № ОС-46 применяется для оформления полного или частичного списания групп объектов основных средств (кроме автотранспортных средств).
Акт составляется в двух экземплярах, подписывается членами комиссии, утверждается руководителем организации или уполномоченным лицом.
Первый экземпляр акта передается в бухгалтерию, второй остается у лица, ответственного за сохранность основных средств, и является основанием для сдачи на склад и реализации оставшихся в результате списания запчастей, материалов, металлолома.
№ ОС-6 "Инвентарная карточка учета объекта основных средств"
Инвентарная карточка ведется в бухгалтерии на каждый объект основных средств. Форма заполняется в одном экземпляре на основании документов о зачислении объекта, его перемещении, дооборудовании, реконструкции, модернизации, капитальном ремонте и списании.
№ ОС-ба "Инвентарная карточка группового учета объектов основных средств"
Инвентарная карточка ведется в бухгалтерии на группу объектов. Форма применяется для группового учета однотипных основных средств, поступивших в эксплуатацию в одном календарном месяце и имеющих одно и то же производственно-хозяйственное назначение, техническую характеристику и стоимость.
Заполняется в одном экземпляре на основании документов о зачислении объекта, его перемещении, дооборудовании, реконструкции, модернизации, капитальном ремонте и списании.
№ ОС-14 "Акт о приемке (поступлении) оборудования"
Акт применяется для оформления поступившего на склад оборудования к установке, составляется в двух экземплярах и подписывается приемной комиссией.
Первый экземпляр вместе с сопроводительными документами передается в бухгалтерию для отражения в учете, второй остается у заведующего складом.
№ ОС-15 "Акт о приемке-передаче оборудования в монтаж"
Форма №ОС-15 применяется для оформления передачи оборудования монтажной организации.
Акт составляется в двух экземплярах и подписывается уполномоченными представителями организации заказчика и монтажной организации. Первый экземпляр передается монтажной организации, второй - в бухгалтерию для отражения в учете.
Следующие из вышеперечисленных форм нашли отображение в программе, см. табл.2.2
Таблица 2.2
№ п/п
|
Наименование
|
Обозначение
|
1
|
ОС №2 - внутреннее перемещение
|
ВнутренниеНакл + ВнутренниеНаклТовары
|
2
|
ОС №1 - акт приемки - передачи
|
АктыПриемки
|
3
|
ОС №6 - инвентарная карточка
|
ИнвентКарты
|
4
|
ОС №5 - акт приемки-передачи отрем. объектов ОС
|
АктыРемонта
|
5
|
ОС №4 - акт списания ОС
|
АктыСписания + АктыСписанияТовары
|
6
|
ОС №6б - инвентарная книга ОС
|
На основании справочника "ОснСредства"
|
7
|
Инвентаризационная опись ОС
|
Инвентаризации + ИнвентаризацииТовары
|
"ОС №2 - внутреннее перемещение" структура отражена в табл.2.3
Таблица 2.3
№ п/п
|
Наименование поля
|
Обозначение
|
Тип данных
|
Размер поля
|
1
|
Код
|
НомерНакл
|
Счетчик
|
Длинное целое
|
2
|
Код поздразделения-отправителя
|
НомерПодразд1
|
Числовой
|
Длинное целое
|
3
|
Код поздразделения-получателя
|
НомерПодразд2
|
Числовой
|
Длинное целое
|
4
|
Номер документа
|
НомерНаклВнутр
|
Текстовый
|
255
|
5
|
Дата документа
|
ДатаНакл
|
Дата/время
|
|
6
|
Дата подписи при сдаче
|
ДатаНаклСдал
|
Дата/время
|
|
7
|
Дата подписи при принятии
|
ДатаНаклПринял
|
Дата/время
|
|
8
|
Код сотрудника, который сдавал ОС
|
НомерСотрСдал
|
Числовой
|
Длинное целое
|
9
|
Код сотрудника, который принял ОС
|
НомерСотрПринял
|
Числовой
|
Длинное целое
|
10
|
Примечание
|
Примечание
|
Текстовый
|
255
|
11
|
Код товара в перечне
|
НомерНаклТов
|
Счетчик
|
Длинное целое
|
12
|
Номер внутр. накладной для связи
|
НомерНакл
|
Числовой
|
Длинное целое
|
13
|
Код товара
|
НомерТов
|
Числовой
|
Длинное целое
|
14
|
Количество
|
Количество
|
Числовой
|
Длинное целое
|
"ОС №1 - акт приемки - передачи" структура отражена в табл.2.4
Таблица 2.4
№ п/п
|
Наименование поля
|
Обозначение
|
Тип данных
|
Размер поля
|
1
|
Код
|
НомерАкт
|
Счетчик
|
Длинное целое
|
2
|
Код руководителя
|
НомерСотрРук
|
Числовой
|
Длинное целое
|
3
|
Дата подписи руководителем
|
ДатаПодписи
|
Дата/время
|
|
4
|
Счет амортизации
|
Счет
|
Текстовый
|
255
|
5
|
Номер документа
|
НомерВнутр
|
Текстовый
|
255
|
6
|
Дата документа
|
ДатаАкта
|
Дата/время
|
|
7
|
Номер амортизационной группы
|
НомерАмортГруппы
|
Числовой
|
Длинное целое
|
8
|
Код товара
|
НомерТов
|
Числовой
|
Длинное целое
|
9
|
Местонахождение
|
Местонахождение
|
Текстовый
|
255
|
10
|
Количество
|
Количество
|
Числовой
|
Двойное с плавающей точкой
|
11
|
Дата испытания
|
ДатаИспытания
|
Дата/время
|
|
12
|
Соотвествует ли?
|
Соотвествие
|
Логический
|
|
13
|
Что конкретно не соотвествует
|
ЧтоСоотв
|
Текстовый
|
255
|
14
|
Нужна ли доработка?
|
Доработка
|
Логический
|
|
15
|
Что конкретно доработать?
|
ЧтоДораб
|
Текстовый
|
255
|
16
|
Заключение
|
Заключение
|
Поле МЕМО
|
|
17
|
Информация о тех. документе ОС
|
ТехДок
|
Текстовый
|
255
|
18
|
Председатель комиссии
|
НомерСотрПредс
|
Числовой
|
Длинное целое
|
19
|
1й член комиссии
|
НомерСотрЧлен1
|
Числовой
|
Длинное целое
|
20
|
2й член комиссии
|
НомерСотрЧлен2
|
Числовой
|
Длинное целое
|
21
|
Дата приемки ОС
|
ДатаПринятия
|
Дата/время
|
|
22
|
Доверенность
|
ВыданаДов
|
Текстовый
|
255
|
23
|
Дата доверенности
|
ДатаДов
|
Дата/время
|
|
24
|
Номер доверенности
|
НомерДов
|
Текстовый
|
255
|
25
|
Сотрудник, получивший на хранение
|
НомерСотрХран
|
Числовой
|
Длинное целое
|
26
|
Дата выдачи на хранение
|
ДатаХранения
|
Дата/время
|
|
"ОС №5 - акт приемки-передачи отрем. объектов ОС" структура отражена в табл.2.5
Таблица 2.5
№ п/п
|
Наименование поля
|
Обозначение
|
Тип данных
|
Размер поля
|
1
|
Код
|
НомерАктаРемонта
|
Счетчик
|
Длинное целое
|
2
|
Код исполнителя
|
НомерИсп
|
Числовой
|
Длинное целое
|
3
|
Номер договора с исполнителем
|
НомерДоговора
|
Текстовый
|
255
|
4
|
Дата договора
|
ДатаДоговора
|
Дата/время
|
|
5
|
Дата плановая начала рем. работ
|
ПериодРемПлан1
|
Дата/время
|
|
6
|
Дата плановая конца рем. работ
|
ПериодРемПлан2
|
Дата/время
|
|
7
|
Дата факт. начала рем. работ
|
ПериодРемФакт1
|
Дата/время
|
|
8
|
Дата факт. конца рем. работ
|
ПериодРемФакт2
|
Дата/время
|
|
9
|
Номер акта рем. Работ
|
НомерВнутр
|
Текстовый
|
255
|
10
|
Дата акта
|
ДатаАкта
|
Дата/время
|
|
11
|
Код руководителя
|
НомерСотрРук
|
Числовой
|
Длинное целое
|
12
|
Дата подписи руководителем
|
ДатаПодписи
|
Числовой
|
Длинное целое
|
13
|
Код товара
|
НомерТов
|
Числовой
|
Длинное целое
|
14
|
Вид работы
|
ВидРаботы
|
Текстовый
|
255
|
15
|
Стоимость демонтажных работы
|
СтоимДемонт
|
Числовой
|
Двойное с плавающей точкой
|
16
|
Стоимость плановая работ
|
СтоимРаботПлан
|
Числовой
|
Двойное с плавающей точкой
|
17
|
Стоимость плановая работ по вводу в эксплуатацию ОС
|
СтоимРаботПлан2
|
Числовой
|
Двойное с плавающей точкой
|
18
|
Стоимость факт. работ
|
СтоимРаботФакт
|
Числовой
|
Двойное с плавающей точкой
|
19
|
Стоимость факт. работ по вводу в эксплуатацию ОС
|
СтоимРаботФакт2
|
Числовой
|
Двойное с плавающей точкой
|
20
|
Стоимость трансп. расходов
|
СтоимТрансп
|
Числовой
|
Двойное с плавающей точкой
|
21
|
Полностью ли произведены работы?
|
Полностью
|
Логический
|
|
22
|
Что конкретно не выполнено?
|
ЧтоНеПолн
|
Текстовый
|
255
|
23
|
Председатель комиссии
|
НомерСотрПредс
|
Числовой
|
Длинное целое
|
24
|
1й член комиссии
|
НомерСотрЧлен1
|
Числовой
|
Длинное целое
|
25
|
2й член комиссии
|
НомерСотрЧлен2
|
Числовой
|
Длинное целое
|
26
|
Сотрудник, сдавший ОС
|
НомерСотрСдал
|
Числовой
|
Длинное целое
|
27
|
Дата сдачи ОС
|
ДатаСдачи
|
Дата/время
|
|
28
|
Количество
|
Количество
|
Числовой
|
Двойное с плавающей точкой
|
29
|
Сотрудник, принявший ОС после ремонта
|
НомерСотрПрин
|
Числовой
|
Длинное целое
|
30
|
Дата приемки
|
ДатаПриемки
|
Дата/время
|
|
31
|
Код главного бухгалтера
|
НомерБух
|
Числовой
|
Длинное целое
|
"ОС №6 - инвентарная карточка" структура отражена в табл.2.
Таблица 3
№ п/п
|
Наименование поля
|
Обозначение
|
Тип данных
|
Размер поля
|
1
|
Код
|
НомерИнвентКарты
|
Счетчик
|
Длинное целое
|
2
|
Код товара
|
НомерТов
|
Числовой
|
Длинное целое
|
3
|
Номер карточки
|
НомерВнутр
|
Числовой
|
Длинное целое
|
4
|
Дата карточки
|
ДатаИнвКарты
|
Дата/время
|
|
5
|
Счет амортизации
|
Счет
|
Текстовый
|
255
|
6
|
Номер амортизационной группы
|
НомерАмортГруппы
|
Числовой
|
Длинное целое
|
7
|
Местонахождение
|
Местонахождение
|
Текстовый
|
255
|
8
|
Код поставщика
|
НомерПост
|
Числовой
|
Длинное целое
|
9
|
Основание
|
ОснованиеПриема
|
Текстовый
|
255
|
10
|
Вид операции
|
ВидОперации
|
Текстовый
|
255
|
11
|
Количество
|
Количество
|
Числовой
|
Длинное целое
|
12
|
Код сотрудника, который отвечает за инв. карточку
|
НомерСотрИнв
|
Числовой
|
Длинное целое
|
"ОС №4 - акт списания ОС" структура отражена в табл.2.6
Таблица 2.6
№ п/п
|
Наименование поля
|
Обозначение
|
Тип данных
|
Размер поля
|
1
|
Код
|
НомерАкт
|
Счетчик
|
Длинное целое
|
2
|
Код руководителя
|
НомерСотрРук
|
Числовой
|
Длинное целое
|
3
|
Дата подписи руководителем
|
ДатаПодписи
|
Числовой
|
Длинное целое
|
4
|
Номер документа основания
|
НомерОсн
|
Текстовый
|
255
|
5
|
Дата документа основания
|
ДатаОсн
|
Дата/время
|
|
6
|
Номер акта списания
|
НомерВнутр
|
Текстовый
|
255
|
7
|
Дата акта
|
ДатаАкта
|
Дата/время
|
|
8
|
Причина списания
|
Причина
|
Текстовый
|
255
|
9
|
Код товара
|
НомерТов
|
Числовой
|
Длинное целое
|
10
|
Председатель комиссии
|
НомерСотрПредс
|
Числовой
|
Длинное целое
|
11
|
1й член комиссии
|
НомерСотрЧлен1
|
Числовой
|
Длинное целое
|
12
|
2й член комиссии
|
НомерСотрЧлен2
|
Числовой
|
Длинное целое
|
13
|
Код главного бухгалтера
|
НомерБух
|
Числовой
|
Длинное целое
|
14
|
Заключение комиссии
|
Заключение
|
Поле МЕМО
|
|
15
|
Номер компоненты
|
НомерАктТов
|
Счетчик
|
Длинное целое
|
16
|
Номер акта списания
|
НомерАкт
|
Числовой
|
Длинное целое
|
17
|
Название
|
НаименованиеКомп
|
Текстовый
|
255
|
18
|
Количество
|
Количество
|
Числовой
|
Длинное целое
|
"Инвентаризационная опись ОС" структура отражена в табл.2.7
Таблица 2.7
№ п/п
|
Наименование поля
|
Обозначение
|
Тип данных
|
Размер поля
|
1
|
Код
|
НомерИнв
|
Счетчик
|
Длинное целое
|
2
|
Номер описи
|
НомерВнутр
|
Текстовый
|
255
|
3
|
Дата описи
|
ДатаИнв
|
Дата/время
|
|
4
|
Основание
|
Основание
|
Текстовый
|
255
|
5
|
Номер документа основания
|
НомерОсн
|
Текстовый
|
255
|
6
|
Дата документа основания
|
ДатаОсн
|
Дата/время
|
|
7
|
Дата начала описи
|
ДатаНачала
|
Дата/время
|
|
8
|
Дата окончания описи
|
ДатаКонца
|
Дата/время
|
|
9
|
Местонахождение ОС
|
Местонахождение
|
Текстовый
|
255
|
10
|
1й мат. отв. сотрудник
|
МатОтв1
|
Числовой
|
Длинное целое
|
11
|
2й мат. отв. сотрудник
|
МатОтв2
|
Числовой
|
Длинное целое
|
12
|
3й мат. отв. сотрудник
|
МатОтв3
|
Числовой
|
Длинное целое
|
13
|
Председатель комиссии
|
НомерСотрПредс
|
Числовой
|
Длинное целое
|
14
|
1й член комиссии
|
НомерСотрЧлен1
|
Числовой
|
Длинное целое
|
15
|
2й член комиссии
|
НомерСотрЧлен2
|
Числовой
|
Длинное целое
|
16
|
3й член комиссии
|
НомерСотрЧлен3
|
Числовой
|
Длинное целое
|
17
|
Код сотрудника, проверящего ОС
|
НомерСотрПров
|
Числовой
|
Длинное целое
|
18
|
Дата подписи комиссией
|
ДатаПодписи
|
Дата/время
|
|
19
|
Дата подписи проверящим
сотрудником
|
ДатаПроверки
|
Дата/время
|
|
20
|
Код подразделения
|
СтруктПодр
|
Числовой
|
Длинное целое
|
Справочники предназначены для хранения часто используемой в подсистеме информации.
Перечень нормативно-справочной информации представлен в табл.2.8
Таблица 2.8
№ п/п
|
Наименование
|
Обозначение
|
1
|
Справочник реквизитов предприятия
|
Таблица "Параметры"
|
2
|
Справочник структурных подразделений предприятия
|
Таблица "СтуктурнПодразделения"
|
3
|
Справочник сотрудников предприятия
|
Таблица "Сотрудники"
|
4
|
Справочник должностей сотрудников
|
Таблица "Должности"
|
5
|
Справочник поставщиков
|
Таблица "Поставщики"
|
6
|
Справочник основных средств
|
Таблица "ОснСредства"
|
7
|
Справочник форм ОС
|
Таблица "Формы"
|
8
|
Справочник исполнителей ремонтных работ
|
Таблица "Исполнители"
|
"Справочник реквизитов предприятия" служит для хранения основных реквизитов предприятия, его структура показана в табл.2.9
Таблица 2.9
№ п/п
|
Наименование поля
|
Обозначение
|
Тип данных
|
Размер поля
|
1
|
Наименование фирмы
|
НаименованиеФирмы
|
Текстовый
|
255
|
2
|
Юридический адрес
|
ЮрАдрес
|
Поле МЕМО
|
|
3
|
Вид деятельности
|
ВидДеятельности
|
Поле МЕМО
|
|
4
|
Руководитель
|
Руководитель
|
Числовой
|
Длинное целое
|
5
|
Гл. бухгалтер
|
ГлБухгалтер
|
Числовой
|
Длинное целое
|
6
|
ОКПО
|
ОКПО
|
Текстовый
|
255
|
7
|
ИНН
|
ИНН
|
Текстовый
|
255
|
8
|
КПП
|
КПП
|
Текстовый
|
255
|
9
|
Банковские реквизиты
|
БанкРеквизиты
|
Поле МЕМО
|
|
10
|
Сотрудник, отвественный за проведение инвентаризации
|
ИнвОтвеств
|
Числовой
|
|
11
|
Последняя дата начала инвентаризации
|
ДатаИнв1
|
Дата/время
|
|
12
|
Последняя дата конца инвентаризации
|
ДатаИнв2
|
Дата/время
|
|
13
|
Номер структурного отделения для последней инвентаризации
|
НомерСтруктИнв
|
Числовой
|
Длинное целое
|
"Справочник структурных подразделений предприятия" служит для хранения ОКПО и наименований структурных подразделений предприятия, его структура показана в табл.2.10
Таблица 2.10
№
п/п
|
Наименование поля
|
Обозначение
|
Тип данных
|
Размер поля
|
1
|
Код
|
НомерПодразд
|
Счетчик
|
Длинное целое
|
2
|
Название cтруктурного подразделения
|
Структурное
Подразделение
|
Текстовый
|
255
|
3
|
ОКПО
|
ОКПО
|
Текстовый
|
255
|
"Справочник сотрудников предприятия" служит для хранения табельных номеров, ФИО сотрудников, кодов их должностей из справочника "Должности", его структура показана в табл.2.11
Таблица 2.11
№
п/п
|
Наименование поля
|
Обозначение
|
Тип данных
|
Размер поля
|
1
|
Код
|
НомерСотр
|
Счетчик
|
Длинное целое
|
2
|
ФИО сотрудника
|
Сотрудник
|
Текстовый
|
255
|
3
|
Код должности
|
НомерДолжн
|
Числовой
|
Длинное целое
|
4
|
Табельный номер сотрудника
|
ТабельныйНомер
|
Числовой
|
Длинное целое
|
"Справочник должностей сотрудников" служит для хранения кодов должностей и их наименований, его структура показана в табл.2.12.
Таблица 2.12
№ п/п
|
Наименование поля
|
Обозначение
|
Тип данных
|
Размер поля
|
1
|
Код
|
НомерДолжн
|
Счетчик
|
Длинное целое
|
2
|
Должность
|
Должность
|
Текстовый
|
255
|
"Справочник поставщиков" служит для хранения кодов поставщиков, их наименований, порядковых номеров, а также адресов, его структура показана в табл.2.13.
Таблица 2.13
№ п/п
|
Наименование поля
|
Обозначение
|
Тип данных
|
Размер поля
|
1
|
Код
|
НомерПост
|
Счетчик
|
Длинное целое
|
2
|
Порядковый номер
|
ПоряНомерПост
|
Числовой
|
Длинное целое
|
3
|
Наименование поставщика
|
НаименованиеПост
|
Текстовый
|
255
|
4
|
Адрес
|
Адрес
|
Текстовый
|
255
|
"Справочник основных средств" служит для хранения кодов товаров, их наименований, инвентарных, паспортных, а также заводских номеров, информации по списанию и введению в эксплуатацию, а также материально ответственного сотрудника, его структура показана в табл.2.14.
Таблица 2.14
№
п/п
|
Наименование поля
|
Обозначение
|
Тип данных
|
Размер поля
|
1
|
Код
|
НомерОснСредства
|
Счетчик
|
Длинное целое
|
2
|
Инвентарный номер
|
ИнвНомер
|
Текстовый
|
15
|
3
|
Наименование
|
Наименование
|
Текстовый
|
255
|
4
|
Дата поступления ОС
|
ДатаПоступл
|
Дата/время
|
|
5
|
Дата ввода в эксплуатацию ОС
|
ДатаВводаЭкспл
|
Дата/время
|
|
6
|
Стоимость
|
Стоимость
|
Числовой
|
Двойное с плавающей точкой
|
7
|
Код мат. отв. сотрудника
|
МатОтвСотрудник
|
Числовой
|
Длинное целое
|
8
|
Первоначальная стоимость
|
ПервСтоимость
|
Числовой
|
Двойное с плавающей точкой
|
9
|
Сроки факт. использования
|
СрокИспользования
|
Числовой
|
Длинное целое
|
10
|
Способ расчета амортизации
|
СпособАморт
|
Текстовый
|
255
|
11
|
Номер по паспорту
|
НомерПоПаспорту
|
Текстовый
|
15
|
12
|
Номер заводской
|
НомерЗавод
|
Текстовый
|
15
|
13
|
Остаточная стоииость
|
ОстСтоииость
|
Числовой
|
Двойное с плавающей точкой
|
14
|
Амортизация
|
Аморт
|
Числовой
|
Двойное с плавающей точкой
|
15
|
Дата принятия на бух. учет предприятия
|
ДатаПринятияКУчету
|
Дата/время
|
|
16
|
Дата списания с бух. Учета предприятия
|
ДатаСписанияСУчета
|
Дата/время
|
|
17
|
Основание ввода в экспл.
|
ОснованиеПринятия
|
Текстовый
|
255
|
18
|
Номер док. акта ввода в эксплуатацию
|
ДокНомерПринятия
|
Текстовый
|
255
|
19
|
Дата акта ввода в экспл.
|
ДокДатаПринятия
|
Дата/время
|
|
20
|
Основание для списания
|
ОснованиеСписания
|
Текстовый
|
255
|
21
|
Номер док. акта списания
|
ДокНомерСписания
|
Текстовый
|
255
|
22
|
Дата акта списания
|
ДокДатаСписания
|
Дата/время
|
|
23
|
Структ. подразделение, на балансе которого числится объект
|
СтруктПодр
|
Числовой
|
Длинное целое
|
24
|
Дата выпуска ОС
|
ДатаВыпуск
|
Дата/время
|
|
"Справочник форм ОС" служит для хранения служебной информаии о коде формы ОС, перечне рабочих форм, файлах их шаблонов, его структура показана в табл.2.15.
Таблица 2.15
№ п/п
|
Наименование поля
|
Обозначение
|
Тип данных
|
Размер поля
|
1
|
Код
|
НомерФорма
|
Счетчик
|
Длинное целое
|
2
|
Наименование формы ОС
|
Наименование
|
Текстовый
|
255
|
3
|
Файл шаблона
|
Файл
|
Текстовый
|
255
|
"Справочник исполнителей ремонтных работ" служит для хранения служебной информации о коде исполнителя работы, его наименовании, его структура показана в табл. 2.16.
Таблица 2.16
№ п/п
|
Наименование поля
|
Обозначение
|
Тип данных
|
Размер поля
|
1
|
Код
|
НомерИсполнителя
|
Счетчик
|
Длинное целое
|
2
|
Наименование исполнителя
|
Исполнитель
|
Текстовый
|
255
|
3
|
ОКПО
|
ОКПО
|
Текстовый
|
255
|
В результате проведенных операций мы получаем заполненную необходимыми данными унифицированную форму. Например, на рис.2.5 изображена заполненная форма ОС-2.
Рис.2.5 Результат - заполненная данными форма ОС-2
Перечень заполненных форм совпадает с перечнем форм входящей информации.
Внутримашинное информационное обеспечение связано с хранением, поиском и обработкой информации и состоит из разнообразных по содержанию, назначению, организации файлов и информационных связей между ними. Оно включает все виды специально организованной на машинных носителях информации для восприятия, передачи и обработки техническими средствами. Внутримашинное ИО может быть создано либо как множество локальных (независимых) файлов, каждый из которых отражает некоторое множество однородных управленческих документов (например, "Ведомость подетальных норм расхода материалов в натуральном и стоимостном выражении", "Применяемость деталей в изделии"), либо как база данных. При создании базы данных файлы не являются независимыми, ибо структура одних файлов (состав полей) зависит от структуры других. Поэтому структура файлов базы данных часто не соответствует структуре управленческих документов, на основе которых эти файлы создаются. Файлы БД разрабатываются с соблюдением определенных принципов и ориентацией на одну из моделей базы данных (иерархическую, сетевую, реляционную). По содержанию внутримашинное ИО должно адекватно отражать реальную действительность организационного объекта и его подразделений, т.е. конкретную предметную область.
Файлы внутримашинной базы делятся на переменные, в которых отражаются факты финансово-хозяйственной деятельности объекта управления, и условно-постоянные, в которых представлены материальные, трудовые, технологические и другие нормы и нормативы, а также справочные данные.
Выходные файлы предназначены для формирования отчетности, использования их информационной системой при решении других задач и при решении задач в последующий период. Кроме того, существуют вспомогательные, корректировочные и рабочие файлы, которые уничтожаются после каждого решения задачи.
Внутримашинное информационное обеспечение предназначено для быстрого и удобного удовлетворения информационных потребностей всех пользователей информационных технологий.
При выборе рационального варианта организации внутримашинного информационного обеспечения, наиболее полно отражающего специфику объекта управления, к нему предъявляют следующие требования: полнота представления данных; минимальность состава данных; минимизация времени выборки данных при решении задач управления; независимость структуры массивов от программных средств их организации; динамичность структуры информационной базы.
Организация, состав, структура внутримашинного информационного обеспечения зависят от информационных характеристик предприятия, состава решаемых задач, методов их решения, возможностей программных средств, организации массивов (файлов), используемых технических средств.
Данные во внутримашинном ИО могут храниться, как известно, двумя способами - непосредственно в виде файлов или в базе данных. Новые информационные технологии требуют интеграции информационных процессов и, в частности, организации информации в виде совокупности баз данных.
Организация информационной базы на основе концепции баз данных позволяет обеспечить многоаспектный доступ к совокупности взаимосвязанных данных, интеграцию и централизацию управления данными, устранение излишней избыточности данных, возможность совмещения эффективных режимов пакетной и диалоговой обработки данных.
Информационная база, организованная на основе локальных файлов, состоит из совокупности массивов, предназначенных для решения отдельных задач. Для каждой задачи необходимая информация складывается из следующих составляющих: множества входных переменных массивов; множества массивов, получаемых в результате решения других задач; множества массивов, получаемых от предыдущего решения данной задачи; множества массивов нормативно-справочной информации; множества процедур обработки данных; множества массивов, хранимых для последующего решения данной задачи; множества массивов, хранимых для решения других задач; множества выходных документов.
При этом основным недостатком информационной базы является не только обилие массивов и их связей, но и то, что она не обеспечивает независимости программ решения задач от структур обрабатываемых данных. Любое изменение структуры входных массивов вызывает необходимость изменения программ, а это в свою очередь приводит к большим затратам на поддержание информационной базы. Кроме того, при такой организации информационная база несет в себе значительную долю избыточности из-за повторения одних и тех же реквизитов в разных массивах, ориентированных на решение локальных задач и практически не связанных между собой.
Что касается нашего конкретного случая, то наши расчеты в основном носят арифметический характер и легко реализуются при помощи встроенных формул СУБД MS Access а также при помощи соответствующего математического аппарата VBA.
Современная система автоматизации должна обеспечивать следующие функции:
Построение сплошной цепи автоматизированного управления закупками
Сведение встречных потоков финансовых и товарных транзакций. Этот механизм позволяет оперативно контролировать состояние взаимных расчетов с поставщиками и потребителями как на уровне договора, или этапа договора, так и на уровне отдельного документа (счета на оплату, товарной накладной).
Настраиваемый документооборот. Документооборот позволяет не только отображать текущее состояние документов, но и формировать алгоритмы, обеспечивающие соблюдение определенных правил обработки документов.
Интеграция с финансовым и производственным менеджментом.
Масштабируемость и гибкая настраиваемость без снижения эффективности работы. Настройка каждого рабочего места выполняется в полном соответствии с выполняемыми бизнес-процессами, причем, может быть дополнена произвольным количеством дополнительных, определяемых пользователем характеристик для каждой обрабатываемой записи, что придает системе гибкость. Отбор и обобщение информации при этом можно проводить на основании характеристик, учитывающих требования каждого пользователя.
Распределенная обработка информации, что позволяет управлять территориально-распределенным предприятием. Для передачи данных могут служить коммутируемые (телефонные) линии, электронная почта, Интернет, мобильные носители (дискеты, ZIP).
Одновременное управление несколькими организациями.
Открытость и интегрируемость с программными продуктами других фирм.
Возможность глубокого и многостороннего анализа. Информация из базы данных может быть выдана в любой момент пользователю в объеме и форме, удобных для анализа.
Все вышеуказанные требования легко применимы к главной АСУ - 1С. Что касается нашего разработанного модуля, то его работа отличается определенной автономностью, которая позволяет отдельно создавать и обрабатывать документы.
Что касается нашего конкретного случая, то схема алгоритма процедур, связанных с объектами меню (дерево диалога), показана в таблице 2.16.
Таблица 2.16
Цифра
|
Описание действия
|
1
|
В разделе "Справочники" нажатие кнопки "Реквизиты предприятия" вызывает справочник реквизитов предприятия
|
2
|
В разделе "Справочники" нажатие кнопки "Структурные подразделения" вызывает справочник структурных подразделений
|
3
|
В разделе "Справочники" нажатие кнопки "Сотрудники" вызывает справочник сотрудников
|
4
|
В разделе "Справочники" нажатие кнопки "Должности" вызывает справочник должностей сотрудников
|
5
|
В разделе "Справочники" нажатие кнопки "Поставщики" вызывает справочник поставщиков предприятия
|
6
|
В разделе "Справочники" нажатие кнопки "Основные средства" вызывает справочник основных средств
|
7
|
В разделе "Справочники" нажатие кнопки "Перечень форм" вызывает справочник форм ОС
|
8
|
В разделе "Формы", подразделе "Поступление ОС" нажатие кнопки "Акты ввода в эксплуатацию" вызывает список актов ввода в эксплуатацию
|
9
|
В разделе "Формы", подразделе "Поступление ОС" нажатие кнопки "Инвентарные карточки" вызывает список инвентарных карточек ОС
|
10
|
В разделе "Формы", подразделе "Перемещение ОС" нажатие кнопки "Накладные на перемещение" вызывает список внутренних накладных
|
11
|
В разделе "Формы", подразделе "Ремонт ОС" нажатие кнопки "Акты о приемке-сдаче отремонтированных объектов ОС" вызывает список актов о приемке-сдаче отремонтированных объектов ОС
|
12
|
В разделе "Формы", подразделе "Списание ОС" нажатие кнопки "Акты о списании" вызывает список актов о списании объектов ОС
|
13
|
В разделе "Отчеты" кнопка "Инвентарная книга" вызывает одноименный отчет
|
14
|
В разделе "Отчеты" кнопка "Инвентаризации" вызывает список описей инвентаризации
|
15
|
Кнопка "Выход" производит выход из приложения
|
Интерфейс программы представляет собой многооконную систему, позволяющей работать одновременно только с одной формой. Если свернуть главное окно, то происходит минимизация всего интерфейса и, соответственно, всех открытых окон, а при закрытии главного окна работа с программой прекращается. На главной форме расположено меню, позволяющее перемещаться по различным окнам рис.2.7.
Рис.2.7 Внешний вид главной формы приложения.
При разработке приложения было уделено таким важным моментам, как:
Доступность и комфортность при работе с системой;
Удобство ввода входной информации.
Все простые справочники ("Должности", "Сотрудники", "Поставщики", "Исполнители работы") представлены в виде простых табличных форм, см. например, рис.2.8:
Рис.2.8 Пример табличного оформления справочника (сотрудников).
Исключением является форма "Реквизиты предприятия", которая сделана в виде простой формы, см. рис 2.9.
Рис.2.9 Пример простой формы, в данном случае - справочная форма "Реквизиты фирмы".
Форма для перечня форм ОС для удобства представлена в виде ленточной формы, см. рис.2.10.
Рис.2.10 Пример ленточной формы, в данном случае - справочная форма "Формы ОС".
Что касается документов, то каждый вид документов организован в виде формы списка с перечнем соотвествующих документов, а также отдельной простой формы для добавления, редактирования или просмотра конкретного, выбранного из списка документа (это касается "Актов ввода в эксплуатацию", "Актов сдачи-приемки отремонтированных ОС", "Актов списания объектов ОС", "Инвентарных карт", "Внутренних накладных"). Например, на рис.2.11 и 2.12.
Рис.2.11 Пример формы-списка документов, в данном случае - перечень внутренних накладных.
Рис.2.12 Пример формы-карточки документа, в данном случае - внутренней накладной.
Для удобства на каждой форме перечня есть необходимые управляющие кнопки - добавить, удалить, редактировать, печать ОС. Также печать доступна из самой карточки документа. Для каждого поля даты подключен календарик, см. рис.2.13.
Рис.2.13 Форма-календарик для выбора даты.
Для каждого поля даты есть две стрелочки, позволяющие смещаться на один день вперед по времени или назад, для более серьезных изменений предполагается вызов календарика, путем двойного щелчка по полю даты. Все сделано единообразно, чтобы пользователь не задавался лишний раз вопросом от формы к форме, как и что сделать.
Также каждая форма обеспечена необходимым количеством раскрывающихся списков, для того, чтобы пользователю было как можно меньше надо вручную вводить информацию, а в основном вводить из ранее набранных справочников. Большая часть заполняемых полей снабжена проверками, прежде всего это поля даты, чтобы идущие логически позже даты не опережали идущие ранее и т.д. Например, в поле руководителя на новую запись заведомо подставляется руководитель из реквизитов формы.
Также для удобства общей схемы работы в карточке документа допускаются для изменения поля из справочника основных средств, например, остаточная стоимость, фактические сроки использования и т.д.
C целью защиты нашего проекта мы поставим пароль на программный код всех модулей в редакторе VBA, а также поставим пароль на базу во избежание несанкционированного доступа к ней. Защиту можно расширить при помощи встроенных методов Access в том, случае если понадобится разделение прав, например, для главного бухгалтера, бухгалтеров и помощника бухгалтера. Например, помощник получит доступ только для чтения. Такая схема легко реализуется при помощи файла рабочей группы, в котором настраиваются права пользователей. Но нам сейчас нет необходимости в такой серьезной защите, поэтому ограничимся общим паролем на доступ к базе.
Результат формирования формы ОС выводится в файл-шаблон документа в Excel, см. на рис.2.14.
Рис.2.14 Заполненная форма шаблона для внутренней накладной, первый и второй лист
2.14.1 Технологическое обеспечение
Хранилище данных (data warehouse) - это автоматизированная информационно-технологическая система, которая собирает данные из существующих баз и внешних источников, формирует, хранит и эксплуатирует информацию как единую. Оно обеспечивает инструментарий для преобразования больших объемов детализированных данных в форму, которая удобна для стратегического планирования и реорганизации бизнеса и необходима специалисту, ответственному за принятие решений. При этом происходит слияние из разных источников различных сведений в требуемую предметно-ориентированную форму с использованием различных методов анализа.
Особенность новой технологии в том, что она предлагает среду накопления данных, которая не только надежна, но по сравнению с распределенными СУБД и оптимальна в отношении доступа к данным и манипулирования ими.
Хранилище информации предназначено для хранения, оперативного получения и анализа интегрированной информации по всем видам деятельности организации.
Данные в таком хранилище характеризуются следующими свойствами:
предметная ориентация - данные организованы согласно предмету, а не приложению (в соответствии со способом их применения);
интегрированность - данные согласуются с определенной системой наименований, хотя могут принадлежать различным источникам и их формы представления могут не совпадать;
упорядоченность во времени - данные согласуются во времени для использования в сравнениях, трендах и прогнозах;
неизменяемость и целостность - данные не обновляются и не изменяются, а только перезагружаются и считываются, поддерживая концепцию "одного правдивого источника".
большой объем и сложные взаимосвязи данных.
К основным категориям данных, которые располагаются в хранилище, относятся: метаданные, описывающие способы извлечения информации из различных источников, методы их преобразования из различных структур и форматов и доставки в хранилище; фактические данные (архивы), отражающие состояние предметной области и конкретные моменты времени; суммарные данные, полученные на основе проведенных аналитических расчетов.
Для уменьшения размера информационного хранилища до минимума при сохранении максимального количества информации применяются эффективные методы сжатия данных.
Для преобразования данных из хранилища в предметно-ориентированную форму требуются языки запросов нового поколения. Руководителям организации данные доступны посредством SQL-запросов, инструментов создания интерактивных отчетов на экране, более развитых систем поддержки принятия решений, многомерного просмотра данных посредством гипертекстовой технологии.
Для хранения данных обычно используются выделенные серверы, или кластеры серверов (группа накопителей, видеоустройств с общим контроллером).
Создание информационного хранилища данных требует решения ряда организационных вопросов, а также удовлетворения следующих требований к аппаратному и программному обеспечению.
Скорость загрузки. В хранилищах необходимо обеспечить периодическую загрузку новых порций данных, укладывающихся в достаточно узкий временной интервал. Требуемая производительность процесса загрузки не должна накладывать ограничения на размер хранилища. - Технология загрузки. Загрузка новых данных в хранилище включает преобразование данных, фильтрацию, переформатирование, проверку целостности, организацию физического хранения, индексирование и обновление метаданных. Это дает возможность объединить разнородную информацию из пакетов, применяемых в структурных подразделениях организации.
Управление качеством данных. В хранилище должна быть обеспечена локальная и глобальная согласованность данных. Мера качества построенного хранилища - объективность исходных данных и степень разнообразия возможных запросов.
Поддержка различных видов данных. В хранилище могут накапливаться данные не только стандартных типов, но и более сложных, таких, как текст, изображения, а также уникальных типов, определяемых разработчиками.
Скорость обработки запросов. Сложные запросы, важные для принятия ответственных решений, должны обрабатываться за секунды или минуты. Скорость обработки запроса должна зависеть от его сложности, а не от объема БД.
Масштабируемость. Хранилище организации может достигнуть нескольких сотен гигабайт. СУБД не должна иметь никаких архитектурных ограничений и должна поддерживать модульную и параллельную обработку, сохранять работоспособность в случае локальных аварий и иметь средства восстановления.
Обслуживание большого числа пользователей. Доступ к хранилищу данных не ограничивается узким кругом специалистов организации. Сервер БД должен поддерживать сотни пользователей без снижения скорости обработки запросов.
Сети хранилищ данных. Сервер должен содержать инструменты, координирующие перемещение данных - между хранилищем организации, информационными системами банков, ГНИ и т.п. Пользователи должны иметь возможность обращаться к нескольким хранилищам с одной клиентской рабочей станции.
Администрирование, СУБД должна обеспечить контроль за приближением к ресурсным ограничениям, сообщать о затратах ресурсов и позволять устанавливать приоритеты для различных категорий пользователей или операций, а кроме того, уметь осуществлять трассировку и настройку системы на максимальную производительность. Качество построенного хранилища определяется удобством доступа к нему для конечного пользователя.
Средства формирования запросов. Пользователь должен иметь возможность проведения аналитических расчетов, последовательного и сравнительного анализа, а также доступ к детальной и агрегированной информации.
Использование информационных хранилищ дает существенный выигрыш по производительности в системах принятия решений, в системах обработки большого числа транзакций с большим объемом обновления данных.
Для выполнения указанных функций разрабатываются соответствующие программные средства. Совокупность этих программных средств и баз знаний принято называть искусственным интеллектом.
Тем не менее в нашем конкретном случае ситуация упрощается - нам нет необходимости работать с такими мощными системами - хранилищами, нам достаточно обычной СУБД.
Рассмотрим возможности СУБД MS Access необходимые для реализации обозначенных целей.
Microsoft Access предоставляет пользователю следующий набор объектов:
таблицы: содержат данные.
запросы: выборка данных из одной или нескольких таблицы, используя некоторые критерии отбора. (фактически запросы - это представления/виды).
формы: используются для организации интерфейса взаимодействия с пользователем БД
отчеты: выборка данных из таблиц/запросов, отформатированная для выведения на печать
макросы: последовательность команд MS Access, задаваемых с использованием удобного конструктора, и хранящаяся в базе данных. Макросы могут использоваться в формах, когда при наступлении определенного события (например, щелчок по кнопке) вызывается или макрос, или процедура VBA.
модули: содержат программы на Visual Basic for Applications (VBA). Эти программы фактически являются хранимыми процедурами/функциями и позволяют манипулировать базой данных, используя встроенные объекты Access, объекты DAO или ADO. При помощи программ на VBA, хранимых в модулях и формах, можно также реализовать триггеры.
Создание таблицы
1) Режим таблицы - наиболее удобен. Создание таблицы осуществляется просто путем ввода в пустую таблицу данных. После сохранения таблицы остаются только те столбцы, которые были переименованы или в которые были введены данные.
2) Конструктор - для создания таблицы, при помощи графического интерфейса описывается список ее столбцов: указывается имя поля и тип данных, длина поля, является ли поле первичным ключом таблицы, допустимо ли указание в поле пустых значений и т.д.
3) Мастер таблиц - создание таблицы при помощи удобного мастера, на основе шаблонов других таблиц (стандартных наборов столбцов).
При работе с таблицами Access также можно пользоваться возможностями фильтрации и сортировки
. Использовав команду меню Записи/Фильтр, можно установить фильтрацию на основании выделенного значения, или воспользоваться командой "Расширенный фильтр" для задания сложных условий фильтрации, с использованием интерфейса, аналогичного интерфейсу при создании запросов. Сортировка данных по одному столбцу возможна при помощи команды меню Записи/Сортировка.
Создание запроса
.
Наиболее гибким вариантом является создание запроса в режиме конструктора: задается имя таблицы, имена отбираемых столбцов, условия отбора, сортировки и вывода на экран. Условия, находящиеся в одной строке конструктора объединяются логическим оператором "и", а в разных строках - оператором "или". Можно также создать запрос по одному из следующих вариантов:
простой запрос - позволяет указать таблицы, из которых выбираются данные и имена столбцов.
перекрестный запрос - при создании в рамках одной таблицы, напоминает сводную таблицу Excel (необходимо указать строки, столбцы, данные и функцию обработки данных). Для того, чтобы создать перекрестный запрос на основании нескольких таблиц надо сначала создать простой запрос, содержащий все необходимые столбцы из этих таблиц.
повторяющиеся записи - выводит повторяющиеся записи из таблицы: указывается столбец по которому надо искать повторы и другие столбцы, данные из которых надо выводить для каждой из повторяющихся записей (например, для одинаковой “Зарплаты" вывести “ФИО”). Если дополнительные столбцы не указаны, то выводится “значение" - “количество повторов".
записи без подчиненных - поиск записей, не имеющих связей с записями в другой таблице (например, клиенты, не имеющие заказов).
Помимо создания запроса одним из выше перечисленных способов, можно задать запрос и непосредственно, в виде инструкций SQL. Для этого необходимо перейти из режима конструктора запроса в режим SQL (Меню Вид/Режим SQL).
Создание форм
.
Наиболее гибким инструментом является создание форм в режиме конструктора, однако создание форм может осуществляться и при помощи мастера. Мастер форм позволяет автоматически создавать формы на основе указания таблицы, на основании которой строится форма, выбора полей таблицы и внешнего вида формы: в один столбец (слева - название, справа - данные), ленточная (колонки, сверху названия столбцов), табличная (аналогична листу Excel), выровненная. Возможно также быстрое создание формы по всем полям таблицы, с использованием автоформ (автоформа в столбец, автоформа ленточная, автоформа табличная - аналогично описанному выше). Диаграмма - создание формы, содержащей диаграмму. Сводная таблица - создание формы со сводной таблицей Excel.
При создании формы в режиме конструктора, в форме выделяется несколько областей:
заголовок / примечание (Вид\Заголовок, примечание формы)
колонтитулы (Вид\Колонтитулы)
область данных.
Можно вручную на линейке перетягивать размеры областей. Используя панель элементов можно создавать в форме следующие элементы:
“Надпись” - любой текст,
“Поле" - поля данных или вычислений,
“Переключатель", “Флажок", “Группа переключателей” - в группу входят переключатели или флажки, в зависимости от их состояния, вся группа в целом принимает некоторое значение,
“Поле со списком", “Список", “Набор вкладок”, “Разрыв страницы”,
“Рисунок” - из файла,
“Выключатели” - кнопка нажата или отжата,
“Кнопка" - если нажата кнопка “Мастера", то выводится мастер создания кнопок: на выбор - поиск записей, сохранение, удаление, печать записей, применение фильтра, открытие формы, печать формы или отчета, запуск приложения, запуск макроса и т.д. Если кнопка “Мастера” не нажата, то рисуешь кнопку, а затем КМ: Свойства\ вкладка События\ поля “Нажатие кнопки”, “Двойное нажатие кнопки", “Получение фокуса” и т.д.
Возможно включение вычисляемого поля в форму и создание выражений.
Создание отчетов
.
Создание отчетов аналогично созданию форм. В режиме конструктора выделяется те же области: заголовок отчета, верхний колонтитул, область данных, нижний колонтитул, примечание отчета. Аналогичным образом используются вычисляемые поля и надписи. Используя меню Вид/Сортировка и группировка, можно создавать отчеты с группировкой, например, объем продаж товара, сгруппированный по регионам продаж и т.п. Также возможно создание отчетов и диаграмм с использованием мастера отчетов, автоотчета в столбец, автоотчета ленточный, мастера диаграмм.
Создание интерфейса базы данных с использованием кнопочных форм и программ VBA.
Наилучшим решением при проектировании интерфейса базы данных, будет не использовать стандартный интерфейс Access, а использовать для интерактивного взаимодействия с пользователем специальные формы, содержащие такие элементы управления как кнопки, переключатели, флажки, выпадающие списки и т.п.
В свойствах формы и отдельных элементов управления формы можно также указать процедуры VBA или макросы, выполняющиеся при возникновении определенных событий в форме (вставка или удаление записей, открытие формы, щелчок по кнопке и т.д.). Соответствующие процедуры VBA хранятся в самой форме: меню Вид/Программа.
При редактировании программы, в левом верхнем выпадающем списке содержится перечень элементов формы, а в правом верхнем выпадающем списке - перечень событий для выбранного элемента. В программах на VBA используются встроенные объекты Access и объекты доступа к данным DAO/ADO.
Для разработки автоматизированной системы анализа финансово-хозяйственной деятельности предприятия использовалась СУБД MS Access, основа которой - язык VBA. Данная среда выполняет две основные функции: позволяет разрабатывать само хранилище данных, а также разработать интерфейс приложения, в том числе и программный код к нему. Таким образом, данная СУБД является:
высокопроизводительным интерпретатором;
СУБД как таковой;
объектно-ориентированная модель компонент;
визуальное построение приложений из программных прототипов;
широкий набор встроенных средств для работы с базами данных.
Примененная технология работы с данными - DAO 3.6, такая как эта модель максимально совместима с прошлыми версиями СУБД MS Access, кроме того менее требовательна к ресурсам, а также проста в употреблении. В соответствии с принципами визуального программирования, разработка приложений состоит из двух этапов:
1. Создания интерфейса приложения, на этом этапе на форме размещаются те объекты, которые необходимы для работы приложения, все существующие объекты принято делить на две группы:
а) информационные объекты, основное назначение которых ввод/вывод данных на экран;
б) управляющие объекты - это объекты при выборе которых выполняются определённые действия, кроме этого существует классификация объектов на визуальные и не визуальные. Вид визуальных объектов не зависит от того, в каком режиме находится форма, редактирования или работы. Не визуальные объекты можно увидеть на форме только в режиме редактирования.
2. Определение функциональности приложения. На этом этапе для управляющих объектов разрабатываются процедуры на языке VBA и связываются с выбранными объектами.
В составе проекта можно выделить следующие элементы: сами данные - таблицы, sql-инструкции в виде запросов, код проекта; описание форм; модули форм; модули; параметры проекта; описание ресурсов, отчеты и макросы (последние два вида объектов в нашем проекте не потребовались). Взаимосвязи между отдельными частями (файлами) проекта показаны на рис.2.16.
Рис.2.16 Взаимосвязи между объектами проекта.
К наиболее часто используемым визуальным элементам интерфейса относятся: для ввода, отображения и редактирования информации - текст (надпись), однострочный редактор, различные списки, таблицы; для запуска команд на выполнение - стандартные кнопки, кнопки с рисунком и кнопки быстрого доступа.
Так же на форме могут располагать невизуальные компоненты, выполняющие вспомогательные, но не менее важные, действия, например, таймер (секундомер), набор данных Table или источник данных DataSource.
Таким образом, форма представляет собой компонент Delphi, служащий контейнером для всех других компонентов.
Перечень объектов в базе таковой:
Рабочие таблицы в базе:
АктыПриемки, АктыРемонта, АктыСписания, АктыСписанияТовары, ВнутренниеНакл, ВнутренниеНаклТовары, Должности, Инвентаризации, ИнвентаризацииТовары, ИнвентКарты, Исполнители, ОснСредства, Параметры, Поставщики, Сотрудники, СтуктурнПодразделения, Формы, ВспомДата
Рабочие запросы в базе:
запрос_АктыПриемки, запрос_АктыРемонта, запрос_АктыСписания, запрос_АктыСписанияТовары, запрос_ВнутренниеНакл, запрос_ВнутренниеНаклТовары, запрос_Инвентаризации, запрос_ИнвентаризацииТовары, запрос_ИнвКарты, запрос_ИнвКнига, запрос_ИнвКнига2
Рабочие формы в базе:
Главная, Календарь, форма_АктПриемки, форма_АктРемонта, форма_АктСписания, форма_АктыСписанияТовары, форма_ВнутренниеНакл, форма_ВнутренниеНаклТовары, форма_ВспомДата, форма_Должности, форма_Инв, форма_ИнвентаризацииТовары, форма_ИнвКарта, форма_ИсполнителиРабот, форма_ОсновныеСредства, форма_Поставщики, форма_РеквизитыФирмы, форма_Сотрудники, форма_СписокАктовПриемки, форма_СписокАктовРемонта, форма_СписокАктовСписания, форма_СписокВнутренниеНакл, форма_СписокИнв, форма_СписокИнвКарт, форма_СписокОснСредств, форма_СтуктурнПодразделения, форма_Формы.
Рабочие модули в базе:
Inv, OS1, OS2, OS3, OS4, OS6, OS6b, Общий, прописью
Схема взаимосвязи довольно проста. Для каждого файла-шаблона есть свой модуль, отвечающий за его заполнение, см. табл.2.17.
Таблица 2.17.
Унифицированная форма для заполнения
|
Модуль для заполнения
|
Module OS1
|
ОС-1. xls
|
Module OS2
|
ОС-2. xls
|
Module OS3
|
ОС-3. xls
|
Module OS4
|
ОС-4. xls
|
Module OS6
|
ОС-6. xls
|
Module OS6б
|
ОС-6b. xls
|
Module Inv
|
инв. xls
|
Задачи, данным программным продуктом:
Заполнение формы ОС-1;
Заполнение формы ОС-2;
Заполнение формы ОС-3;
Заполнение формы ОС-4;
Заполнение формы ОС-6
Заполнение формы ОС-6б
Заполнение формы инвентаризации описи;
Схема взаимодействия задач системы, рис.2.17.
Рис.2.17 Схема взаимосвязей программных модулей и блоков.
Основные достоинства выбранной СУБД - доступность, простота удобство в конструировании, доработке, администрировании. Вместе с тем Access позволяет надежно хранить данные и эффективно их обрабатывать. Поэтому, начиная с Access 97, этот продукт стабильно держится в рейтинге настольных СУБД на первых местах. Сегодня наиболее популярен Access 2003, который входит в состав пакета MS Office 2003. К отдельным перечням достоинств стоит отнести и полную интеграцию с другими офисными приложениями - Word, Outlook, Excel.
Учитывая основные достоинства СУБД Microsoft Access, надо заметить, что хотя в ее отношении используется термин "настольная СУБД", тем не менее, популярность ее такова, что огромное количество малых и средних, а то и достаточно крупных предприятий ведут учет своей хозяйственной деятельности именно в разработках на основе Microsoft Access. Отдельным плюсом работы с этой СУБД является использования легкого в освоении и наглядного объектного языка программирования Visual Basic for Application (VBA), младшего родственника по функциональности полноценного высокоуровневого языка программирования Microsoft Visual Basic. Такая СУБД незаменима прежде всего для учетных, экономических и бухгалтерских задач.
Пожалуй наличие встроенного мощного инструмента - языка программирования окончательно позволяет сделать выбор в пользу СУБД Access. Так как MS Access является широко распространенным информационным продуктом, входит в семейство MS Office, то как правило дополнительных средств на приобретение этого программного продукта инее требуется.
Что касается взаимосвязи между блоками АСУ 1С Бухгалтерия и модуль на СУБД Access, то при необходимости между ними можно организовать схему импорта данных, например, в формат DBF (db2 и т.д.), а затем добавить блок считывания (импорта) в модуль Access. Однако, плюс разработанного модуля заключается в том, что он обладает полной автономией: при необходимости данные для нового документа можно внести непосредственно через его интерфейс. Таки образом, слишком сложной схемы связи нет.
В конфигурацию, достаточную для бесперебойной и качественной работы системы входят процессор с частотой не менее 800МГЦ, системная плата на основе набора микросхем Intel, поддерживающая все современные стандарты и процессоры.
Нормальная работа с программой возможна при наличии 128 Мбайт оперативной памяти. На емкость жесткого диска особенно сильно влияет не сколько размер самих программ, сколько объем данных, необходимый для работы с ними. Приемлемая емкость жесткого диска 16 Гбайт. Установка диска меньшей емкости может отрицательно сказаться на работе с увеличивающимися базами данных. Операционная система от Windows 2000/XP.
По безопасности системы: при монтаже, наладке, обслуживании, ремонте и эксплуатации технических средств системы в качестве мер безопасности должны соблюдаться требования установленные:
СаНПиН 2.2.4/2.8056-96 "Электромагнитные излучения радиочастотного диапазона";
ГОСТ Р 50377-92 (МЭК 950-86)"Безопасность оборудования информационной технологии, включая электрическое конторское оборудование";
ГОСТ 27201-87 "Машины вычислительные электронные персональные. Типы, основные параметры, общие технические требования".
Как известно, экономическое обоснование может быть проведено по следующим основным направлениям получения эффекта:
сравнение вариантов организации ЭИС по комплексу задач (например, сравнение ЭИС, предлагаемой в проекте, с существующей);
сравнение вариантов организации информационной базы комплекса задач (файловая организация и база данных);
сравнение вариантов организации технологического процесса сбора, передачи, обработки и выдачи информации;
сравнение вариантов технологии проектирования ЭИС (например, индивидуального проектирования с методами, использующими пакеты программ или модельного проектирования);
сравнение вариантов технологии внутримашинной обработки данных.
Приведем результат сравнения по выше указанным направлениям в табл.2.18.
Таблица 2.18.
Имеющаяся АСУ
|
Имеющаяся АСУ + разработанный в дипломном проекте модуль
|
Комплекс задач и функций, обеспеченный типовой конфигурацией УСН
|
Дополнительная функциональность, связанная с автоматическим заполнением унифицированных форм
|
Стандартная организация структуры и хранения данных, которая полностью обеспечена и контролируется комплексом 1С Бухгалтерией
|
Дополнительная дублирующая структура данных. Плюс в том, что документ значительно быстрее может быть добавлен в базу модуля для заполнения форм (в том случае, когда необходимо только распечатать его, а не хранить на постоянной основе).
|
Технологический процесс, обеспеченный комплексом 1С Бухгалтерией
|
Технологический процесс сохраняется примерно таким же
|
|
Дополнительный модуль обеспечен другой СУБД, это некоторое усложнение системы, но из всех вариантов СУБД самое менее затратное
|
Расчет затрат на разработку.
Основным критерием целесообразности разработки АИС является повышение экономической эффективности производственной деятельности фирмы посредством совершенствования системы управления. В основе распространенной методики анализа экономичности выбираемого варианта лежит сопоставление показателей обработки экономической информации, рассчитанных по новому варианту, с базовым показателей.
В соответствии с ГОСТ 24.702-85 целесообразны варианты построения экономических информационных систем выбираются путем балансирования показателей приращения эффекта Э, получаемого за счет создания или совершенствования АИС, и затрат Q. Математически эту задачу формулируют в виде
Мах Э при Q = const или min Q при Э = const.
При оценки эффективности используют обобщающие и частные показатели.
К основным обобщающим показателям экономической эффективности относятся:
Годовой экономический эффект;
Расчетный коэффициент эффективности капитальных затрат;
Срок окупаемости системы.
Годовой экономический эффект (Э) определяется по формуле:
Э = П-К*ЕН
(2.1)
где П - годовая экономия (годовой прирост прибыли), тыс. руб.;
К - единовременные затраты, тыс. руб.;
ЕН
- нормативный коэффициент эффективности капитальных вложений.
Коэффициент экономической эффективности капитальных затрат (ЕP
) определяется по формуле:
ЕP
= П/К (2.2)
Срок окупаемости (Т) исчисляется по формуле:
Т = К/П (2.3)
Расчет перечисленных обобщающих показателей предполагает предварительное вычисление частных показателей, характеризующих создаваемую АИС. Опишем и рассчитаем эти показатели.
Затраты на разработку системы (Кп
) определяются по формуле:
Кп
= Фз/п [ (1 + βд) (1 + βс) + βн + βпр] + tэвм∙Смч
(2.4)
где Фз/п - фонд основной заработной платы разработчиков и других исполнителей работ, руб.;
βд
- коэффициент дополнительной зарплаты (составит ОД);
βс - коэффициент отчислений на социальные нужды от основной и дополнительной заработной платы (составит 0,4);
βн - коэффициент накладных расходов организации, разрабатывающей проект (составит 0,6);
βпр - коэффициент прочих расходов (0,1);
tэвм - машинное время, затраченное для отладки программного обеспечения, ч (составляет 240 ч);
Смч -
стоимость машино-часа работы компьютера, руб. Расчет фонда основной заработной платы исполнителей работ по разработке рассчитывается как произведение суммарной трудоемкости работ по разработке системы (чел. - дн) и тарифной дневной ставки разработчиков.
Таким образом, исходя из линейного графика работ, продолжительность работ составляет 100 дней. Тарифная дневная ставка бухгалтера составляет 100 руб. Следовательно, Фз/п
= 60 * 100 = 6000 руб.
Себестоимость машино-часа работы компьютера определяется по формуле:
См
. ч
= (Зп
+ А + Зэ
+ Зр + Зн+Зм
) /Фд
(2.5)
где, Зп
- затраты на заработную плату обслуживающего персонала с учетом всех отчислений, руб;
А - годовая сумма амортизации, руб;%
Зэ
- затраты на силовую энергию, руб.;
Зр
- затраты на ремонт и обслуживание оборудования в год, руб.;
Зм
- затраты на материалы в год, руб.;
Зн - накладные расходы, руб.;
Фд
- действительный годовой фонд времени работы АИС, ч. По данным бухгалтерии затраты на заработную плату персонала (Зп) составит - 15000 руб.
Годовые амортизационные (А) отчисления считаются по формуле:
А = (Ск*НА
) /100 (2.6)
где Ск - стоимость компьютера и прочего оборудования, используемого при отладке системы и, составляющий 20000 руб.;
НА
- норма амортизации принимается равной 12%;
А = (20000 * 12) / 100 = 2400 руб.
Затраты на электроэнергию в год (Зэ
) определяется по формуле:
Зэ = Wу
*Сэ
*Тb (
2.7)
где Wу
- установленная мощность, равная 0,1 кВт;
Сэ
- стоимость силовой электроэнергии, равна 0,70 р/кВт;
Тb
- время, в течение года, когда оборудование потребляет электроэнергию, равно 1920 ч.;
Зэ
= 0,1 * 0,70 * 1920 = 134,40 руб.
Затраты на текущие ремонты Зр
и на материалы Зм
в год берутся по данным бухгалтерии и составляет 4,5% от стоимости аппаратных средств.
Зр
= 20000 * 4,5 /100 = 900 руб.
Зм
= 20000 * 4,5/100 = 900 руб.
В накладные расходы включаются затраты на отопление, освещение и прочие. Они составляют 600 руб.
Годовой фонд времени Фд
устанавливается исходя из номинального фонда времени и времени профилактики оборудования и ремонтов:
Фд
=S*h*D-Тпр
(2.8)
где, S - продолжительность смены, равна 8 ч.
h - количество смен, равно 1;
D - число рабочих дней в году равно 240 дней;
Тпр
- время ремонтов и профилактики оборудования в год, равно 32ч.;
Фд
= 8* 1 * 240-32 = 1888 ч.
По формуле (21) находим
См
. ч
= (15000 + 2400 + 134,40 + 900 + 600+900) /1888=10,5 руб.
Таким образом затраты на разработку системы рассчитаем по формуле (32)
Кп
= 6000 * [ (1 + 0,1) (1 + 0,4) + 0,6 + 0,1] + 240*10,5 = 15720 руб.
Расчет минимальной цены разработки системы.
Минимальная цена разработки системы Zmin складывается из полных затрат на разработку Кп
и минимально необходимой суммы прибыли nmin
.
Zmin
= Кп
+ Пmin (
2.9)
Сумма прибыли рассчитывается исходя из планируемого минимального уровня рентабельности Rmin
(составит 15%) по формуле:
Пmin
= Kn
*Rmin
/100 (2.10)
Пmin
= 15720 * 15 /100 = 2358 руб.
Таким образом,
Zmin
= 15720 +2358 = 18078 руб.
Расчет экономических результатов от внедрения системы.
Для оценки экономических результатов от внедрения системы необходимо выявить ее влияние на конечные результаты деятельности организации. Годовая экономия от внедрения системы П определяется по формуле:
П = - Зтек
(2.11)
где m - количество статей затрат, по которым может быть получена экономия = 2;
3i - экономия по i-й статье затрат, т. руб.;
Зтек - затраты на функционирование системы.
Годовая экономия идет по следующим статьям:
На снижение трудоемкости обработки информации 3i:
3!
у
, 32
У
- затраты на выполнение работ существующему варианту при ручном способе и в условиях автоматизации, руб.;
Т1
!,, Т2
И
- трудоемкость обработки информации ручным способом, ч.
α - коэффициент, учитывающий дополнительную трудоемкость по обработке информации на вспомогательные операции (а = 2,0...3,0)
г - часовая тарифная ставка управленческих работников, руб.;
О - коэффициент, определяющий размер дополнительной заработной платы с учетом отчислений на социальные нужды (0,5).
R - коэффициент определяющий характер накладных расходов (0,4);
3i
= 31
y
-32
y
(2.12)
31
y
= T1
H
* α *r (l + O + R); (2.13)
32
y
= T2
H
* α *r (l + O + R); (2.14)
31
у
= 3000 * 2,6 * 6 (1 + 0,5 + 0,4) = 88920 руб.
32
У
= 2800 * 2 * 6 (1 + 0,5 + 0,4) = 63 840 руб.
Эi
= 85 500 - 68 400 = 22800 руб.
Затраты, связанные с работой аппаратных средств могут быть рассчитаны по формуле:
Зтек
=
Змв
=
См-ч
*
tкса (
2.15)
где См-ч
-
себестоимость часа работы комплекса технических средств (КСА), руб. /ч
tкса
- время использования КСА в год, ч.
Следовательно, 3тек
= 10,5 * 240 = 2520 руб.
Таким образом годовая экономия от внедрения системы составляет:
П = 22800 - 2520 = 20280 руб.
Экономическая эффективность капитальных вложений.
В соответствии со стандартами, значение Ен
принимается равным 0,15 для всех отраслей народного хозяйства. Коэффициент эффективности капитальных вложений представляет собой минимальную норму эффективности капитальных вложений, ниже которой они нецелесообразны.
На основании рассчитанных показателей по формуле (2.1) годовой экономический эффект составляет:
Э = 20280 - 18078 *0,15= 17568,3 руб.
По формуле (30) определим расчетный коэффициент экономической эффективности капитальных затрат:
Ер=20280/18078 = 1,12
По формуле (31) определим срок окупаемости:
Т = 18078/20280= 0,89 ≈ 10,68 месяца
Срок возврата капитальных вложений составляет около 11 месяцев, что является допустимым. Интегральный эффект положительный. Значит, атраты по внедрению системы на предприятии эффективны.
Отдельно эффективность разработанного блока можно оценить из соображений вложений в приобретение новой версии основного учетного комплекса 1С Бухгалтерии, ее настройки, времени сотрудников на ее освоение, программную поддержку на первом этапе.
В данном дипломном проекте были успешно достигнуты следующие цели:
разработана схема автоматизированного учета основных средств предприятия в целом, подобран и настроен готовый комплекс ПО УСН 1С Бухгалтерии под нужды предприятия
разработана схема дополнительного блока, предназначенного для формирования унифицированных форм по учету основных средств, входящих в систему обязательного учета
реализован данный программный блок "с нуля" в среде СУБД MS Access - интерфейсная часть, хранение и обработка данных, разработаны необходимые шаблоны исходящих документов
спланирована удобная работа с разработанным блоком, обеспечение рабочего места бухгалтера данным ПО, обдуман механизм первичной информационной защиты, проанализированы возможности расширения данного продукта и прямой интеграции с основным учетным комплексом 1С Бухгалтерии УСН.
проведено экономическое обоснование разработанной учетной схемы, доказана ее окупаемость.
Основными плюсами разработанного модуля является его относительная автономность, низкая экономическая затратность, легкость с точки зрения технологической установки, а также широкие возможности по дальнейшему усовершенствованию.
1. Баркер, Скотт Ф.
Профессиональное программирование в Access 2002. - М.: Издательский дом "Вильямс", 2002. - 991 с.: ил.
2. Бекаревич Ю.Б., Пушкина Н.В.
Самоучитель Microsoft Access 2002. - СПб.: BHV - Санкт-Петербург, 2002. - 718 с.
3. Глушаков С.В.
Базы данных: Учеб. курс/ Глушаков С.В., Ломотько Д.В. - Харьков; Ростов н/Д; Киев: Фолио: Феникс: Абрис, 2000. - 504 с.
4. Гэпн К., Сарсон Т.
Структурный системный анализ: средства и методы: В 2 ч.: Пер. с англ / Под ред. А.В. Козлинского. - М.: Эйтекс, 1993. - 310 с.
5. Дейт К. Дж.
Введение в системы баз данных.: Пер. с англ. - 6-е изд. - К.: Диалектика, 1998. - 784 с.: ил.
6. Заикин О.А., Советов Б.Я.
Проектирование интегрированных систем обработки информации и управления: Учебное пособие. - М.: МГАП "Мир Книги", 1994. - 190 с.
7. Заикина С.А.
Шпаргалка по бухгалтерскому учету: Учебное пособие. - М.: Экзамен, 2006. - 32 с.
8. Калянов Г.Н.
Консалтинг при автоматизации предприятий (подходы, методы, средства): Учебное пособие. - М.: СИНТЕГ, 1997. - 316 с.
9. Киммел П.
Освой самостоятельно программирование для Microsoft Access 2000 за 24 часа: [Учебное пособие] / Пер.А.С. Варакин. - М.: Издательский дом "Вильямс", 2000. - 447 с.
10. Михеева В.Д., Харитонова И.А.
Microsoft Access 2002. - СПб.: BHV - Санкт-Петербург, 2002. - 1021 с.
11. Новалис Сьюзанн.
Access 2000. Руководство по VBA. - М., 2001. - 506 с.
12. Титоренко Г.А.
Автоматизированные информационные технологии в экономике. - М.: Юнити, 2006. - 400 с.
13. Харитонов C.А.
Упрощенная система налогообложения: особенности применения и методика ведения учета в 1С: Бухгалтерии 7.7. - М.: 1С-Паблишинг, 2005. - 319 с.
14. Хомоненко А.Д.
Базы данных: Учебник для высш. учеб. заведений/ А.Д. Хомоненко, В.М. Цыганков, М.Г. Мальцев; Под ред.А.Д. Хомоненко. - 2-е изд., доп. и перераб. - СПб.: КОРОНА принт, 2002. - 672 с
Код
модуля Inv
Option Compare Database
Option Explicit
Private Const NomerForm As Long = 8
Private Const cFirmName As Byte = 1
Private Const rFirmName As Integer = 6
Private Const cFirmOKPO As Byte = 89
Private Const rFirmOKPO As Integer = 6
Private Const cStruct As Byte = 1
Private Const rStruct As Integer = 8
Private Const cNomer As Byte = 69
Private Const rNomer As Integer = 18
Private Const cDat As Byte = 81
Private Const rDat As Integer = 18
Private Const cOsn As Byte = 28
Private Const rOsn As Integer = 11
Private Const cOsnNomer As Byte = 89
Private Const rOsnNomer As Integer = 11
Private Const cOsnDate As Byte = 89
Private Const rOsnDate As Integer = 12
Private Const cDate1 As Byte = 89
Private Const rDate1 As Integer = 13
Private Const cDate2 As Byte = 89
Private Const rDate2 As Integer = 14
Private Const cMest As Byte = 13
Private Const rMest As Integer = 24
Private Const cMatDolzhn1 As Byte = 38
Private Const rMatDolzhn1 As Integer = 32
Private Const cMatDolzhn2 As Byte = 38
Private Const rMatDolzhn2 As Integer = 34
Private Const cMatDolzhn3 As Byte = 38
Private Const rMatDolzhn3 As Integer = 36
Private Const cMatName1 As Byte = 79
Private Const rMatName1 As Integer = 32
Private Const cMatName2 As Byte = 79
Private Const rMatName2 As Integer = 34
Private Const cMatName3 As Byte = 79
Private Const rMatName3 As Integer = 36
Private Const ciKol As Byte = 72
Private Const riKol As Integer = 28
Private Const ciStoim As Byte = 79
Private Const riStoim As Integer = 28
Private Const rSh1_1 As Integer = 10
Private Const rSh1_2 As Integer = 27
Private Const cNom As Byte = 1
Private Const cTovar As Byte = 6
Private Const cInv As Byte = 51
Private Const cDoc As Byte = 26
Private Const cDocDate As Byte = 32
Private Const cDocNomer As Byte = 38
Private Const cYear As Byte = 44
Private Const cZav As Byte = 58
Private Const cPasp As Byte = 65
Private Const cKol As Byte = 72
Private Const cSum As Byte = 79
Private Const ciKolNomProp As Byte = 27
Private Const riKolNomProp As Integer = 30
Private Const ciKolProp As Byte = 30
Private Const riKolProp As Integer = 32
Private Const ciSumProp As Byte = 20
Private Const riSumProp As Integer = 34
Private Const ciSumKopProp As Byte = 91
Private Const riSumKopProp As Integer = 36
Private Const ciKolNomProp2 As Byte = 27
Private Const riKolNomProp2 As Integer = 3
Private Const ciKolProp2 As Byte = 30
Private Const riKolProp2 As Integer = 5
Private Const ciSumProp2 As Byte = 20
Private Const riSumProp2 As Integer = 7
Private Const ciSumKopProp2 As Byte = 91
Private Const riSumKopProp2 As Integer = 9
Private Const cPredsDolzh As Byte = 19
Private Const rPredsDolzh As Integer = 13
Private Const cChl1Dolzh As Byte = 19
Private Const rChl1Dolzh As Integer = 15
Private Const cChl2Dolzh As Byte = 19
Private Const rChl2Dolzh As Integer = 17
Private Const cChl3Dolzh As Byte = 19
Private Const rChl3Dolzh As Integer = 19
Private Const cPredsName As Byte = 60
Private Const rPredsName As Integer = 13
Private Const cChl1Name As Byte = 60
Private Const rChl1Name As Integer = 15
Private Const cChl2Name As Byte = 60
Private Const rChl2Name As Integer = 17
Private Const cChl3Name As Byte = 60
Private Const rChl3Name As Integer = 19
Private Const c2MatDolzhn1 As Byte = 42
Private Const r2MatDolzhn1 As Integer = 26
Private Const c2MatDolzhn2 As Byte = 42
Private Const r2MatDolzhn2 As Integer = 28
Private Const c2MatDolzhn3 As Byte = 42
Private Const r2MatDolzhn3 As Integer = 30
Private Const c2MatName1 As Byte = 79
Private Const r2MatName1 As Integer = 26
Private Const c2MatName2 As Byte = 79
Private Const r2MatName2 As Integer = 28
Private Const c2MatName3 As Byte = 79
Private Const r2MatName3 As Integer = 30
Private Const cDatPodpDay As Byte = 43
Private Const rDatPodpDay As Integer = 33
Private Const cDatPodpMon As Byte = 47
Private Const rDatPodpMon As Integer = 33
Private Const cDatPodpYear As Byte = 63
Private Const rDatPodpYear As Integer = 33
Private Const cDatProvDay As Byte = 41
Private Const rDatProvDay As Integer = 38
Private Const cDatProvMon As Byte = 45
Private Const rDatProvMon As Integer = 38
Private Const cDatProvYear As Byte = 61
Private Const rDatProvYear As Integer = 38
Sub PrintFormInv (ByVal nomer As Long)
Dim db As Database, Rec As DAO. Recordset, RecList As DAO. Recordset
Dim oApp As Object
Dim StrFormName As String
Dim StrFile As String, s_folder As String, StrPath As String
Dim StrGlBuch As String
Dim StrFirmName As String, StrFirmOKPO As String, StrFirmAddr As String, StrFirmReq As String, StrStruct As String
Dim NomerVnutr As String, StrDate As Date
Dim StrOsn As String, StrDateOsn As Date, StrNomerOsn As String
Dim StrMest As String
Dim StrDate1 As Date, StrDate2 As Date
Dim StrMatDolzhn1 As String, StrMatDolzhn2 As String, StrMatDolzhn3 As String
Dim StrMatName1 As String, StrMatName2 As String, StrMatName3 As String
Dim StrPredsName As String, StrPredsDolzh As String
Dim StrChl1Name As String, StrChl1Dolzh As String
Dim StrChl2Name As String, StrChl2Dolzh As String
Dim StrChl3Name As String, StrChl3Dolzh As String
Dim StrProvName As String, StrProvDolzh As String
Dim StrDatePodp As Date, StrDateProv As Date
Dim StrItog As Double, StrItogKol As Long
Dim s_Sum As Double, s_Kol As Long
Dim i As Long, NRecord As Long, p As Long
Dim StrMonthPodp As String, StrMonthProv As String
On Error GoTo LblErr
If nomer = 0 Then Exit Sub
s_folder = CurrentProject. Path
If Right$ (s_folder,
1) <> "\" Then s_folder = s_folder + "\"
s_folder = s_folder + "blanks\
"
If Len (Dir$ (s_folder, vbDirectory)) = 0 Then
MsgBox "Путь
к папке с бланками " & s_folder & " не обнаружен!", vbCritical + vbOKOnly
Exit Sub
End If
Set db = CurrentDb
Set Rec = db. OpenRecordset ("select * from Формы
where НомерФорма = " & NomerForm, dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrFormName = Rec. Fields ("Наименование
"). Value
StrFile = Rec. Fields ("Файл
"). Value
Else
Set Rec = Nothing
MsgBox "Нет
информации о форме №" & NomerForm & "!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
StrPath = s_folder + StrFile
If Len (Dir$ (StrPath)) = 0 Then
MsgBox "Файл
бланка формы '" & StrFormName & "' " & StrPath & " не обнаружен!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = db. OpenRecordset ("SELECT * FROM Параметры
", dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrFirmName = Nz (Rec. Fields ("НаименованиеФирмы
"). Value, "")
StrFirmOKPO = Nz (Rec. Fields ("ОКПО
"). Value, "")
Else
MsgBox "Общие
параметры фирмы не занесены!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from запрос
_Инвентаризации where НомерИнв = " & nomer, dbOpenSnapshot)
If Rec. RecordCount > 0 Then
NomerVnutr = Nz (Rec. Fields ("НомерВнутр
"). Value, nomer)
StrDate = Nz (Rec. Fields ("ДатаИнв
"). Value, Date)
StrOsn = Nz (Rec. Fields ("Основание
"). Value, "")
StrDateOsn = Nz (Rec. Fields ("ДатаОсн
"). Value, Date)
StrNomerOsn = Nz (Rec. Fields ("НомерОсн
"). Value, "")
StrMest = Nz (Rec. Fields ("Местонахождение
"). Value, "")
StrStruct = Nz (Rec. Fields ("СтруктурноеПодразделение
"). Value, "")
StrDate1 = Nz (Rec. Fields ("ДатаНачала
"). Value, Date)
StrDate2 = Nz (Rec. Fields ("ДатаКонца
"). Value, Date)
StrMatDolzhn1 = Nz (Rec. Fields ("mat_dolzhn1"). Value, "")
StrMatDolzhn2 = Nz (Rec. Fields ("mat_dolzhn2"). Value, "")
StrMatDolzhn3 = Nz (Rec. Fields ("mat_dolzhn3"). Value, "")
StrMatName1 = Nz (Rec. Fields ("mat_Name1"). Value, "")
StrMatName2 = Nz (Rec. Fields ("mat_Name2"). Value, "")
StrMatName3 = Nz (Rec. Fields ("mat_Name3"). Value, "")
StrPredsName = Nz (Rec. Fields ("preds_name"). Value, "")
StrPredsDolzh = Nz (Rec. Fields ("preds_dolzhn"). Value, "")
StrChl1Name = Nz (Rec. Fields ("chl1_name"). Value, "")
StrChl1Dolzh = Nz (Rec. Fields ("chl1_dolzhn"). Value, "")
StrChl2Name = Nz (Rec. Fields ("chl2_name"). Value, "")
StrChl2Dolzh = Nz (Rec. Fields ("chl2_dolzhn"). Value, "")
StrChl3Name = Nz (Rec. Fields ("chl3_name"). Value, "")
StrChl3Dolzh = Nz (Rec. Fields ("chl3_dolzhn"). Value, "")
StrProvName = Nz (Rec. Fields ("prov_name"). Value, "")
StrProvDolzh = Nz (Rec. Fields ("prov_dolzhn"). Value, "")
StrDatePodp = Nz (Rec. Fields ("ДатаПодписи
"). Value, Date)
StrDateProv = Nz (Rec. Fields ("ДатаПроверки
"). Value, Date)
Else
MsgBox "Инв
. опись ОС №" & nomer & " не найдена!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from ВспомДата
where НомерМес = " & Month (StrDatePodp), dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrMonthPodp = Nz (Rec. Fields ("НазвМес
"). Value, "")
Else
StrMonthPodp = "нет
названия"
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from ВспомДата
where НомерМес = " & Month (StrDateProv), dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrMonthProv = Nz (Rec. Fields ("НазвМес
"). Value, "")
Else
StrMonthProv = "нет
названия"
End If
Set Rec = Nothing
Set oApp = CreateObject ("Excel. Application")
oApp. Workbooks. Open FileName: =StrPath, ReadOnly: =True
oApp. ActiveWorkbook. Sheets (1). Select
oApp. Cells (rFirmName, cFirmName). Value = StrFirmName
oApp. Cells (rFirmOKPO, cFirmOKPO). Value = StrFirmOKPO
oApp. Cells (rStruct, cStruct). Value = StrStruct
oApp. Cells (rOsn, cOsn). Value = StrOsn
oApp. Cells (rOsnDate, cOsnDate). Value = StrDateOsn
oApp. Cells (rOsnNomer, cOsnNomer). Value = StrNomerOsn
oApp. Cells (rDate1, cDate1). Value = Format$ (StrDate1, "dd. mm. yyyy")
oApp. Cells (rDate2, cDate2). Value = Format$ (StrDate2, "dd. mm. yyyy")
oApp. Cells (rMest, cMest). Value = StrMest
oApp. Cells (rMatDolzhn1, cMatDolzhn1). Value = StrMatDolzhn1
oApp. Cells (rMatDolzhn2, cMatDolzhn2). Value = StrMatDolzhn2
oApp. Cells (rMatDolzhn3, cMatDolzhn3). Value = StrMatDolzhn3
oApp. Cells (rMatName1, cMatName1). Value = StrMatName1
oApp. Cells (rMatName2, cMatName2). Value = StrMatName2
oApp. Cells (rMatName3, cMatName3). Value = StrMatName3
oApp. ActiveWorkbook. Sheets (2). Select
Application. SysCmd acSysCmdInitMeter, "Вывод
информации о товарах", 100
StrItog = 0
StrItogKol = 0
Set RecList = db. OpenRecordset ("select * from запрос
_ИнвентаризацииТовары where НомерИнв = " & nomer, dbOpenSnapshot)
NRecord = RecList. RecordCount
If NRecord > 0 Then
RecList. MoveLast
NRecord = RecList. RecordCount
RecList. MoveFirst
i = 0
p = rSh1_1 - 1
While Not RecList. EOF
i = i + 1
p = p + 1
Application. SysCmd acSysCmdUpdateMeter, i / NRecord * 100
If p > rSh1_2 Then GoTo lbl_ex
s_Sum = Nz (RecList. Fields ("Сумма
"). Value, 0)
s_Kol = Nz (RecList. Fields ("Количество
"). Value, 0)
oApp. Cells (p, cNom). Value = i
oApp. Cells (p, cTovar). Value = Nz (RecList. Fields ("Товар
"). Value, "")
oApp. Cells (p, cDoc). Value = Nz (RecList. Fields ("ОснованиеПринятия
"). Value, "")
oApp. Cells (p, cDocDate). Value = Format$ (Nz (RecList. Fields ("ДокДатаПринятия
"). Value, Date), "dd. mm. yyyy")
oApp. Cells (p, cDocNomer). Value = Nz (RecList. Fields ("ДокНомерПринятия
"). Value, "")
oApp. Cells (p, cYear). Value = Nz (RecList. Fields ("ГодВыпуска
"). Value, Year (Date))
oApp. Cells (p, cInv). Value = Nz (RecList. Fields ("ИнвКод
"). Value, "")
oApp. Cells (p, cPasp). Value = Nz (RecList. Fields ("НомерПоПаспорту
"). Value, "")
oApp. Cells (p, cZav). Value = Nz (RecList. Fields ("НомерЗавод
"). Value, "")
oApp. Cells (p, cKol). Value = s_Kol
oApp. Cells (p, cSum). Value = Format$ (s_Sum, "0.00")
StrItogKol = StrItogKol + s_Kol
StrItog = StrItog + s_Sum
RecList. MoveNext
Wend
Else
MsgBox "Для
описи №" & nomer & " нет перечня товаров!", vbCritical + vbOKOnly
Exit Sub
End If
lbl_ex:
Set RecList = Nothing
oApp. Cells (riKol, ciKol). Value = StrItogKol
oApp. Cells (riStoim, ciStoim). Value = StrItog
oApp. Cells (riKolNomProp, ciKolNomProp). Value = translateNumber (i)
oApp. Cells (riKolProp, ciKolProp). Value = translateNumber (StrItogKol)
oApp. Cells (riSumProp, ciSumProp). Value = translateNumber (Int (StrItog))
oApp. Cells (riSumKopProp, ciSumKopProp). Value = Format$ (Int ( (StrItog - Int (StrItog)) * 100 + 0.5), "00")
oApp. ActiveWorkbook. Sheets (3). Select
oApp. Cells (riKolNomProp2, ciKolNomProp2). Value = translateNumber (i)
oApp. Cells (riKolProp2, ciKolProp2). Value = translateNumber (StrItogKol)
oApp. Cells (riSumProp2, ciSumProp2). Value = translateNumber (Int (StrItog))
oApp. Cells (riSumKopProp2, ciSumKopProp2). Value = Format$ (Int ( (StrItog - Int (StrItog)) * 100 + 0.5), "00")
oApp. Cells (rPredsName, cPredsName). Value = StrPredsName
oApp. Cells (rPredsDolzh, cPredsDolzh). Value = StrPredsDolzh
oApp. Cells (rChl1Name, cChl1Name). Value = StrChl1Name
oApp. Cells (rChl1Dolzh, cChl1Dolzh). Value = StrChl1Dolzh
oApp. Cells (rChl2Name, cChl2Name). Value = StrChl2Name
oApp. Cells (rChl2Dolzh, cChl2Dolzh). Value = StrChl2Dolzh
oApp. Cells (rChl3Name, cChl3Name). Value = StrChl3Name
oApp. Cells (rChl3Dolzh, cChl3Dolzh). Value = StrChl3Dolzh
oApp. Cells (r2MatDolzhn1, c2MatDolzhn1). Value = StrMatDolzhn1
oApp. Cells (r2MatDolzhn2, c2MatDolzhn2). Value = StrMatDolzhn2
oApp. Cells (r2MatDolzhn3, c2MatDolzhn3). Value = StrMatDolzhn3
oApp. Cells (r2MatName1, c2MatName1). Value = StrMatName1
oApp. Cells (r2MatName2, c2MatName2). Value = StrMatName2
oApp. Cells (r2MatName3, c2MatName3). Value = StrMatName3
oApp. Cells (rDatPodpDay, cDatPodpDay). Value = Format$ (StrDatePodp, "dd")
oApp. Cells (rDatPodpMon, cDatPodpMon). Value = StrMonthPodp
oApp. Cells (rDatPodpYear, cDatPodpYear). Value = Format$ (StrDatePodp, "yyyy")
oApp. Cells (rDatProvDay, cDatProvDay). Value = Format$ (StrDateProv, "dd")
oApp. Cells (rDatProvMon, cDatProvMon). Value = StrMonthProv
oApp. Cells (rDatProvYear, cDatProvYear). Value = Format$ (StrDateProv, "yyyy")
ex:
Application. SysCmd acSysCmdRemoveMeter
If Not (oApp Is Nothing) Then oApp. Visible = True
Set RecList = Nothing
Set oApp = Nothing
Set db = Nothing
Exit Sub
LblErr:
MsgBox Err. Description, vbCritical + vbOKOnly
GoTo ex
End Sub
Код модуля OS1
Option Compare Database
Option Explicit
Private Const NomerForm As Long = 3
Private Const cRukDolzh As Byte = 56
Private Const rRukDolzh As Integer = 4
Private Const cRukName As Byte = 85
Private Const rRukName As Integer = 4
Private Const cDatRukDay As Byte = 62
Private Const rDatRukDay As Integer = 6
Private Const cDatRukMon As Byte = 66
Private Const rDatRukMon As Integer = 6
Private Const cDatRukYear As Byte = 79
Private Const rDatRukYear As Integer = 6
Private Const cFirmName As Byte = 16
Private Const rFirmName As Integer = 9
Private Const cFirmOKPO As Byte = 88
Private Const rFirmOKPO As Integer = 9
Private Const cFirmAddr As Byte = 1
Private Const rFirmAddr As Integer = 11
Private Const cFirmReq As Byte = 1
Private Const rFirmReq As Integer = 13
Private Const cOsn As Byte = 18
Private Const rOsn As Integer = 25
Private Const cDatPriem As Byte = 88
Private Const rDatPriem As Integer = 28
Private Const cSchet As Byte = 88
Private Const rSchet As Integer = 30
Private Const cAmort As Byte = 88
Private Const rAmort As Integer = 32
Private Const cInv As Byte = 88
Private Const rInv As Integer = 33
Private Const cNomer As Byte = 36
Private Const rNomer As Integer = 32
Private Const cDat As Byte = 49
Private Const rDat As Integer = 32
Private Const cTovar As Byte = 15
Private Const rTovar As Integer = 36
Private Const cMest As Byte = 29
Private Const rMest As Integer = 39
Private Const cPerv As Byte = 65
Private Const rPerv As Integer = 13
Private Const cSrok As Byte = 73
Private Const rSrok As Integer = 13
Private Const cType As Byte = 81
Private Const rType As Integer = 13
Private Const cName2 As Byte = 1
Private Const rName2 As Integer = 24
Private Const cKol As Byte = 37
Private Const rKol As Integer = 24
Private Const cDatIspDay As Byte = 20
Private Const rDatIspDay As Integer = 3
Private Const cDatIspMon As Byte = 24
Private Const rDatIspMon As Integer = 3
Private Const cDatIspYear As Byte = 37
Private Const rDatIspYear As Integer = 3
Private Const cSootv1 As Byte = 31
Private Const rSootv1 As Integer = 5
Private Const cSootv2 As Byte = 31
Private Const rSootv2 As Integer = 6
Private Const cDorab1 As Byte = 57
Private Const rDorab1 As Integer = 5
Private Const cDorab2 As Byte = 57
Private Const rDorab2 As Integer = 6
Private Const cSootvInf As Byte = 1
Private Const rSootvInf As Integer = 7
Private Const cDorabInf As Byte = 51
Private Const rDorabInf As Integer = 7
Private Const cResult As Byte = 13
Private Const rResult As Integer = 11
Private Const cTDoc As Byte = 22
Private Const rTDoc As Integer = 13
Private Const cPredsDolzh As Byte = 15
Private Const rPredsDolzh As Integer = 14
Private Const cChl1Dolzh As Byte = 15
Private Const rChl1Dolzh As Integer = 16
Private Const cChl2Dolzh As Byte = 15
Private Const rChl2Dolzh As Integer = 18
Private Const cPredsName As Byte = 49
Private Const rPredsName As Integer = 14
Private Const cChl1Name As Byte = 49
Private Const rChl1Name As Integer = 16
Private Const cChl2Name As Byte = 49
Private Const rChl2Name As Integer = 18
Private Const cPrinDolzh As Byte = 56
Private Const rPrinDolzh As Integer = 24
Private Const cPrinName As Byte = 85
Private Const rPrinName As Integer = 24
Private Const cDatPrinDay As Byte = 52
Private Const rDatPrinDay As Integer = 27
Private Const cDatPrinMon As Byte = 56
Private Const rDatPrinMon As Integer = 27
Private Const cDatPrinYear As Byte = 69
Private Const rDatPrinYear As Integer = 27
Private Const cDatDovDay As Byte = 63
Private Const rDatDovDay As Integer = 28
Private Const cDatDovMon As Byte = 67
Private Const rDatDovMon As Integer = 28
Private Const cDatDovYear As Byte = 80
Private Const rDatDovYear As Integer = 28
Private Const cDatDovNomer As Byte = 85
Private Const rDatDovNomer As Integer = 28
Private Const cDatDovOsn As Byte = 57
Private Const rDatDovOsn As Integer = 29
Private Const cXranDolzh As Byte = 51
Private Const rXranDolzh As Integer = 32
Private Const cXranName As Byte = 80
Private Const rXranName As Integer = 32
Private Const cDatXranDay As Byte = 52
Private Const rDatXranDay As Integer = 35
Private Const cDatXranMon As Byte = 56
Private Const rDatXranMon As Integer = 35
Private Const cDatXranYear As Byte = 69
Private Const rDatXranYear As Integer = 35
Private Const cXranNomer As Byte = 85
Private Const rXranNomer As Integer = 34
Private Const cNomer2 As Byte = 80
Private Const rNomer2 As Integer = 39
Private Const cDatSost As Byte = 90
Private Const rDatSost As Integer = 39
Private Const cBuchName As Byte = 75
Private Const rBuchName As Integer = 41
Sub PrintFormOS1 (ByVal nomer As Long)
Dim db As Database, Rec As DAO. Recordset, RecList As DAO. Recordset
Dim oApp As Object
Dim StrFormName As String
Dim StrFile As String, s_folder As String, StrPath As String
Dim StrGlBuch As String
Dim StrFirmName As String, StrFirmOKPO As String, StrFirmAddr As String, StrFirmReq As String
Dim StrRukName As String, StrRukDolzh As String
Dim StrDatePodp As Date, StrDatePriem As Date, StrDate As Date, StrDateIsp As Date, StrPrinDate As Date, StrDovDate As Date, StrXranDate As Date
Dim StrOsn As String, StrSchet As String, StrAmort As String
Dim NomerVnutr As String, StrTovar As String
Dim StrInv As String
Dim StrStoim As Double, StrSroki As Long
Dim StrMethod As String, StrMest As String
Dim StrKol As Long
Dim vbSootv As Boolean, vbDorab As Boolean
Dim StrSootv As String, StrDorab As String
Dim StrZakl As String, StrTechDoc As String
Dim StrPredsName As String, StrPredsDolzh As String
Dim StrChl1Name As String, StrChl1Dolzh As String
Dim StrChl2Name As String, StrChl2Dolzh As String
Dim StrPrinName As String, StrPrinDolzh As String
Dim StrDovFor As String, StrDovNom As String
Dim StrXranName As String, StrXranDolzh As String, StrXranNomer As String
Dim StrMonthPodp As String, StrMonthIsp As String, StrMonthPrin As String, StrMonthDov As String, StrMonthXran As String
On Error GoTo LblErr
If nomer = 0 Then Exit Sub
s_folder = CurrentProject. Path
If Right$ (s_folder,
1) <> "\" Then s_folder = s_folder + "\"
s_folder = s_folder + "blanks\
"
If Len (Dir$ (s_folder, vbDirectory)) = 0 Then
MsgBox "Путь
к папке с бланками " & s_folder & " не обнаружен!", vbCritical + vbOKOnly
Exit Sub
End If
Set db = CurrentDb
Set Rec = db. OpenRecordset ("select * from Формы
where НомерФорма = " & NomerForm, dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrFormName = Rec. Fields ("Наименование
"). Value
StrFile = Rec. Fields ("Файл
"). Value
Else
Set Rec = Nothing
MsgBox "Нет
информации о форме №" & NomerForm & "!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
StrPath = s_folder + StrFile
If Len (Dir$ (StrPath)) = 0 Then
MsgBox "Файл
бланка формы '" & StrFormName & "' " & StrPath & " не обнаружен!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = db. OpenRecordset ("SELECT Параметры
. *, Сотрудники. Сотрудник FROM Сотрудники INNER JOIN Параметры ON Сотрудники. НомерСотр = Параметры. ГлБухгалтер", dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrFirmName = Nz (Rec. Fields ("НаименованиеФирмы"). Value, "")
StrFirmOKPO = Nz (Rec. Fields ("ОКПО"). Value, "")
StrGlBuch = Nz (Rec. Fields ("Сотрудник"). Value, "")
StrFirmAddr = Nz (Rec. Fields ("ЮрАдрес"). Value, "")
StrFirmReq = Nz (Rec. Fields ("БанкРеквизиты"). Value, "")
Else
MsgBox "Общие параметры фирмы не занесены!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from запрос
_АктыПриемки where НомерАкт = " & nomer, dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrRukName = Nz (Rec. Fields ("s_ruk"). Value, "")
StrRukDolzh = Nz (Rec. Fields ("d_ruk"). Value, "")
StrDatePodp = Nz (Rec. Fields ("ДатаПодписи"). Value, Date)
StrOsn = Nz (Rec. Fields ("Основание"). Value, "")
StrDatePriem = Nz (Rec. Fields ("ДатаПриемки"). Value, Date)
StrSchet = Nz (Rec. Fields ("Счет"). Value, "")
StrAmort = Nz (Rec. Fields ("НомерАмортГруппы"). Value, "")
NomerVnutr = Nz (Rec. Fields ("НомерВнутр"). Value, nomer)
StrDate = Nz (Rec. Fields ("ДатаАкта
"). Value, Date)
StrTovar = Nz (Rec. Fields ("Товар"). Value, "")
StrInv = Nz (Rec. Fields ("ИнвКод
"). Value, "")
StrStoim = Nz (Rec. Fields ("ПервСтоииость
"). Value, 0)
StrSroki = Nz (Rec. Fields ("СрокИспользования
"). Value, 0)
StrMethod = Nz (Rec. Fields ("СпособАморт
"). Value, "")
StrMest = Nz (Rec. Fields ("Местонахождение
"). Value, "")
StrKol = Nz (Rec. Fields ("Количество
"). Value,
1)
StrDateIsp = Nz (Rec. Fields ("ДатаИспытания"). Value, Date)
vbSootv = Nz (Rec. Fields ("Соотвествие"). Value, True)
vbDorab = Nz (Rec. Fields ("Доработка"). Value, False)
StrSootv = Nz (Rec. Fields ("ЧтоСоотв"). Value, "")
StrDorab = Nz (Rec. Fields ("ЧтоДораб"). Value, "")
StrZakl = Nz (Rec. Fields ("Заключение"). Value, "")
StrTechDoc = Nz (Rec. Fields ("ТехДок"). Value, "")
StrPredsName = Nz (Rec. Fields ("s_preds"). Value, "")
StrPredsDolzh = Nz (Rec. Fields ("d_preds"). Value, "")
StrChl1Name = Nz (Rec. Fields ("s_4l1"). Value, "")
StrChl1Dolzh = Nz (Rec. Fields ("d_4l1"). Value, "")
StrChl2Name = Nz (Rec. Fields ("s_4l2"). Value, "")
StrChl2Dolzh = Nz (Rec. Fields ("d_4l2"). Value, "")
StrPrinName = Nz (Rec. Fields ("s_prin"). Value, "")
StrPrinDolzh = Nz (Rec. Fields ("d_prin"). Value, "")
StrPrinDate = Nz (Rec. Fields ("ДатаПринятия
"). Value, Date)
StrDovFor = Nz (Rec. Fields ("ВыданаДов
"). Value, "")
StrDovDate = Nz (Rec. Fields ("ДатаДов
"). Value, Date)
StrDovNom = Nz (Rec. Fields ("НомерДов
"). Value, "1")
StrXranName = Nz (Rec. Fields ("s_xran"). Value, "")
StrXranDolzh = Nz (Rec. Fields ("d_xran"). Value, "")
StrXranNomer = Nz (Rec. Fields ("s_nomer"). Value, "")
StrXranDate = Nz (Rec. Fields ("ДатаХранения
"). Value, Date)
Else
MsgBox "Акт
приемки №" & nomer & " не найден!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from ВспомДата where НомерМес = " & Month (StrDatePodp), dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrMonthPodp = Nz (Rec. Fields ("НазвМес
"). Value, "")
Else
StrMonthPodp = "нет
названия"
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from ВспомДата
where НомерМес = " & Month (StrDateIsp), dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrMonthIsp = Nz (Rec. Fields ("НазвМес
"). Value, "")
Else
StrMonthIsp = "нет
названия"
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from ВспомДата
where НомерМес = " & Month (StrPrinDate), dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrMonthPrin = Nz (Rec. Fields ("НазвМес
"). Value, "")
Else
StrMonthPrin = "нет
названия"
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from ВспомДата
where НомерМес = " & Month (StrDovDate), dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrMonthDov = Nz (Rec. Fields ("НазвМес
"). Value, "")
Else
StrMonthDov = "нет
названия"
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from ВспомДата
where НомерМес = " & Month (StrXranDate), dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrMonthXran = Nz (Rec. Fields ("НазвМес
"). Value, "")
Else
StrMonthXran = "нет
названия"
End If
Set Rec = Nothing
Set oApp = CreateObject ("Excel. Application")
oApp. Workbooks. Open FileName: =StrPath, ReadOnly: =True
oApp. ActiveWorkbook. Sheets (1). Select
oApp. Cells (rRukName, cRukName). Value = StrRukName
oApp. Cells (rRukDolzh, cRukDolzh). Value = StrRukDolzh
oApp. Cells (rDatRukDay, cDatRukDay). Value = Format$ (StrDatePodp, "dd")
oApp. Cells (rDatRukMon, cDatRukMon). Value = StrMonthPodp
oApp. Cells (rDatRukYear, cDatRukYear). Value = Right$ (Format$ (StrDatePodp, "yyyy"),
1)
oApp. Cells (rFirmName, cFirmName). Value = StrFirmName
oApp. Cells (rFirmOKPO, cFirmOKPO). Value = StrFirmOKPO
oApp. Cells (rFirmAddr, cFirmAddr). Value = StrFirmAddr
oApp. Cells (rFirmReq, cFirmReq). Value = StrFirmReq
oApp. Cells (rOsn, cOsn). Value = StrOsn
oApp. Cells (rDatPriem, cDatPriem). Value = Format$ (StrDatePriem, "dd. mm. yyyy")
oApp. Cells (rSchet, cSchet). Value = StrSchet
oApp. Cells (rAmort, cAmort). Value = StrAmort
oApp. Cells (rInv, cInv). Value = StrInv
oApp. Cells (rNomer, cNomer). Value = NomerVnutr
oApp. Cells (rDat, cDat). Value = Format$ (StrDate, "dd. mm. yyyy")
oApp. Cells (rTovar, cTovar). Value = StrTovar
oApp. Cells (rMest, cMest). Value = StrMest
oApp. ActiveWorkbook. Sheets (2). Select
oApp. Cells (rPerv, cPerv). Value = StrStoim
oApp. Cells (rSrok, cSrok). Value = StrSroki
oApp. Cells (rType, cType). Value = StrMethod
oApp. Cells (rName2, cName2). Value = StrTovar
oApp. Cells (rKol, cKol). Value = StrKol & " шт
."
oApp. ActiveWorkbook. Sheets (3). Select
oApp. Cells (rDatIspDay, cDatIspDay). Value = Format$ (StrDateIsp, "dd")
oApp. Cells (rDatIspMon, cDatIspMon). Value = StrMonthIsp
oApp. Cells (rDatIspYear, cDatIspYear). Value = Right$ (Format$ (StrDateIsp, "yyyy"),
1)
If vbSootv = True Then
oApp. Cells (rSootv1, cSootv1). Font. Bold = True
oApp. Cells (rSootv2, cSootv2). Font. Bold = False
oApp. Cells (rSootvInf, cSootvInf). Value = "
"
Else
oApp. Cells (rSootv1, cSootv1). Font. Bold = False
oApp. Cells (rSootv2, cSootv2). Font. Bold = True
oApp. Cells (rSootvInf, cSootvInf). Value = StrSootv
End If
If vbDorab = True Then
oApp. Cells (rDorab1, cDorab1). Font. Bold = True
oApp. Cells (rDorab2, cDorab2). Font. Bold = False
oApp. Cells (rDorabInf, cDorabInf). Value = StrDorab
Else
oApp. Cells (rDorab1, cDorab1). Font. Bold = False
oApp. Cells (rDorab2, cDorab2). Font. Bold = True
oApp. Cells (rDorabInf, cDorabInf). Value = "
"
End If
oApp. Cells (rResult, cResult). Value = StrZakl
oApp. Cells (rTDoc, cTDoc). Value = StrTechDoc
oApp. Cells (rPredsName, cPredsName). Value = StrPredsName
oApp. Cells (rPredsDolzh, cPredsDolzh). Value = StrPredsDolzh
oApp. Cells (rChl1Name, cChl1Name). Value = StrChl1Name
oApp. Cells (rChl1Dolzh, cChl1Dolzh). Value = StrChl1Dolzh
oApp. Cells (rChl2Name, cChl2Name). Value = StrChl2Name
oApp. Cells (rChl2Dolzh, cChl2Dolzh). Value = StrChl2Dolzh
oApp. Cells (rPrinName, cPrinName). Value = StrPrinName
oApp. Cells (rPrinDolzh, cPrinDolzh). Value = StrPrinDolzh
oApp. Cells (rDatPrinDay, cDatPrinDay). Value = Format$ (StrPrinDate, "dd")
oApp. Cells (rDatPrinMon, cDatPrinMon). Value = StrMonthPrin
oApp. Cells (rDatPrinYear, cDatPrinYear). Value = Right$ (Format$ (StrPrinDate, "yyyy"),
1)
oApp. Cells (rDatDovDay, cDatDovDay). Value = Format$ (StrDovDate, "dd")
oApp. Cells (rDatDovMon, cDatDovMon). Value = StrMonthDov
oApp. Cells (rDatDovYear, cDatDovYear). Value = Right$ (Format$ (StrDovDate, "yyyy"),
1)
oApp. Cells (rDatDovOsn, cDatDovOsn). Value = StrDovFor
oApp. Cells (rDatDovNomer, cDatDovNomer). Value = StrDovNom
oApp. Cells (rXranName, cXranName). Value = StrXranName
oApp. Cells (rXranDolzh, cXranDolzh). Value = StrXranDolzh
oApp. Cells (rXranNomer, cXranNomer). Value = StrXranNomer
oApp. Cells (rDatXranDay, cDatXranDay). Value = Format$ (StrXranDate, "dd")
oApp. Cells (rDatXranMon, cDatXranMon). Value = StrMonthXran
oApp. Cells (rDatXranYear, cDatXranYear). Value = Right$ (Format$ (StrXranDate, "yyyy"),
1)
oApp. Cells (rNomer2, cNomer2). Value = NomerVnutr
oApp. Cells (rDatSost, cDatSost). Value = Format$ (StrDate, "dd. mm. yyyy")
oApp. Cells (rBuchName, cBuchName). Value = StrGlBuch
ex:
Application. SysCmd acSysCmdRemoveMeter
If Not (oApp Is Nothing) Then oApp. Visible = True
Set Rec = Nothing
Set RecList = Nothing
Set oApp = Nothing
Set db = Nothing
Exit Sub
LblErr:
MsgBox Err. Description, vbCritical + vbOKOnly
GoTo ex
End Sub
Код
модуля OS2
Option Compare Database
Option Explicit
Private Const NomerForm As Long = 2
Private Const cFirmName As Byte = 1
Private Const rFirmName As Integer = 7
Private Const cFirmOKPO As Byte = 88
Private Const rFirmOKPO As Integer = 7
Private Const cPodrazdName1 As Byte = 7
Private Const rPodrazdName1 As Integer = 9
Private Const cPodrazdOKPO1 As Byte = 88
Private Const rPodrazdOKPO1 As Integer = 8
Private Const cPodrazdName2 As Byte = 9
Private Const rPodrazdName2 As Integer = 11
Private Const cPodrazdOKPO2 As Byte = 88
Private Const rPodrazdOKPO2 As Integer = 10
Private Const cDateNakl As Byte = 69
Private Const rDateNakl As Integer = 16
Private Const cNomerNakl As Byte = 57
Private Const rNomerNakl As Integer = 16
Private Const cNomer As Byte = 1
Private Const cTovar As Byte = 5
Private Const cYear As Byte = 48
Private Const cInv As Byte = 58
Private Const cKol As Byte = 70
Private Const cCena As Byte = 80
Private Const cSum As Byte = 90
Private Const rSh1_1 As Integer = 24
Private Const rSh1_2 As Integer = 39
Private Const rSh2_1 As Integer = 8
Private Const rSh2_2 As Integer = 19
Private Const cSumItog As Byte = 90
Private Const rSumItog As Integer = 20
Private Const cSotrName1 As Byte = 42
Private Const rSotrName1 As Byte = 31
Private Const cSotrDolzh1 As Byte = 7
Private Const rSotrDolzh1 As Byte = 31
Private Const cSotrNomer1 As Byte = 64
Private Const rSotrNomer1 As Byte = 31
Private Const cDatDay1 As Byte = 79
Private Const rDatDay1 As Byte = 31
Private Const cDatMonth1 As Byte = 83
Private Const rDatMonth1 As Byte = 31
Private Const cDatYear1 As Byte = 96
Private Const rDatYear1 As Byte = 31
Private Const cSotrName2 As Byte = 42
Private Const rSotrName2 As Byte = 34
Private Const cSotrDolzh2 As Byte = 7
Private Const rSotrDolzh2 As Byte = 34
Private Const cSotrNomer2 As Byte = 64
Private Const rSotrNomer2 As Byte = 34
Private Const cDatDay2 As Byte = 79
Private Const rDatDay2 As Byte = 34
Private Const cDatMonth2 As Byte = 83
Private Const rDatMonth2 As Byte = 34
Private Const cDatYear2 As Byte = 96
Private Const rDatYear2 As Byte = 34
Private Const cGlBuch As Byte = 33
Private Const rGlBuch As Byte = 39
Private Const nSymbPrim As Byte = 60
Private Const nSymbPrim2 As Byte = 130
Private Const cPrim As Integer = 51
Private Const rPrim1 As Integer = 22
Private Const cPrim2 As Integer = 1
Private Const rPrim2_1 As Integer = 23
Private Const rPrim2_2 As Integer = 27
Sub PrintFormOS2 (ByVal nomer As Long)
Dim db As Database, Rec As DAO. Recordset, RecList As DAO. Recordset
Dim oApp As Object
Dim StrFormName As String
Dim StrFile As String, s_folder As String, StrPath As String
Dim StrGlBuch As String
Dim StrFirmName As String, StrFirmOKPO As String
Dim StrPodrazdName1 As String, StrPodrazdOKPO1 As String
Dim StrPodrazdName2 As String, StrPodrazdOKPO2 As String
Dim StrDate As Date, StrDate_s As Date, StrDate_p As Date
Dim StrNomer As String
Dim StrSotrName1 As String, StrSotrNomer1 As String, StrSotrDolzh1 As String
Dim StrSotrName2 As String, StrSotrNomer2 As String, StrSotrDolzh2 As String
Dim StrItog As Double, s_Sum As Double
Dim StrMonth1 As String, StrMonth2 As String
Dim p As Integer, p2 As Integer, i As Long, NRecord As Long
Dim StrPrim As String
On Error GoTo LblErr
If nomer = 0 Then Exit Sub
s_folder = CurrentProject. Path
If Right$ (s_folder,
1) <> "\" Then s_folder = s_folder + "\"
s_folder = s_folder + "blanks\
"
If Len (Dir$ (s_folder, vbDirectory)) = 0 Then
MsgBox "Путь
к папке с бланками " & s_folder & " не обнаружен!", vbCritical + vbOKOnly
Exit Sub
End If
Set db = CurrentDb
Set Rec = db. OpenRecordset ("select * from Формы
where НомерФорма = " & NomerForm, dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrFormName = Rec. Fields ("Наименование
"). Value
StrFile = Rec. Fields ("Файл
"). Value
Else
Set Rec = Nothing
MsgBox "Нет
информации о форме №" & NomerForm & "!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
StrPath = s_folder + StrFile
If Len (Dir$ (StrPath)) = 0 Then
MsgBox "Файл
бланка формы '" & StrFormName & "' " & StrPath & " не обнаружен!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = db. OpenRecordset ("SELECT Параметры
. *, Сотрудники. Сотрудник FROM Сотрудники INNER JOIN Параметры ON Сотрудники. НомерСотр = Параметры. ГлБухгалтер", dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrFirmName = Nz (Rec. Fields ("НаименованиеФирмы
"). Value, "")
StrFirmOKPO = Nz (Rec. Fields ("ОКПО
"). Value, "")
StrGlBuch = Nz (Rec. Fields ("Сотрудник
"). Value, "")
Else
MsgBox "Общие
параметры фирмы не занесены!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from запрос
_ВнутренниеНакл where НомерНакл = " & nomer, dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrPodrazdName1 = Nz (Rec. Fields ("p1"). Value, "")
StrPodrazdOKPO1 = Nz (Rec. Fields ("p1_okpo"). Value, "")
StrPodrazdName2 = Nz (Rec. Fields ("p2"). Value, "")
StrPodrazdOKPO2 = Nz (Rec. Fields ("p2_okpo"). Value, "")
StrDate = Nz (Rec. Fields ("ДатаНакл
"). Value, Date)
StrDate_s = Nz (Rec. Fields ("ДатаНаклСдал
"). Value, Date)
StrDate_p = Nz (Rec. Fields ("ДатаНаклПринял
"). Value, Date)
StrNomer = Nz (Rec. Fields ("НомерНаклВнутр
"). Value, nomer)
StrSotrName1 = Nz (Rec. Fields ("s1"). Value, "")
StrSotrNomer1 = Nz (Rec. Fields ("s1_nomer"). Value, "")
StrSotrDolzh1 = Nz (Rec. Fields ("s1_dolzh"). Value, "")
StrSotrName2 = Nz (Rec. Fields ("s2"). Value, "")
StrSotrNomer2 = Nz (Rec. Fields ("s2_nomer"). Value, "")
StrSotrDolzh2 = Nz (Rec. Fields ("s2_dolzh"). Value, "")
StrPrim = Nz (Rec. Fields ("Примечание
"). Value, "")
Else
MsgBox "Накладная
№" & nomer & " не найдена!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from ВспомДата
where НомерМес = " & Month (StrDate_s), dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrMonth1 = Nz (Rec. Fields ("НазвМес
"). Value, "")
Else
StrMonth1 = "нет
названия"
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from ВспомДата
where НомерМес = " & Month (StrDate_p), dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrMonth2 = Nz (Rec. Fields ("НазвМес
"). Value, "")
Else
StrMonth2 = "нет
названия"
End If
Set Rec = Nothing
Set oApp = CreateObject ("Excel. Application")
oApp. Workbooks. Open FileName: =StrPath, ReadOnly: =True
Application. SysCmd acSysCmdInitMeter, "Вывод
информации о товарах", 100
oApp. ActiveWorkbook. Sheets (1). Select
StrItog = 0
Set RecList = db. OpenRecordset ("select * from запрос
_ВнутренниеНаклТовары where НомерНакл = " & nomer, dbOpenSnapshot)
NRecord = RecList. RecordCount
If NRecord > 0 Then
RecList. MoveLast
NRecord = RecList. RecordCount
RecList. MoveFirst
i = 0
oApp. ActiveWorkbook. Sheets (1). Select
p = rSh1_1 - 1: p2 = rSh1_2
While Not RecList. EOF
i = i + 1
p = p + 1
Application. SysCmd acSysCmdUpdateMeter, i / NRecord * 100
If p > p2 Then
oApp. ActiveWorkbook. Sheets (2). Select
p = rSh2_1: p2 = rSh2_2
End If
s_Sum = Nz (RecList. Fields ("Сумма
"). Value, 0)
oApp. Cells (p, cNomer). Value = i
oApp. Cells (p, cTovar). Value = Nz (RecList. Fields ("Товар
"). Value, "")
oApp. Cells (p, cYear). Value = Nz (RecList. Fields ("ГодВыпуска
"). Value, Year (Date))
oApp. Cells (p, cInv). Value = Nz (RecList. Fields ("ИнвКод
"). Value, Year (Date))
oApp. Cells (p, cKol). Value = Nz (RecList. Fields ("Количество
"). Value, 0)
oApp. Cells (p, cCena). Value = Format$ (Nz (RecList. Fields ("ЦенаРозн
"). Value, 0), "0.00")
oApp. Cells (p, cSum). Value = Format$ (s_Sum, "0.00")
StrItog = StrItog + s_Sum
RecList. MoveNext
Wend
Else
MsgBox "Для
накладной №" & nomer & " нет перечня товаров!", vbCritical + vbOKOnly
Exit Sub
End If
Set RecList = Nothing
oApp. Cells (rFirmName, cFirmName). Value = StrFirmName
oApp. Cells (rFirmOKPO, cFirmOKPO). Value = StrFirmOKPO
oApp. Cells (rPodrazdName1, cPodrazdName1). Value = StrPodrazdName1
oApp. Cells (rPodrazdOKPO1, cPodrazdOKPO1). Value = StrPodrazdOKPO1
oApp. Cells (rPodrazdName2, cPodrazdName2). Value = StrPodrazdName2
oApp. Cells (rPodrazdOKPO2, cPodrazdOKPO2). Value = StrPodrazdOKPO2
oApp. Cells (rNomerNakl, cNomerNakl). Value = StrNomer
oApp. Cells (rDateNakl, cDateNakl). Value = Format$ (StrDate, "dd. mm. yyyy")
oApp. ActiveWorkbook. Sheets (2). Select
oApp. Cells (rSumItog, cSumItog). Value = " " & Format$ (StrItog, "0.00")
oApp. Cells (rSotrDolzh1, cSotrDolzh1). Value = StrSotrDolzh1
oApp. Cells (rSotrName1, cSotrName1). Value = StrSotrName1
oApp. Cells (rSotrNomer1, cSotrNomer1). Value = StrSotrNomer1
oApp. Cells (rDatDay1, cDatDay1). Value = Format$ (StrDate_s, "dd")
oApp. Cells (rDatMonth1, cDatMonth1). Value = StrMonth1
oApp. Cells (rDatYear1, cDatYear1). Value = Right$ (Format$ (StrDate_s, "yyyy"),
1)
oApp. Cells (rSotrDolzh2, cSotrDolzh2). Value = StrSotrDolzh2
oApp. Cells (rSotrName2, cSotrName2). Value = StrSotrName2
oApp. Cells (rSotrNomer2, cSotrNomer2). Value = StrSotrNomer2
oApp. Cells (rDatDay2, cDatDay2). Value = Format$ (StrDate_p, "dd")
oApp. Cells (rDatMonth2, cDatMonth2). Value = StrMonth2
oApp. Cells (rDatYear2, cDatYear2). Value = Right$ (Format$ (StrDate_p, "yyyy"),
1)
oApp. Cells (rPrim1, cPrim). Value = Left$ (StrPrim, nSymbPrim)
StrPrim = Mid$ (StrPrim, nSymbPrim + 1)
i = rPrim2_1
While Len (StrPrim) > 0
oApp. Cells (i, cPrim2). Value = Left$ (StrPrim, nSymbPrim2)
StrPrim = Mid$ (StrPrim, nSymbPrim2 + 1)
i = i + 1
If i > rPrim2_2 Then GoTo lb_ex
Wend
lb_ex:
oApp. Cells (rGlBuch, cGlBuch). Value = StrGlBuch
ex:
Application. SysCmd acSysCmdRemoveMeter
If Not (oApp Is Nothing) Then oApp. Visible = True
Set Rec = Nothing
Set RecList = Nothing
Set oApp = Nothing
Set db = Nothing
Exit Sub
LblErr:
MsgBox Err. Description, vbCritical + vbOKOnly
GoTo ex
End Sub
Код
модуля OS3
Option Compare Database
Option Explicit
Private Const NomerForm As Long = 5
Private Const cFirmName As Byte = 7
Private Const rFirmName As Integer = 7
Private Const cFirmOKPO As Byte = 88
Private Const rFirmOKPO As Integer = 7
Private Const cNomer As Byte = 36
Private Const rNomer As Integer = 15
Private Const cDat As Byte = 48
Private Const rDat As Integer = 15
Private Const cIsp As Integer = 13
Private Const rIsp As Integer = 11
Private Const cIspOKPO As Integer = 88
Private Const rIspOKPO As Integer = 11
Private Const cdNomer As Integer = 88
Private Const rdNomer As Integer = 12
Private Const cdDate As Integer = 88
Private Const rdDate As Integer = 13
Private Const cPDate1 As Integer = 88
Private Const rPDate1 As Integer = 14
Private Const cPDate2 As Integer = 88
Private Const rPDate2 As Integer = 15
Private Const cFDate1 As Integer = 88
Private Const rFDate1 As Integer = 16
Private Const cFDate2 As Integer = 88
Private Const rFDate2 As Integer = 17
Private Const cRukDolzh As Byte = 61
Private Const rRukDolzh As Integer = 20
Private Const cRukName As Byte = 85
Private Const rRukName As Integer = 20
Private Const cDatRukDay As Byte = 54
Private Const rDatRukDay As Integer = 22
Private Const cDatRukMon As Byte = 58
Private Const rDatRukMon As Integer = 22
Private Const cDatRukYear As Byte = 71
Private Const rDatRukYear As Integer = 22
Private Const cTovar As Byte = 6
Private Const rTovar As Integer = 29
Private Const cInv As Byte = 30
Private Const rInv As Integer = 29
Private Const cPasp As Byte = 45
Private Const rPasp As Integer = 29
Private Const cZav As Byte = 60
Private Const rZav As Integer = 29
Private Const cOstStoim As Byte = 75
Private Const rOstStoim As Integer = 29
Private Const cFaktSrok As Byte = 90
Private Const rFaktSrok As Integer = 29
Private Const cTovar2 As Byte = 6
Private Const rTovar2 As Integer = 39
Private Const cOper As Byte = 20
Private Const rOper As Integer = 39
Private Const cDemStoim As Byte = 30
Private Const rDemStoim As Integer = 39
Private Const cPlRab As Byte = 40
Private Const rPlRab As Integer = 39
Private Const cPlRab2 As Byte = 50
Private Const rPlRab2 As Integer = 39
Private Const cFtRab As Byte = 60
Private Const rFtRab As Integer = 39
Private Const cFtRab2 As Byte = 70
Private Const rFtRab2 As Integer = 39
Private Const cTransp As Byte = 80
Private Const rTransp As Integer = 39
Private Const ciDemStoim As Byte = 30
Private Const riDemStoim As Integer = 41
Private Const ciPlRab As Byte = 40
Private Const riPlRab As Integer = 41
Private Const ciPlRab2 As Byte = 50
Private Const riPlRab2 As Integer = 41
Private Const ciFtRab As Byte = 60
Private Const riFtRab As Integer = 41
Private Const ciFtRab2 As Byte = 70
Private Const riFtRab2 As Integer = 41
Private Const ciTransp As Byte = 80
Private Const riTransp As Integer = 41
Private Const cVip1 As Byte = 34
Private Const rVip1 As Integer = 3
Private Const cVip2 As Byte = 34
Private Const rVip2 As Integer = 4
Private Const cVipInf As Byte = 44
Private Const rVipInf As Integer = 3
Private Const cPredsDolzh As Byte = 17
Private Const rPredsDolzh As Integer = 13
Private Const cChl1Dolzh As Byte = 17
Private Const rChl1Dolzh As Integer = 15
Private Const cChl2Dolzh As Byte = 17
Private Const rChl2Dolzh As Integer = 17
Private Const cPredsName As Byte = 51
Private Const rPredsName As Integer = 13
Private Const cChl1Name As Byte = 51
Private Const rChl1Name As Integer = 15
Private Const cChl2Name As Byte = 51
Private Const rChl2Name As Integer = 17
Private Const cPrinDolzh As Byte = 17
Private Const rPrinDolzh As Integer = 30
Private Const cPrinName As Byte = 51
Private Const rPrinName As Integer = 30
Private Const cDatPrinDay As Byte = 79
Private Const rDatPrinDay As Integer = 30
Private Const cDatPrinMon As Byte = 83
Private Const rDatPrinMon As Integer = 30
Private Const cDatPrinYear As Byte = 96
Private Const rDatPrinYear As Integer = 30
Private Const cSdalDolzh As Byte = 17
Private Const rSdalDolzh As Integer = 22
Private Const cSdalName As Byte = 51
Private Const rSdalName As Integer = 22
Private Const cDatSdalDay As Byte = 79
Private Const rDatSdalDay As Integer = 22
Private Const cDatSdalMon As Byte = 83
Private Const rDatSdalMon As Integer = 22
Private Const cDatSdalYear As Byte = 96
Private Const rDatSdalYear As Integer = 22
Private Const с
GlBuch As Byte = 30
Private Const rGlBuch As Integer = 38
Sub PrintFormOS3 (ByVal nomer As Long)
Dim db As Database, Rec As DAO. Recordset, RecList As DAO. Recordset
Dim oApp As Object
Dim StrFormName As String
Dim StrFile As String, s_folder As String, StrPath As String
Dim StrGlBuch As String
Dim StrFirmName As String, StrFirmOKPO As String, StrFirmAddr As String, StrFirmReq As String
Dim NomerVnutr As String, StrDate As Date
Dim StrTovar As String, StrInv As String
Dim StrPasp As String, StrZav As String
Dim StrIsp As String, StrIspOKPO As String
Dim StrOper As String, StrdNomer As String, StrdDate As Date
Dim StrPDate1 As Date, StrPDate2 As Date
Dim StrFDate1 As Date, StrFDate2 As Date
Dim StrRukName As String, StrRukDolzh As String
Dim StrDatePodp As Date
Dim StrOstStoim As Double, StrFaktSrok As Long
Dim StrDemStoim As Double, StrPlRab As Double, StrPlRab2 As Double
Dim StrFtRab As Double, StrFtRab2 As Double, StrTransp As Double
Dim vbVip As Boolean, StrNoVip As String
Dim StrPredsName As String, StrPredsDolzh As String
Dim StrChl1Name As String, StrChl1Dolzh As String
Dim StrChl2Name As String, StrChl2Dolzh As String
Dim StrPrinName As String, StrPrinDolzh As String
Dim StrSdalName As String, StrSdalDolzh As String
Dim StrPrinDate As Date, StrSdalDate As Date
Dim StrMonthPodp As String, StrMonthPrin As String, StrMonthSdal As String
On Error GoTo LblErr
If nomer = 0 Then Exit Sub
s_folder = CurrentProject. Path
If Right$ (s_folder,
1) <> "\" Then s_folder = s_folder + "\"
s_folder = s_folder + "blanks\
"
If Len (Dir$ (s_folder, vbDirectory)) = 0 Then
MsgBox "Путь
к папке с бланками " & s_folder & " не обнаружен!", vbCritical + vbOKOnly
Exit Sub
End If
Set db = CurrentDb
Set Rec = db. OpenRecordset ("select * from Формы
where НомерФорма = " & NomerForm, dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrFormName = Rec. Fields ("Наименование
"). Value
StrFile = Rec. Fields ("Файл
"). Value
Else
Set Rec = Nothing
MsgBox "Нет
информации о форме №" & NomerForm & "!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
StrPath = s_folder + StrFile
If Len (Dir$ (StrPath)) = 0 Then
MsgBox "Файл
бланка формы '" & StrFormName & "' " & StrPath & " не обнаружен!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = db. OpenRecordset ("SELECT Параметры
. *, Сотрудники. Сотрудник FROM Сотрудники INNER JOIN Параметры ON Сотрудники. НомерСотр = Параметры. ГлБухгалтер", dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrFirmName = Nz (Rec. Fields ("НаименованиеФирмы
"). Value, "")
StrFirmOKPO = Nz (Rec. Fields ("ОКПО
"). Value, "")
StrGlBuch = Nz (Rec. Fields ("Сотрудник
"). Value, "")
StrFirmAddr = Nz (Rec. Fields ("ЮрАдрес
"). Value, "")
StrFirmReq = Nz (Rec. Fields ("БанкРеквизиты
"). Value, "")
Else
MsgBox "Общие
параметры фирмы не занесены!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from запрос
_АктыРемонта where НомерАктаРемонта = " & nomer, dbOpenSnapshot)
If Rec. RecordCount > 0 Then
NomerVnutr = Nz (Rec. Fields ("НомерВнутр
"). Value, nomer)
StrDate = Nz (Rec. Fields ("ДатаАкта
"). Value, Date)
StrTovar = Nz (Rec. Fields ("Товар
"). Value, "")
StrInv = Nz (Rec. Fields ("ИнвКод
"). Value, "")
StrPasp = Nz (Rec. Fields ("НомерПоПаспорту
"). Value, "")
StrZav = Nz (Rec. Fields ("НомерЗавод
"). Value, "")
StrIsp = Nz (Rec. Fields ("Исполнитель
"). Value, "")
StrIspOKPO = Nz (Rec. Fields ("isp_okpo"). Value, "")
StrOper = Nz (Rec. Fields ("ВидРаботы
"). Value, "")
StrdNomer = Nz (Rec. Fields ("НомерДоговора
"). Value, "")
StrdDate = Nz (Rec. Fields ("ДатаДоговора
"). Value, Date)
StrPDate1 = Nz (Rec. Fields ("ПериодРемПлан
1"). Value, Date)
StrPDate2 = Nz (Rec. Fields ("ПериодРемПлан
2"). Value, Date)
StrFDate1 = Nz (Rec. Fields ("ПериодРемФакт
1"). Value, Date)
StrFDate2 = Nz (Rec. Fields ("ПериодРемФакт
2"). Value, Date)
StrRukName = Nz (Rec. Fields ("ruk_name"). Value, "")
StrRukDolzh = Nz (Rec. Fields ("ruk_dolzhn"). Value, "")
StrDatePodp = Nz (Rec. Fields ("ДатаПодписи
"). Value, Date)
StrOstStoim = Nz (Rec. Fields ("ОстСтоииость
"). Value, 0)
StrFaktSrok = Nz (Rec. Fields ("ФактСрокЭкспл
"). Value, 0)
StrOper = Nz (Rec. Fields ("ВидРаботы
"). Value, "")
StrDemStoim = Nz (Rec. Fields ("СтоимДемонт
"). Value, 0)
StrPlRab = Nz (Rec. Fields ("СтоимРаботПлан
"). Value, 0)
StrPlRab2 = Nz (Rec. Fields ("СтоимРаботПлан
2"). Value, 0)
StrFtRab = Nz (Rec. Fields ("СтоимРаботФакт
"). Value, 0)
StrFtRab2 = Nz (Rec. Fields ("СтоимРаботФакт
2"). Value, 0)
StrTransp = Nz (Rec. Fields ("СтоимТрансп
"). Value, 0)
vbVip = Nz (Rec. Fields ("Полностью
"). Value, True)
StrNoVip = Nz (Rec. Fields ("ЧтоНеПолн
"). Value, "")
StrPredsName = Nz (Rec. Fields ("preds_name"). Value, "")
StrPredsDolzh = Nz (Rec. Fields ("preds_dolzhn"). Value, "")
StrChl1Name = Nz (Rec. Fields ("chlen1_name"). Value, "")
StrChl1Dolzh = Nz (Rec. Fields ("chlen1_dolzhn"). Value, "")
StrChl2Name = Nz (Rec. Fields ("chlen2_name"). Value, "")
StrChl2Dolzh = Nz (Rec. Fields ("chlen2_dolzhn"). Value, "")
StrPrinName = Nz (Rec. Fields ("prin_name"). Value, "")
StrPrinDolzh = Nz (Rec. Fields ("prin_dolzhn"). Value, "")
StrPrinDate = Nz (Rec. Fields ("ДатаПриемки
"). Value, Date)
StrSdalName = Nz (Rec. Fields ("sdal_name"). Value, "")
StrSdalDolzh = Nz (Rec. Fields ("sdal_dolzhn"). Value, "")
StrSdalDate = Nz (Rec. Fields ("ДатаСдачи
"). Value, Date)
StrGlBuch = Nz (Rec. Fields ("glbuch_name"). Value, "")
Else
MsgBox "Акт
сдачи-приемки отремонт. ОС №" & nomer & " не найден!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from ВспомДата
where НомерМес = " & Month (StrDatePodp), dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrMonthPodp = Nz (Rec. Fields ("НазвМес
"). Value, "")
Else
StrMonthPodp = "нет
названия"
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from ВспомДата
where НомерМес = " & Month (StrPrinDate), dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrMonthPrin = Nz (Rec. Fields ("НазвМес
"). Value, "")
Else
StrMonthPrin = "нет
названия"
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from ВспомДата
where НомерМес = " & Month (StrSdalDate), dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrMonthSdal = Nz (Rec. Fields ("НазвМес
"). Value, "")
Else
StrMonthSdal = "нет
названия"
End If
Set Rec = Nothing
Set oApp = CreateObject ("Excel. Application")
oApp. Workbooks. Open FileName: =StrPath, ReadOnly: =True
oApp. ActiveWorkbook. Sheets (1). Select
oApp. Cells (rFirmName, cFirmName). Value = StrFirmName
oApp. Cells (rFirmOKPO, cFirmOKPO). Value = StrFirmOKPO
oApp. Cells (rNomer, cNomer). Value = NomerVnutr
oApp. Cells (rDat, cDat). Value = Format$ (StrDate, "dd. mm. yyyy")
oApp. Cells (rIsp, cIsp). Value = StrIsp
oApp. Cells (rIspOKPO, cIspOKPO). Value = StrIspOKPO
oApp. Cells (rdNomer, cdNomer). Value = StrdNomer
oApp. Cells (rdDate, cdDate). Value = Format$ (StrdDate, "dd. mm. yyyy")
oApp. Cells (rPDate1, cPDate1). Value = Format$ (StrPDate1, "dd. mm. yyyy")
oApp. Cells (rPDate2, cPDate2). Value = Format$ (StrPDate2, "dd. mm. yyyy")
oApp. Cells (rFDate1, cFDate1). Value = Format$ (StrFDate1, "dd. mm. yyyy")
oApp. Cells (rFDate2, cFDate2). Value = Format$ (StrFDate2, "dd. mm. yyyy")
oApp. Cells (rRukName, cRukName). Value = StrRukName
oApp. Cells (rRukDolzh, cRukDolzh). Value = StrRukDolzh
oApp. Cells (rDatRukDay, cDatRukDay). Value = Format$ (StrDatePodp, "dd")
oApp. Cells (rDatRukMon, cDatRukMon). Value = StrMonthPodp
oApp. Cells (rDatRukYear, cDatRukYear). Value = Right$ (Format$ (StrDatePodp, "yyyy"),
1)
oApp. Cells (rInv, cInv). Value = StrInv
oApp. Cells (rPasp, cPasp). Value = StrPasp
oApp. Cells (rZav, cZav). Value = StrZav
oApp. Cells (rTovar, cTovar). Value = StrTovar
oApp. Cells (rTovar2, cTovar2). Value = StrTovar
oApp. Cells (rOstStoim, cOstStoim). Value = Format$ (StrOstStoim, "0.00")
oApp. Cells (rFaktSrok, cFaktSrok). Value = StrFaktSrok & "мес
."
oApp. Cells (rOper, cOper). Value = StrOper
oApp. Cells (rDemStoim, cDemStoim). Value = Format$ (StrDemStoim, "0.00")
oApp. Cells (rPlRab, cPlRab). Value = Format$ (StrPlRab, "0.00")
oApp. Cells (rPlRab2, cPlRab2). Value = Format$ (StrPlRab2, "0.00")
oApp. Cells (rFtRab, cFtRab). Value = Format$ (StrFtRab, "0.00")
oApp. Cells (rFtRab2, cFtRab2). Value = Format$ (StrFtRab2, "0.00")
oApp. Cells (rTransp, cTransp). Value = Format$ (StrTransp, "0.00")
oApp. Cells (riDemStoim, ciDemStoim). Value = Format$ (StrDemStoim, "0.00")
oApp. Cells (riPlRab, ciPlRab). Value = Format$ (StrPlRab, "0.00")
oApp. Cells (riPlRab2, ciPlRab2). Value = Format$ (StrPlRab2, "0.00")
oApp. Cells (riFtRab, ciFtRab). Value = Format$ (StrFtRab, "0.00")
oApp. Cells (riFtRab2, ciFtRab2). Value = Format$ (StrFtRab2, "0.00")
oApp. Cells (riTransp, ciTransp). Value = Format$ (StrTransp, "0.00")
oApp. ActiveWorkbook. Sheets (2). Select
If vbVip = True Then
oApp. Cells (rVip1, cVip1). Font. Bold = True
oApp. Cells (rVip2, cVip2). Font. Bold = False
oApp. Cells (rVipInf, cVipInf). Value = "
"
Else
oApp. Cells (rVip1, cVip1). Font. Bold = False
oApp. Cells (rVip2, cVip2). Font. Bold = True
oApp. Cells (rVipInf, cVipInf). Value = StrNoVip
End If
oApp. Cells (rPredsName, cPredsName). Value = StrPredsName
oApp. Cells (rPredsDolzh, cPredsDolzh). Value = StrPredsDolzh
oApp. Cells (rChl1Name, cChl1Name). Value = StrChl1Name
oApp. Cells (rChl1Dolzh, cChl1Dolzh). Value = StrChl1Dolzh
oApp. Cells (rChl2Name, cChl2Name). Value = StrChl2Name
oApp. Cells (rChl2Dolzh, cChl2Dolzh). Value = StrChl2Dolzh
oApp. Cells (rPrinName, cPrinName). Value = StrPrinName
oApp. Cells (rPrinDolzh, cPrinDolzh). Value = StrPrinDolzh
oApp. Cells (rDatPrinDay, cDatPrinDay). Value = Format$ (StrPrinDate, "dd")
oApp. Cells (rDatPrinMon, cDatPrinMon). Value = StrMonthPrin
oApp. Cells (rDatPrinYear, cDatPrinYear). Value = Right$ (Format$ (StrPrinDate, "yyyy"),
1)
oApp. Cells (rSdalName, cSdalName). Value = StrSdalName
oApp. Cells (rSdalDolzh, cSdalDolzh). Value = StrSdalDolzh
oApp. Cells (rDatSdalDay, cDatSdalDay). Value = Format$ (StrSdalDate, "dd")
oApp. Cells (rDatSdalMon, cDatSdalMon). Value = StrMonthSdal
oApp. Cells (rDatSdalYear, cDatSdalYear). Value = Right$ (Format$ (StrSdalDate, "yyyy"),
1)
oApp. Cells (rGlBuch, с
GlBuch). Value = StrGlBuch
ex:
Application. SysCmd acSysCmdRemoveMeter
If Not (oApp Is Nothing) Then oApp. Visible = True
Set Rec = Nothing
Set RecList = Nothing
Set oApp = Nothing
Set db = Nothing
Exit Sub
LblErr:
MsgBox Err. Description, vbCritical + vbOKOnly
GoTo ex
End Sub
Код
модуля OS4
Option Compare Database
Option Explicit
Private Const NomerForm As Long = 6
Private Const cFirmName As Byte = 1
Private Const rFirmName As Integer = 7
Private Const cFirmOKPO As Byte = 88
Private Const rFirmOKPO As Integer = 7
Private Const cNomer As Byte = 53
Private Const rNomer As Integer = 23
Private Const cDat As Byte = 65
Private Const rDat As Integer = 23
Private Const cRukDolzh As Byte = 61
Private Const rRukDolzh As Integer = 19
Private Const cRukName As Byte = 85
Private Const rRukName As Integer = 19
Private Const cDatRukDay As Byte = 78
Private Const rDatRukDay As Integer = 23
Private Const cDatRukMon As Byte = 83
Private Const rDatRukMon As Integer = 23
Private Const cDatRukYear As Byte = 96
Private Const rDatRukYear As Integer = 23
Private Const cStruct As Byte = 1
Private Const rStruct As Integer = 9
Private Const cOsn As Byte = 19
Private Const rOsn As Integer = 12
Private Const cDateOsn As Byte = 88
Private Const rDateOsn As Integer = 13
Private Const cNomerOsn As Byte = 88
Private Const rNomerOsn As Integer = 12
Private Const cDateSpis As Byte = 88
Private Const rDateSpis As Integer = 10
Private Const cMatSotr As Byte = 20
Private Const rMatSotr As Integer = 15
Private Const cMatNomer As Byte = 88
Private Const rMatNomer As Integer = 15
Private Const cPri4ina As Byte = 12
Private Const rPri4ina As Integer = 27
Private Const cTovar As Byte = 1
Private Const rTovar As Integer = 38
Private Const cInv As Byte = 20
Private Const rInv As Integer = 38
Private Const cZav As Byte = 30
Private Const rZav As Integer = 38
Private Const cDateVip As Byte = 40
Private Const rDateVip As Integer = 38
Private Const cDatePriem As Byte = 53
Private Const rDatePriem As Integer = 38
Private Const cFaktSrok As Byte = 60
Private Const rFaktSrok As Integer = 38
Private Const cPerv As Byte = 70
Private Const rPerv As Integer = 38
Private Const cAmort As Byte = 80
Private Const rAmort As Integer = 38
Private Const cOstStoim As Byte = 90
Private Const rOstStoim As Integer = 38
Private Const cZakl As Integer = 61
Private Const rZakl1 As Integer = 13
Private Const cZakl2 As Integer = 1
Private Const rZakl2_1 As Integer = 14
Private Const rZakl2_2 As Integer = 15
Private Const nSymbZakl As Byte = 40
Private Const nSymbZakl2 As Byte = 110
Private Const cPredsDolzh As Byte = 17
Private Const rPredsDolzh As Integer = 17
Private Const cChl1Dolzh As Byte = 17
Private Const rChl1Dolzh As Integer = 19
Private Const cChl2Dolzh As Byte = 17
Private Const rChl2Dolzh As Integer = 21
Private Const cPredsName As Byte = 51
Private Const rPredsName As Integer = 17
Private Const cChl1Name As Byte = 51
Private Const rChl1Name As Integer = 19
Private Const cChl2Name As Byte = 51
Private Const rChl2Name As Integer = 21
Private Const с
GlBuch As Byte = 30
Private Const rGlBuch As Integer = 40
Private Const rSh1_1 As Integer = 7
Private Const rSh1_2 As Integer = 10
Private Const cKompl As Byte = 1
Private Const cKol As Byte = 30
Sub PrintFormOS4 (ByVal nomer As Long)
Dim db As Database, Rec As DAO. Recordset, RecList As DAO. Recordset
Dim oApp As Object
Dim StrFormName As String
Dim StrFile As String, s_folder As String, StrPath As String
Dim StrGlBuch As String
Dim StrFirmName As String, StrFirmOKPO As String, StrFirmAddr As String, StrFirmReq As String
Dim NomerVnutr As String, StrDate As Date
Dim StrPredsName As String, StrPredsDolzh As String
Dim StrChl1Name As String, StrChl1Dolzh As String
Dim StrChl2Name As String, StrChl2Dolzh As String
Dim StrDatePodp As Date, StrDateSpis As Date
Dim StrOstStoim As Double, StrFaktSrok As Long
Dim StrTovar As String, StrInv As String, StrZav As String
Dim StrRukName As String, StrRukDolzh As String
Dim StrStruct As String
Dim StrOsn As String, StrDateOsn As Date, StrNomerOsn As String
Dim StrMatSotr As String, StrMatNomer As String
Dim StrPri4ina As String
Dim StrDateVip As Date, StrDatePriem As Date
Dim StrPervStoim As Double, StrAmort As Double
Dim StrZakl As String, StrMonthPodp As String
Dim i As Long, NRecord As Long, p As Long
On Error GoTo LblErr
If nomer = 0 Then Exit Sub
s_folder = CurrentProject. Path
If Right$ (s_folder,
1) <> "\" Then s_folder = s_folder + "\"
s_folder = s_folder + "blanks\
"
If Len (Dir$ (s_folder, vbDirectory)) = 0 Then
MsgBox "Путь
к папке с бланками " & s_folder & " не обнаружен!", vbCritical + vbOKOnly
Exit Sub
End If
Set db = CurrentDb
Set Rec = db. OpenRecordset ("select * from Формы
where НомерФорма = " & NomerForm, dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrFormName = Rec. Fields ("Наименование
"). Value
StrFile = Rec. Fields ("Файл
"). Value
Else
Set Rec = Nothing
MsgBox "Нет
информации о форме №" & NomerForm & "!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
StrPath = s_folder + StrFile
If Len (Dir$ (StrPath)) = 0 Then
MsgBox "Файл
бланка формы '" & StrFormName & "' " & StrPath & " не обнаружен!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = db. OpenRecordset ("SELECT Параметры
. *, Сотрудники. Сотрудник FROM Сотрудники INNER JOIN Параметры ON Сотрудники. НомерСотр = Параметры. ГлБухгалтер", dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrFirmName = Nz (Rec. Fields ("НаименованиеФирмы
"). Value, "")
StrFirmOKPO = Nz (Rec. Fields ("ОКПО
"). Value, "")
StrGlBuch = Nz (Rec. Fields ("Сотрудник
"). Value, "")
StrFirmAddr = Nz (Rec. Fields ("ЮрАдрес
"). Value, "")
StrFirmReq = Nz (Rec. Fields ("БанкРеквизиты
"). Value, "")
Else
MsgBox "Общие
параметры фирмы не занесены!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from запрос
_АктыСписания where НомерАкт = " & nomer, dbOpenSnapshot)
If Rec. RecordCount > 0 Then
NomerVnutr = Nz (Rec. Fields ("НомерВнутр
"). Value, nomer)
StrDate = Nz (Rec. Fields ("ДатаАкта
"). Value, Date)
StrTovar = Nz (Rec. Fields ("Товар
"). Value, "")
StrInv = Nz (Rec. Fields ("ИнвКод
"). Value, "")
StrZav = Nz (Rec. Fields ("НомерЗавод
"). Value, "")
StrRukName = Nz (Rec. Fields ("ruk_name"). Value, "")
StrRukDolzh = Nz (Rec. Fields ("ruk_dolzhn"). Value, "")
StrDatePodp = Nz (Rec. Fields ("ДатаПодписи
"). Value, Date)
StrDateSpis = Nz (Rec. Fields ("ДатаСписания
"). Value, Date)
StrStruct = Nz (Rec. Fields ("СтруктурноеПодразделение
"). Value, "")
StrOsn = Nz (Rec. Fields ("Основание
"). Value, "")
StrDateOsn = Nz (Rec. Fields ("ДатаОсн
"). Value, Date)
StrNomerOsn = Nz (Rec. Fields ("НомерОсн
"). Value, "")
StrMatSotr = Nz (Rec. Fields ("mat_name"). Value, "")
StrMatNomer = Nz (Rec. Fields ("mat_nomer"). Value, "")
StrPri4ina = Nz (Rec. Fields ("Причина
"). Value, "")
StrDateVip = Nz (Rec. Fields ("ДатаВыпуск
"). Value, Date)
StrDatePriem = Nz (Rec. Fields ("ДатаПринятия
"). Value, Date)
StrPervStoim = Nz (Rec. Fields ("ПервСтоииость
"). Value, 0)
StrAmort = Nz (Rec. Fields ("Аморт
"). Value, 0)
StrOstStoim = Nz (Rec. Fields ("ОстСтоииость
"). Value, 0)
StrFaktSrok = Nz (Rec. Fields ("ФактСрокЭкспл
"). Value, 0)
StrZakl = Nz (Rec. Fields ("Заключение
"). Value, "")
StrPredsName = Nz (Rec. Fields ("preds_name"). Value, "")
StrPredsDolzh = Nz (Rec. Fields ("preds_dolzhn"). Value, "")
StrChl1Name = Nz (Rec. Fields ("chlen1_name"). Value, "")
StrChl1Dolzh = Nz (Rec. Fields ("chlen1_dolzhn"). Value, "")
StrChl2Name = Nz (Rec. Fields ("chlen2_name"). Value, "")
StrChl2Dolzh = Nz (Rec. Fields ("chlen2_dolzhn"). Value, "")
StrGlBuch = Nz (Rec. Fields ("glbuch_name"). Value, "")
Else
MsgBox "Акт
списания ОС №" & nomer & " не найден!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from ВспомДата
where НомерМес = " & Month (StrDatePodp), dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrMonthPodp = Nz (Rec. Fields ("НазвМес
"). Value, "")
Else
StrMonthPodp = "нет
названия"
End If
Set Rec = Nothing
Set oApp = CreateObject ("Excel. Application")
oApp. Workbooks. Open FileName: =StrPath, ReadOnly: =True
oApp. ActiveWorkbook. Sheets (1). Select
oApp. Cells (rFirmName, cFirmName). Value = StrFirmName
oApp. Cells (rFirmOKPO, cFirmOKPO). Value = StrFirmOKPO
oApp. Cells (rNomer, cNomer). Value = NomerVnutr
oApp. Cells (rDat, cDat). Value = Format$ (StrDate, "dd. mm. yyyy")
oApp. Cells (rRukName, cRukName). Value = StrRukName
oApp. Cells (rRukDolzh, cRukDolzh). Value = StrRukDolzh
oApp. Cells (rDatRukDay, cDatRukDay). Value = Format$ (StrDatePodp, "dd")
oApp. Cells (rDatRukMon, cDatRukMon). Value = StrMonthPodp
oApp. Cells (rDatRukYear, cDatRukYear). Value = Right$ (Format$ (StrDatePodp, "yyyy"),
1)
oApp. Cells (rStruct, cStruct). Value = StrStruct
oApp. Cells (rOsn, cOsn). Value = StrOsn
oApp. Cells (rDateOsn, cDateOsn). Value = StrDateOsn
oApp. Cells (rNomerOsn, cNomerOsn). Value = StrNomerOsn
oApp. Cells (rDateSpis, cDateSpis). Value = Format$ (StrDateSpis, "dd. mm. yyyy")
oApp. Cells (rMatSotr, cMatSotr). Value = StrMatSotr
oApp. Cells (rMatNomer, cMatNomer). Value = StrMatNomer
oApp. Cells (rPri4ina, cPri4ina). Value = StrOsn
oApp. Cells (rTovar, cTovar). Value = StrTovar
oApp. Cells (rInv, cInv). Value = StrInv
oApp. Cells (rZav, cZav). Value = StrZav
oApp. Cells (rDateVip, cDateVip). Value = Format$ (StrDateVip, "yyyy")
oApp. Cells (rDatePriem, cDatePriem). Value = Format$ (StrDatePriem, "dd. mm. yyyy")
oApp. Cells (rFaktSrok, cFaktSrok). Value = StrFaktSrok & "мес
."
oApp. Cells (rPerv, cPerv). Value = Format$ (StrPervStoim, "0.00")
oApp. Cells (rAmort, cAmort). Value = Format$ (StrAmort, "0.00")
oApp. Cells (rOstStoim, cOstStoim). Value = Format$ (StrOstStoim, "0.00")
oApp. ActiveWorkbook. Sheets (2). Select
oApp. Cells (rZakl1, cZakl). Value = Left$ (StrZakl, nSymbZakl)
StrZakl = Mid$ (StrZakl, nSymbZakl + 1)
i = rZakl2_1
While Len (StrZakl) > 0
oApp. Cells (i, cZakl2). Value = Left$ (StrZakl, nSymbZakl2)
StrZakl = Mid$ (StrZakl, nSymbZakl2 + 1)
i = i + 1
If i > rZakl2_2 Then GoTo lb_ex
Wend
lb_ex:
oApp. Cells (rPredsName, cPredsName). Value = StrPredsName
oApp. Cells (rPredsDolzh, cPredsDolzh). Value = StrPredsDolzh
oApp. Cells (rChl1Name, cChl1Name). Value = StrChl1Name
oApp. Cells (rChl1Dolzh, cChl1Dolzh). Value = StrChl1Dolzh
oApp. Cells (rChl2Name, cChl2Name). Value = StrChl2Name
oApp. Cells (rChl2Dolzh, cChl2Dolzh). Value = StrChl2Dolzh
oApp. Cells (rGlBuch, с
GlBuch). Value = StrGlBuch
Application. SysCmd acSysCmdInitMeter, "Вывод
информации о товарах", 100
Set RecList = db. OpenRecordset ("select * from запрос
_АктыСписанияТовары where НомерАкт = " & nomer, dbOpenSnapshot)
NRecord = RecList. RecordCount
If NRecord > 0 Then
RecList. MoveLast
NRecord = RecList. RecordCount
RecList. MoveFirst
i = 0
p = rSh1_1 - 1
While Not RecList. EOF
i = i + 1
p = p + 1
If p > rSh1_2 Then GoTo ex
Application. SysCmd acSysCmdUpdateMeter, i / NRecord * 100
oApp. Cells (p, cKompl). Value = Nz (RecList. Fields ("НаименованиеКомп
"). Value, "")
oApp. Cells (p, cKol). Value = Nz (RecList. Fields ("Количество
"). Value, 0) & "шт."
RecList. MoveNext
Wend
End If
ex:
Application. SysCmd acSysCmdRemoveMeter
If Not (oApp Is Nothing) Then oApp. Visible = True
Set Rec = Nothing
Set RecList = Nothing
Set oApp = Nothing
Set db = Nothing
Exit Sub
LblErr:
MsgBox Err. Description, vbCritical + vbOKOnly
GoTo ex
End Sub
Код
модуля OS6
Option Compare Database
Option Explicit
Private Const NomerForm As Long = 4
Private Const cFirmName As Byte = 1
Private Const rFirmName As Integer = 7
Private Const cFirmOKPO As Byte = 53
Private Const rFirmOKPO As Integer = 7
Private Const cNomer As Byte = 20
Private Const rNomer As Integer = 14
Private Const cDat As Byte = 26
Private Const rDat As Integer = 14
Private Const cTovar As Byte = 6
Private Const rTovar As Integer = 15
Private Const cMest As Byte = 27
Private Const rMest As Integer = 20
Private Const cSchet As Byte = 53
Private Const rSchet As Integer = 18
Private Const cAmort As Byte = 53
Private Const rAmort As Integer = 12
Private Const cInv As Byte = 53
Private Const rInv As Integer = 14
Private Const cDatePriem As Byte = 53
Private Const rDatePriem As Integer = 16
Private Const cDateSpis As Byte = 53
Private Const rDateSpis As Integer = 17
Private Const cPost As Byte = 17
Private Const rPost As Integer = 21
Private Const cPerv As Byte = 53
Private Const rPerv As Integer = 35
Private Const cSrok As Byte = 59
Private Const rSrok As Integer = 35
Private Const cOsn As Byte = 1
Private Const rOsn As Integer = 59
Private Const cOper As Byte = 10
Private Const rOper As Integer = 59
Private Const cStruct As Byte = 19
Private Const rStruct As Integer = 59
Private Const cOstStoim As Byte = 39
Private Const rOstStoim As Integer = 59
Private Const cOtvSotr As Byte = 49
Private Const rOtvSotr As Integer = 59
Private Const cTovar2 As Byte = 1
Private Const rTovar2 As Integer = 19
Private Const cKol As Byte = 32
Private Const rKol As Integer = 19
Private Const cInvDolzh As Byte = 33
Private Const rInvDolzh As Integer = 36
Private Const cInvName As Byte = 67
Private Const rInvName As Integer = 36
Sub PrintFormOS6 (ByVal nomer As Long)
Dim db As Database, Rec As DAO. Recordset, RecList As DAO. Recordset
Dim oApp As Object
Dim StrFormName As String
Dim StrFile As String, s_folder As String, StrPath As String
Dim StrGlBuch As String
Dim StrFirmName As String, StrFirmOKPO As String, StrFirmAddr As String, StrFirmReq As String
Dim StrSchet As String, StrAmot As String
Dim NomerVnutr As String, StrDate As Date
Dim StrTovar As String, StrInv As String
Dim StrStoim As Double, StrOstStoim As Double, StrSroki As Long
Dim StrMest As String, StrKol As Long
Dim StrDatePriem As Date, StrDateSpis As Date
Dim StrPost As String, StrOsn As String, StrOper As String, StrStruct As String
Dim StrOtvSotr As String, StrInvSotr As String, StrInvSotrDolzhn As String
On Error GoTo LblErr
If nomer = 0 Then Exit Sub
s_folder = CurrentProject. Path
If Right$ (s_folder,
1) <> "\" Then s_folder = s_folder + "\"
s_folder = s_folder + "blanks\
"
If Len (Dir$ (s_folder, vbDirectory)) = 0 Then
MsgBox "Путь
к папке с бланками " & s_folder & " не обнаружен!", vbCritical + vbOKOnly
Exit Sub
End If
Set db = CurrentDb
Set Rec = db. OpenRecordset ("select * from Формы
where НомерФорма = " & NomerForm, dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrFormName = Rec. Fields ("Наименование
"). Value
StrFile = Rec. Fields ("Файл
"). Value
Else
Set Rec = Nothing
MsgBox "Нет
информации о форме №" & NomerForm & "!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
StrPath = s_folder + StrFile
If Len (Dir$ (StrPath)) = 0 Then
MsgBox "Файл
бланка формы '" & StrFormName & "' " & StrPath & " не обнаружен!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = db. OpenRecordset ("SELECT Параметры
. *, Сотрудники. Сотрудник FROM Сотрудники INNER JOIN Параметры ON Сотрудники. НомерСотр = Параметры. ГлБухгалтер", dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrFirmName = Nz (Rec. Fields ("НаименованиеФирмы
"). Value, "")
StrFirmOKPO = Nz (Rec. Fields ("ОКПО
"). Value, "")
StrGlBuch = Nz (Rec. Fields ("Сотрудник
"). Value, "")
StrFirmAddr = Nz (Rec. Fields ("ЮрАдрес
"). Value, "")
StrFirmReq = Nz (Rec. Fields ("БанкРеквизиты
"). Value, "")
Else
MsgBox "Общие
параметры фирмы не занесены!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from запрос
_ИнвКарты where НомерИнвентКарты = " & nomer, dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrSchet = Nz (Rec. Fields ("Счет
"). Value, "")
StrAmot = Nz (Rec. Fields ("НомерАмортГруппы
"). Value, "")
NomerVnutr = Nz (Rec. Fields ("НомерВнутр
"). Value, nomer)
StrDate = Nz (Rec. Fields ("ДатаИнвКарты
"). Value, Date)
StrTovar = Nz (Rec. Fields ("Товар
"). Value, "")
StrInv = Nz (Rec. Fields ("ИнвКод
"). Value, "")
StrStoim = Nz (Rec. Fields ("ПервСтоииость
"). Value, 0)
StrSroki = Nz (Rec. Fields ("СрокИспользования
"). Value, 0)
StrMest = Nz (Rec. Fields ("Местонахождение
"). Value, "")
StrKol = Nz (Rec. Fields ("Количество
"). Value,
1)
StrDatePriem = Nz (Rec. Fields ("ДатаПринятия
"). Value, Date)
StrDateSpis = Nz (Rec. Fields ("ДатаСписания
"). Value, Date)
StrPost = Nz (Rec. Fields ("НаименованиеПост
"). Value, "")
StrOsn = Nz (Rec. Fields ("ОснованиеПриема
"). Value, "")
StrOper = Nz (Rec. Fields ("ВидОперации
"). Value, "")
StrStruct = Nz (Rec. Fields ("СтруктурноеПодразделение
"). Value, "")
StrOstStoim = Nz (Rec. Fields ("ОстСтоииость
"). Value, 0)
StrOtvSotr = Nz (Rec. Fields ("ОтвСотр
"). Value, "")
StrInvSotr = Nz (Rec. Fields ("ИнвСотр
"). Value, "")
StrInvSotrDolzhn = Nz (Rec. Fields ("Должность
"). Value, "")
Else
MsgBox "Инвентарная
карточка №" & nomer & " не найдена!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
Set oApp = CreateObject ("Excel. Application")
oApp. Workbooks. Open FileName: =StrPath, ReadOnly: =True
oApp. ActiveWorkbook. Sheets (1). Select
oApp. Cells (rFirmName, cFirmName). Value = StrFirmName
oApp. Cells (rFirmOKPO, cFirmOKPO). Value = StrFirmOKPO
oApp. Cells (rNomer, cNomer). Value = NomerVnutr
oApp. Cells (rDat, cDat). Value = Format$ (StrDate, "dd. mm. yyyy")
oApp. Cells (rTovar, cTovar). Value = StrTovar
oApp. Cells (rMest, cMest). Value = StrMest
oApp. Cells (rSchet, cSchet). Value = StrSchet
oApp. Cells (rAmort, cAmort). Value = StrAmot
oApp. Cells (rInv, cInv). Value = StrInv
oApp. Cells (rDatePriem, cDatePriem). Value = Format$ (StrDatePriem, "dd. mm. yyyy")
oApp. Cells (rDateSpis, cDateSpis). Value = Format$ (StrDateSpis, "dd. mm. yyyy")
oApp. Cells (rPost, cPost). Value = StrPost
oApp. Cells (rPerv, cPerv). Value = Format$ (StrStoim, "0.00")
oApp. Cells (rSrok, cSrok). Value = StrSroki & " мес
."
oApp. Cells (rOsn, cOsn). Value = StrOsn
oApp. Cells (rOper, cOper). Value = StrOper
oApp. Cells (rStruct, cStruct). Value = StrStruct
oApp. Cells (rOstStoim, cOstStoim). Value = Format$ (StrOstStoim, "0.00")
oApp. Cells (rOtvSotr, cOtvSotr). Value = StrOtvSotr
oApp. ActiveWorkbook. Sheets (2). Select
oApp. Cells (rTovar2, cTovar2). Value = StrTovar
oApp. Cells (rKol, cKol). Value = StrKol & " шт
."
oApp. Cells (rInvDolzh, cInvDolzh). Value = StrInvSotrDolzhn
oApp. Cells (rInvName, cInvName). Value = StrInvSotr
ex:
Application. SysCmd acSysCmdRemoveMeter
If Not (oApp Is Nothing) Then oApp. Visible = True
Set Rec = Nothing
Set RecList = Nothing
Set oApp = Nothing
Set db = Nothing
Exit Sub
LblErr:
MsgBox Err. Description, vbCritical + vbOKOnly
GoTo ex
End Sub
Код
модуля OS6b
Option Compare Database
Option Explicit
Private Const NomerForm As Long = 7
Private Const cFirmName As Byte = 1
Private Const rFirmName As Integer = 7
Private Const cFirmOKPO As Byte = 88
Private Const rFirmOKPO As Integer = 7
Private Const cStruct As Byte = 1
Private Const rStruct As Integer = 9
Private Const cDat1Day As Byte = 30
Private Const rDat1Day As Integer = 23
Private Const cDat1Mon As Byte = 34
Private Const rDat1Mon As Integer = 23
Private Const cDat1Year As Byte = 49
Private Const rDat1Year As Integer = 23
Private Const cDat2Day As Byte = 57
Private Const rDat2Day As Integer = 23
Private Const cDat2Mon As Byte = 61
Private Const rDat2Mon As Integer = 23
Private Const cDat2Year As Byte = 76
Private Const rDat2Year As Integer = 23
Private Const cInvName As Byte = 48
Private Const rInvName As Integer = 33
Private Const cInvDolzhn As Byte = 24
Private Const rInvDolzhn As Integer = 33
Private Const cInvNomer As Byte = 88
Private Const rInvNomer As Integer = 33
Private Const rSh1_1 As Integer = 8
Private Const rSh1_2 As Integer = 35
Private Const cNomer As Byte = 1
Private Const cTovar As Byte = 5
Private Const cInv As Byte = 20
Private Const cOsn As Byte = 30
Private Const cDatePrin As Byte = 43
Private Const cStructTov As Byte = 52
Private Const cOtv As Byte = 61
Private Const cPervStoim As Byte = 70
Private Const cSrok As Byte = 80
Private Const cAmort As Byte = 90
Private Const cOstStoim As Byte = 1
Sub PrintFormOS6b (ByVal v_dat1 As Date, _
ByVal v_dat2 As Date, _
ByVal nomer_struct As Long, ByVal StrStruct As String)
Dim db As Database, qry As DAO. QueryDef, Rec As DAO. Recordset, RecList As DAO. Recordset
Dim oApp As Object
Dim StrFormName As String
Dim StrFile As String, s_folder As String, StrPath As String
Dim StrFirmName As String, StrFirmOKPO As String
Dim StrInvOtvName As String, StrInvOtvDolzhn As String, StrInvOtvNomer As String
Dim StrMonth1 As String, StrMonth2 As String
Dim i As Long, NRecord As Long, p As Long
On Error GoTo LblErr
s_folder = CurrentProject. Path
If Right$ (s_folder,
1) <> "\" Then s_folder = s_folder + "\"
s_folder = s_folder + "blanks\
"
If Len (Dir$ (s_folder, vbDirectory)) = 0 Then
MsgBox "Путь
к папке с бланками " & s_folder & " не обнаружен!", vbCritical + vbOKOnly
Exit Sub
End If
Set db = CurrentDb
Set Rec = db. OpenRecordset ("select * from Формы
where НомерФорма = " & NomerForm, dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrFormName = Rec. Fields ("Наименование
"). Value
StrFile = Rec. Fields ("Файл
"). Value
Else
Set Rec = Nothing
MsgBox "Нет
информации о форме №" & NomerForm & "!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
StrPath = s_folder + StrFile
If Len (Dir$ (StrPath)) = 0 Then
MsgBox "Файл
бланка формы '" & StrFormName & "' " & StrPath & " не обнаружен!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = db. OpenRecordset ("SELECT Параметры
. *, Сотрудники. Сотрудник, Сотрудники. ТабельныйНомер, Должности. Должность FROM ( (Должности RIGHT JOIN Сотрудники ON Должности. НомерДолжн = Сотрудники. НомерДолжн) RIGHT JOIN Параметры ON Сотрудники. НомерСотр = Параметры. ИнвОтвеств)", dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrFirmName = Nz (Rec. Fields ("НаименованиеФирмы
"). Value, "")
StrFirmOKPO = Nz (Rec. Fields ("ОКПО
"). Value, "")
StrInvOtvName = Nz (Rec. Fields ("Сотрудник
"). Value, "")
StrInvOtvDolzhn = Nz (Rec. Fields ("Должность
"). Value, "")
StrInvOtvNomer = Nz (Rec. Fields ("ТабельныйНомер
"). Value, "")
Else
MsgBox "Общие
параметры фирмы не занесены!", vbCritical + vbOKOnly
Exit Sub
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from ВспомДата
where НомерМес = " & Month (v_dat1), dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrMonth1 = Nz (Rec. Fields ("НазвМес
"). Value, "")
Else
StrMonth1 = "нет
названия"
End If
Set Rec = Nothing
Set Rec = db. OpenRecordset ("select * from ВспомДата
where НомерМес = " & Month (v_dat2), dbOpenSnapshot)
If Rec. RecordCount > 0 Then
StrMonth2 = Nz (Rec. Fields ("НазвМес
"). Value, "")
Else
StrMonth2 = "нет
названия"
End If
Set Rec = Nothing
Set oApp = CreateObject ("Excel. Application")
oApp. Workbooks. Open FileName: =StrPath, ReadOnly: =True
oApp. ActiveWorkbook. Sheets (1). Select
oApp. Cells (rFirmName, cFirmName). Value = StrFirmName
oApp. Cells (rFirmOKPO, cFirmOKPO). Value = StrFirmOKPO
oApp. Cells (rStruct, cStruct). Value = StrStruct
oApp. Cells (rDat1Day, cDat1Day). Value = Format$ (v_dat1, "dd")
oApp. Cells (rDat1Mon, cDat1Mon). Value = StrMonth1
oApp. Cells (rDat1Year, cDat1Year). Value = Right$ (Format$ (v_dat1, "yyyy"),
1)
oApp. Cells (rDat2Day, cDat2Day). Value = Format$ (v_dat2, "dd")
oApp. Cells (rDat2Mon, cDat2Mon). Value = StrMonth2
oApp. Cells (rDat2Year, cDat2Year). Value = Right$ (Format$ (v_dat2, "yyyy"),
1)
oApp. Cells (rInvName, cInvName). Value = StrInvOtvName
oApp. Cells (rInvDolzhn, cInvDolzhn). Value = StrInvOtvDolzhn
oApp. Cells (rInvNomer, cInvNomer). Value = StrInvOtvNomer
Application. SysCmd acSysCmdInitMeter, "Вывод
информации о товарах", 100
If nomer_struct = 0 Then
Set qry = db. QueryDefs ("запрос
_ИнвКнига2")
qry. Parameters (0) = v_dat1
qry. Parameters (1) = v_dat2
Else
Set qry = db. QueryDefs ("запрос
_ИнвКнига")
qry. Parameters (0) = v_dat1
qry. Parameters (1) = nomer_struct
qry. Parameters (2) = v_dat2
End If
Set RecList = qry. OpenRecordset (dbOpenSnapshot)
NRecord = RecList. RecordCount
If NRecord > 0 Then
RecList. MoveLast
NRecord = RecList. RecordCount
RecList. MoveFirst
i = 0
p = rSh1_1 - 1
While Not RecList. EOF
i = i + 1
p = p + 1
If p > rSh1_2 Then GoTo ex
Application. SysCmd acSysCmdUpdateMeter, i / NRecord * 100
With oApp. ActiveWorkbook. Sheets (2)
. Cells (p, cNomer). Value = i
. Cells (p, cTovar). Value = Nz (RecList. Fields ("
Наименование"). Value, "")
. Cells (p, cInv). Value = Nz (RecList. Fields ("
ИнвНомер"). Value, "")
. Cells (p, cOsn). Value = Nz (RecList. Fields ("
ОснованиеПринятия"). Value, "")
. Cells (p, cDatePrin). Value = Format$ (Nz (RecList. Fields ("
ДатаПринятияКУчету"). Value, Date), "dd. mm. yyyy")
. Cells (p, cStructTov). Value = Nz (RecList. Fields ("
СтруктурноеПодразделение"). Value, "")
. Cells (p, cOtv). Value = Nz (RecList. Fields ("
Сотрудник"). Value, "")
. Cells (p, cPervStoim). Value = Nz (RecList. Fields ("
ПервСтоииость"). Value, 0)
. Cells (p, cSrok). Value = Nz (RecList. Fields ("
СрокИспользования"). Value, 0) & "мес."
. Cells (p, cAmort). Value = Nz (RecList. Fields ("
Аморт"). Value, 0)
End With
oApp. ActiveWorkbook. Sheets (3). Cells (p, cOstStoim). Value = _
Nz (RecList. Fields ("ОстСтоииость
"). Value, 0)
RecList. MoveNext
Wend
End If
ex:
Application. SysCmd acSysCmdRemoveMeter
If Not (oApp Is Nothing) Then oApp. Visible = True
Set qry = Nothing
Set RecList = Nothing
Set oApp = Nothing
Set db = Nothing
Exit Sub
LblErr:
MsgBox Err. Description, vbCritical + vbOKOnly
GoTo ex
End Sub
Код
модуля общий
Option Compare Database
Option Explicit
Function translateNumber (ByVal Num As Long) As String
On Error GoTo LblErr
Dim num_str As String
Dim razr_count As Long
Dim razr_all As Long
Dim tri_count As Long
Dim tri_all As Long
Dim cur_dig As Byte
Dim point_pos As Long
Dim mg As Boolean
Dim mgl As Boolean
Dim kstr1 As Long
translateNumber = "
"
num_str = Trim (Str (Num))
tri_count = 1
razr_all = Len (num_str)
If razr_all = 0 Then
translateNumber = "ноль
"
Exit Function
End If
If Num = 0 Then
translateNumber = "ноль
"
Exit Function
End If
For razr_count = 1 To razr_all Step 3
kstr1 = Mid (num_str, razr_all - razr_count + 1,1)
If razr_count = 1 Then mgl = True
If razr_count = 4 Then
mgl = True
If razr_count >= razr_all Then GoTo m1
If Mid (num_str, razr_all - razr_count,
1) = "1" Then
translateNumber = " тысяч
" & translateNumber
Else
m1: If kstr1 = "1" Then translateNumber = " тысяча
" & translateNumber
If kstr1 = "2" Then translateNumber = " тысячи
" & translateNumber
If kstr1 = "3" Then translateNumber = " тысячи
" & translateNumber
If kstr1 = "4" Then translateNumber = " тысячи
" & translateNumber
If (Val (kstr1) >= 5) Or (kstr1 = "0") Then translateNumber = " тысяч
" & translateNumber
End If
End If
If razr_count = 7 Then
mgl = False
If kstr1 = "1" Then translateNumber = " миллион
" & translateNumber
If kstr1 = "2" Then translateNumber = " миллиона
" & translateNumber
If kstr1 = "3" Then translateNumber = " миллиона
" & translateNumber
If kstr1 = "4" Then translateNumber = " миллиона
" & translateNumber
If (Val (kstr1) >= 5) Or (kstr1 = "0") Then translateNumber = " миллионов
" & translateNumber
End If
If razr_count = 10 Then
mgl = False
If kstr1 = "1" Then translateNumber = " миллиард
" & translateNumber
If kstr1 = "2" Then translateNumber = " миллиарда
" & translateNumber
If kstr1 = "3" Then translateNumber = " миллиарда
" & translateNumber
If kstr1 = "4" Then translateNumber = " миллиарда
" & translateNumber
If (Val (kstr1) >= 5) Or (kstr1 = "0") Then translateNumber = " миллиардов
" & translateNumber
End If
If razr_count = 13 Then
mgl = False
If kstr1 = "1" Then translateNumber = " триллион
" & translateNumber
If kstr1 = "2" Then translateNumber = " триллиона
" & translateNumber
If kstr1 = "3" Then translateNumber = " триллиона
" & translateNumber
If kstr1 = "4" Then translateNumber = " триллиона
" & translateNumber
If (Val (kstr1) >= 5) Or (kstr1 = "0") Then translateNumber = " триллионов
" & translateNumber
End If
If razr_all - razr_count - 1 < 1 Then
translateNumber = triade (Mid (num_str, 1, razr_all - razr_count + 1), mgl) & translateNumber
Else
translateNumber = triade (Mid (num_str, razr_all - razr_count - 1,3), mgl) & translateNumber
End If
Next razr_count
translateNumber = ucasefirst (translateNumber)
Exit Function
LblErr:
MsgBox Err. Description
End Function
Function triade (ByVal in_str As String, mg As Boolean) As String
On Error GoTo LblErr
Dim out_tri2 As String
Dim out_tri1 As String
Dim out_tri3 As String
Dim di As String, kstr1 As String
triade = "
"
If Len (in_str) < 3 Then in_str = "0" & in_str
If Len (in_str) < 3 Then in_str = "0" & in_str
kstr1 = Mid (in_str, 1,1)
If kstr1 = "0" Then out_tri3 = "
"
If kstr1 = "1" Then out_tri3 = " сто
"
If kstr1 = "2" Then out_tri3 = " двести
"
If kstr1 = "3" Then out_tri3 = " триста
"
If kstr1 = "4" Then out_tri3 = " четыреста
"
If kstr1 = "5" Then out_tri3 = " пятьсот
"
If kstr1 = "6" Then out_tri3 = " шестьсот
"
If kstr1 = "7" Then out_tri3 = " семьсот
"
If kstr1 = "8" Then out_tri3 = " восемьсот
"
If kstr1 = "9" Then out_tri3 = " девятьсот
"
'оцениваем
на 11
di = Right (in_str,
2): kstr1 = Mid (in_str, 2,1)
If kstr1 = "1" Then
If di = "10" Then out_tri2 = " десять
"
If di = "11" Then out_tri2 = " одиннадцать
"
If di = "12" Then out_tri2 = " двенадцать
"
If di = "13" Then out_tri2 = " тринадцать
"
If di = "14" Then out_tri2 = " четырнадцать
"
If di = "15" Then out_tri2 = " пятнадцать
"
If di = "16" Then out_tri2 = " шестнадцать
"
If di = "17" Then out_tri2 = " семнадцать
"
If di = "18" Then out_tri2 = " восемнадцать
"
If di = "19" Then out_tri2 = " девятнадцать
"
triade = out_tri3 & out_tri2
Exit Function
End If
If kstr1 = "0" Then out_tri2 = "
"
If kstr1 = "2" Then out_tri2 = " двадцать
"
If kstr1 = "3" Then out_tri2 = " тридцать
"
If kstr1 = "4" Then out_tri2 = " сорок
"
If kstr1 = "5" Then out_tri2 = " пятьдесят
"
If kstr1 = "6" Then out_tri2 = " шестьдесят
"
If kstr1 = "7" Then out_tri2 = " семдесят
"
If kstr1 = "8" Then out_tri2 = " восемдесят
"
If kstr1 = "9" Then out_tri2 = " девяносто
"
kstr1 = Mid (in_str, 3,1)
If kstr1 = "0" Then out_tri1 = "
"
If mg = False Then
If kstr1 = "1" Then out_tri1 = " один
"
If kstr1 = "2" Then out_tri1 = " два
"
Else
If kstr1 = "1" Then out_tri1 = " одна
"
If kstr1 = "2" Then out_tri1 = " две
"
End If
If kstr1 = "3" Then out_tri1 = " три
"
If kstr1 = "4" Then out_tri1 = " четыре
"
If kstr1 = "5" Then out_tri1 = " пять
"
If kstr1 = "6" Then out_tri1 = " шесть
"
If kstr1 = "7" Then out_tri1 = " семь
"
If kstr1 = "8" Then out_tri1 = " восемь
"
If kstr1 = "9" Then out_tri1 = " девять
"
triade = out_tri3 & out_tri2 & out_tri1
Exit Function
LblErr:
MsgBox Err. Description, vbCritical + vbOKOnly
End Function
Function ucasefirst (in_str As String) As String
On Error GoTo LblErr
Dim fs As String
Dim ns As String
If Nz (in_str, "") = "" Then ucasefirst = "
"
in_str = Trim (in_str)
fs = Left (in_str,
1)
ns = Right (in_str, Len (in_str) - 1)
ucasefirst = UCase (fs) & ns
Exit Function
LblErr:
MsgBox Err. Description, vbCritical + vbOKOnly
End Function
|