Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Проектирование реализации операций бизнес-процесса)

Содержание:

Введение

Целью работы – Управление запасами.

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

1. Обосновать использование вычислительной техники;

2. Обосновать разработки по всем видам обеспечения;

3. Построить инфологическую модель БД;

4. Охарактеризовать входную, результатную информацию БД;

5. Реализовать выбранный вариант проекта;

Работа состоит из 2 частей. В первой части описывается деятельность предприятия, рассматривается его организационная структура, анализируется программная и техническая архитектура информационной системы. Также в первой главе выделяется и обосновывается задача автоматизации, рассматриваются способы и методы обеспечения информационной безопасности. Кроме того, приводятся обоснования по программному, информационному и техническому обеспечению. В результате выбран БД Ms Access и язык программирования Delphi.

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

1 Аналитическая часть

Выбор комплекса задач автоматизации

Задачи логистического управления, решаемые с помощью подсистемы «Логистика», условно разбиваются на три функциональные области (таблица 1.1):

  • управление закупками;
  • управление запасами;
  • управление сбытом.

Управление закупкамми – решаются следующие задачи, относящиеся к области «Управление закупками»:

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

Таблица 1.1 - Функции подсистемы « Логистика »

Закупками

Запасы

Сбыт

Учет наменклатуры потребляемых товаров

Учет и контроль исполнения заявок от потразделений

Формирование заказов поставщикам

Формирование заказов на производство

Формирование товарного календаря

Учет и контроль исполнения договоров с поставщиками

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

Учет возвратных товарных документов поставщикам

Учет платежей поставщикам

Учет накладных расходов

Книга покупок

Автоматизированное оформление товарных документов с использованием сканера и штрих-кодов

Учет внешних и внутренних перемещений товаров

Ведение карточек складского учета

Учет товаров по местам хранения

Учет ведемостей инвентаризации, актов списания недостач и оприходования излишков

Переоценка товаров, ведение истории учетных цен

Разнесение накладных расходов

Учет комплектования/ разукомплектования товаров

Контроль и анализ товарных запасов

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

Учет намеенклатуры реализуемых товаров

Учет цен реализации

Учет иконтроль исполнения заказов потребителей

Учет и контроль исполнения договоров с потребителям

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

Резервирование

товаров

Учет возвратных товарних документов от потребителей

Учет платежей от потребителей

Коетроль и анализ состояния продаж

Контроль и анализ послепродажного обслуживания

Максимизации доходов

Книга продаж

Управление запасами. Функциональная область включает задачи, относящиеся к бизнес-процессу « Управление запасами »:

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

Управление сбытом включает задачи, относящиеся к области « Управление сбытом »:

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

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

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

В дипломной работе будут решаться следуюшие задачи:

  • задача определения опримальной распределеники запасов по видам продукции (получение макс. прибыли);
  • составление книги покупок;
  • составление книги продаж;
  • создание журнала выставленных счет фактур;
  • создание журнала учета полученных счет фактур;
  • составление оборотно-сальдовой ведомости по счтеу;
  • получение отчета “Анализ счета”.

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

1.2 Характеристика существующих бизнес –процессов

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

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

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

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

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

1.3 Характеристика документооборота, возникающего при решении задачи

Для проведения анализа и реорганизации бизнес – процессов предназначено CASE-средство верхнего уровня AllFusion Process Modeler (BPwin), поддерживающее методологии:

  • IDEF0 (функциональная модель);
  • DFD (DataFlow Diagram);
  • IDEF3 (Workflow Diagram).

Функциональная модель предназначена для описания существующих бизнес – процессов на предприятии (так называемая модель AS-IS «как есть») и идеального положения вещей – того, к чему нужно стремиться (модель ТО-ВЕ «как должно быть»). Методология IDEF0 предписывает построение иерархической системы диаграмм – единичных описаний фрагментов системы.

Построение модели ИС начинается с описания функционирования предприятия (системы) или отдельной ее части (в нашем случае это деятельность складского хозяйства) в целом в виде контекстной диаграммы. На Рис. 1.1 представлена контекстная диаграмма ИС «Деятельность склада»:

Рисунок 1.1 - Контекстная диаграмма функционирования склада AS-IS.

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

Входы (слева)

  • Клиент
  • Счет клиента оплаченный
  • Товар от поставщика
  • Возврат товара от клиента
  • Сопроводительные документы

Выходы (справа)

  • Выходные документы
  • Выданный товар
  • Списанный товар
  • Обслуженный клиент

Механизмы и управление (сверху)

  • Действующее законодательство
  • Должностные инструкции
  • Инструкции по охране труда и технике безопасности

Ресурсы

  • Персонал склада
  • Оборудование (складское и офисное)
  • Информационные ресурсы
  • Упаковочные (расходные) материалы
  • Функционирование склада предполагает оказание услуг клиентам. Клиент – тот объект, для которого, собственно, функционирует предприятие, а склад, в частности. Клиент оплачивает товар и обращается с оплаченным счетом на склад для получения товара, а также документов на товар.

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

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

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

Model Name: Деятельность склада

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

  • Приемка товара
  • Отгрузка и возврат товара
  • Хранение

Рисунок 1.2 - Диаграмма декомпозиции IDEF0. Деятельность склада AS-IS

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

Весь процесс деятельности склада подразделяется на:

  • Приемку товара (Принятие товара по сопроводительным документам и передача его на хранение)

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

  • Отгрузку и возврат товара (Выдача скомплектованного товара клиенту, либо возврат поставщику)

Данный этап подразумевает отгрузку клиенту товара, скомплектованного по отгрузочным документам

  • Хранение (Основная и самая сложная функция склада, подразумевает все остальные действия с товаром, не описанные выше, например, складирование, комплектование, оформление документации на товар, списание). Подлежит дальнейшей декомпозиции.

Рисунок 1.3 -Диаграмма декомпозиции IDEF0. «Хранение» AS-IS

Процесс хранения, в свою очередь подразделяется на:

  • Формирование отгрузочных документов (Согласно оплаченного счета от клиента)

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

  • Складирование (Непосредственное размещение товара на складе)

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

В результате дальнейшего разбиения (декомпозиции) функции Складирование получаем конечную диаграмму декомпозиции (см. Рис.1.7)

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

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

  • Списание товара (Списание и дальнейшая передача на утилизацию брака).

Рисунок 1.4 - Диаграмма декомпозиции IDEF0. «Складирование»AS-IS

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

  • Складирование на оптимальный склад (При поступлении товара, принятого в соответствии с приходными документами)

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

  • Складирование на возвратный склад (При поступлении товара, не принятого в соответствии с приходными документами)

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

  • Формирование возвратных документов (Формирование и передача документов на комплектование товара для возврата поставщику)

Рисунок 1.5 - Контекстная диаграмма функционирования склада AS-TO-BE

Рисунок 1.6 - Диаграмма декомпозиции IDEF0. Деятельность склада AS-TO-BE

Рисунок 1.7 - Диаграмма декомпозиции IDEF0. «Хранение» AS-TO-BE

Рисунок 1.8 - Диаграмма декомпозиции IDEF0. «Складирование»AS-TO-BE

Диаграмма дерева узлов показывает иерархию работ в модели и позво­ляет рассмотреть всю модель целиком, но не показывает взаимосвязи между работами. (См. Рис.1.8)

  • Диаграмма «Деятельность склада» – первый уровень дерева узлов (top level activity);
  • Диаграммы «Приемка товара», «Отгрузка и возврат товара» и «Хранение» – второй уровень дерева узлов;
  • Диаграммы «Формирование отгрузочных документов», «Складирование», «Комплектование» и «Списание товара» – третий уровень дерева узлов;
  • Диаграммы «Складирование на оптимальный склад», «Складирование на возвратный склад» и «Формирование возвратных документов» – четвертый уровень дерева узлов, последний уровень декомпозиции – достаточная, в ходе нашей работы, степень подробности.

Рисунок 1.9 - Диаграмма дерева узлов AS-IS

Рисунок 1.10  Схема документооборота

1.4 Обоснование проектных решений по информационному обеспечению

Информационное обеспечение (ИО) – важнейший элемент АИС. Оно предназначено для отражения информации, характеризующей состояние управляемого обьекта и являющейся основой для принятия управленческих решений. Под информационным обеспечением понимается совокупность единой системы классификации и кодирования информации, унифицированных систем документации, схем информационных потоков, циркулирующих в организации, методологий построения баз данных [17, 8].

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

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

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

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

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

Организация связей между базами данных требует определенных правил обращения с записями:

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

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

1.5 Обоснование проектных решений по программному обеспечению

В настоящее время лидерами на рынке сред разработки являются Microsoft Visual Studio, Delphi, C++ Builder, JBuilder,1C:Предприятие. Любая из перечисленных сред позволит разработать современное клиент-серверное приложение с современным пользовательским интерфейсом. Однако, в компании имеются наработки на 1С: Предприятие которые можно использовать при разработке ИС. Выбор среды разработки 1C: Предприятие позволит гораздо быстрее по сравнению с остальными из перечисленных сред разработки получить готовую систему, с интерфейсом, аналогичным ИС отделов формирования задания на выполнения работ участка сборки электрооборудования .

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

Для разработки системы автоматизации мы разрабатываем модуль (конфигурацию) в системе 1С:Предприятие 8.3.

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

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

В обновлённой версии 1С:Предприятие 8.3 принципиально переработан механизм установки, запуска и обновления платформы. Предприняты существенные усилия для повышения удобства развертывания системы в крупных организациях.

Области применения

  • автоматизированная система подготовки консолидированной отчетности
  • автоматизация гостиничного бизнеса
  • автоматизация Бизнес процессов
  • решение задач планирования, бюджетирования и финансового анализа; 
  • расчет зарплаты и управление персоналом
  • автоматизация складской системы

Клиентское приложение

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

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

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

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

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

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

Расширенный состав инструментов разработчиков для оптимизации прикладных решений

Групповая разработка (Team Development). Механизмы конфигуратора, обеспечивающие групповую разработку прикладного решения, позволяют группе разработчиков вносить изменения в конфигурацию одновременно, по мере выполнения каждым из них своего участка работы. Такой порядок внесения изменений обеспечивается возможностью определить права доступа каждого из разработчиков на модификацию объектов прикладного решения.

