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

Разработка конфигурации «Ежедневный складской учет» в среде 1С:Предприятие 8.3

Содержание:

Введение

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

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

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

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

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

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

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

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

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

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

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

В процессе выполнения работы были рассмотрены такие вопросы, как:

  • Описание объекта исследования ЗАО «НПЦ ИТТ».
  • Описание существующей информационной системы.
  • Обоснование необходимости модернизации ИС «1С: Предприятие 8.3».
  • Анализ бизнес процессов и формирование функциональной структуры системы.
  • Настройка самой информационной системы и ее тестирование.

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

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

В настоящее время, рассматриваемое предприятие – это магазин-салон со своим руководством и штатом сотрудников.

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

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

Рисунок 1.1 - Организационная структура ЗАО «НПЦ ИТТ»

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

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

Общие положения отдела снабжения.

  1. Отдел снабжения в своей деятельности руководствуется трудовым законодательством Российской Федерации, Уставом компании, настоящим Положением, иными стандартами деятельности и нормативно-методическими документами компании.
  2. Отдел снабжения является самостоятельным структурным подразделением компании, подчиненным непосредственно ее руководителю.
  3. Штатная численность и структура отдела снабжения определяются генеральным директором компании.
  4. Отдел снабжения возглавляет директор по продажам (начальник отдела снабжения).
  5. Назначение и освобождение от должности директора по продажам производится приказом генерального директора компании.

Структура отдела снабжения представлена на рисунке 1.2.

Отдел снабжения

Начальник отдела снабжения

Менеджер по закупкам

Заведующий складом

Кладовщик

Грузчики

Рисунок 1.2 – Организационная структура отдела снабжения

Направления деятельности отдела снабжения.

  1. Сбор и анализ информации рынке Санкт-Петербурга и остальных регионов Российской Федерации (информация о клиентах, конкурентах, поставщиках, строящихся и планируемых к строительству объектах, объявленных и готовящихся тендерах, технологиях строительства и др.).
  2. Поиск поставщиков.
  3. Проведение переговоров с поставщиками.
  4. Оформление и заключение контрактов с поставщиками.
  5. Развитие отношений с поставщиками.
  6. Ведение внутренней отчетности и документации.

Отделу снабжения предоставлено право:

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

Менеджер по снабжению:

  1. Разрабатывает технологии поставок товаров.
  2. Изучает рынок товаров (анализирует спрос и потребление).
  3. Организует сбор информации о спросе на товары, причинах его изменения (повышения, понижения), анализирует потребности покупателей.
  4. Разрабатывает и обеспечивает реализацию мероприятий по организации и созданию сети сбыта товаров (разработка и построение каналов движения товаров к потребителям; построение отношений с оптовыми и розничными торговыми предприятиями, иными посредниками).
  5. Проводит переговоры по поставкам с поставщиками.
  6. Руководит организацией работ по получению товаров от поставщиков по заключенным договорам.
  7. Контролирует оплату поставщикам товаров по заключенным договорам.
  8. Поддерживает контакт с постоянными поставщиками, перезаключает договоры с ними.
  9. Анализирует объемы закупок и подготавливает отчеты по результатам анализа для представления вышестоящему должностному лицу.

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

В результате исследования работы отдела снабжения предприятия ЗАО «НПЦ ИТТ» были выявлены недостатки:

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

Назначение:

«Автоматизация складского учета ЗАО «НПЦ ИТТ»

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

- удобный пользовательский интерфейс;

- дублирование бумажных носителей;

- сохранение документов в электронном виде;

- формирование и печать документов и отчетов.

Организационно-экономическая сущность:

- сокращение времени формирования заявок;

- повышение уровня обслуживания.

- сокращение непроизводительных затрат рабочего времени сотрудников.

Выходная информация:

- отчет по заявкам;

- отчет по выполненным заказам.

Входная информация:

- заявка на закупку;

- расценка товара.

Цель:

Разработка АИС «Автоматизация складского учета» на примере ЗАО «НПЦ ИТТ»

Рисунок 2.1 - Постановка задачи

Рисунок 1.3 – Иерархия работ

На рисунке 1.4 представлена диаграмма разрабатываемо‏й системы.

USED AT:

AUTHOR: Pavel

DATE:

REV:

PROJECT: Meneger

12.06.2011

13.06.2011

NOTES: 1 2 3 4 5 6 7 8 9 10

WORKING

DRAFT

RECOMMENDED

PUBLICATION

READER

DATE

CONTEXT:

TOP

NODE:

TITLE:

NUMBER:

Работа менеджера

A-0

Товар от поставщика

Сопроводительная документация

Заказы клиентов

Сотрудники

Оборудование

Должностые инструкции

Устав фирмы

Законодательство РФ

Деньги поставщику

Отчетность

Проданный товар

Принятые заказы

Чек

покупателю

0

0р.

Работа менеджера

Рисунок 1.5 –Диаграмма «Рабо‏та менеджера отдела снабжения»

Рисуно‏к 1.6– «Закупка то‏вара»

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

Новые функциональные возможности программы:

  1. Новые программные продукты и учетные решения для индивидуальных предпринимателей и организаций.
  2. Развитие возможностей бухгалтерского учета для хозрасчетных и бюджетных организаций.
  3. Развитие налогового учета по налогу на прибыль в соответствии с требованиями главы 25 Налогового кодекса РФ и методическими рекомендациями МНС России.
  4. Расширенные возможности расчета зарплаты и кадрового учета.
  5. Новые решения для финансового планирования и анализа финансового состояния.
  6. Существенное развитие функций учета и планирования производственной деятельности.
  7. Новые возможности управленческого учета, анализа и планирования торговых операций; расширение спектра автоматизируемых задач торгово-складского учета.

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

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

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

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

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

Подсистема ведения поступления торгового товаров предназначена для того, чтобы хранить все необходимые данные об номенклатурных позициях на складе [8, с. 69].

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

  • Товары. Таблица «продать данные 1» предназначена для хранения основной информации о номенклатурных позициях:

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

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

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

Программное обеспечение, реализующее работу «Автоматизированной системы складского учета» должно обеспечивать выполнение следующий внутренних функций [9, с. 64]:

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

Требования по производительности

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

Требования по интерфейсу

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

  • Windows 9Х/2К/ХР/7/8

Модуль программной системы должен быть выполняемым и представленным как *.exe программа.

Программная система должна оперировать с всеми возможными именами файлов и каталогов MS DOS и Windows.

Операционные требования

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

Верификационные требования

Тестирование разработанного программного обеспечения должно проводиться по стратегиям «белого» и «черного» ящиков. Количество тестов должно быть избыточным для покрытия всего дерева решений [10, с. 76].

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

Требования по приемочным испытаниям

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

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

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

Требования по документации

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

- описанием программы в соответствии с ГОСТ 19.402-78 (в подразделе "Описание логической структуры" должны быть указаны быть алгоритм работы словесно или в виде блок-схемы по ГОСТ 19.002‑80, 19.003-80, 19.005-85);

  • методика испытаний в соответствии с ГОСТ 19.301-79;

- описание применения (ГОСТ 19.502-78) может быть выполнено в виде руководства системного программиста (ГОСТ 19.503-79), руководства программиста (ГОСТ 19.504-79) или руководство оператора (ГОСТ 19.505-79).

Требования по защите

Разрабатываемая «Автоматизированная система складского учета» должна содержать подсистему защиты от несанкционированного доступа к выполнению программы. Подсистема защиты должна разрешать доступ к работе программы при совпадении внутреннего пароля и пароля введенного пользователем [11, с. 44].

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

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

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

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

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

Временной интервал между отказами программного обеспечения должен составлять не менее 1000 часов непрерывной работы. Минимальный объем данных, которые могут быть потеряны должен соответствовать объему данных, с которыми в данный момент работает программа и составлять не более 2 М [12, с. 49].

При возникновении ошибки ввода вывода программа должна выводить сообщение на экран компьютера.

Требования по сопровождению

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

Требования по безопасности

Программное обеспечение должно применяться в нормальных физических и погодных условиях, а также в условиях допустимых для функционирования ЭВМ [13, с. 57].

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

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

Разрабатываемая система предназначена для работы в операционной системе Windows. Программа должна работать в любой операционной системе семейства Windows: XP,7,8,10 а также на серверных вариантах этой операционной системы. Такой выбор объясняется развитым удобным графическим пользовательским интерфейсом данного семейства операционных систем, а также ее популярностью на российском рынке. Многие фирмы-производители программного обеспечения, в том числе систем разработки приложений, также ориентированы на это семейство операционных систем, что привело к наличию на рынке большого количества систем программирования, позволяющих разрабатывать программное обеспечение для Windows.

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

В последнее время особую популярность приобретает операционная система Linux и ее производные.

В этой ситуации можно задать вопрос: "Зачем программистам осваивать средства разработки приложений для Windows, если существуют такая прекрасная операционная система?". Не смотря на растущую популярность Linux можно утверждать, что в мире персональных компьютеров операционная система Windows еще довольно долго будет доминировать и вряд ли в ближайшее время будет вытеснена.

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

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

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

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

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

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

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

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

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

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

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

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

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

Информационная модель имеет три области.

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

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

В этой области пользователь получает такую информацию как реализация и поступление товара на склад из таблиц:

      • Invoice (Реализация)
      • Plan (План продаж)
      • Product (Товары)
      • Provider (Контрагенты)

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

Информационная модель приведена на рисунке 2.1.

Рисунок 2.1 - Информационная модель комплекса задач

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

Выше перечисленные данные будут зано‏ситься в таблицы базы данных.

Таблица 2.1 - Структура таблицы «Users»

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

Тип по‏ля

Назначение

User

VARCHAR(30)

По‏льзо‏ватель

Password

VARCHAR(15)

Паро‏ль

Т

Таблица 2.2 - Структура таблицы «Zayavki»

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

Тип по‏ля

Назначение

Id_zayav

INTEGER

Ко‏д заявки

Date_zayav

DATETIME

Дата заявки

Code_tov

NUMERIC(11)

Списо‏к то‏варо‏в

Code_postav

INTEGER

Ко‏д по‏ставщика

Таблица 2.3 - Структура таблицы «Goods_movement»

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

Тип по‏ля

Назначение

Id

INTEGER

Ко‏д движения

Date_oper

DATETIME

Дата движения

Col_vo

INTEGER

Ко‏личество‏

Price

NUMERIC(10,2)

Цена

Code_postav

Numeric(6)

Ко‏д по‏ставщика

Code_operation

VARCHAR(20)

Ко‏д о‏перации

Code_tov

NUMERIC(11)

Ко‏д то‏вара

Структура но‏рмативно‏-справо‏чно‏й инфо‏рмации

Но‏рмативно‏-справо‏чно‏й инфо‏рмацией будут являться справо‏чники: «Единицы измерения», «О‏перации», «По‏ставщики», «Но‏менклатура».

Таблица 2.4- Структура таблицы «Unit_of_measure»

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

Тип по‏ля

Назначение

Code_ed_izm

INTEGER

Ко‏д единицы измерения

Name_ed_izm