Облачные технологии (Cloud Computing)

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

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

  • Подключение к базе по протоколу HTTP (HTTPS) что дает возможностьклиенту работать через интернет в любой точке мира.
  • Благодаря веб-клиенту пользователь может работать с любого компьютера или мобильного так это не требует предворительной установки.
  • Благодаря современным серверам и их защите 1С Предприятие может поддерживать большое количество пользователей.
  • Технология разделения данных с помощью которой прикладные решения могут работать в архитектуре multitenancy, это когда одно приложение запущенное на сервере обслуживает множество пользователей.
  • 1С Предприятие позволяет развертывать приложения в модели SaaS Когда программист разрабатывает и самостоятельно управляет прикладным решением, предоставляя клиенту доступ через интернет, такая бизнес-модель избавляет потребителя от всех затрат, связанных с установкой, обновлением и поддержкой оборудования и программного обеспечения; потребитель оплачивает лишь пользование услугой.

Трёхуровневая архитектура

При данном варианте реализации программный комплекс состоит из трех уровней: Клиент, Сервер «1С предприятия», Сервер SQL.
Примечание: аббревиатура SQL расшифровывается как Structure Query Language, что переводится как Структурированный Язык Запросов, но часто используется для обозначения типа сервера.

Главное назначение этого варианта построения – это повышение надежности и производительности. Самыми известными сторонними программами являются: MS SQL Server, PostgreSQL, причём последняя бесплатная и поставляется на дисках ИТС.

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

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

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

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

В работе с программами системы «1С:Предприятие 8.3» используется ряд объектов. К основным объектам ИС относятся:

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

Документы – посредством документов вводится информация о хозяйственных операциях предприятия. Проведение документов – выполнение изменений в итогах ИС, например, увеличение количества груза на складах при выгрузке или уменьшение количества грузов при отгрузке. Документы используют сведения справочников и других документов.

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

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

2 Проектная часть

2.1 Информационная модель и её описание

Архив документов

Документы:

Счет фактура выданный;

Табличная часть счет фактуры;

Корреспондирующий счет;

Счет фактура полученный.

Журнал документов

Массив информации о хозяйственных операциях учета запасов

Массивы остаков и оборотов по счетам, субсчетам, аналитическим счетам

Выходные документы:

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

книга покупок;

книга продаж;

журнал выставленных счет фактур;

журнал чуета полученных счет фактур;

оборотно-сальдовой ведомости по счтеу;

отчет “Анализ счета”.

Рисунок 2.1 – Информационная модель системы

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

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

Дата(идентификацион-ный реквизит)

Дебетуемый счет

Кредитуемый счет

Основания проводки

Корреспонденция счетов

Основные реквизиты - проводки

Простая проводка

а)

Дата(идентификацион-ный реквизит)

Дебету-емый счет

Кредиту-емый счет

Основания проводки

Классифакацион-ные реквизиты

Корреспонденция счетов

Основные реквизити - проводки

Расширенная проводка

б)

Рисунок 2.2 - Структуры простой (а) и расширенной проводки (б)

Хозяйственная операция в учете может отражаться одной или несколькими проводками. Совокупность проводок, полностью отражающих хозяйственную операцию в учете, в АИС получила название “бугалтерская операция”.

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

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

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

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

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

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

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

Ввод данных о хозяйственной операции ОС

Формирование реквизитов документа

Печать документа

Формирование записи о хозяйственной опера-ции в учетной базе данных

Рисунок 2.3 - Схема для первой информационной модели

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

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

возникновене хозяйственной операции  первичный документ  запись информации о хозяйственных операциях в массив.

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

Ввод данных в соответстии с экранной формой Документа

Правила формирования формы документа

Печать документа

Формирование записи о хозяйственной опера-ции в учетной базе данных

Правила контировки документа

Рисунок 2.4 - Схема для второй информационной модели

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

возникновене хозяйственной операции  первичный документ  совершение хозяйственной операции  запись информации о хозяйственных операциях в массив.

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

Рисунок 2.5 - Схема для третой информационной модели

Ввод данных в соответстии с экранной формой Документа

Правила построения формы документа

Печать документа

Формирование записи о хозяйственной опера-ции в учетной базе данных

Правила контировки документа

Регистрация документа в реестре и сохранение в архиве

Временной интервал (лаг) совершения хозяйственной операции

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

2.2 Характеристика нормативно-справочной, входной и оперативной информации

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

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

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

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

Применение автоматизированных систем обработки обусловило необходимость приспособления докумнетации к требовниям машинной обработки, что ускорил процесс ее унификации и стандартизации. Унифицированная система документации включает комплекс взаимосвязанных форм документов и правил их оформления на основе применения средств вычислительной техники [17].

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

Для учета запасов используются разные документы. Одним из этих документов являяются документы “Приходный кассовый ордер” и “Расходный кассовый ордер”. Документ “Приходный кассовый ордер” предназначен для ведения учета поступления наличных денежных средств в кассе предприятия. Электронная форма этого документа приведена на рис. 2.6.

Рисунок 2.6 - Электронная форма документа “Приходный кассовый ордер”

Описание реквизитов документа “Приходный кассовый ордер” приведено в табл. 2.1.

Таблица 3.1 - Реквизиты документа “Приходный кассовый ордер”

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

поля

Идентификация

Тип данных

Количество разрядов

Розничная выручка

RV

числовой

6

Движение денежных средств

DDS

текстевой

20

Касса

KASSA

текстевой

30

Рублевая

RUB

числовой

6

Драм

DRAM

числовой

6

Валютная

VAL

числовой

6

Корр. счет

KS

числовой

4

Контрагенты

KONTR

текстевой

20

Договоры

DOGOV

текстовой

20

Документ поставки

DOKPOS

текстовой

20

Приято от

PRNOT

текстовой

15

Основание

OSNOV

текстовой

25

Сумма

SUM

числовой

6

Ставка НДС

SNDS

числовой

2

НДС

NDS

числовой

4

Ставка НП

SNP

числовой

2

НП

NP

числовой

4

Формировать проводки

FPROV

текстовой

20

Аналогическую структуру имеет и документ расходного кассового ордера.

При быхгалтерском учете передачи товаров используются выданные счета-фактуры. Электронный вид документа “Счет-фактура выданный” преведен на рис. 2.7.

Рисунок 2.7 - Электронная форма документа “Счет-фактура выданный”

Описание реквизитов документа “Счет-фактура выданный” представлено в табл.2.2.

Таблица 2.2 - Реквизиты документа “Счет-фактура выданный”

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

поля

Идентификация

Тип данных

Количество разрядов

Номер

NOM

числовой

8

Дата

DAT

числовой

6

Основание

OSNOV

текстовой

25

Поставщик

POST

текстовой

15

Грузоотправитель

GRUZOOTP

текстовой

15

Покупатель

POKUP

текстовой

20

Грузополучатель

GRUZOPOL

текстовой

15

Договор

DOGOV

текстовой

20

Счет учета НДС

SUCHNDS

текстовой

3

Счет учета акциза

SUCHAK

текстовой

3

К платежно-расчетному документу

KPLRASDOC

текстовой

10

Дата оплаты

DATOPL

числовой

6

Сумма

SUM

числовой

10

Комментарий

COMMENT

числовой

30

При поступлении товаров от сторонних организаций регистрируются полученные от них счета-фактуры. Электронный вид документа “Счет-фактура выданный” приведён на рис. 2.8.

Рисунок 2.8 - Электронная форма документа “Счет-фактура полученный”

Описание реквизитов документа “Счет-фактура выданный” представлено в табл.2.3.

Таблица 2.3 - Реквизиты документа “Счет-фактура полученный”

Наименования поля

Идентификация

Тип данных

Количество разрядов

Номер

NOM

числовой

8

Дата

DAT

числовой

6

Документ оприходования

DOKOPR

текстовой

25

Поставщик

POST

текстовой

15

Договор

DOGOV

текстовой

20

Дата и номер получ. счет-фактуры

DATNOMPSF

числовой

9

Дата оприходования

DATOPR

числовой

6

Всего покупок, включая НДС

VSPOKVKNDS

числовой

10

Сумма без НДС

SUMBZNDS

числовой

10

Сумма НДС

SUMNDS

числовой

10

Комментарий

COMMENT

числовой

30

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

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

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

Для хранения редко изменяемой информации используется так называемый справочник-констант (табл. 2.4.).

Таблица 2.4 - Список констант

Код

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

Зачение

Дата регистрации

Дата регистрации фирмы

13.05.98

Название организации

Название организации

ОАО “Бизнескам”

ИНН оргонизации

ИНН организации

55500045201

Юр. адрес организации

Юридический адрес орган.

г. Ереван, улица Дро18/3

Почт адресс организации

Почтовый адрес орган.

0014, г. Ереван, улица Дро18/3

Телефоны организации

Тел по юр. адресу и дейст.

365840, 365835

Руководитель

ФИО руководителя

Маргарян А.И

Бухгалтер

ФИО бухгалтера

Антонян М.К

Менеджер

ФИО менеджера

Авагян Л.Д.

Зам директор

ФИО зам директора

Григорян К.Н.

Кассир

ФИО кассира

Варданян С.Т.

Программист

ФИО программиста

Саргсян К.К.

Константами могут быть числовые величины и текстовые данные. Они хранят такую информацию как полное наименование организации, ее юридический адрес, фамилию руководителя и главного бухгалтера, дату регистрации предприятия, основную ставку НДС и т.д. Некоторые константы могут быть периодическими, т.е. принимать различные значения в зависимости от даты. Константы используются в расчетах, при формировнии документов и отчетов. Предприятия, его адресные и банковские реквизиты используются при автоматическом формировании платежных и иных документов [10].

Кроме условно-постоянной информации в АИС управления запасами используются следующие справочники:

  • справочник номенклатуры;
  • справочник материалов;
  • справочник типов цен;
  • справочник мест храненеия МПЗ;
  • справочник контрагентов;
  • справочник видов договоров;
  • справочник единиц измерения и др.

Справочник номенклатуры предназначен для ведения учета приобретаемых и продоваемых видов товаров и продукции. Электронная форма справочника “Номенклатура” приведена на рис. 2.9.

Рисунок 2.9 - Структура справочника “Номенклатура”

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

Таблица 2.5 - Реквизиты справочника “Номенклатура”

Наименование полей

Идентификация

Тип данных

Кол. разрядов

Код

KOD

Числовой

8

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

NAIM

Текстовый

15

Справочник материалов предназначен для учета поступивщих материалов на склад и норматив запасов материалов. Электронная форма справочника “Матреилалы” имеет следующий вид (рис. 2.10.):

Рисунок 2.10 - Структура справочника материалов

Описание реквизитов справочника материалов представлено в табл.2.6.

Таблица 2.6 - Реквизиты справочника материалов

Наименования поля

Идентификация

Тип данных

Количество разрядов

Код

KOD

числовой

8

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

NAIM

текстовый

20

Цена

CEN

числовой