VARCHAR(20)

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

Short_name

VARCHAR(55)

Ко‏ро‏тко‏е наимено‏вание

Таблица 2.5 - Структура таблицы «Nomenclature»

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

Тип по‏ля

Назначение

Code_tov

NUMERIC(11)

Ко‏д то‏вара

Name

VARCHAR(100)

Наимено‏вание то‏вара

Article

VARCHAR(25)

Артикл

Code_ed_izm

INTEGER

Ко‏д единицы измерения

Country

VARCHAR(20)

Страна про‏исхо‏ждения

Comments

VARCHAR(200)

Ко‏мментарий

Таблица 2.6 - Структура таблицы «Supplier»

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

Тип по‏ля

Назначение

Code_postav

NUMERIC(6)

Ко‏д по‏ставщика

Name_postav

VARCHAR(50)

Наимено‏вание по‏ставщика

Таблица 2.7 - Структура таблицы «Operation»

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

Тип по‏ля

Назначение

1

2

3

Code_operation

VARCHAR(20)

Ко‏д о‏перации

Name_operation

VARCHAR(50)

Наимено‏вание о‏перации

Структура выхо‏дно‏й инфо‏рмации

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

  • по‏ставщик;
  • заявки по‏ставщику:
  • то‏вар;
  • ко‏личество‏;
  • дата заявки;
  • дата по‏купки,
  • цена,
  • о‏бщая сумма по‏купки.
  • о‏тчетно‏сть.

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

Система содержит отчеты, формы и запросы.

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

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

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

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

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

Далее представлен сценарий диалога.

Рисунок 2.2 - Сценарий диалога для пользователя

Рисунок 2.3 – Дерево функций системы сотрудника

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

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

Рисунок 2.4 - Ло‏гическая мо‏дель данных

Рисунок 2.5- Физическая мо‏дель данных

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

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

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

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

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

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

В основу программной реализации решения задачи был положен событийно-ориентированный подход. Выбранный в качестве языка программирования язык включает в себя мощный аппарат для поддержания этой наиболее перспективной технологии. Событийно-ориентированное программирование (англ. event-driven programming) — это способ построения компьютерной программы, при котором в коде (как правило, в головной функции программы) явным образом выделяется главный цикл приложения, тело которого состоит из двух частей: выборки события и обработки события. Как правило, в реальных задачах оказывается недопустимым длительное выполнение обработчика события, поскольку при этом программа не может реагировать на другие события. В связи с этим при написании событийно-ориентированных программ часто применяют автоматное программирование. В современных языках программирования события и обработчики событий являются центральным звеном реализации графического интерфейса пользователя. Рассмотрим, к примеру, взаимодействие программы с событиями от мыши. Нажатие правой клавиши мыши вызывает системное прерывание, запускающее определенную процедуру внутри операционной системы. В этой процедуре происходит поиск окна, находящегося под курсором мыши. Если окно найдено, то данное событие посылается в очередь обработки сообщений этого окна. Далее, в зависимости от типа окна, могут генерироваться дополнительные события. Например, если окно является кнопкой (в Windows все графические элементы являются окнами), то дополнительно генерируется событие нажатия на кнопку. Отличие последнего события в том, что оно более абстрактно, а именно, не содержит координат курсора, а говорит просто о том, что было произведено нажатие на данную кнопку. Событийно-ориентированное программирование, как правило, применяется в трех случаях:

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

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

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

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

В подсистему ведения справочников входят следующие модули:

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

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

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

2.5 Описание контрольного примера реализации проекта

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

Реализация контрольного примера состоит из трех этапов:

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

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

Параметры настройки

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

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

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

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

Конфигурация «Предприятие 8.3» рассчитана как на независимую, автономную работу, так и на взаимодействие с другими прикладными решениями. Двусторонние обмены данных с типовыми конфигурациями «Бухгалтерия предприятия», «Управление торговлей» позволяют создать программные комплексы, покрывающие потребности розничных предприятий различного масштаба.

Конфигурация «Бухгалтерия предприятия» ред. 2.0, 3.0 при совместном использовании с конфигурацией «Предприятие 8.3» обеспечивает регламентный учет операций. Оперативный учет товародвижения и остатков денежных средств в кассах производится в конфигурации «Предприятие 8.3». Подробнее...

Конфигурация «Управление торговлей», ред. 11 при совместном использовании выступает в роли управляющей системы, которая поставляет в конфигурацию «Предприятие 8.3» нормативно-справочную информацию, управляет ассортиментом и ценами розничных магазинов. Из конфигурации «Предприятие 8.3» в управляющую систему передается товародвижение, в том числе розничные продажи в разрезе кассовых смен, и документы учета платежных средств. 

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

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

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

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

Запасы и закупки. Менеджеру предоставляется возможность составлять заказы поставщику на основе анализа продаж и текущих товарных остатков с учетом исполнительности поставщика; осуществлять планирование и контроль оплаты поставок. 

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

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

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

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

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

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

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

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

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

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

  • Конфигурация 1С:Бухгалтерия 8, ред. 2.0, 3.0 при совместном использовании с конфигурацией "Предприятие 8.3" обеспечивает регламентный учет операций. Оперативный учет товародвижения и остатков денежных средств в кассах производится в конфигурации "Предприятие 8.3"
  • Конфигурация 1С:Управление торговлей 8, ред. 11 при совместном использовании выступает в роли управляющей системы, которая поставляет в конфигурацию "Предприятие 8.3" нормативно-справочную информацию, управляет ассортиментом и ценами розничных магазинов. Из конфигурации "Предприятие 8.3" в управляющую систему передается товародвижение, в том числе розничные продажи в разрезе кассовых смен, и документы учета платежных средств.

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

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

  • Управление нормативно-справочной информацией. Функциональность программы обеспечивает ввод, хранение и своевременное распространение справочной информации по сети магазина. Широкие возможности программы позволяют составить разностороннее описание целевой группы покупателей, магазинов и товаров для удобной работы сотрудников предприятия на всех технологических участках.
  • Маркетинг. Программа позволяет маркетологу управлять ассортиментом разноформатных розничных сетей и построить гибкое управление розничными ценами. Предоставляется возможность сбора и анализа информации о покупательских предпочтениях и настройка разнообразных стимулирующих скидочных программ.
  • Запасы и закупки. Менеджеру предоставляется возможность составлять заказы поставщику на основе анализа продаж и текущих товарных остатков с учетом исполнительности поставщика; осуществлять планирование и контроль оплаты поставок.
  • Склад. Функциональность раздела позволяет поддерживать товарные остатки магазина в актуальном состоянии. Технология штрихкодирования дает возможность быстро и точно учитывать движения товаров по сладам магазина с необходимой для различных видов номенклатуры степенью детализации.
  • Продажи. Программа ориентирована на оформление розничных продаж потоковым методом. Гибко настраиваемый, интуитивно понятный графический интерфейс рабочего места кассира (РМК) позволяет быстро сформировать чек и оформить оплату покупки.
  • Финансы. Поддерживается учет различных средств оплаты розничных покупок: наличные, оплата платежной картой, подарочным сертификатом и с помощью заключения договора потребительского кредитования. Остатки наличных денежных средств и сертификатов учитываются по местам фактического хранения.
  • Персонал. Управляющий магазином имеет возможность оптимизировать расписание работы сотрудников магазина с учетом сменного графика и нагрузки на кассовых узлах. Поддерживается регистрация личных продаж.

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

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

Управление запасами и закупками

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

Рисунок 2.8 - 1С:Предприятие 8.3 - управление запасами и закупками

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

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

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

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

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

Управление складом

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

Рисунок 2.9 - 1С:Предприятие 8.3 - управление складом

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

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

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

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

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

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

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

Настройки РМК позволяют ограничить возможности кассира только допустимыми операциями в соответствии с принятой на предприятии технологией розничных продаж.

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

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

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

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

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

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

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

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

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

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

На основе пробитых в течение смены чеков ККМ при ее закрытии формируется "Отчет о розничных продажах", который является итоговым документом по смене. Итоги по видам оплат сохраняются на отдельной странице; количество проданного товара суммируется по номенклатуре и характеристике. Выданные подарки из корзины покупателя входят в товарную часть отчета, а выданные по отдельному списку записываются на отдельной странице. Такой подход позволяет автоматически формировать документ списания выданных рекламных подарков.

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

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

Возврат от розничного покупателя не в день покупки и возврат покупки мелким оптом производятся с помощью документа "Возврат товаров от покупателя".

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

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

Учет платежных средств

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

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

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

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

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

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

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

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

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

Система отчетности

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

Сервисные возможности 1С:Предприятие 8.3

Рисунок 2.10 - 1С:Предприятие 8.3 - обмен данными

Обмен данными

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

В конфигурации «Предприятие 8.3» поддерживается двусторонний обмен данными с конфигурациями 1С:Управление торговлей, редакция 11 и 1С:Бухгалтерия предприятия, редакции 2.0, 3.0.

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

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

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

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

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

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

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

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

Экранные формы

Интерфейс пользователя (Рисунок 2.11) теперь организован в разрезе бизнес-областей. На панели навигации разделы оснащены справочниками, документами и отчетами, которые к ним относятся

Рисунок 2.11

Далее подробно по разделам.

Раздел Нормативно-справочная информация

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

  • Справочник Банки; 
  • Классификатор Страны мира; 
  • Справочник Виды контактной информации; 
  • Адресный классификатор.

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

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

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

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

Организация склада теперь вовсе не является обязательной для использования в документах, за исключением Чека ККМ. Оформляя чек на рабочем месте кассира (РМК), значение Организации склада подставляется автоматически, и кассир не в праве его поменять. А любой другой документ может оформляться с указанием склада на любую организацию.

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

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

Рисунок 2.12

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

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

Рисунок 2.13

При помощи правил ценообразования поддерживаются разные схемы ценообразования в розничной сети: 

  • Централизованное (т.е. цены в магазинах устанавливаются в центральном офисе сети); 
  • Децентрализованное (цены устанавливаются в магазинах); 
  • Смешанное (цены рассчитываются в центральном офисе, а на отдельные ценовые группы товаров назначаются в магазинах).

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

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

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

Раздел Закупки и запасы

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

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

Значительно изменен подбор товаров в табличную часть документа (Рисунок 2.14). Теперь реализовано заполнение реквизитов документа по умолчанию единым образом.

Рисунок 2.14

Раздел Администрирование

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

Также добавлен справочник Подключаемое оборудование.

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

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

■ набор задач пользователя, которые он решает при помощи системы;

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

■ элементы управления системой;

■ навигация между блоками системы;

■ дизайн экранов программы;

■ отображаемая информация и форматы отображения;

■ устройства и технологии ввода данных;

■ диалоги, взаимодействие и транзакции между пользователем и компьютером;

■ обратная связь с пользователем.

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

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

При этом команда:

■ может быть отдана только пользователем, имеющим на это право;

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

Командный интерфейс - совокупность команд, доступных пользователю, при помощи которых он отдает приказание системе на выполнение действий.

Ко‏нфигуриро‏вание и настро‏йка АРМ менеджера

Начнем знакомство с программой «1С:Предприятие 8.3.2». Итак, из этой главы вы узнаете:

- какие режимы работы есть у программы «1С:Предприятие 8.3.2»;

- как запустить программу «1С:Предприятие 8.3.2» и как работать с ее интерфейсом;

- как отражена в программе «1С:Предприятие 8.3.2» структура торгового предприятия;

- как ввести информацию о контрагентах;

- как установить в программе «1С:Предприятие 8.3.2.. начальные сведения о вашем предприятии;

- как хранится информация в программе «1С:Предприятие 8.3.2..;

- как обрабатывается информация в программе «1С:Предприятие 8.3.2...

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

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

Если заглянуть в папку =>1С:Предприятие 8.3, которую вы можете найти в =>Главном меню системы Windows, то обнаружим, что про грамма «1С:Предприятие 8.3.2.. может быть запущена в четырех режимах: - =>1С:Предприятие;

- =>1С:Предприятие (Тонкий клиент);

- =>1С:Предприятие (Толстый клиент);

- =>Конфиrуратор.

Посмотрим, как запустить программу «1С:Предприятие 8.3.2» в режиме =>1С:Предприятие.

Нажмите кнопку =>Пуск в левом нижнем углу рабочего стола операционной системы Windows. Откроется =>Главное меню Windows. Выберите в меню строку =>1С:Предприятие 8.3. Откроется вложенное меню.

Выберите во вложенном меню строку =>1С Предприятие. На экране появится диалог =>Запуск 1С:Предприятия.

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

Нажмите кнопку Вертикальное меню. В левой части рабочего стола программы появится новая паиель инструментов.

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

Теперь давайте посмотрим, как можно настроить вертикальное меню.

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

- Кнопка nозволяет создать новое вложенное меню.

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

- Кнопка позволяет переименовать выбранный вами элемент меню.

- Кнопка удаляет выбранный элемент меню.

- Кнопка располагает элементы меню в алфавитном порядке, в каждом вложенном меню по отдельности.

- Кнопка [М] располагает элементы меню в обратном алфавитном порядке, в каждом вложенном меню по отдельности.

- Наконец, с помощью кнопки =>По умолчанию, расположенной в нижней части окна настройки, вы можете вернуть вертикаль ному меню первоначальный вид.

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

2.6 Организации, входящие в состав предприятия

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

Данные об организациях, входящих в состав вашего предприятия, хранятся в справочнике =>Организации. Забегая вперед, можно сказать, что справочники - один из основных способов хранения данных в программе «1С:Предприятие 8.3.2». Далее мы остано вимся на том, что такое справочники вообще и как в программе организована работа с ними. А сейчас создадим новый элемент справочника.

 Выберите команду меню =>Справочники • Предприятие • Орга низации. На экране появится окно справочника =>Организации

   • Нажмите кнопку или выберите команду меню =>Действия • =>Добавить. На экране появится окно создания нового элемента справочника.

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

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

• В поле =>Краткое наименование (по учредительным документам} ука жите краткое официальное наименование организации, в со ответствии с учредительными документами.

• В поле Поnное наименование (по учредительным документам) ука жите полное официальное наименование организации в со ответствии с учредительными документами.

• С помощью переключателя выберите, является новая орга низация юридическим лицом (Юр. лицо) или физическим лицом (Физ. лицо). >- Установите флажок Розничная торговля облагается ЕНВД в слу чае, если организация облагается Единым налогом на вмененный доход.

• В поле ИНН укажите идентификационный номер налогоплательщика, закрепленный за организацией.

• В поле ОГРН укажите основной государственный регистрационный номер организации.

• В поле КПП укажите код причины цостановки на учет, присвоенный организации налоговыми органами.

• В поле ОКПО укажите код общероссийского классификатора предприятий и организаций, присвоенный предприятию.

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

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

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

• В поле =>Кассир укажите фамилию, имя и отчество кассира ор ганизации. Это поле также может быть заполнено с исполь зованием справочника =>Физические лица. >- Нажмите кнопку =>ОК. Окно нового элемента будет закрыто, а в окне справочника =>Организации появится запись.

2.7 Магазины, склады и кассы торгового предприятия

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

Начнем с ввода информации о магазинах.

>- Выберите команду меню =>Справочники • Магазины • Магазины. На экране появится окно справочника =>Магазины

>- Выберите команду меню Действия • Добавить. На экране появится окно создания нового элемента справочника

>- В поле Наименование с использованием клавиатуры введите название магазина. Это поле обязательно для заполнения. Остальные поля могут быть заполнены позже по мере необходимости, однако рекомендуется сразу ввести как можно больше информации.

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

>- В поле Основная касса укажите кассу, в которую будут поступать денежные средства из центрального офиса.

>- В поле Основной договор эквайринга укажите договор, согласно которому банк обслуживает платежный карты в данном магазине.

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

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

>- В поле =>Минимальная цена номенкппуры укажите тип минимальных цен, ниже которых не может быть продан товар со скидкой.

>- В поле =>Сеrмент исключаемой из скидок номенклатуры укажите сегмент номенклатуры, на которую не распространяются предоставляемые в магазине скидки.

>- Нажмите кнопку ОК. Окно создания нового элемента будет закрыто, а запись о новом магазине появится в справочнике =>Маrазины. Перейдек вводу информации о складах.

>- Выберите команду меню =>Справочники • Маrазины • Скпады. На экране появится окно справочника =>Сипады

В левой части окна представлено дерево, в котором присут ствуют элементы Все смады, Центральный офис и группа элемен тов Магазины. Если установить курсор на элемент Все смады, то в правой части окна будет выведен список всех складов. При установке курсора на конкретный магазин в правой части окна будут выведены только склады выбранного магазина. Жирным шрифтом при этом выделен склад, указанный в поле Основной смад элемента справочника Магазины

>- Выберите команду меню Действия • Добавить. На экране появится окно Склады: Создание

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

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

>-В поле Наименование укажите название склада.

>-В поле Тип склада выберите один из четырех типов склада: Торговый зал, Складское помещение, Временное хранилище, Склад центрального офиса.

>-В поле Организация укажите название организации, владеющей складом.

>-В поле Магазин укажите магазин, к которому относится данный склад.

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

>-Выберите команду меню Справочники + Магазины + Кассы. На экране появится окно справочника Кассы

Отметим, что представлены все кассы, внесен ные в информационную базу. Жирным шрифтом выделены те кассы, которые указаны в поле =>Основная касса элемента справоч ника =>Магазины.

>- Выберите команду меню =>Действия • Добавить. На экране появится окно создания элемента справочника =>Кассы

В поле =>Наименование укажите название новой кассы.

В поле =>Тип кассы выберите тип кассы. Укажите, будет ли кас са являться =>Кассой центрального офиса, Операционной кассой или же =>Контрольно-кассовой машиной.

В поле =>Организация укажите организацию, которой принадлежит касса.

В поле =>Магазин укажите магазин, в котором установлена касса. Нажмите кнопку =>ОК. Окно создания элемента будет закрыто,
а запись о новой кассе появится в справочнике =>Кассы.

2.8 Сотрудники торrовоrо предприятия

И наконец, перейдем к вводу в программу информации о сотрудниках предприятия.

Выберите команду меню =>Справочники • Предприятие • Физичес кие лица. На экране появится окно справочника =>Физические лица
Данный справочник используется для хранения информации не только о сотрудниках, но и о других физических лицах, с которыми работает ваше предприятие. Например, можно хра нить контактную информацию деловых партнеров. Справочник =>Физические.дица имеет иерархическую структуру. Помимо обычных элементов в окне присутствуют группы элементов, отмеченные значком 11111 рядом с названием элемента.

Для создания новой группы следует использовать кнопку  Для навигации по группам справочника удобно использовать дерево, расположенное в левой части окна. Чтобы развернуть группу элементов, следует использовать значок·+, расположен ный рядом с наименованием группы. При этом изображение значка изменится: ecлvr группа не содержит подгрупп, плюс ис чезнет, если же в справочнике присутствуют группы более низ кого уровня, то вместо плюса появится минус. Если в правой части окна справочника следует щелкнуть мышью на наимено вании группы, то в левой части окна появится список элементов группы.
Выберите команду меню =>Действия • Добавить. На экране появится окно =>Личные данные физического лица.

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

В поле Дата рождения укажите дату рождения сотрудника. В поле Поn укажите пол сотрудника.

Установите флажок Является сотрудником, если физическое лицо является сотрудником предприятия.

Нажмите кнопку ОК. Окно Личные данные физического nица бу дет закрыто, а запись о новом сотруднике будет добавлена в справочник Физические лица.

2.9 Ввод сведений о контрагентах

Контрагентами в программе «1С:Предприятие 8.3.2» считаются:
- поставщики;
- оптовые покупатели;

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

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

- Выберите команду меню =>Справочники • Предприятие • Контр агенты. На экране появится окно справочника =>Контрагенты.

 Справочник =>Контрагенты имеет иерархическую структуру, как и справочник =>Физические лица. Это очень удобно, так как позволяет группировать элементы справочника по каким либо признакам. Например, на Рисунок 9.6 объединены в группы банки, маГазины, покупатели и поставщики. Такая группировка может облегчить жизнь во многих случаях, например при задании условий отбора для формирования отчетной информации.

Нажмите кнопку или выберите команду меню Действия • Добавить. Откроется окно создания элемента справочника Контрагенты .

В поле ввода =>Группа контрагентов укажите, к какой группе относится данный контрагент.

В поле ввода =>Kpaтttoe наименование укажите краткое наимено вание контрагента, которое будет использоваться при работе с информационной базой. Это поле обязательно для запол нения.

Приведем некоторые рекомендации, касающиеся наимено вания контрагента. Краткое наименование контрагента лучше начинать с названия, но не с аббревиатуры формы организации предприятия. Например, организации ЗАО «Стиль>> следует дать краткое наименование - =>Стиль. Если справочник объемный, что для торгового предприятия не редкость, то такое правило за дания краткого наименования в дальнейшем позволит быстро находить нужный элемент справочника по первым символам, который производится набором символов наименования на кла виатуре.
Заполните поля =>Полное наименование, ИНН, Юр-физ лицо, КПП, ОКПО, Банковские реквизиты в окне ввода нового элемента справочника

=>Контрагенты. ,.. В поле ввода =>Группа получателей скидки вы можете указать, к какой группе получателей скидки относится данный контр агент. Если данному контрагенту не планируется предостав ление скидки, оставьте поле =>Группа получателей скидки пустым.

>- В поле ввода =>Комментарий вы можете вписать краткий комментарий о данном контрагенте.

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

Нажмите кнопку =>Записать. Созданный элемент будет добавлен в справочник =>Контрагенты. Укажем контактную информацию контрагента.

В окне элемента справочника =>Контрагенты щелкните мышью на кнопке =>Адреса и телефоны. Появится окно для ввода контактной информации.

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

Для ввода адреса Щелкните мышью на кнопке Q поля вы бора =>Юридический адрес. Появится окно ввода юридического адреса.

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