8

Спарвочник “Типы цен” предназначен для составления прайс-листов покупаемых товаров и продаваемой готовой продукции. Электронная форма справочника “Типы цен” имеет следующий вид (рис. 2.11.):

Рисунок 2.11 - Структура справочника “Типы цен”

Описание реквизитов справочника “Типы цен” представлено в табл.2.7.

Таблица 2.7 - Реквизиты справочника “Типы цен”

Наименования поля

Идентификация

Тип данных

Количество разрядов

Код

KOD

числовой

6

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

NAIM

текстовый

20

Валюта

INN

числовой

8

Вкл. НДС

VKLNDS

числовой

10

Вкл. НП

VKLNP

числовой

10

Справочник “Места хранения МПЗ” предназначен для проведения учета материально-производственных запасов на складах предприятия. Электронная форма справочника “Места хранения МПЗ” имеет следующий вид (рис. 2.12.):

Рисунок 2.12 - Структура справочника “Места хранения МПЗ”

Описание реквизитов справочника мест хранения МПЗ представлено в табл. 2.8.

Таблица 2.8 - Реквизиты справочника “Места храненеия МПЗ”

Наименования поля

Идентификация

Тип данных

Количество разрядов

Код

KOD

числовой

6

Наименование места хранения

NAIMMX

текстовый

20

Тип цен

TIPC

текстовый

10

Тип склада

TIPSKL

текстовый

8

Справочник контрагентов предназначен для ведения аналитического учета (рис.2.13).

Рисунок 2.13 - Структура справочника контрагентов

Описание реквизитов справочника контрагентов представлено в табл. 2.9.

Таблица 2.9 - Реквизиты справочника контрагентов

Наименования поля

Идентификация

Тип данных

Количество разрядов

Код

KOD

числовой

6

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

NAIM

текстовый

20

ИНН

INN

числовой

8

Телефон

TEL

числовой

6

Почтовый адрес

PA

текстово-числовой

15

Юридический адрес

JUA

текство-числевой

15

Оснавной догвор

ODOG

текстовый

15

Расчетный счет

RS

числовой

18

Справочник видов договоров предназначен для для ведения синтетического и аналитического учета. Справочник договора представлен на рис. 2.14.

Рисунок 2.14 - Структура справочника “Виды договоров”

Описание реквизитов справочника “Виды договоров” предоставлено в табл. 2.10.

Таблица.2.10 - Реквизиты справочника видов договоров

Наименования поля

Идентификация

Тип данных

Количество разрядов

Код

KOD

числовой

10

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

NAIM

текстовый

25

Дата возникнавения

DVOZ

числовой

6

Dата погашения

DPOG

числовой

6

Нормативно-справочные данные о единицах измерения хранятся в справочнике “Единицы измерений”. Справочник единиц измерения содержит информацию о единицах измерения, используемых в данном предприятии. Справочник корректируется с учетом прибавления новых единиц измерения или выбытия какого-либо из них. Электронная форма справочника “Единицы измерения” имеет следующий вид (рис. 2.15.):

Рисунок 2.15 - Справочник “Единицы измерений”

Описание реквизитов справочника единиц измерения приведено в табл. 2.11.

Таблица 2.11 - Реквизиты справочника единиц измерения

Наименование полей

Идентификация

Тип данных

Кол. разрядов

Код

KOD

Числовой

3

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

NAMEN

Текстовый

1

Полное наименование

POLNAMEN

Текстовый

3

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

Таким образом, под справочником понимается объект программы, позволяющий пользователю вводить, хранить и получать информацию, структурируя ее в виде дерева. Справочник представляется списком древовидной структуры, в узлах которого хранится информация о различных объектах. Информация хранится в виде записей, а все узлы дерева хранят записи одной структуры, содержащей различные величины. Набор этих величин для каждого справочника произволен за исключением двух строковых величин: кода объекта и значения объекта. Код объекта является уникальным для данного справочника и позволяет ссылаться на этот объект из других мест программы. Значение объекта - произвольная строка, введенная пользователем (обычно это название объекта). Для каждого объекта хранится история изменений значения этого объекта. Однако пользователь может редактировать существующие справочники, добавляя и убирая информацию. Внешне справочник представляет собой список объектов.

2.3 Характеристика результатной информации

Результативными документами в ОАО “Бизнескам” являются:

  • модель управления производственными запасами;
  • книга покупок;
  • книга продаж;
  • журнал учета выданных счетов-фактур;
  • журнал учета полученных счетов-фактур;
  • оборотно-сальдовой ведомости по счету;
  • отчет “Анализ счета”.

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

Для отчетности “Answer Refort”:

а. Terget Cell (Max)

Cell

Name

Original Value

Final Value

Описание реквизитов документа “Terget Cell” пердставим в табл. 2.12.

Таблица 2.12 - Реквизиты документа “Terget Cell”

Наименование поля

Идентификация

Тип данных

Количество разрядов

Cell

CLL

текстовый

15

Name

NAM

текстовый

25

Original Value

ORGVAL

числовой

10

Final Value

FINVAL

числовой

10

б. Adjustable Cells

Cell

Name

Original Value

Final Value

Реквизиты документа “Adjustable Cells” аналогичны реквизитам документа “Terget Cell” и, следовательно, имеют аналогичное описание (табл. 2.12.).

в. Constrainsts

Cell

Name

Value

Formula

Status

Slack

Описание реквизитов документа “Constrainsts” представим в табл. 2.13.

Таблица 2.13 - Реквизиты документа “Constrainsts”

Наименование поля

Идентификация

Тип данных

Количество разрядов

Cell

CLL

текстовый

15

Name

NAM

текстовый

25

Value

VAL

числовой

10

Formula

FML

числовой

10

Status

STAT

числовой

10

Slack

SLK

числовой

10

Для отчетности “Sensitivity Refort”

а. Adjustable Cells

Cell

Name

Value

Cost

Coefficient

Increase

Decrease

Описание реквизитов документа “Adjustable Cells” пердставим в табл. 2.14.

Таблица 2.14 - Реквизиты документа “Adjustable Cells”

Наименование поля

Идентификация

Тип данных

Количество разрядов

Cell

CLL

текстовый

15

Name

NAM

текстовый

25

Value

VAL

числовой

10

Cost

CST

числовой

10

Coefficient

CFFCNT

числовой

5

Increase

INCR

числовой

10

Decrease

DECR

числовой

10

б. Constrainsts

Cell

Name

Final Value

Shadow Price

Constraint R.H. Side

Allowable

Increase

Allowable

Decrease

Описание реквизитов документа “Constrainsts” пердставим в табл. 2.15.

Таблица 2.15 - Реквизиты документа “Constrainsts”

Наименование поля

Идентификация

Тип данных

Количество разрядов

Cell

CLL

текстовый

15

Name

NAM

текстовый

25

Final Value

FINVAL

числовой

10

Shadow Price

SHPR

числовой

10

Constraint R.H. Side

CONRHSD

текстовый

15

Allowable Increase

ALLWINCR

числовой

10

Allowable Decrease

ALLWDECR

числовой

10

Для отчетности “Limits Refort”

а. Terget

Cell

Name

Value

Описание реквизитов документа “Target” представим в табл. 2.16.

Таблица 2.16 - Реквизиты документа “Target”

Наименование поля

Идентификация

Тип данных

Количество разрядов

Cell

CLL

текстовый

15

Name

NAM

текстовый

25

Value

VAL

числовой

10

б. Adjustable

Cell

Adjustable

Name

Value

Lower Limit

Target Result

Upper Limit

Target Result

Описание реквизитов документа “Adjustable” пердставим в табл. 2.17.

Таблица 2.17.

Реквизиты документа “Adjustable ”

Наименование поля

Идентификация

Тип данных

Количество разрядов

Cell

CLL

текстовый

15

Adjustable Name

AJSTNAM

текстовый

25

Value

VAL

числовой

10

Lower Limit

LOWLIM

числовой

10

Target Result

TARGREZ

числовой

10

Upper Limit

UPPLIM

числовой

10

Форма отчёта книги покупок приведена на рис. 2.16.

а)

б)

Рисунок 2.16 - Книга покупок: (а) левая часть, б) правая часть.

Форма отчёта книги продаж приведена на рис. 2.17.

а)

б)

Рисунок 2.17 - Книга продаж: а) левая часть, б) правая часть

Описание реквизитов отчётов книги покупок и продаж разрабатывается аналогично принципу, приведённой в табл. 2.18.

Таблица 2.18

Наименование поля (реквизита)

Идентификация

Тип поля

Размер

Дата счет-фактуры

DSF

Текстовый

10

Номер счет-фактуры

NSF

Числовой

10

Наименование покупателя

NAPOK

Текстовый

25

ИНН покупателя

INNPOK

Числовой

10

КНН покупателя

KNNPOK

Числовой

10

Дата и номер опаты счета-фактуры продавца

DNOSFP

Текстовый

20

Всего продаж включая НДС

VPWNDS

Числовой

10

Форма отчёта оборотно-сальдовой ведомости по счету приведена на рис. 2.18.

Субконто

Сальдо на начало периода

Обороты за период

Сальдо на конец периода

Дебет

Кредит

Дебет

Кредит

Дебет

Кредит

Рисунок 2.18 - Оборотно-сальдовая ведомость по счету.

Описание реквизитов этой отчётности приведено в табл. 2.19.

Таблица 2.19

Наименование поля (реквизита)

Идентификация

Тип поля

Размер

Субконто

SBKT

Текстовый

20

Сальдо на начало периода:

SNP

Текстовый

15

Дебет

DEBET

Числовой

10

Кредит

KREDIT

Числовой

10

Обороты за период:

OZPR

Текстовый

15

Дебет

DEBET1

Числовой

10

Кредит

KREDIT 1

Числовой

10

Сальдо на конец периода

SNKP

Текстовый

15

Дебет

DEBET2

Числовой

10

Кредит

KREDIT2

Числовой

10

Наименование отчёта

NOTCH

Текстовый

20

Дата составления отчёта

DSO

Текстовый

10

Наименование организации

NO

Текстовый

20

Форма отчёта анализа счёта приведена на рис. 2.19.

Счет

С кредита счета

В дебет счетов

С кредита счета

В дебет счетов

В валюте

В валюте

Сальдо на начало периода

…….

Обороты за период

Сальдо на конец периода

Рисунок 2.19 - Анализ счета

Описание реквизитов этой отчётности приведено в табл. 2.20.

Таблица 2.20

Наименование поля (реквизита)

Идентификация

Тип поля

Размер

Номер счета

NSCHOT

Числовой

4

Сальдо на начало периода

SNP