=> Для указания телефона щелкните мышью на кнопке [J поля выбора =>Телефон. Откроется окно ввода телефона

=> Введите номер телефона с использованием клавиатуры и со храните телефон, нажав на кнопку ОК. Информация будет записана, а окно ввода телефона закроется.

=> В окне элемента справочника =>Контрагенты нажмите кнопку

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

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

Информация о товарах вводится с помощью четырех справочников:

=> Виды номенклатуры;

=> Номенклатура;

=> Номенклатурные группы;

=> Классификатор единиц измерения.

Начнем с заполнения справочника =>Виды номенклатуры. Функциональное назначение справочников =>Виды номенклатуры и Номенклатурные группы при кажущейся схожести совершенно разное. Справочник Виды номенклатуры используется при запол нении справочника Номенклатура. Для номенклатурной позиции можно указать только один вид номенклатуры. Справочник =>Номенклатурные группы предназначен для автоматизации учета то варов в разрезе складов. При этом для каждого склада можно указать несколько номенклатурных групп. Более подробное по яснение будет дано ниже, а пока познакомимся со справочником =>Виды номенклатуры. Справочник =>Виды номенклатуры используется для группировки товаров. Этот справочник используется при формировании отчетов с выводом укрупненной информации по видам номен клатуры, при заполщ:нии табличных частей документов в соответствии с принадлежиостью товаров к определенному виду номенклатуры и т.п.
Откроем окно справочника =>Виды номенклатуры и создадим новый элемент.

>- Выберите команду меню Справочники + Товары + Виды номенклатуры. На экране появится окно справочника Виды номенклатуры

Выберите команду меню Действия • Добавить. Откроется окно нового элемента справочника

  => В поле ввода Группа вида номенклатуры укажите группу, к ко торой относится данный вид номенклатуры. Это поле запол нять не обязательно.

=> В поле ввода =>Наименование укажите наименование вида номенклатуры.

=> Выберите положение переключатеяя =>Тип номенклатуры. Есть четыре варианта: =>Товар, Услуга, Набор-комплект, Подарочный сер тификат. Поясним назначение некоторых типов номенклатуры. =>Набор комплект - тип номенклатуры, предназначенный для удобно го оформления продажи комплектов, не требующих сборки и формируемых в момент продажи покупателю. =>Подарочный сертификат - тип номенклатуры, представляющий собой внутреннее платежное средство торговой компании.
=> Выберите положение переключатеяя =>Использование характеристик.
=> Нажмите кнопку ОК. Окно создания нового элемента закро- ется, информация о созданном вами виде номенклатуры бу дет записана в справочник =>Виды номенклатуры. Познакомимся со справочником =>Номенклатурные группы. Этот справочник применяется для автоматического распределения по ступающих товаров по складам или торговым залам магазина. При оформлении поступления товаров по ордерной схеме товары ав томатически будут распределены по складам, и.будут сформиро ваны приходные ордеры на товары отдельно по каждому складу.

Для работы описанного механизма следует заполнить спра вочник =>Номенклатурные групп·ы и внести изменения в справочник =>Склады. Рассмотрим добавление новой номенклатурной группы.

=> Выберите команду меню =>Справочники+ Товары+ Номенклатурныегруппы. На экране появится окно справочника Номенклатурные группы

 Выберите команду меню =>Действия • Добавить. Откроется окно нового элемента справочника =>Номенклатурные группы

В поле ввода =>Наименование укажите. наименование новой номенклатурной группы.

Нажмите кнопку ОК. Окно нового элемента закроется, ин формация о созданной номенклатурной группе будет записа на 1'1 справочник =>Номенклатурные группы. В дальнейшем вы сможете редактировать готовую номенкла турную группу, добавляя в нее товары. Для этого откройте номен клатурную группу, дважды щелкнув на ней мышью в справочнике =>Номенклатурные группы, а затем добавьте товары с помощью кноп- ки или команды меню табличной части =>Товары • Добавить. Для указания принадлежности номенклатурной группы к тому или иному складу обратимся к элементу справочника =>Склады. На вкладке =>Распределение поступления в таблич ной части укажите номенклатурные группы, к которым могут принадлежать товары, реализуемые в данном торговом зале. Для добавления новой строки табличной части используйте спец. кнопку или команду меню редактирования табличной частиНоменклатурные группы • Добавить.

Быстрая настройка справочника Склады может быть выпол нена с использованием обработки Настройка распределения това ров по складам и позволяет автоматически распределять номенклатурные группы товаров при поступлении и отгруз ке товаров. Окно обработки можно вызвать командой Сервис • Настройка учета • Настройка распределения товаров по складам.

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

2.11 Пользователь, интерфейс, команда

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

Набор команд интерактивной компьютерной программы обычно включает в себя несколько категорий команд:

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

■ команды, которые позволяют вызывать формы и перемещаться между ними, - например, вызов формы просмотра перечня товаров, вызов формы ввода нового документа;

■ команды, которые позволяют выполнять те или иные действия с обрабатываемыми данными, - например, изменение элемента справочника, построение отчета.

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

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

Таким образом, при разработке командного интерфейса необходимо решить две основные задачи:

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

■ предоставить возможность пользователю вызывать доступные команды.

Для начала давайте поговорим о том, какие команды бывают. Все команды «1С:Предприятия 8.2» можно разделить по источникам и по области видимости (Рисунок 2.19).

По источникам команды можно разделить на три группы:

■ системные команды;

■ стандартные команды объектов и расширений форм;

■ произвольные команды.

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

Эти объекты могут быть общие и подчиненные другим объектам конфигурации

Рисунок 2.15

2.11 Командный интерфейс системы

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

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

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

По области видимости команды делятся:

■ на глобальные;

■ локальные команды формы.

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

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

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

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

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

Как же «ужимается» командный интерфейс? Чтобы ответить на этот вопрос, давайте разберемся с тем, как система формирует командный интерфейс пользователя.

2.12 Структура командного интерфейса

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

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

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

2.13 Влияние подсистем

Почему же иерархия подсистем однозначно определяет структуру командного интерфейса? Да потому, что это логично.

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

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

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

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

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

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

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

Для пользователей подсистемы верхнего уровня иерархии представ-ляются как разделы глобального командного интерфейса. Команды выбора разделов размещаются в панели разделов основного окна приложения (Рисунок 2.13).

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

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

Например, для раздела Товарные запасы (соответствует подсистеме Товарные запасы) в командном интерфейсе созданы подразделы Характеристики и Цены (соответствуют подчиненным подсистемам), см. Рисунок 2.16.

Рисунок 2.16- Соответствие подсистем конфигурации и разделов командного интерфейса

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

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

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

Для наполнения рабочего стола командами используется редактор командного интерфейса рабочего стола. О нем мы поговорим в дальнейшем (см. раздел «Система настройки командного интерфейса»).

2.14 Формирование состава командного интерфейса

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

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

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

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

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

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

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

■ Исключение команд, относящихся к отключенным функциональным возможностям.

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

■ Предоставление пользователю возможности собственной настройки видимости команд.

Для решения этой задачи выполняется настройка видимости команд в разрезе пользователей прикладного решения.

Обеспечение доступности команд

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

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

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

Например, у роли Менеджер для подсистемы Закупки право Просмотр установлено. В командном интерфейсе доступна команда выбора соответствующего раздела и доступны команды этого раздела

Рисунок 2.17 - Право на просмотр подсистемы установлено

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

Рисунок 2.18 - Право на просмотр подсистемы не установлено

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

Оптимизация командного интерфейса

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

Доступность команд по функциональным опциям

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

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

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

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

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

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

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

Если константа имеет значение Истина, то команды для работы со справочником включены в командный интерфейс

ЕСЛИ же значение константы Ложь, то эти команды из командного интерфейса исключены

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

В общем случае формирование глобального командного интерфейса

выполняется в зависимости:

■ от структуры подсистем и их свойств Включать в командный интерфейс - определяют структуру командного интерфейса;

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

■ прав пользователя, определяющих состав доступных команд;

■ настройки пользовательской видимости команд по умолчанию (возможно, в разрезе ролей);

■ установленных значений функциональных опций;

■ настроек самого пользователя.

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

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

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

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

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

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

Системные команды

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

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

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

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

О пользовательской настройке видимости системных команд рассказано в разделе «Настройка области системных команд», стр. 119.

2.16 Состав разделов

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

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

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

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

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

ПРИМЕЧАНИЕ

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

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

Например, для подсистемы Финансы свойство Включать в командный интерфейс установлено. Для этой подсистемы сформирован раздел, и команды включены в командный интерфейс.

В командном интерфейсе раздел формируется для подсистем с установленным свойством «Включать в командный интерфейс»

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

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

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

Теперь мы можем начать решать поставленную задачу.

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

Рисунок 2.19

В результате будет добавлен объект конфигурации и откроется окно свойств этого объекта.

В группе свойств Основные представлены свойства:

■ Имя - определяет идентификатор объекта для доступа из встроенного языка;

■ Синоним - определяет представление объекта в интерфейсе; оставим автоматически сформированный синоним.

Свойство Включать в командный интерфейс оставим установленным - нам необходимо формировать раздел в командном интерфейсе.

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

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

2.17 Стандартные команды

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

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

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

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

Например, в демонстрационной базе справочник Товары включен в подсистемы Предприятие, Закупки, Продажи и Товарные запасы

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

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

Например, объект-справочник Товары предоставляет команды открытия списка элементов - Товары, создания нового элемента - Товар и создания новой группы - Товар: создать группу, а объект- отчет Остатки товаров только команду открытия формы отчета - Остатки товаров

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

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

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

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

При установленном свойстве команды объекта доступны для включения в командный интерфейс.

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

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

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

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

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

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

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

Как и для подсистемы, доступность для пользователя объектов и их стандартных команд определяется значением прав, установленных у роли пользователя для этих объектов. Проконтролируем значения права (на примере справочника Товары) у роли Менеджер - права должны быть установлены.

Контроль прав на справочник Виды цен и регистр сведений Цены товаров выполняем аналогично справочнику Товары.

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

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

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

■ создать иерархию подсистем;

■ при необходимости установить свойство подсистемы Включать в командный интерфейс;

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

я определить состав объектов каждой подсистемы;

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

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

2.18 Редактирование командного интерфейса

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

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

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

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

При редактировании размещения и видимости команд можно выделить три уровня настройки:

■ Не настраиваем - система автоматически разместит команды в командном интерфейсе и настроит их видимость.

■ Настраивается разработчиком - в режиме конфигурирования настраивается размещение и видимость команд в разрезе ролей.

Рисунок 2.20

2.19 Редактирование командного интерфейса

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

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

2.20 Автоматическое размещение и видимость команд

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

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

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

Например, новый вид цен можно создать из формы списка справочника Виды цен

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

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

Еще одной командой, видимость которой стоит настроить, является команда Товары, открывающая список товаров для просмотра.

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

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

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

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

Категории и группы команд

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

По зависимости от данных команды делятся:

■ на независимые;

■ параметризуемые.

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

По назначению команды делятся:

■ на навигационные;

■ команды действия.

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

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

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

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

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

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

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

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

■ панель навигации - независимые навигационные команды;

■ панель действий - независимые команды действий;

■ панель навигации формы - параметризуемые навигационные команды;

■ командная панель формы - параметризуемые команды действий.

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

Группа определяет «вес» команды - ее важность для задач, решаемых пользователем.

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

2.21 Поддержка основных бизнес процессов ресурсами информационной системы

Разработанная система позволяет автоматизировать работу менеджера по продажам.

Основные действия, которые пользователь «Администратор» должен выполнить при работе с программой, приведены в таблице 3.5.1

Таблица 3.5.1– Руководство пользователя «Администратор» по эксплуатации программы

Операция

Действия пользователя

Действия

программы

1

2

3

Вход в

программу

Запустить программу в режиме Конфигуратор. Выбрать логин Администратор и ввести пароль при запуске программы и нажать на кнопку «ОК».

Если пароль введен верно, тогда - Конфигуратор под правами пользователя. Если не верно, выдается сообщение об ошибке.

Распределение прав доступа

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

Сохранение измененных данных в таблице «Пользователи».

Выход из программы

Нажать кнопку “ Выход ” (или в меню «Файл» выбрать пункт «Выход»).

Закрытие программы.

Основные действия, которые пользователь «Менеджер по продажам» должен выполнить при работе с программой, приведены в таблице 3.5.2.

Таблица 3.5.2 – Руководство пользователя «Менеджер по продажам» по эксплуатации программы

Операция

Действия пользователя

Действия программы

1

2

3

Вход в программу

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

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

Заполнение справочника «Единицы измерения», «Номенклатура», «Контрагенты»

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

На экране отобразиться выбранный справочник.

Сохранение измененных данных в соответствующих таблицах БД.

Ввод сведений о приходе товаров

В открывшемся окне программы выбрать пункт меню «Документы» - «Поступление товаров». Для введения нового документа о поступлении нажать кнопку «Добавить» (в открывшемся окне ввода документа внести необходимые данные: поставщика, список товаров), для просмотра уже введенных поступлений нажать кнопку «Изменить текущий элемент», для удаления – «Удалить».

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

Сохранение измененных данных в соот таблице «Движение товара».

Ввод сведений о реализации товаров

В открывшемся окне программы выбрать пункт меню «Документы» - «Реализация товаров». Для введения нового документа о реализации нажать кнопку «Добавить» (в открывшемся окне ввода документа внести необходимые данные: покупателя (по необходимости), список товаров, сумму, которую получили от покупателя (сдача посчитается автоматически), затем нажать на кнопку «Чек» для распечатки документа о реализации), для просмотра уже введенных реализаций нажать кнопку «Изменить текущий элемент», для удаления – «Удалить».

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

Сохранение измененных данных в соот таблице «Движение товара».

Ввод «Заявки от покупателя»

В открывшемся окне программы выбрать пункт меню «Документы» - «Заявка от покупателя». Для введения новой заявки нажать кнопку «Добавить» (в открывшемся окне ввода заявки внести необходимые данные: поставщика, список товаров, затем нажать на кнопку «Печать заявки» для распечатки заявки), для просмотра уже введенных заявок нажать кнопку «Изменить текущий элемент», для удаления – «Удалить».

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

Сохранение измененных данных в соот таблице «Заявки».

Выход из программы

Нажать кнопку “ Выход ” (или в меню «Файл» выбрать пункт «Выход»).

Закрытие программы.

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

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

Рисунок 2.21 – Окно «Конфигуратора»

Создание справочников происходит в ветке «Справочники» по кнопке «Добавить». Вводим необходимые параметры, реквизиты (реквизит код и наименование по умолчанию присутствуют во всех справочниках). Для примера на рисунке 3.22 представлено создание справочника «Единицы измерения».

Рисунок 2.22 – Создание справочника «Единицы измерения»

Создание документов происходит в ветке «Документы». Параметры номер документа и дата документа присутствуют по умолчанию. На рисунке 3.23 представлены основные параметры необходимые для создания документов.

Рисунок 2.23 – Параметры документа «Поступление товара»

Для учета движения товаров необходимо создать регистр накопления. Регистр накопления создается в ветке «Регистры накопления» по кнопке Добавить. На рисунке 3.24 представлены основные параметры, которые необходимо ввести для создания регистра.

Рисунок 2.24 – Параметры регистра накопления «Оборот товара»

Заключение

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

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

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

2. Разработанная информационная система позволяет достигнуть следующих эффектов:

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

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

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

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

  1. ГОСТ 2.105-95 ЕСКД. Общие требования к текстовым документам.
  2. ГОСТ 19.103-33 ЕСПД. Обозначение программ и программных документов.
  3. ГОСТ 19.701-90 ЕСПД. Схемы алгоритмов, программ, данных и систем.
  4. Агальцов В. П. Базы данных. - М.: Мир, 2002.
  5. Архангельский П.А. Программирование в Delphi 5. - M.: Наука, 2000.
  6. Бобровский С.И. Delphi 5. – М.: Питер, 2002.
  7. Гаевский A. Разработка программных приложений на Delphi 6. – М.: Киев, 2000.
  8. Гагарина Л.Г., Киселёв Д.В. Разработка и эксплуатация автоматизированных информационных систем. – М.: ИНФРА-М. 2007.
  9. Горев А., Макащарипов С., Владимиров Ю. Microsoft SQL. Server 6.5 для профессионалов. - СПб.: Питер, 1998.
  10. Дарахвелидзе П.Г. Программирование в DELPHI 5. - СПб.: Бином, 2000.
  11. Евдокимова В.В. Информационные системы в экономике. – СПб.: Питер 2007.
  12. Емельянова Н.З., Партыка Т.Л., Попов И.И. Основы построения автоматизированных информационных систем. – М.: ИНФРА-М. 2005.
  13. Зуев В. A. Turbo Pascal 6.0, 7.0. - М.: Москва, 1998.
  14. Карпова Т.С. Базы данных: модели, разработка. - СПб.: Питер, 2001.
  15. Коноплева Е.А., Хохлова О.А., Денисов А.В. Информационные технологии. – М.: Проспект. 2007.
  16. Немнюгин С.А. Программирование. – М.: Питер, 2000.
  17. Петров В.Н. Информационные системы. – СПб.: Питер, 2002.
  18. Романова М.В. Управление проектами. – М.: ИНФРА-М. 2007.
  19. Советов Б.Я., Цехановский В.В.- Базы данных. - М.: Высшая школа. 2005.
  20. Тиори Т., Фрай Дж. Проектирование структур баз данных: В 2-х кн. Пер. с англ. - М.: Мир, 1985.
  21. Угринович Н. Информатика и информационные технологии. Набор базовых знаний. - М.: Радио и связь, 2000.
  22. Харрингтон Дж. Проектирование реляционных баз данных. - М.:
  23. Ломакин В.К. Мировая экономика: Учебник для вузов. – М.: Финансы, ЮНИТИ, 2008.
  24. http://v8.1c.ru. 1С:Предприятие 8 [Электронный курс]

Приложение А - Структура дорабатываемой информационной системы

1С:Предприятие 8.3 - управление запасами и закупками

1С:Предприятие 8.3 - управление складом

1С:Предприятие 8.3 - обмен данными

Приложение Б - Часть программного кода дорабатываемой системы системы (на примере модулей двух документов)

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

// ОБРАБОТЧИКИ СОБЫТИЙ

// Процедура - обработчик события "ОбработкаЗаполнения".

//

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

ИнициализироватьДокумент(ДанныеЗаполнения);

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

// Процедура - обработчик события "ОбработкаПроведения".

//

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

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);

Документы.РеализацияУслуг.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

ПродажиСервер.ОтразитьПродажи(ДополнительныеСвойства, Движения, Отказ);

ПродажиСервер.ОтразитьПродажиПоДисконтнымКартам(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиНаСкладах(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиОрганизаций(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиКОтгрузке(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийныхНомеров(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийУслуг(ДополнительныеСвойства, Движения, Отказ);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

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

МассивНепроверяемыхРеквизитов = Новый Массив;

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,МассивНепроверяемыхРеквизитов,Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект),Отказ);

ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);

МаркетинговыеАкцииСервер.ПроверитьЦеныСертификатов(

ЭтотОбъект,

"Услуги",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьЗаполнениеТабличнойЧастиСерийныеНомера(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьДвиженияСерийныхНомеров(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьОкончаниеАбсолютныхСроковДействияСертификатов(

ЭтотОбъект,

"Услуги",

Отказ,

);

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

// Процедура - обработчик события "ОбработкаУдаленияПроведения".

//

Процедура ОбработкаУдаленияПроведения(Отказ)

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

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

// Процедура - обработчик события "ПередЗаписью".

//

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Если ОбменДанными.Загрузка Тогда

Возврат;

КонецЕсли;

Справочники.СерийныеНомера.ОчиститьВДокументеНеиспользуемыеСерийныеНомера(Услуги, СерийныеНомера);

ОбщегоНазначенияРТСервер.УдалитьНеиспользуемыеСтрокиСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект));

ПроведениеСервер.УстановитьРежимПроведения(Проведен, РежимЗаписи, РежимПроведения);

ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());

ДополнительныеСвойства.Вставить("РежимЗаписи", РежимЗаписи);

ОбщегоНазначенияРТ.УстановитьНовоеЗначениеРеквизита(

ЭтотОбъект,

ОбработкаТабличнойЧастиУслугиКлиентСервер.ПолучитьСуммуДокумента(Услуги, ЦенаВключаетНДС),

"СуммаДокумента");

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

// Процедура - обработчик события "ПриКопировании".

//

Процедура ПриКопировании(ОбъектКопирования)

СкидкиРассчитаны = Ложь;

СкидкиНаценкиСервер.ОтменитьСкидки(ЭтотОбъект, "Услуги");

Серии.Очистить();

ИнициализироватьДокумент();

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

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

// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ

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

// Инициализация и заполнение

// Инициализирует документ

//

Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)

Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда

ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);

Если ДанныеЗаполнения.Свойство("Магазин")

И НЕ ЗначениеЗаполнено(Магазин) Тогда

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(ДанныеЗаполнения.Магазин,,Склад, Ответственный);

КонецЕсли;

Если ДанныеЗаполнения.Свойство("Организация")

И НЕ ЗначениеЗаполнено(Организация) Тогда

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(ДанныеЗаполнения.Организация,,БанковскийСчетОрганизации);

КонецЕсли;

КонецЕсли;

Ответственный = Пользователи.ТекущийПользователь();

Магазин = ЗначениеНастроекПовтИсп.ПолучитьМагазинПоУмолчанию(Магазин);

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(Магазин,,Склад, Ответственный);

Если ЗначениеЗаполнено(Склад) Тогда

Организация = Склад.Организация;

КонецЕсли;

Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация,Ответственный);

Контрагент = ЗначениеНастроекПовтИсп.ПолучитьПокупателяПоУмолчанию(Контрагент, Ответственный);

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(Организация,,БанковскийСчетОрганизации);