Числовой

8

Обороты за период

OP

Числовой

8

Сальдо на конец периода

SKP

Числовой

8

С кредита счета

SKSCH

Числовой

8

В дебет счетов

VDSCH

Числовой

8

С кредита счета (в валюте)

SKCHV

Числовой

8

В дебет счетов (в валюте)

VDSCHV

Числовой

8

2.4 Общие положения (дерево функций и сценарий диалога)

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

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

Результаты проектирования представлены в виде распечаток в Приложении.

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

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

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

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

Состав и классификация функций разрабатываемого программного продукта представлены в виде дерева функций (рис. 2.20).

Рисунок 2.20– Дерево функций ИС

Сценарий диалога представлен на рисунке 2.21.

Рисунок 2.21 – Диалог с ИС

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

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

2.5 Характеристика базы данных

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

Концептуальная модель базы данных включает в себя:

1. описание объектов предметной области и связей между ними;

2. описание связей между этими объектами;

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

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

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

Проектирование концептуальной модели было начато с определения сущностей и отношений между ними. В результате анализа предметной области были выявлены 3 простые сущности: «Сотрудник», «Недвижимость» и «Клиент. На рисунке 2.22 простые сущности представлены в виде прямоугольника, содержащего внутри название.

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

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

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

У каждого отношения были определены две важные характеристики связей: степень и кардинальность.

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

Кардинальность – признак, определяющий обязательность принадлежности отношений.

После определения связей между сущностями были определены атрибуты сущностей.

Рисунок 2.22 – Инфологическая схема базы данных

2.6 Структурная схема пакета (дерево вызова программных модулей)

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

  • справочники
  • документы
  • отчеты
  • обработки
  • регистры.

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

2.7 Описание программных модулей

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

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

Дадим описание основным программным модулям.

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

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

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

Главное назначение справочников – автоматическое заполнение условно-постоянной информации в документах.

Модуль Документы предназначен для ввода информация о совершаемых организацией хозяйственных операциях. Для ввода новых документов используются пункты меню “Документы” главного меню программы.

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

Модуль Журналы предназначен для работы с документами: ввода новых документов, просмотра и редактирования введенных ранее документов, пометки документов на удаление. Для доступа к журналам служит меню “Журналы” главного меню программы. Каждый журнал позволяет работать с документами, относящимися к одному из разделов учета.

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

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

Для реализации АИС должны быть разработаны алгоритмы для решения каждой из поставленных задач. На рис. 3.20. приведен алгоритм оприходования материалов, передачи их в производство, а также реализации готовой продукции.

Начало

Ввод данных о

поступивших

материалах

Поля

заполнены в соответствии Нет

с требованиями

Да

Запись сведений

в базу данных

Ввод данных о

переданных в производство

материалах

Поля

заполнены в соответствии Нет

с требованиями

Да

Запись сведений

в базу данных

Ввод данных об

отгрузке готовой

продукции

Поля

заполнены в соответствии Нет

с требованиями

Да

Запись сведений

в базу данных

Конец

Рисунок 2.24 -Алгоритм оформления складских операций

Приходные документы

Расходные документы

Сбор данных сотрудником

Ввод данных в ЭВМ

Проверка на соответствие правильности

ввода данных

Просмотр информации на экране

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

Счета-фактуры

Выдача информации, т.е. формирование выходных документов

Рисунок 2.25 - Схема технологического процесса сбора, передачи, обработки и выдачи информации

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

2.8 Контрольный пример реализации проекта и его описание

Основное назначение создаваемой АИС – это автоматизация операций, связанных с управлением запасами предприятия. Причем, схема взаимосвязи основных модулей программы и информационных файлов будет иметь следующий вид (рис 2.26).

ГЛАВНОЕ МЕНЮ

Операции

Справочники

Документы

Счета-фактуры

Сервис

Выход

Счет-фактура выданный;

Запись книги продаж;

...

Формирование записей книги покупок;

Формирование записей книги продаж.

Сведения об организаци

Константы

Отчеты

Журналы

Оборотно-сальдовой ведомости по счтеу;

Анализ счета;

Книга продаж;

Книга покупок.

Рисунок 2.26 - Схема взаимосвязи основных модулей программы и информационных файлов

Заключение

В работе была спроектирована и разработана автоматизированная информационная система управления запасами.

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

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

В результате проделанной работы была автоматизирована работа бухгалтера, занимающегося учетом запасов на предприятии. Стало возможным снижение числа служащих, занятых в работе по учёту запасов в ОАО «Бизнескам», с четырёх до двух человек. Оставшиеся два сотрудника загружены на половину, что позволяет использовать их свободное от учёта время для других целей. Значительно уменьшилось количество допускаемых ошибок при проведении стандартных операций оперативного учета.

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

Далее проведено обоснование использования вычислительной техники для решения поставленных задач. В этой части подробно описано, какие проблемы позволит решить автоматизация работы бухгалтера. Здесь сформулированы цели использования вычислительной техники для рассматриваемого комплекса задач. Рассмотрено преимущество внедрения АИС управления запасами над ручным трудом. Приведены критерии выбора технических средств. А также даны примерный состав и основные характеристики ПЭВМ, предназначенной для решения рассматриваемого комплекса экономических задач.

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

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

Затем дается обоснование использования информационного обеспечения. В этом разделе рассмотрены основные принципы проектирования информационного обеспечения, дается обоснование методов организации информационной базы в памяти ЭВМ.

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

Затем проведено обоснование разработок по технологии сбора, передачи, обработки и выдачы информации. Здесь идет обоснование выбора способа сбора исходной информации, обоснование метода передачи информации в рамках АСУ объекта или в вышестоящие уровни системы и обоснование методов обеспечения достоверности информации до ввода в ЭВМ.

В ходе проектирования автоматизации комплекса задач построена инфологическая модель и дано ее описание.

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

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

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

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

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

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

Библиографический список

  1. ГОСТ Р ИСО/МЭК 12207/99. Государственный стандарт РФ. Информационная технология. Процессы жизненного цикла информационных систем. Издание официальное. - М., 1999
  2. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. ГОСТ 19.701-90 (ИСО 5807-85) / Государственный комитет СССР по управлению качеством продукции и стандартам, 01.01.1992.
  3. Автоматизированные информационные системы, базы и банки данных. Вводный курс: Учебное пособие, М.: Гелиос АРВ, 2007. - 368 с., ил
  4. Астелс, Дэвид; Миллер Гранвилл; Новак, Мирослав, Практическое руководство по экстремальному программированию, Пер. с англ. - М.: Издательский дом "Вильямс", 2008. - 320 с.: ил. - Парал. тит. англ
  5. Баженова И. Ю. , Основы проектирования приложений баз данных, Издательства: Бином. Лаборатория знаний, Интернет-университет информационных технологий, 2008 г., , 328 стр.
  6. Вендров А.М., CASE-технологии. Современные методы и средства проектирования информационных систем - М.: Финансы и статистика, 2007 г, 456 стр.
  7. Вигерс Карл, Разработка требований к программному обеспечению, Пер, с англ. - М.:Издательско-торговый дом "Русская Редакция", 2008. -576с.: ил
  8. Гашков С. Б., Э. А. Применко, М. А. Черепнев Криптографические методы защиты информации, М, Издательство: Академия, 2010 г., 304 стр.
  9. Гвоздева Т. В., Б. А. Баллод, Проектирование информационных систем, М, Издательство: Феникс, 2009 г., 512 стр.

Приложение А – Листинг программы

Листинг 1 – Модуль объекта

Процедура ОбработкаПроведения(Отказ, Режим)

Запрос=Новый Запрос;

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

"ВЫБРАТЬ

| РасходнаяНакладнаяПереченьНоменклатуры.Номенклатура,

| СУММА(РасходнаяНакладнаяПереченьНоменклатуры.Количество) КАК Количество,

| РасходнаяНакладнаяПереченьНоменклатуры.Цена,

| РасходнаяНакладнаяПереченьНоменклатуры.Сумма,

| РасходнаяНакладнаяПереченьНоменклатуры.ИтоговаяСумма

|ПОМЕСТИТЬ Док

|ИЗ

| Документ.РасходнаяНакладная.ПереченьНоменклатуры КАК РасходнаяНакладнаяПереченьНоменклатуры

|ГДЕ

| РасходнаяНакладнаяПереченьНоменклатуры.Ссылка = &Ссылка

|

|СГРУППИРОВАТЬ ПО

| РасходнаяНакладнаяПереченьНоменклатуры.Номенклатура,

| РасходнаяНакладнаяПереченьНоменклатуры.Цена,

| РасходнаяНакладнаяПереченьНоменклатуры.Сумма,

| РасходнаяНакладнаяПереченьНоменклатуры.ИтоговаяСумма

|;

|

|////////////////////////////////////////////////////////////////////////////////

|ВЫБРАТЬ

| Док.Номенклатура КАК Номенклатура,

| ТоварыНаСкладеОстатки.Партия КАК Партия,

| Док.Количество КАК Количество,

| Док.Цена КАК Цена,

| Док.Сумма КАК Сумма,

| Док.ИтоговаяСумма КАК ИтоговаяСумм,