Продавец = ЗначениеНастроекПовтИсп.ПолучитьПродавцаПоУмолчанию(Продавец, Ответственный);

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

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

// Прочее

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

//

Процедура СформироватьСписокРегистровДляКонтроля()

Массив = Новый Массив;

// При проведении выполняется контроль превышения остатков на складах

Если ДополнительныеСвойства.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда

Массив.Добавить(Движения.УслугиНаСкладах);

Массив.Добавить(Движения.ДвиженияСерийныхНомеров);

КонецЕсли;

ДополнительныеСвойства.ДляПроведения.Вставить("РегистрыДляКонтроля", Массив);

ДополнительныеСвойства.ДляПроведения.Вставить("ПопыткиПродажПревышающихОстаток");

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

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

// ОБРАБОТЧИКИ СОБЫТИЙ

// Процедура - обработчик события "ОбработкаЗаполнения".

//

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

ИнициализироватьДокумент(ДанныеЗаполнения);

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

// Процедура - обработчик события "ОбработкаПроведения".

//

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

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);

Документы.РеализацияУслуг.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

ПродажиСервер.ОтразитьПродажи(ДополнительныеСвойства, Движения, Отказ);

ПродажиСервер.ОтразитьПродажиПоДисконтнымКартам(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиНаСкладах(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиОрганизаций(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиКОтгрузке(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийныхНомеров(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийУслуг(ДополнительныеСвойства, Движения, Отказ);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

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

МассивНепроверяемыхРеквизитов = Новый Массив;

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,МассивНепроверяемыхРеквизитов,Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект),Отказ);

ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);

МаркетинговыеАкцииСервер.ПроверитьЦеныСертификатов(

ЭтотОбъект,

"Услуги",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьЗаполнениеТабличнойЧастиСерийныеНомера(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьДвиженияСерийныхНомеров(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьОкончаниеАбсолютныхСроковДействияСертификатов(

ЭтотОбъект,

"Услуги",

Отказ,

);

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

// Процедура - обработчик события "ОбработкаУдаленияПроведения".

//

Процедура ОбработкаУдаленияПроведения(Отказ)

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

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

// Процедура - обработчик события "ПередЗаписью".

//

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Если ОбменДанными.Загрузка Тогда

Возврат;

КонецЕсли;

Справочники.СерийныеНомера.ОчиститьВДокументеНеиспользуемыеСерийныеНомера(Услуги, СерийныеНомера);

ОбщегоНазначенияРТСервер.УдалитьНеиспользуемыеСтрокиСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект));

ПроведениеСервер.УстановитьРежимПроведения(Проведен, РежимЗаписи, РежимПроведения);

ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());

ДополнительныеСвойства.Вставить("РежимЗаписи", РежимЗаписи);

ОбщегоНазначенияРТ.УстановитьНовоеЗначениеРеквизита(

ЭтотОбъект,

ОбработкаТабличнойЧастиУслугиКлиентСервер.ПолучитьСуммуДокумента(Услуги, ЦенаВключаетНДС),

"СуммаДокумента");

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

// Процедура - обработчик события "ПриКопировании".

//

Процедура ПриКопировании(ОбъектКопирования)

СкидкиРассчитаны = Ложь;

СкидкиНаценкиСервер.ОтменитьСкидки(ЭтотОбъект, "Услуги");

Серии.Очистить();

ИнициализироватьДокумент();

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

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

// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ

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

// Инициализация и заполнение

// Инициализирует документ

//

Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)

Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда

ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);

Если ДанныеЗаполнения.Свойство("Магазин")

И НЕ ЗначениеЗаполнено(Магазин) Тогда

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(ДанныеЗаполнения.Магазин,,Склад, Ответственный);

КонецЕсли;

Если ДанныеЗаполнения.Свойство("Организация")

И НЕ ЗначениеЗаполнено(Организация) Тогда

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(ДанныеЗаполнения.Организация,,БанковскийСчетОрганизации);

КонецЕсли;

КонецЕсли;

Ответственный = Пользователи.ТекущийПользователь();

Магазин = ЗначениеНастроекПовтИсп.ПолучитьМагазинПоУмолчанию(Магазин);

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(Магазин,,Склад, Ответственный);

Если ЗначениеЗаполнено(Склад) Тогда

Организация = Склад.Организация;

КонецЕсли;

Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация,Ответственный);

Контрагент = ЗначениеНастроекПовтИсп.ПолучитьПокупателяПоУмолчанию(Контрагент, Ответственный);

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(Организация,,БанковскийСчетОрганизации);

Продавец = ЗначениеНастроекПовтИсп.ПолучитьПродавцаПоУмолчанию(Продавец, Ответственный);

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

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

// Прочее

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

//

Процедура СформироватьСписокРегистровДляКонтроля()

Массив = Новый Массив;

// При проведении выполняется контроль превышения остатков на складах

Если ДополнительныеСвойства.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда

Массив.Добавить(Движения.УслугиНаСкладах);

Массив.Добавить(Движения.ДвиженияСерийныхНомеров);

КонецЕсли;

ДополнительныеСвойства.ДляПроведения.Вставить("РегистрыДляКонтроля", Массив);

ДополнительныеСвойства.ДляПроведения.Вставить("ПопыткиПродажПревышающихОстаток");

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

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

// ОБРАБОТЧИКИ СОБЫТИЙ

// Процедура - обработчик события "ОбработкаЗаполнения".

//

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

ИнициализироватьДокумент(ДанныеЗаполнения);

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

// Процедура - обработчик события "ОбработкаПроведения".

//

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

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);

Документы.РеализацияУслуг.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

ПродажиСервер.ОтразитьПродажи(ДополнительныеСвойства, Движения, Отказ);

ПродажиСервер.ОтразитьПродажиПоДисконтнымКартам(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиНаСкладах(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиОрганизаций(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиКОтгрузке(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийныхНомеров(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийУслуг(ДополнительныеСвойства, Движения, Отказ);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

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

МассивНепроверяемыхРеквизитов = Новый Массив;

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,МассивНепроверяемыхРеквизитов,Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект),Отказ);

ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);

МаркетинговыеАкцииСервер.ПроверитьЦеныСертификатов(

ЭтотОбъект,

"Услуги",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьЗаполнениеТабличнойЧастиСерийныеНомера(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьДвиженияСерийныхНомеров(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьОкончаниеАбсолютныхСроковДействияСертификатов(

ЭтотОбъект,

"Услуги",

Отказ,

);

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

// Процедура - обработчик события "ОбработкаУдаленияПроведения".

//

Процедура ОбработкаУдаленияПроведения(Отказ)

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

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

// Процедура - обработчик события "ПередЗаписью".

//

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Если ОбменДанными.Загрузка Тогда

Возврат;

КонецЕсли;

Справочники.СерийныеНомера.ОчиститьВДокументеНеиспользуемыеСерийныеНомера(Услуги, СерийныеНомера);

ОбщегоНазначенияРТСервер.УдалитьНеиспользуемыеСтрокиСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект));

ПроведениеСервер.УстановитьРежимПроведения(Проведен, РежимЗаписи, РежимПроведения);

ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());

ДополнительныеСвойства.Вставить("РежимЗаписи", РежимЗаписи);

ОбщегоНазначенияРТ.УстановитьНовоеЗначениеРеквизита(

ЭтотОбъект,

ОбработкаТабличнойЧастиУслугиКлиентСервер.ПолучитьСуммуДокумента(Услуги, ЦенаВключаетНДС),

"СуммаДокумента");

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

// Процедура - обработчик события "ПриКопировании".

//

Процедура ПриКопировании(ОбъектКопирования)

СкидкиРассчитаны = Ложь;

СкидкиНаценкиСервер.ОтменитьСкидки(ЭтотОбъект, "Услуги");

Серии.Очистить();

ИнициализироватьДокумент();

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

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

// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ

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

// Инициализация и заполнение

// Инициализирует документ

//

Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)

Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда

ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);

Если ДанныеЗаполнения.Свойство("Магазин")

И НЕ ЗначениеЗаполнено(Магазин) Тогда

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(ДанныеЗаполнения.Магазин,,Склад, Ответственный);

КонецЕсли;

Если ДанныеЗаполнения.Свойство("Организация")

И НЕ ЗначениеЗаполнено(Организация) Тогда

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(ДанныеЗаполнения.Организация,,БанковскийСчетОрганизации);

КонецЕсли;

КонецЕсли;

Ответственный = Пользователи.ТекущийПользователь();

Магазин = ЗначениеНастроекПовтИсп.ПолучитьМагазинПоУмолчанию(Магазин);

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(Магазин,,Склад, Ответственный);

Если ЗначениеЗаполнено(Склад) Тогда

Организация = Склад.Организация;

КонецЕсли;

Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация,Ответственный);

Контрагент = ЗначениеНастроекПовтИсп.ПолучитьПокупателяПоУмолчанию(Контрагент, Ответственный);

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(Организация,,БанковскийСчетОрганизации);

Продавец = ЗначениеНастроекПовтИсп.ПолучитьПродавцаПоУмолчанию(Продавец, Ответственный);

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

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

// Прочее

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

//

Процедура СформироватьСписокРегистровДляКонтроля()

Массив = Новый Массив;

// При проведении выполняется контроль превышения остатков на складах

Если ДополнительныеСвойства.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда

Массив.Добавить(Движения.УслугиНаСкладах);

Массив.Добавить(Движения.ДвиженияСерийныхНомеров);

КонецЕсли;

ДополнительныеСвойства.ДляПроведения.Вставить("РегистрыДляКонтроля", Массив);

ДополнительныеСвойства.ДляПроведения.Вставить("ПопыткиПродажПревышающихОстаток");

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

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

// ОБРАБОТЧИКИ СОБЫТИЙ

// Процедура - обработчик события "ОбработкаЗаполнения".

//

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

ИнициализироватьДокумент(ДанныеЗаполнения);

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

// Процедура - обработчик события "ОбработкаПроведения".

//

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

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);

Документы.РеализацияУслуг.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

ПродажиСервер.ОтразитьПродажи(ДополнительныеСвойства, Движения, Отказ);

ПродажиСервер.ОтразитьПродажиПоДисконтнымКартам(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиНаСкладах(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиОрганизаций(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиКОтгрузке(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийныхНомеров(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийУслуг(ДополнительныеСвойства, Движения, Отказ);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

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

МассивНепроверяемыхРеквизитов = Новый Массив;

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,МассивНепроверяемыхРеквизитов,Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект),Отказ);

ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);

МаркетинговыеАкцииСервер.ПроверитьЦеныСертификатов(

ЭтотОбъект,

"Услуги",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьЗаполнениеТабличнойЧастиСерийныеНомера(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьДвиженияСерийныхНомеров(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьОкончаниеАбсолютныхСроковДействияСертификатов(

ЭтотОбъект,

"Услуги",

Отказ,

);

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

// Процедура - обработчик события "ОбработкаУдаленияПроведения".

//

Процедура ОбработкаУдаленияПроведения(Отказ)

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

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

// Процедура - обработчик события "ПередЗаписью".

//

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Если ОбменДанными.Загрузка Тогда

Возврат;

КонецЕсли;

Справочники.СерийныеНомера.ОчиститьВДокументеНеиспользуемыеСерийныеНомера(Услуги, СерийныеНомера);

ОбщегоНазначенияРТСервер.УдалитьНеиспользуемыеСтрокиСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект));

ПроведениеСервер.УстановитьРежимПроведения(Проведен, РежимЗаписи, РежимПроведения);

ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());

ДополнительныеСвойства.Вставить("РежимЗаписи", РежимЗаписи);

ОбщегоНазначенияРТ.УстановитьНовоеЗначениеРеквизита(

ЭтотОбъект,

ОбработкаТабличнойЧастиУслугиКлиентСервер.ПолучитьСуммуДокумента(Услуги, ЦенаВключаетНДС),

"СуммаДокумента");

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

// Процедура - обработчик события "ПриКопировании".

//

Процедура ПриКопировании(ОбъектКопирования)

СкидкиРассчитаны = Ложь;

СкидкиНаценкиСервер.ОтменитьСкидки(ЭтотОбъект, "Услуги");

Серии.Очистить();

ИнициализироватьДокумент();

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

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

// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ

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

// Инициализация и заполнение

// Инициализирует документ

//

Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)

Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда

ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);

Если ДанныеЗаполнения.Свойство("Магазин")

И НЕ ЗначениеЗаполнено(Магазин) Тогда

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(ДанныеЗаполнения.Магазин,,Склад, Ответственный);

КонецЕсли;

Если ДанныеЗаполнения.Свойство("Организация")

И НЕ ЗначениеЗаполнено(Организация) Тогда

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(ДанныеЗаполнения.Организация,,БанковскийСчетОрганизации);

КонецЕсли;

КонецЕсли;

Ответственный = Пользователи.ТекущийПользователь();

Магазин = ЗначениеНастроекПовтИсп.ПолучитьМагазинПоУмолчанию(Магазин);

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(Магазин,,Склад, Ответственный);

Если ЗначениеЗаполнено(Склад) Тогда

Организация = Склад.Организация;

КонецЕсли;

Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация,Ответственный);

Контрагент = ЗначениеНастроекПовтИсп.ПолучитьПокупателяПоУмолчанию(Контрагент, Ответственный);

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(Организация,,БанковскийСчетОрганизации);

Продавец = ЗначениеНастроекПовтИсп.ПолучитьПродавцаПоУмолчанию(Продавец, Ответственный);

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

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

// Прочее

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

//

Процедура СформироватьСписокРегистровДляКонтроля()

Массив = Новый Массив;

// При проведении выполняется контроль превышения остатков на складах

Если ДополнительныеСвойства.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда

Массив.Добавить(Движения.УслугиНаСкладах);

Массив.Добавить(Движения.ДвиженияСерийныхНомеров);

КонецЕсли;

ДополнительныеСвойства.ДляПроведения.Вставить("РегистрыДляКонтроля", Массив);

ДополнительныеСвойства.ДляПроведения.Вставить("ПопыткиПродажПревышающихОстаток");

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

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

// ОБРАБОТЧИКИ СОБЫТИЙ

// Процедура - обработчик события "ОбработкаЗаполнения".

//

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

ИнициализироватьДокумент(ДанныеЗаполнения);

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

// Процедура - обработчик события "ОбработкаПроведения".

//

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

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);

Документы.РеализацияУслуг.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

ПродажиСервер.ОтразитьПродажи(ДополнительныеСвойства, Движения, Отказ);

ПродажиСервер.ОтразитьПродажиПоДисконтнымКартам(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиНаСкладах(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиОрганизаций(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиКОтгрузке(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийныхНомеров(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийУслуг(ДополнительныеСвойства, Движения, Отказ);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

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

МассивНепроверяемыхРеквизитов = Новый Массив;

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,МассивНепроверяемыхРеквизитов,Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект),Отказ);

ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);

МаркетинговыеАкцииСервер.ПроверитьЦеныСертификатов(

ЭтотОбъект,

"Услуги",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьЗаполнениеТабличнойЧастиСерийныеНомера(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьДвиженияСерийныхНомеров(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьОкончаниеАбсолютныхСроковДействияСертификатов(

ЭтотОбъект,

"Услуги",

Отказ,

);

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

// Процедура - обработчик события "ОбработкаУдаленияПроведения".

//

Процедура ОбработкаУдаленияПроведения(Отказ)

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

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

// Процедура - обработчик события "ПередЗаписью".

//

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Если ОбменДанными.Загрузка Тогда

Возврат;

КонецЕсли;

Справочники.СерийныеНомера.ОчиститьВДокументеНеиспользуемыеСерийныеНомера(Услуги, СерийныеНомера);

ОбщегоНазначенияРТСервер.УдалитьНеиспользуемыеСтрокиСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект));

ПроведениеСервер.УстановитьРежимПроведения(Проведен, РежимЗаписи, РежимПроведения);

ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());

ДополнительныеСвойства.Вставить("РежимЗаписи", РежимЗаписи);

ОбщегоНазначенияРТ.УстановитьНовоеЗначениеРеквизита(

ЭтотОбъект,

ОбработкаТабличнойЧастиУслугиКлиентСервер.ПолучитьСуммуДокумента(Услуги, ЦенаВключаетНДС),

"СуммаДокумента");

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

// Процедура - обработчик события "ПриКопировании".

//

Процедура ПриКопировании(ОбъектКопирования)

СкидкиРассчитаны = Ложь;

СкидкиНаценкиСервер.ОтменитьСкидки(ЭтотОбъект, "Услуги");

Серии.Очистить();

ИнициализироватьДокумент();

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

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

// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ

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

// Инициализация и заполнение

// Инициализирует документ

//

Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)

Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда

ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);

Если ДанныеЗаполнения.Свойство("Магазин")

И НЕ ЗначениеЗаполнено(Магазин) Тогда

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(ДанныеЗаполнения.Магазин,,Склад, Ответственный);

КонецЕсли;

Если ДанныеЗаполнения.Свойство("Организация")

И НЕ ЗначениеЗаполнено(Организация) Тогда

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(ДанныеЗаполнения.Организация,,БанковскийСчетОрганизации);

КонецЕсли;

КонецЕсли;

Ответственный = Пользователи.ТекущийПользователь();

Магазин = ЗначениеНастроекПовтИсп.ПолучитьМагазинПоУмолчанию(Магазин);

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(Магазин,,Склад, Ответственный);

Если ЗначениеЗаполнено(Склад) Тогда

Организация = Склад.Организация;

КонецЕсли;

Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация,Ответственный);

Контрагент = ЗначениеНастроекПовтИсп.ПолучитьПокупателяПоУмолчанию(Контрагент, Ответственный);

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(Организация,,БанковскийСчетОрганизации);

Продавец = ЗначениеНастроекПовтИсп.ПолучитьПродавцаПоУмолчанию(Продавец, Ответственный);

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

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

// Прочее

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

//

Процедура СформироватьСписокРегистровДляКонтроля()

Массив = Новый Массив;

// При проведении выполняется контроль превышения остатков на складах

Если ДополнительныеСвойства.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда

Массив.Добавить(Движения.УслугиНаСкладах);

Массив.Добавить(Движения.ДвиженияСерийныхНомеров);

КонецЕсли;

ДополнительныеСвойства.ДляПроведения.Вставить("РегистрыДляКонтроля", Массив);

ДополнительныеСвойства.ДляПроведения.Вставить("ПопыткиПродажПревышающихОстаток");

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

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

// ОБРАБОТЧИКИ СОБЫТИЙ

// Процедура - обработчик события "ОбработкаЗаполнения".

//

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

ИнициализироватьДокумент(ДанныеЗаполнения);

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

// Процедура - обработчик события "ОбработкаПроведения".

//

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

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);

Документы.РеализацияУслуг.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

ПродажиСервер.ОтразитьПродажи(ДополнительныеСвойства, Движения, Отказ);

ПродажиСервер.ОтразитьПродажиПоДисконтнымКартам(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиНаСкладах(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиОрганизаций(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиКОтгрузке(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийныхНомеров(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийУслуг(ДополнительныеСвойства, Движения, Отказ);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

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

МассивНепроверяемыхРеквизитов = Новый Массив;

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,МассивНепроверяемыхРеквизитов,Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект),Отказ);

ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);

МаркетинговыеАкцииСервер.ПроверитьЦеныСертификатов(

ЭтотОбъект,

"Услуги",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьЗаполнениеТабличнойЧастиСерийныеНомера(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьДвиженияСерийныхНомеров(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьОкончаниеАбсолютныхСроковДействияСертификатов(

ЭтотОбъект,

"Услуги",

Отказ,

);

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

// Процедура - обработчик события "ОбработкаУдаленияПроведения".

//

Процедура ОбработкаУдаленияПроведения(Отказ)

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

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

// Процедура - обработчик события "ПередЗаписью".

//

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Если ОбменДанными.Загрузка Тогда

Возврат;

КонецЕсли;

Справочники.СерийныеНомера.ОчиститьВДокументеНеиспользуемыеСерийныеНомера(Услуги, СерийныеНомера);

ОбщегоНазначенияРТСервер.УдалитьНеиспользуемыеСтрокиСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект));

ПроведениеСервер.УстановитьРежимПроведения(Проведен, РежимЗаписи, РежимПроведения);

ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());

ДополнительныеСвойства.Вставить("РежимЗаписи", РежимЗаписи);

ОбщегоНазначенияРТ.УстановитьНовоеЗначениеРеквизита(

ЭтотОбъект,

ОбработкаТабличнойЧастиУслугиКлиентСервер.ПолучитьСуммуДокумента(Услуги, ЦенаВключаетНДС),

"СуммаДокумента");

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

// Процедура - обработчик события "ПриКопировании".

//

Процедура ПриКопировании(ОбъектКопирования)

СкидкиРассчитаны = Ложь;

СкидкиНаценкиСервер.ОтменитьСкидки(ЭтотОбъект, "Услуги");

Серии.Очистить();

ИнициализироватьДокумент();

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

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

// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ

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

// Инициализация и заполнение

// Инициализирует документ

//

Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)

Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда

ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);

Если ДанныеЗаполнения.Свойство("Магазин")

И НЕ ЗначениеЗаполнено(Магазин) Тогда

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(ДанныеЗаполнения.Магазин,,Склад, Ответственный);

КонецЕсли;

Если ДанныеЗаполнения.Свойство("Организация")

И НЕ ЗначениеЗаполнено(Организация) Тогда

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(ДанныеЗаполнения.Организация,,БанковскийСчетОрганизации);

КонецЕсли;

КонецЕсли;

Ответственный = Пользователи.ТекущийПользователь();

Магазин = ЗначениеНастроекПовтИсп.ПолучитьМагазинПоУмолчанию(Магазин);

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(Магазин,,Склад, Ответственный);

Если ЗначениеЗаполнено(Склад) Тогда

Организация = Склад.Организация;

КонецЕсли;

Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация,Ответственный);