| ЕСТЬNULL(ТоварыНаСкладеОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,

| ЕСТЬNULL(ТоварыНаСкладеОстатки.СуммаОстаток, 0) КАК СуммаОстаток,

| ТоварыНаСкладеОстатки.Склад КАК Склад,

| ТоварыНаСкладеОстатки.СтавкаНДС КАК СтавкаНДС

|ИЗ

| Док КАК Док

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки(

| &МоментВремени,

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

| (ВЫБРАТЬ РАЗЛИЧНЫЕ

| Док.Номенклатура

| ИЗ

| Док КАК Док)) КАК ТоварыНаСкладеОстатки

| ПО Док.Номенклатура = ТоварыНаСкладеОстатки.Номенклатура

|

|УПОРЯДОЧИТЬ ПО

| ТоварыНаСкладеОстатки.Партия УБЫВ

|ИТОГИ

| МАКСИМУМ(Количество),

| СУММА(КоличествоОстаток)

|ПО

| Номенклатура";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

Запрос.УстановитьПараметр("МоментВремени", МоментВремени());

РезультатЗапроса=Запрос.Выполнить();

ВыборкаИтогов=РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Движения.ТоварыНаСкладе.Записывать = Истина;

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

Если ВыборкаИтогов.Количество>ВыборкаИтогов.КоличествоОстаток Тогда

Сообщить("Товара "+ВыборкаИтогов.Номенклатура+" в наличии только "+

ВыборкаИтогов.КоличествоОстаток+" шт. Документ """+Ссылка+""" не проведен!");

Отказ=Истина;

Продолжить;

Иначе

НадоСписать=ВыборкаИтогов.Количество;

Выборка=ВыборкаИтогов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока Выборка.Следующий() И НадоСписать<>0 Цикл

СписатьСПартии=МИН(НадоСписать, Выборка.КоличествоОстаток);

Если Выборка.КоличествоОстаток > 0 Тогда

СуммаСписания=СписатьСПартии*Выборка.СуммаОстаток/Выборка.КоличествоОстаток;

Иначе

CуммаСписания=Выборка.СуммаОстаток;

КонецЕсли;

НадоСписать=НадоСписать-СписатьСПартии;

Движение=Движения.ТоварыНаСкладе.ДобавитьРасход();

Движение.Период=Дата;

Движение.Номенклатура=Выборка.Номенклатура;

Движение.Партия=Выборка.Партия;

Движение.Количество=СписатьСПартии;

Движение.Стоимость=СуммаСписания;

Движение.Сумма=СписатьСПартии*Выборка.Цена;

РаботаСоСправочниками.СтрокаВЧисло(Выборка.СтавкаНДС);

Движение.ИтоговаяСумма= (РаботаСоСправочниками.СтрокаВЧисло(Выборка.СтавкаНДС)/100+1)*СписатьСПартии*Выборка.Цена;

Движение.Цена=Выборка.Цена;

Движение.СтавкаНДС = Выборка.СтавкаНДС;

Движение.Склад=Выборка.Склад;

КонецЦикла;

КонецЕсли;

КонецЦикла;

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

7. Приложение Б – Функции и процедуры конфигурации.

Листинг 2 – Модуль “РаботаСоСправочниками”

Функция АктуальнаяЗакупочнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.ЗакупочнаяЦена;

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

Функция АктуальнаяРозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.РозничнаяЦена;

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

Функция ПоставщикНоменклатуры(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.Поставщик;

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

Функция СтрокаВЧисло(Знач Строка, Знач Пусто = 0, Знач Ошибка = 0) Экспорт

Перем Результат, НомерСимвола, МаксНомерСимвола, ТекущийСимвол, Алфавит

, Отрицательное, ЕстьДробнаяЧасть;

Если Не ПустаяСтрока(Строка) Тогда

Строка = СокрЛП(Строка);

МаксНомерСимвола = СтрДлина(Строка);

// Определяем знак числа и удаляем его из исходной строки.

ТекущийСимвол = Лев(Строка, 1);

Алфавит = "+-";

Если Найти(Алфавит, ТекущийСимвол) > 0 Тогда

Строка = Сред(Строка, 2);

МаксНомерСимвола = МаксНомерСимвола - 1;

Отрицательное = (ТекущийСимвол = "-");

Иначе

Отрицательное = Ложь;

КонецЕсли;

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

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

НомерСимвола = 1;

Алфавит = "0123456789 .," + Символы.НПП;

Пока НомерСимвола <= МаксНомерСимвола Цикл

ТекущийСимвол = Сред(Строка, НомерСимвола, 1);

Если Найти(Алфавит, ТекущийСимвол) = 0 Тогда

Прервать;

КонецЕсли;

НомерСимвола = НомерСимвола + 1;

КонецЦикла;

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

Если НомерСимвола <= МаксНомерСимвола Тогда

Строка = Лев(Строка, НомерСимвола - 1);

МаксНомерСимвола = НомерСимвола - 1;

КонецЕсли;

Если МаксНомерСимвола > 0 Тогда

// Очищаем строку слева и справа от пробельных символов.

Алфавит = " " + Символы.НПП;

Пока Найти(Алфавит, Лев(Строка, 1)) > 0 Цикл

Строка = Сред(Строка, 2);

МаксНомерСимвола = МаксНомерСимвола - 1;

КонецЦикла;

Пока Найти(Алфавит, Прав(Строка, 1)) > 0 Цикл

Строка = Лев(Строка, МаксНомерСимвола - 1);

МаксНомерСимвола = МаксНомерСимвола - 1;

КонецЦикла;

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

// распознаны как дробная часть

НомерСимвола = МаксНомерСимвола;

Алфавит = "012345679";

Пока НомерСимвола >= 1 Цикл

ТекущийСимвол = Сред(Строка, НомерСимвола, 1);

Если Найти(Алфавит, ТекущийСимвол) = 0 Тогда

Прервать;

КонецЕсли;

НомерСимвола = НомерСимвола - 1;

КонецЦикла;

Если НомерСимвола > 0 Тогда

// Для строки "123,456": "456" - дробная часть

// Для строки "1,123,456": "456" - последняя триада целой части

Если Найти(".,", ТекущийСимвол) > 0

И Не (МаксНомерСимвола - НомерСимвола = 3

И МаксНомерСимвола >= 9

И Сред(Строка, НомерСимвола - 4, 1) = ТекущийСимвол) Тогда

Строка = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Лев(Строка, НомерСимвола - 1), ".", ""), ",", ""), " ", ""), Символы.НПП, "") + "." + Сред(Строка, НомерСимвола + 1);

Иначе

Строка = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Строка, ".", ""), ",", ""), " ", ""), Символы.НПП, "");

КонецЕсли;

КонецЕсли;

Строка = ?(Отрицательное, "-", "") + Строка;

КонецЕсли;

КонецЕсли;

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

Результат = Пусто;

Иначе

Попытка

Результат = Число(Строка);

Исключение

Результат = Ошибка;

КонецПопытки;

КонецЕсли;

Возврат Результат;

КонецФункции // СтрокаВЧисло()

Листинг 3 – Модуль “РаботаСДокументами”

Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт

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

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

Процедура РассчитатьИтоговуюСумму(СтрокаТабличнойЧасти) Экспорт

СтрокаТабличнойЧасти.ИтоговаяСумма = СтрокаТабличнойЧасти.Сумма * ((СтрокаВЧисло(СтрокаТабличнойЧасти.СтавкаНДС)/100)+1);

КонецПроцедуры Листинг 1 – Модуль объекта

Процедура ОбработкаПроведения(Отказ, Режим)

Запрос=Новый Запрос;

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

"ВЫБРАТЬ

| РасходнаяНакладнаяПереченьНоменклатуры.Номенклатура,

| СУММА(РасходнаяНакладнаяПереченьНоменклатуры.Количество) КАК Количество,

| РасходнаяНакладнаяПереченьНоменклатуры.Цена,

| РасходнаяНакладнаяПереченьНоменклатуры.Сумма,

| РасходнаяНакладнаяПереченьНоменклатуры.ИтоговаяСумма

|ПОМЕСТИТЬ Док

|ИЗ

| Документ.РасходнаяНакладная.ПереченьНоменклатуры КАК РасходнаяНакладнаяПереченьНоменклатуры

|ГДЕ

| РасходнаяНакладнаяПереченьНоменклатуры.Ссылка = &Ссылка

|

|СГРУППИРОВАТЬ ПО

| РасходнаяНакладнаяПереченьНоменклатуры.Номенклатура,

| РасходнаяНакладнаяПереченьНоменклатуры.Цена,

| РасходнаяНакладнаяПереченьНоменклатуры.Сумма,

| РасходнаяНакладнаяПереченьНоменклатуры.ИтоговаяСумма

|;

|

|////////////////////////////////////////////////////////////////////////////////

|ВЫБРАТЬ

| Док.Номенклатура КАК Номенклатура,

| ТоварыНаСкладеОстатки.Партия КАК Партия,

| Док.Количество КАК Количество,

| Док.Цена КАК Цена,

| Док.Сумма КАК Сумма,

| Док.ИтоговаяСумма КАК ИтоговаяСумм,

| ЕСТЬNULL(ТоварыНаСкладеОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,

| ЕСТЬNULL(ТоварыНаСкладеОстатки.СуммаОстаток, 0) КАК СуммаОстаток,

| ТоварыНаСкладеОстатки.Склад КАК Склад,

| ТоварыНаСкладеОстатки.СтавкаНДС КАК СтавкаНДС

|ИЗ

| Док КАК Док

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки(

| &МоментВремени,

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

| (ВЫБРАТЬ РАЗЛИЧНЫЕ

| Док.Номенклатура

| ИЗ

| Док КАК Док)) КАК ТоварыНаСкладеОстатки

| ПО Док.Номенклатура = ТоварыНаСкладеОстатки.Номенклатура

|

|УПОРЯДОЧИТЬ ПО

| ТоварыНаСкладеОстатки.Партия УБЫВ

|ИТОГИ

| МАКСИМУМ(Количество),

| СУММА(КоличествоОстаток)

|ПО

| Номенклатура";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

Запрос.УстановитьПараметр("МоментВремени", МоментВремени());

РезультатЗапроса=Запрос.Выполнить();

ВыборкаИтогов=РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Движения.ТоварыНаСкладе.Записывать = Истина;

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

Если ВыборкаИтогов.Количество>ВыборкаИтогов.КоличествоОстаток Тогда

Сообщить("Товара "+ВыборкаИтогов.Номенклатура+" в наличии только "+

ВыборкаИтогов.КоличествоОстаток+" шт. Документ """+Ссылка+""" не проведен!");

Отказ=Истина;

Продолжить;

Иначе

НадоСписать=ВыборкаИтогов.Количество;

Выборка=ВыборкаИтогов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока Выборка.Следующий() И НадоСписать<>0 Цикл

СписатьСПартии=МИН(НадоСписать, Выборка.КоличествоОстаток);

Если Выборка.КоличествоОстаток > 0 Тогда

СуммаСписания=СписатьСПартии*Выборка.СуммаОстаток/Выборка.КоличествоОстаток;

Иначе

CуммаСписания=Выборка.СуммаОстаток;

КонецЕсли;

НадоСписать=НадоСписать-СписатьСПартии;

Движение=Движения.ТоварыНаСкладе.ДобавитьРасход();

Движение.Период=Дата;

Движение.Номенклатура=Выборка.Номенклатура;

Движение.Партия=Выборка.Партия;

Движение.Количество=СписатьСПартии;

Движение.Стоимость=СуммаСписания;

Движение.Сумма=СписатьСПартии*Выборка.Цена;

РаботаСоСправочниками.СтрокаВЧисло(Выборка.СтавкаНДС);

Движение.ИтоговаяСумма= (РаботаСоСправочниками.СтрокаВЧисло(Выборка.СтавкаНДС)/100+1)*СписатьСПартии*Выборка.Цена;

Движение.Цена=Выборка.Цена;

Движение.СтавкаНДС = Выборка.СтавкаНДС;

Движение.Склад=Выборка.Склад;

КонецЦикла;

КонецЕсли;

КонецЦикла;

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

7. Приложение Б – Функции и процедуры конфигурации.

Листинг 2 – Модуль “РаботаСоСправочниками”

Функция АктуальнаяЗакупочнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.ЗакупочнаяЦена;

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

Функция АктуальнаяРозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.РозничнаяЦена;

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

Функция ПоставщикНоменклатуры(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.Поставщик;

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

Функция СтрокаВЧисло(Знач Строка, Знач Пусто = 0, Знач Ошибка = 0) Экспорт

Перем Результат, НомерСимвола, МаксНомерСимвола, ТекущийСимвол, Алфавит

, Отрицательное, ЕстьДробнаяЧасть;

Если Не ПустаяСтрока(Строка) Тогда

Строка = СокрЛП(Строка);

МаксНомерСимвола = СтрДлина(Строка);

// Определяем знак числа и удаляем его из исходной строки.

ТекущийСимвол = Лев(Строка, 1);

Алфавит = "+-";

Если Найти(Алфавит, ТекущийСимвол) > 0 Тогда

Строка = Сред(Строка, 2);

МаксНомерСимвола = МаксНомерСимвола - 1;

Отрицательное = (ТекущийСимвол = "-");

Иначе

Отрицательное = Ложь;

КонецЕсли;

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

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

НомерСимвола = 1;

Алфавит = "0123456789 .," + Символы.НПП;

Пока НомерСимвола <= МаксНомерСимвола Цикл

ТекущийСимвол = Сред(Строка, НомерСимвола, 1);

Если Найти(Алфавит, ТекущийСимвол) = 0 Тогда

Прервать;

КонецЕсли;

НомерСимвола = НомерСимвола + 1;

КонецЦикла;

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

Если НомерСимвола <= МаксНомерСимвола Тогда

Строка = Лев(Строка, НомерСимвола - 1);

МаксНомерСимвола = НомерСимвола - 1;

КонецЕсли;

Если МаксНомерСимвола > 0 Тогда

// Очищаем строку слева и справа от пробельных символов.

Алфавит = " " + Символы.НПП;

Пока Найти(Алфавит, Лев(Строка, 1)) > 0 Цикл

Строка = Сред(Строка, 2);

МаксНомерСимвола = МаксНомерСимвола - 1;

КонецЦикла;

Пока Найти(Алфавит, Прав(Строка, 1)) > 0 Цикл

Строка = Лев(Строка, МаксНомерСимвола - 1);

МаксНомерСимвола = МаксНомерСимвола - 1;

КонецЦикла;

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

// распознаны как дробная часть

НомерСимвола = МаксНомерСимвола;

Алфавит = "012345679";

Пока НомерСимвола >= 1 Цикл

ТекущийСимвол = Сред(Строка, НомерСимвола, 1);

Если Найти(Алфавит, ТекущийСимвол) = 0 Тогда

Прервать;

КонецЕсли;

НомерСимвола = НомерСимвола - 1;

КонецЦикла;

Если НомерСимвола > 0 Тогда

// Для строки "123,456": "456" - дробная часть

// Для строки "1,123,456": "456" - последняя триада целой части

Если Найти(".,", ТекущийСимвол) > 0

И Не (МаксНомерСимвола - НомерСимвола = 3

И МаксНомерСимвола >= 9

И Сред(Строка, НомерСимвола - 4, 1) = ТекущийСимвол) Тогда

Строка = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Лев(Строка, НомерСимвола - 1), ".", ""), ",", ""), " ", ""), Символы.НПП, "") + "." + Сред(Строка, НомерСимвола + 1);

Иначе

Строка = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Строка, ".", ""), ",", ""), " ", ""), Символы.НПП, "");

КонецЕсли;

КонецЕсли;

Строка = ?(Отрицательное, "-", "") + Строка;

КонецЕсли;

КонецЕсли;

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

Результат = Пусто;

Иначе

Попытка

Результат = Число(Строка);

Исключение

Результат = Ошибка;

КонецПопытки;

КонецЕсли;

Возврат Результат;

КонецФункции // СтрокаВЧисло()

Листинг 3 – Модуль “РаботаСДокументами”

Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт

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

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

Процедура РассчитатьИтоговуюСумму(СтрокаТабличнойЧасти) Экспорт

СтрокаТабличнойЧасти.ИтоговаяСумма = СтрокаТабличнойЧасти.Сумма * ((СтрокаВЧисло(СтрокаТабличнойЧасти.СтавкаНДС)/100)+1);

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

Листинг 1 – Модуль объекта

Процедура ОбработкаПроведения(Отказ, Режим)

Запрос=Новый Запрос;

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

"ВЫБРАТЬ

| РасходнаяНакладнаяПереченьНоменклатуры.Номенклатура,

| СУММА(РасходнаяНакладнаяПереченьНоменклатуры.Количество) КАК Количество,

| РасходнаяНакладнаяПереченьНоменклатуры.Цена,

| РасходнаяНакладнаяПереченьНоменклатуры.Сумма,

| РасходнаяНакладнаяПереченьНоменклатуры.ИтоговаяСумма

|ПОМЕСТИТЬ Док

|ИЗ

| Документ.РасходнаяНакладная.ПереченьНоменклатуры КАК РасходнаяНакладнаяПереченьНоменклатуры

|ГДЕ

| РасходнаяНакладнаяПереченьНоменклатуры.Ссылка = &Ссылка

|

|СГРУППИРОВАТЬ ПО

| РасходнаяНакладнаяПереченьНоменклатуры.Номенклатура,

| РасходнаяНакладнаяПереченьНоменклатуры.Цена,

| РасходнаяНакладнаяПереченьНоменклатуры.Сумма,

| РасходнаяНакладнаяПереченьНоменклатуры.ИтоговаяСумма

|;

|

|////////////////////////////////////////////////////////////////////////////////

|ВЫБРАТЬ

| Док.Номенклатура КАК Номенклатура,

| ТоварыНаСкладеОстатки.Партия КАК Партия,

| Док.Количество КАК Количество,

| Док.Цена КАК Цена,

| Док.Сумма КАК Сумма,

| Док.ИтоговаяСумма КАК ИтоговаяСумм,

| ЕСТЬNULL(ТоварыНаСкладеОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,

| ЕСТЬNULL(ТоварыНаСкладеОстатки.СуммаОстаток, 0) КАК СуммаОстаток,

| ТоварыНаСкладеОстатки.Склад КАК Склад,

| ТоварыНаСкладеОстатки.СтавкаНДС КАК СтавкаНДС

|ИЗ

| Док КАК Док

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки(

| &МоментВремени,

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

| (ВЫБРАТЬ РАЗЛИЧНЫЕ

| Док.Номенклатура

| ИЗ

| Док КАК Док)) КАК ТоварыНаСкладеОстатки

| ПО Док.Номенклатура = ТоварыНаСкладеОстатки.Номенклатура

|

|УПОРЯДОЧИТЬ ПО

| ТоварыНаСкладеОстатки.Партия УБЫВ

|ИТОГИ

| МАКСИМУМ(Количество),

| СУММА(КоличествоОстаток)

|ПО

| Номенклатура";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

Запрос.УстановитьПараметр("МоментВремени", МоментВремени());

РезультатЗапроса=Запрос.Выполнить();

ВыборкаИтогов=РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Движения.ТоварыНаСкладе.Записывать = Истина;

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

Если ВыборкаИтогов.Количество>ВыборкаИтогов.КоличествоОстаток Тогда

Сообщить("Товара "+ВыборкаИтогов.Номенклатура+" в наличии только "+

ВыборкаИтогов.КоличествоОстаток+" шт. Документ """+Ссылка+""" не проведен!");

Отказ=Истина;

Продолжить;

Иначе

НадоСписать=ВыборкаИтогов.Количество;

Выборка=ВыборкаИтогов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока Выборка.Следующий() И НадоСписать<>0 Цикл

СписатьСПартии=МИН(НадоСписать, Выборка.КоличествоОстаток);

Если Выборка.КоличествоОстаток > 0 Тогда

СуммаСписания=СписатьСПартии*Выборка.СуммаОстаток/Выборка.КоличествоОстаток;

Иначе

CуммаСписания=Выборка.СуммаОстаток;

КонецЕсли;

НадоСписать=НадоСписать-СписатьСПартии;

Движение=Движения.ТоварыНаСкладе.ДобавитьРасход();

Движение.Период=Дата;

Движение.Номенклатура=Выборка.Номенклатура;

Движение.Партия=Выборка.Партия;

Движение.Количество=СписатьСПартии;

Движение.Стоимость=СуммаСписания;

Движение.Сумма=СписатьСПартии*Выборка.Цена;

РаботаСоСправочниками.СтрокаВЧисло(Выборка.СтавкаНДС);

Движение.ИтоговаяСумма= (РаботаСоСправочниками.СтрокаВЧисло(Выборка.СтавкаНДС)/100+1)*СписатьСПартии*Выборка.Цена;

Движение.Цена=Выборка.Цена;

Движение.СтавкаНДС = Выборка.СтавкаНДС;

Движение.Склад=Выборка.Склад;

КонецЦикла;

КонецЕсли;

КонецЦикла;

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

7. Приложение Б – Функции и процедуры конфигурации.

Листинг 2 – Модуль “РаботаСоСправочниками”

Функция АктуальнаяЗакупочнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.ЗакупочнаяЦена;

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

Функция АктуальнаяРозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.РозничнаяЦена;

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

Функция ПоставщикНоменклатуры(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.Поставщик;

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

Функция СтрокаВЧисло(Знач Строка, Знач Пусто = 0, Знач Ошибка = 0) Экспорт

Перем Результат, НомерСимвола, МаксНомерСимвола, ТекущийСимвол, Алфавит

, Отрицательное, ЕстьДробнаяЧасть;

Если Не ПустаяСтрока(Строка) Тогда

Строка = СокрЛП(Строка);

МаксНомерСимвола = СтрДлина(Строка);

// Определяем знак числа и удаляем его из исходной строки.

ТекущийСимвол = Лев(Строка, 1);

Алфавит = "+-";

Если Найти(Алфавит, ТекущийСимвол) > 0 Тогда

Строка = Сред(Строка, 2);

МаксНомерСимвола = МаксНомерСимвола - 1;

Отрицательное = (ТекущийСимвол = "-");

Иначе

Отрицательное = Ложь;

КонецЕсли;

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

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

НомерСимвола = 1;

Алфавит = "0123456789 .," + Символы.НПП;

Пока НомерСимвола <= МаксНомерСимвола Цикл

ТекущийСимвол = Сред(Строка, НомерСимвола, 1);

Если Найти(Алфавит, ТекущийСимвол) = 0 Тогда

Прервать;

КонецЕсли;

НомерСимвола = НомерСимвола + 1;

КонецЦикла;

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

Если НомерСимвола <= МаксНомерСимвола Тогда

Строка = Лев(Строка, НомерСимвола - 1);

МаксНомерСимвола = НомерСимвола - 1;

КонецЕсли;

Если МаксНомерСимвола > 0 Тогда

// Очищаем строку слева и справа от пробельных символов.

Алфавит = " " + Символы.НПП;

Пока Найти(Алфавит, Лев(Строка, 1)) > 0 Цикл

Строка = Сред(Строка, 2);

МаксНомерСимвола = МаксНомерСимвола - 1;

КонецЦикла;

Пока Найти(Алфавит, Прав(Строка, 1)) > 0 Цикл

Строка = Лев(Строка, МаксНомерСимвола - 1);

МаксНомерСимвола = МаксНомерСимвола - 1;

КонецЦикла;

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

// распознаны как дробная часть

НомерСимвола = МаксНомерСимвола;

Алфавит = "012345679";

Пока НомерСимвола >= 1 Цикл

ТекущийСимвол = Сред(Строка, НомерСимвола, 1);

Если Найти(Алфавит, ТекущийСимвол) = 0 Тогда

Прервать;

КонецЕсли;

НомерСимвола = НомерСимвола - 1;

КонецЦикла;

Если НомерСимвола > 0 Тогда

// Для строки "123,456": "456" - дробная часть

// Для строки "1,123,456": "456" - последняя триада целой части

Если Найти(".,", ТекущийСимвол) > 0

И Не (МаксНомерСимвола - НомерСимвола = 3

И МаксНомерСимвола >= 9

И Сред(Строка, НомерСимвола - 4, 1) = ТекущийСимвол) Тогда

Строка = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Лев(Строка, НомерСимвола - 1), ".", ""), ",", ""), " ", ""), Символы.НПП, "") + "." + Сред(Строка, НомерСимвола + 1);

Иначе

Строка = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Строка, ".", ""), ",", ""), " ", ""), Символы.НПП, "");

КонецЕсли;

КонецЕсли;

Строка = ?(Отрицательное, "-", "") + Строка;

КонецЕсли;

КонецЕсли;

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

Результат = Пусто;

Иначе

Попытка

Результат = Число(Строка);

Исключение

Результат = Ошибка;

КонецПопытки;

КонецЕсли;

Возврат Результат;

КонецФункции // СтрокаВЧисло()

Листинг 3 – Модуль “РаботаСДокументами”

Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт

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

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

Процедура РассчитатьИтоговуюСумму(СтрокаТабличнойЧасти) Экспорт

СтрокаТабличнойЧасти.ИтоговаяСумма = СтрокаТабличнойЧасти.Сумма * ((СтрокаВЧисло(СтрокаТабличнойЧасти.СтавкаНДС)/100)+1);

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

Листинг 1 – Модуль объекта

Процедура ОбработкаПроведения(Отказ, Режим)

Запрос=Новый Запрос;

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

"ВЫБРАТЬ

| РасходнаяНакладнаяПереченьНоменклатуры.Номенклатура,

| СУММА(РасходнаяНакладнаяПереченьНоменклатуры.Количество) КАК Количество,

| РасходнаяНакладнаяПереченьНоменклатуры.Цена,

| РасходнаяНакладнаяПереченьНоменклатуры.Сумма,

| РасходнаяНакладнаяПереченьНоменклатуры.ИтоговаяСумма

|ПОМЕСТИТЬ Док

|ИЗ

| Документ.РасходнаяНакладная.ПереченьНоменклатуры КАК РасходнаяНакладнаяПереченьНоменклатуры

|ГДЕ

| РасходнаяНакладнаяПереченьНоменклатуры.Ссылка = &Ссылка

|

|СГРУППИРОВАТЬ ПО

| РасходнаяНакладнаяПереченьНоменклатуры.Номенклатура,

| РасходнаяНакладнаяПереченьНоменклатуры.Цена,

| РасходнаяНакладнаяПереченьНоменклатуры.Сумма,

| РасходнаяНакладнаяПереченьНоменклатуры.ИтоговаяСумма

|;

|

|////////////////////////////////////////////////////////////////////////////////

|ВЫБРАТЬ

| Док.Номенклатура КАК Номенклатура,

| ТоварыНаСкладеОстатки.Партия КАК Партия,

| Док.Количество КАК Количество,

| Док.Цена КАК Цена,

| Док.Сумма КАК Сумма,

| Док.ИтоговаяСумма КАК ИтоговаяСумм,

| ЕСТЬNULL(ТоварыНаСкладеОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,

| ЕСТЬNULL(ТоварыНаСкладеОстатки.СуммаОстаток, 0) КАК СуммаОстаток,

| ТоварыНаСкладеОстатки.Склад КАК Склад,

| ТоварыНаСкладеОстатки.СтавкаНДС КАК СтавкаНДС

|ИЗ

| Док КАК Док

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки(

| &МоментВремени,

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

| (ВЫБРАТЬ РАЗЛИЧНЫЕ

| Док.Номенклатура

| ИЗ

| Док КАК Док)) КАК ТоварыНаСкладеОстатки

| ПО Док.Номенклатура = ТоварыНаСкладеОстатки.Номенклатура

|

|УПОРЯДОЧИТЬ ПО

| ТоварыНаСкладеОстатки.Партия УБЫВ

|ИТОГИ

| МАКСИМУМ(Количество),

| СУММА(КоличествоОстаток)

|ПО

| Номенклатура";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

Запрос.УстановитьПараметр("МоментВремени", МоментВремени());

РезультатЗапроса=Запрос.Выполнить();

ВыборкаИтогов=РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Движения.ТоварыНаСкладе.Записывать = Истина;

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

Если ВыборкаИтогов.Количество>ВыборкаИтогов.КоличествоОстаток Тогда

Сообщить("Товара "+ВыборкаИтогов.Номенклатура+" в наличии только "+

ВыборкаИтогов.КоличествоОстаток+" шт. Документ """+Ссылка+""" не проведен!");

Отказ=Истина;

Продолжить;

Иначе

НадоСписать=ВыборкаИтогов.Количество;

Выборка=ВыборкаИтогов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока Выборка.Следующий() И НадоСписать<>0 Цикл

СписатьСПартии=МИН(НадоСписать, Выборка.КоличествоОстаток);

Если Выборка.КоличествоОстаток > 0 Тогда

СуммаСписания=СписатьСПартии*Выборка.СуммаОстаток/Выборка.КоличествоОстаток;

Иначе

CуммаСписания=Выборка.СуммаОстаток;

КонецЕсли;

НадоСписать=НадоСписать-СписатьСПартии;

Движение=Движения.ТоварыНаСкладе.ДобавитьРасход();

Движение.Период=Дата;

Движение.Номенклатура=Выборка.Номенклатура;

Движение.Партия=Выборка.Партия;

Движение.Количество=СписатьСПартии;

Движение.Стоимость=СуммаСписания;

Движение.Сумма=СписатьСПартии*Выборка.Цена;

РаботаСоСправочниками.СтрокаВЧисло(Выборка.СтавкаНДС);

Движение.ИтоговаяСумма= (РаботаСоСправочниками.СтрокаВЧисло(Выборка.СтавкаНДС)/100+1)*СписатьСПартии*Выборка.Цена;

Движение.Цена=Выборка.Цена;

Движение.СтавкаНДС = Выборка.СтавкаНДС;

Движение.Склад=Выборка.Склад;

КонецЦикла;

КонецЕсли;

КонецЦикла;

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

7. Приложение Б – Функции и процедуры конфигурации.

Листинг 2 – Модуль “РаботаСоСправочниками”

Функция АктуальнаяЗакупочнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.ЗакупочнаяЦена;

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

Функция АктуальнаяРозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.РозничнаяЦена;

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

Функция ПоставщикНоменклатуры(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.Поставщик;

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

Функция СтрокаВЧисло(Знач Строка, Знач Пусто = 0, Знач Ошибка = 0) Экспорт

Перем Результат, НомерСимвола, МаксНомерСимвола, ТекущийСимвол, Алфавит

, Отрицательное, ЕстьДробнаяЧасть;

Если Не ПустаяСтрока(Строка) Тогда

Строка = СокрЛП(Строка);

МаксНомерСимвола = СтрДлина(Строка);

// Определяем знак числа и удаляем его из исходной строки.

ТекущийСимвол = Лев(Строка, 1);

Алфавит = "+-";

Если Найти(Алфавит, ТекущийСимвол) > 0 Тогда

Строка = Сред(Строка, 2);

МаксНомерСимвола = МаксНомерСимвола - 1;

Отрицательное = (ТекущийСимвол = "-");

Иначе

Отрицательное = Ложь;

КонецЕсли;

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

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

НомерСимвола = 1;

Алфавит = "0123456789 .," + Символы.НПП;

Пока НомерСимвола <= МаксНомерСимвола Цикл

ТекущийСимвол = Сред(Строка, НомерСимвола, 1);

Если Найти(Алфавит, ТекущийСимвол) = 0 Тогда

Прервать;

КонецЕсли;

НомерСимвола = НомерСимвола + 1;

КонецЦикла;

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

Если НомерСимвола <= МаксНомерСимвола Тогда

Строка = Лев(Строка, НомерСимвола - 1);

МаксНомерСимвола = НомерСимвола - 1;

КонецЕсли;

Если МаксНомерСимвола > 0 Тогда

// Очищаем строку слева и справа от пробельных символов.

Алфавит = " " + Символы.НПП;

Пока Найти(Алфавит, Лев(Строка, 1)) > 0 Цикл

Строка = Сред(Строка, 2);

МаксНомерСимвола = МаксНомерСимвола - 1;

КонецЦикла;

Пока Найти(Алфавит, Прав(Строка, 1)) > 0 Цикл

Строка = Лев(Строка, МаксНомерСимвола - 1);

МаксНомерСимвола = МаксНомерСимвола - 1;

КонецЦикла;

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

// распознаны как дробная часть

НомерСимвола = МаксНомерСимвола;

Алфавит = "012345679";

Пока НомерСимвола >= 1 Цикл

ТекущийСимвол = Сред(Строка, НомерСимвола, 1);

Если Найти(Алфавит, ТекущийСимвол) = 0 Тогда

Прервать;

КонецЕсли;

НомерСимвола = НомерСимвола - 1;

КонецЦикла;

Если НомерСимвола > 0 Тогда

// Для строки "123,456": "456" - дробная часть

// Для строки "1,123,456": "456" - последняя триада целой части

Если Найти(".,", ТекущийСимвол) > 0

И Не (МаксНомерСимвола - НомерСимвола = 3

И МаксНомерСимвола >= 9

И Сред(Строка, НомерСимвола - 4, 1) = ТекущийСимвол) Тогда

Строка = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Лев(Строка, НомерСимвола - 1), ".", ""), ",", ""), " ", ""), Символы.НПП, "") + "." + Сред(Строка, НомерСимвола + 1);

Иначе

Строка = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Строка, ".", ""), ",", ""), " ", ""), Символы.НПП, "");

КонецЕсли;

КонецЕсли;

Строка = ?(Отрицательное, "-", "") + Строка;

КонецЕсли;

КонецЕсли;

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

Результат = Пусто;

Иначе

Попытка

Результат = Число(Строка);

Исключение

Результат = Ошибка;

КонецПопытки;

КонецЕсли;

Возврат Результат;

КонецФункции // СтрокаВЧисло()

Листинг 3 – Модуль “РаботаСДокументами”

Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт

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

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

Процедура РассчитатьИтоговуюСумму(СтрокаТабличнойЧасти) Экспорт

СтрокаТабличнойЧасти.ИтоговаяСумма = СтрокаТабличнойЧасти.Сумма * ((СтрокаВЧисло(СтрокаТабличнойЧасти.СтавкаНДС)/100)+1);

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

Листинг 1 – Модуль объекта

Процедура ОбработкаПроведения(Отказ, Режим)

Запрос=Новый Запрос;

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

"ВЫБРАТЬ

| РасходнаяНакладнаяПереченьНоменклатуры.Номенклатура,

| СУММА(РасходнаяНакладнаяПереченьНоменклатуры.Количество) КАК Количество,

| РасходнаяНакладнаяПереченьНоменклатуры.Цена,

| РасходнаяНакладнаяПереченьНоменклатуры.Сумма,

| РасходнаяНакладнаяПереченьНоменклатуры.ИтоговаяСумма

|ПОМЕСТИТЬ Док

|ИЗ

| Документ.РасходнаяНакладная.ПереченьНоменклатуры КАК РасходнаяНакладнаяПереченьНоменклатуры

|ГДЕ

| РасходнаяНакладнаяПереченьНоменклатуры.Ссылка = &Ссылка

|

|СГРУППИРОВАТЬ ПО

| РасходнаяНакладнаяПереченьНоменклатуры.Номенклатура,

| РасходнаяНакладнаяПереченьНоменклатуры.Цена,

| РасходнаяНакладнаяПереченьНоменклатуры.Сумма,

| РасходнаяНакладнаяПереченьНоменклатуры.ИтоговаяСумма

|;

|

|////////////////////////////////////////////////////////////////////////////////

|ВЫБРАТЬ

| Док.Номенклатура КАК Номенклатура,

| ТоварыНаСкладеОстатки.Партия КАК Партия,

| Док.Количество КАК Количество,

| Док.Цена КАК Цена,

| Док.Сумма КАК Сумма,

| Док.ИтоговаяСумма КАК ИтоговаяСумм,

| ЕСТЬNULL(ТоварыНаСкладеОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,

| ЕСТЬNULL(ТоварыНаСкладеОстатки.СуммаОстаток, 0) КАК СуммаОстаток,

| ТоварыНаСкладеОстатки.Склад КАК Склад,

| ТоварыНаСкладеОстатки.СтавкаНДС КАК СтавкаНДС

|ИЗ

| Док КАК Док

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки(

| &МоментВремени,

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

| (ВЫБРАТЬ РАЗЛИЧНЫЕ

| Док.Номенклатура

| ИЗ

| Док КАК Док)) КАК ТоварыНаСкладеОстатки

| ПО Док.Номенклатура = ТоварыНаСкладеОстатки.Номенклатура

|

|УПОРЯДОЧИТЬ ПО

| ТоварыНаСкладеОстатки.Партия УБЫВ

|ИТОГИ

| МАКСИМУМ(Количество),

| СУММА(КоличествоОстаток)

|ПО

| Номенклатура";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

Запрос.УстановитьПараметр("МоментВремени", МоментВремени());

РезультатЗапроса=Запрос.Выполнить();

ВыборкаИтогов=РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Движения.ТоварыНаСкладе.Записывать = Истина;

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

Если ВыборкаИтогов.Количество>ВыборкаИтогов.КоличествоОстаток Тогда

Сообщить("Товара "+ВыборкаИтогов.Номенклатура+" в наличии только "+

ВыборкаИтогов.КоличествоОстаток+" шт. Документ """+Ссылка+""" не проведен!");

Отказ=Истина;

Продолжить;

Иначе

НадоСписать=ВыборкаИтогов.Количество;

Выборка=ВыборкаИтогов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока Выборка.Следующий() И НадоСписать<>0 Цикл

СписатьСПартии=МИН(НадоСписать, Выборка.КоличествоОстаток);

Если Выборка.КоличествоОстаток > 0 Тогда

СуммаСписания=СписатьСПартии*Выборка.СуммаОстаток/Выборка.КоличествоОстаток;

Иначе

CуммаСписания=Выборка.СуммаОстаток;

КонецЕсли;

НадоСписать=НадоСписать-СписатьСПартии;

Движение=Движения.ТоварыНаСкладе.ДобавитьРасход();

Движение.Период=Дата;

Движение.Номенклатура=Выборка.Номенклатура;

Движение.Партия=Выборка.Партия;

Движение.Количество=СписатьСПартии;

Движение.Стоимость=СуммаСписания;

Движение.Сумма=СписатьСПартии*Выборка.Цена;

РаботаСоСправочниками.СтрокаВЧисло(Выборка.СтавкаНДС);

Движение.ИтоговаяСумма= (РаботаСоСправочниками.СтрокаВЧисло(Выборка.СтавкаНДС)/100+1)*СписатьСПартии*Выборка.Цена;

Движение.Цена=Выборка.Цена;

Движение.СтавкаНДС = Выборка.СтавкаНДС;

Движение.Склад=Выборка.Склад;

КонецЦикла;

КонецЕсли;

КонецЦикла;

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

7. Приложение Б – Функции и процедуры конфигурации.

Листинг 2 – Модуль “РаботаСоСправочниками”

Функция АктуальнаяЗакупочнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.ЗакупочнаяЦена;

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

Функция АктуальнаяРозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.РозничнаяЦена;

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

Функция ПоставщикНоменклатуры(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);

Возврат ЗначенияРесурсов.Поставщик;

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

Функция СтрокаВЧисло(Знач Строка, Знач Пусто = 0, Знач Ошибка = 0) Экспорт

Перем Результат, НомерСимвола, МаксНомерСимвола, ТекущийСимвол, Алфавит

, Отрицательное, ЕстьДробнаяЧасть;

Если Не ПустаяСтрока(Строка) Тогда

Строка = СокрЛП(Строка);

МаксНомерСимвола = СтрДлина(Строка);

// Определяем знак числа и удаляем его из исходной строки.

ТекущийСимвол = Лев(Строка, 1);

Алфавит = "+-";

Если Найти(Алфавит, ТекущийСимвол) > 0 Тогда

Строка = Сред(Строка, 2);

МаксНомерСимвола = МаксНомерСимвола - 1;

Отрицательное = (ТекущийСимвол = "-");

Иначе

Отрицательное = Ложь;

КонецЕсли;

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

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

НомерСимвола = 1;

Алфавит = "0123456789 .," + Символы.НПП;

Пока НомерСимвола <= МаксНомерСимвола Цикл

ТекущийСимвол = Сред(Строка, НомерСимвола, 1);

Если Найти(Алфавит, ТекущийСимвол) = 0 Тогда

Прервать;

КонецЕсли;

НомерСимвола = НомерСимвола + 1;

КонецЦикла;

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

Если НомерСимвола <= МаксНомерСимвола Тогда

Строка = Лев(Строка, НомерСимвола - 1);

МаксНомерСимвола = НомерСимвола - 1;

КонецЕсли;

Если МаксНомерСимвола > 0 Тогда

// Очищаем строку слева и справа от пробельных символов.

Алфавит = " " + Символы.НПП;

Пока Найти(Алфавит, Лев(Строка, 1)) > 0 Цикл

Строка = Сред(Строка, 2);

МаксНомерСимвола = МаксНомерСимвола - 1;

КонецЦикла;

Пока Найти(Алфавит, Прав(Строка, 1)) > 0 Цикл

Строка = Лев(Строка, МаксНомерСимвола - 1);

МаксНомерСимвола = МаксНомерСимвола - 1;

КонецЦикла;

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

// распознаны как дробная часть

НомерСимвола = МаксНомерСимвола;

Алфавит = "012345679";

Пока НомерСимвола >= 1 Цикл

ТекущийСимвол = Сред(Строка, НомерСимвола, 1);

Если Найти(Алфавит, ТекущийСимвол) = 0 Тогда

Прервать;

КонецЕсли;

НомерСимвола = НомерСимвола - 1;

КонецЦикла;

Если НомерСимвола > 0 Тогда

// Для строки "123,456": "456" - дробная часть

// Для строки "1,123,456": "456" - последняя триада целой части

Если Найти(".,", ТекущийСимвол) > 0

И Не (МаксНомерСимвола - НомерСимвола = 3

И МаксНомерСимвола >= 9

И Сред(Строка, НомерСимвола - 4, 1) = ТекущийСимвол) Тогда

Строка = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Лев(Строка, НомерСимвола - 1), ".", ""), ",", ""), " ", ""), Символы.НПП, "") + "." + Сред(Строка, НомерСимвола + 1);

Иначе

Строка = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Строка, ".", ""), ",", ""), " ", ""), Символы.НПП, "");

КонецЕсли;

КонецЕсли;

Строка = ?(Отрицательное, "-", "") + Строка;

КонецЕсли;

КонецЕсли;

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

Результат = Пусто;

Иначе

Попытка

Результат = Число(Строка);

Исключение

Результат = Ошибка;

КонецПопытки;

КонецЕсли;

Возврат Результат;

КонецФункции // СтрокаВЧисло()

Листинг 3 – Модуль “РаботаСДокументами”

Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт

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

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

Процедура РассчитатьИтоговуюСумму(СтрокаТабличнойЧасти) Экспорт

СтрокаТабличнойЧасти.ИтоговаяСумма = СтрокаТабличнойЧасти.Сумма * ((СтрокаВЧисло(СтрокаТабличнойЧасти.СтавкаНДС)/100)+1);

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