Контрагент = ЗначениеНастроекПовтИсп.ПолучитьПокупателяПоУмолчанию(Контрагент, Ответственный);

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(Организация,,БанковскийСчетОрганизации);

Продавец = ЗначениеНастроекПовтИсп.ПолучитьПродавцаПоУмолчанию(Продавец, Ответственный);

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

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

// Прочее

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

//

Процедура СформироватьСписокРегистровДляКонтроля()

Массив = Новый Массив;

// При проведении выполняется контроль превышения остатков на складах

Если ДополнительныеСвойства.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда

Массив.Добавить(Движения.УслугиНаСкладах);

Массив.Добавить(Движения.ДвиженияСерийныхНомеров);

КонецЕсли;

ДополнительныеСвойства.ДляПроведения.Вставить("РегистрыДляКонтроля", Массив);

ДополнительныеСвойства.ДляПроведения.Вставить("ПопыткиПродажПревышающихОстаток");

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

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

// ОБРАБОТЧИКИ СОБЫТИЙ

// Процедура - обработчик события "ОбработкаЗаполнения".

//

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

ИнициализироватьДокумент(ДанныеЗаполнения);

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

// Процедура - обработчик события "ОбработкаПроведения".

//

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

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);

Документы.РеализацияУслуг.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

ПродажиСервер.ОтразитьПродажи(ДополнительныеСвойства, Движения, Отказ);

ПродажиСервер.ОтразитьПродажиПоДисконтнымКартам(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиНаСкладах(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиОрганизаций(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиКОтгрузке(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийныхНомеров(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийУслуг(ДополнительныеСвойства, Движения, Отказ);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

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

МассивНепроверяемыхРеквизитов = Новый Массив;

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,МассивНепроверяемыхРеквизитов,Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект),Отказ);

ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);

МаркетинговыеАкцииСервер.ПроверитьЦеныСертификатов(

ЭтотОбъект,

"Услуги",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьЗаполнениеТабличнойЧастиСерийныеНомера(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьДвиженияСерийныхНомеров(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьОкончаниеАбсолютныхСроковДействияСертификатов(

ЭтотОбъект,

"Услуги",

Отказ,

);

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

// Процедура - обработчик события "ОбработкаУдаленияПроведения".

//

Процедура ОбработкаУдаленияПроведения(Отказ)

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

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

// Процедура - обработчик события "ПередЗаписью".

//

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Если ОбменДанными.Загрузка Тогда

Возврат;

КонецЕсли;

Справочники.СерийныеНомера.ОчиститьВДокументеНеиспользуемыеСерийныеНомера(Услуги, СерийныеНомера);

ОбщегоНазначенияРТСервер.УдалитьНеиспользуемыеСтрокиСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект));

ПроведениеСервер.УстановитьРежимПроведения(Проведен, РежимЗаписи, РежимПроведения);

ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());

ДополнительныеСвойства.Вставить("РежимЗаписи", РежимЗаписи);

ОбщегоНазначенияРТ.УстановитьНовоеЗначениеРеквизита(

ЭтотОбъект,

ОбработкаТабличнойЧастиУслугиКлиентСервер.ПолучитьСуммуДокумента(Услуги, ЦенаВключаетНДС),

"СуммаДокумента");

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

// Процедура - обработчик события "ПриКопировании".

//

Процедура ПриКопировании(ОбъектКопирования)

СкидкиРассчитаны = Ложь;

СкидкиНаценкиСервер.ОтменитьСкидки(ЭтотОбъект, "Услуги");

Серии.Очистить();

ИнициализироватьДокумент();

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

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

// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ

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

// Инициализация и заполнение

// Инициализирует документ

//

Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)

Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда

ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);

Если ДанныеЗаполнения.Свойство("Магазин")

И НЕ ЗначениеЗаполнено(Магазин) Тогда

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(ДанныеЗаполнения.Магазин,,Склад, Ответственный);

КонецЕсли;

Если ДанныеЗаполнения.Свойство("Организация")

И НЕ ЗначениеЗаполнено(Организация) Тогда

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(ДанныеЗаполнения.Организация,,БанковскийСчетОрганизации);

КонецЕсли;

КонецЕсли;

Ответственный = Пользователи.ТекущийПользователь();

Магазин = ЗначениеНастроекПовтИсп.ПолучитьМагазинПоУмолчанию(Магазин);

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(Магазин,,Склад, Ответственный);

Если ЗначениеЗаполнено(Склад) Тогда

Организация = Склад.Организация;

КонецЕсли;

Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация,Ответственный);

Контрагент = ЗначениеНастроекПовтИсп.ПолучитьПокупателяПоУмолчанию(Контрагент, Ответственный);

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(Организация,,БанковскийСчетОрганизации);

Продавец = ЗначениеНастроекПовтИсп.ПолучитьПродавцаПоУмолчанию(Продавец, Ответственный);

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

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

// Прочее

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

//

Процедура СформироватьСписокРегистровДляКонтроля()

Массив = Новый Массив;

// При проведении выполняется контроль превышения остатков на складах

Если ДополнительныеСвойства.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда

Массив.Добавить(Движения.УслугиНаСкладах);

Массив.Добавить(Движения.ДвиженияСерийныхНомеров);

КонецЕсли;

ДополнительныеСвойства.ДляПроведения.Вставить("РегистрыДляКонтроля", Массив);

ДополнительныеСвойства.ДляПроведения.Вставить("ПопыткиПродажПревышающихОстаток");

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

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

// ОБРАБОТЧИКИ СОБЫТИЙ

// Процедура - обработчик события "ОбработкаЗаполнения".

//

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

ИнициализироватьДокумент(ДанныеЗаполнения);

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

// Процедура - обработчик события "ОбработкаПроведения".

//

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

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);

Документы.РеализацияУслуг.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

ПродажиСервер.ОтразитьПродажи(ДополнительныеСвойства, Движения, Отказ);

ПродажиСервер.ОтразитьПродажиПоДисконтнымКартам(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиНаСкладах(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиОрганизаций(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьУслугиКОтгрузке(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийныхНомеров(ДополнительныеСвойства, Движения, Отказ);

ЗапасыСервер.ОтразитьДвиженияСерийУслуг(ДополнительныеСвойства, Движения, Отказ);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

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

МассивНепроверяемыхРеквизитов = Новый Массив;

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект,МассивНепроверяемыхРеквизитов,Отказ);

ОбработкаТабличнойЧастиУслугиСервер.ПроверитьЗаполнениеСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект),Отказ);

ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты,МассивНепроверяемыхРеквизитов);

МаркетинговыеАкцииСервер.ПроверитьЦеныСертификатов(

ЭтотОбъект,

"Услуги",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьЗаполнениеТабличнойЧастиСерийныеНомера(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьДвиженияСерийныхНомеров(

ЭтотОбъект,

"Услуги",

"СерийныеНомера",

Отказ

);

МаркетинговыеАкцииСервер.ПроверитьОкончаниеАбсолютныхСроковДействияСертификатов(

ЭтотОбъект,

"Услуги",

Отказ,

);

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

// Процедура - обработчик события "ОбработкаУдаленияПроведения".

//

Процедура ОбработкаУдаленияПроведения(Отказ)

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

СформироватьСписокРегистровДляКонтроля();

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

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

// Процедура - обработчик события "ПередЗаписью".

//

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Если ОбменДанными.Загрузка Тогда

Возврат;

КонецЕсли;

Справочники.СерийныеНомера.ОчиститьВДокументеНеиспользуемыеСерийныеНомера(Услуги, СерийныеНомера);

ОбщегоНазначенияРТСервер.УдалитьНеиспользуемыеСтрокиСерий(ЭтотОбъект,Документы.РеализацияУслуг.ПараметрыУказанияСерий(ЭтотОбъект));

ПроведениеСервер.УстановитьРежимПроведения(Проведен, РежимЗаписи, РежимПроведения);

ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый());

ДополнительныеСвойства.Вставить("РежимЗаписи", РежимЗаписи);

ОбщегоНазначенияРТ.УстановитьНовоеЗначениеРеквизита(

ЭтотОбъект,

ОбработкаТабличнойЧастиУслугиКлиентСервер.ПолучитьСуммуДокумента(Услуги, ЦенаВключаетНДС),

"СуммаДокумента");

ДополнительныеСвойства.Вставить("Отказ", Отказ);

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

// Процедура - обработчик события "ПриКопировании".

//

Процедура ПриКопировании(ОбъектКопирования)

СкидкиРассчитаны = Ложь;

СкидкиНаценкиСервер.ОтменитьСкидки(ЭтотОбъект, "Услуги");

Серии.Очистить();

ИнициализироватьДокумент();

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

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

// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ

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

// Инициализация и заполнение

// Инициализирует документ

//

Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)

Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда

ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);

Если ДанныеЗаполнения.Свойство("Магазин")

И НЕ ЗначениеЗаполнено(Магазин) Тогда

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(ДанныеЗаполнения.Магазин,,Склад, Ответственный);

КонецЕсли;

Если ДанныеЗаполнения.Свойство("Организация")

И НЕ ЗначениеЗаполнено(Организация) Тогда

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(ДанныеЗаполнения.Организация,,БанковскийСчетОрганизации);

КонецЕсли;

КонецЕсли;

Ответственный = Пользователи.ТекущийПользователь();

Магазин = ЗначениеНастроекПовтИсп.ПолучитьМагазинПоУмолчанию(Магазин);

Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПродажиПоУмолчанию(Магазин,,Склад, Ответственный);

Если ЗначениеЗаполнено(Склад) Тогда

Организация = Склад.Организация;

КонецЕсли;

Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация,Ответственный);

Контрагент = ЗначениеНастроекПовтИсп.ПолучитьПокупателяПоУмолчанию(Контрагент, Ответственный);

БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(Организация,,БанковскийСчетОрганизации);

Продавец = ЗначениеНастроекПовтИсп.ПолучитьПродавцаПоУмолчанию(Продавец, Ответственный);

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

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

// Прочее

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

//

Процедура СформироватьСписокРегистровДляКонтроля()

Массив = Новый Массив;

// При проведении выполняется контроль превышения остатков на складах

Если ДополнительныеСвойства.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда

Массив.Добавить(Движения.УслугиНаСкладах);

Массив.Добавить(Движения.ДвиженияСерийныхНомеров);

КонецЕсли;

ДополнительныеСвойства.ДляПроведения.Вставить("РегистрыДляКонтроля", Массив);

ДополнительныеСвойства.ДляПроведения.Вставить("ПопыткиПродажПревышающихОстаток");

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

Приложение В - Экранная форма заполненого документа

Для запуска программы необходимо запустить «1C:Предприятие».

1С:предприятие

Окно запуска информационной базы

Авторизация пользователя

Вид главного меню программы

Окно справочника «Единицы измерения»

Вид справочника «Номенклатура»

Создание пользователей

Создание документа «Поступление товаров»

Создание документа «Реализация товара»

Создание документа «Реализация товара»

Приложение Г - Печатная форма документа

Печатная форма «Заявка от покупателя»

Печатная форма «Чек»