ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
ДИПЛОМНЫЙ ПРОЕКТ НА ТЕМУ:
АВТОМАТИЗАЦИЯ
товарного учета продукции
Содержание
Введение
I. Специальная часть
. Постановка задачи
. Формализация
. Описание среды программирования
.1 Требования к техническому обеспечению
.2 Требования к программному обеспечению
. Методика разработки проекта
.1 Алгоритмизация задачи
.1.1 Описание алгоритма
.1.2 Структурная схема
.2 Программирование
.3 Аномалии и защитное программирование
.4 Тестирование и отладка
. Анализ результатов решения
. Инструкция пользователю
II. Экономическая часть
Заключение
Литература
Приложение
Введение
Компания Zepter была основана Филиппом Цептером в 1986 году. Начинала компания с выпуска различной потребительской продукции, в основном - посуды из стали, и вскоре получила мировую известность.
На российском рынке эта фирма успешно представляет свою инновационную продукцию, не имеющую аналогов в мире, уже более 10 лет. Регулярно фирма предлагает клиентами новые виды продукции, улучшает дизайн, непрерывно следит за качеством ассортимента, является самой крупной и стабильной среди всех компаний прямых продаж на рынке стран СНГ.
В состав корпорации Zepter уже входит более 100 компаний в разных странах. На сегодняшний день ассортимент продукции компании Zepter в Москве представлен 4 брендами.
Общий годовой доход группы составляет порядка одного миллиарда евро.
I.Специальная
часть
. Постановка задачи
Цель дипломного проекта - разработать программное обеспечение, позволяющего вести автоматизированный учет в магазине продукции Zepter, а именно:
· осуществлять полноценный электронный учет товара;
· производить поиск необходимых сведений о поставщиках и товаре;
· упрощать и ускорять процедуры оформления документов приема и продаж товара;
· получать статистические данные о продажах;
· оптимизировать работу с поставщиками;
· формировать и выводить на печать необходимую отчетную документацию.
Необходимо разработать программное приложение (посредством 1С), которое
позволит вести автоматизированный учет товаров в магазине.
2.Формализация
Для построения необходимо провести формализацию задачи, являющуюся необходимым этапом разработки задачи и заключающуюся в построении структуры таблиц для хранения информации, схемы их взаимосвязей и описания алгоритмов обработки.
Структурная связь
Как правило, разработка программного обеспечения выполняется в несколько этапов и начинается с анализа той информации, которая является выходной (формы и отчеты). Только после выяснения структуры и состава этой информации, можно сделать вывод о структуре и составе справочников, какие измерения и ресурсы необходимо создать в регистрах и о данных которыми заполняются документы.
На следующем этапе уточняется структура полей в справочниках и документах, определяются правила ввода информации.
Затем происходит возврат к проектированию запросов для форм и отчетов, проектируются формы документов и отчеты, уточняться измерения и ресурсы в регистрах оперативного учета.
На заключительном этапе создаются различные пользовательские меню, журналы документов, различные дополнительные обработки и создание интерфейса всего проекта. В процессе отладки и доработки, возможен возврат на любой этап процесса разработки.
В следующих разделах пояснительной записки все объекты задачи рассматриваются более подробно. Основные особенности ведения учета задаются (настраиваются) в конфигураторе.
В основе конфигурации лежит принцип ввода информации в программу “от документа”. Это значит что в программе возможно создание и хранение в электронном виде документов и автоматическое проведение их по регистрам оперативного учета. Технология “от документа” позволяет вводить любую информацию в программу однократно и многократно ее использовать. Введенная информация автоматически обобщается, что позволяет формировать необходимую отчетность за любой период времени.
Отчеты, входящие в конфигурацию, позволяют оперативно получать необходимые регистры учета и представлять бухгалтерскую информацию в удобном для анализа виде.
В следующих разделах пояснительной записки все объекты задачи рассматриваются более подробно.
3. Описание среды программирования
«1С:Предприятие7.7» является универсальной системой для автоматизации ведения учета. Она может поддерживать различные системы учета, различные методологии учета, использоваться на предприятиях различных типов деятельности. Система программ «1С:Предприятие» предназначена для решения широкого спектра задач автоматизации учета и управления, стоящих перед динамично развивающимися современными предприятиями.
«1С:Предприятие» представляет собой систему прикладных решений,
построенных по единым принципам и на единой технологической платформе. Задачи
учета и управления могут существенно отличаться в зависимости от рода
деятельности предприятия, отрасли, специфики продукции или оказываемых услуг,
размера и структуры предприятия, требуемого уровня автоматизации. Трудно себе
представить одну программу, предназначенную для массового использования и
удовлетворяющую при этом потребностям большинства предприятий. При этом руководителю,
с одной стороны, необходимо решение, соответствующее специфике именно его
предприятия, но, с другой стороны, он понимает преимущества применения
массового проверенного продукта. Сочетание этих потребностей и обеспечивает
«1С:Предприятие» как система программ.
.1 Требования к техническому обеспечению
Персональный компьютер пользователя должен иметь минимальные требования для реализации 1С.
печатающее устройство;
Ввод информации предусмотрен с помощью:
Клавиатуры;
Манипулятора типа “мышь”.
Для нормальной работы программы необходимо наличие на компьютере программного обеспечения:
операционная система Microsoft Windows /98/2000/NT 4.0/XP;
установленное ядро «1С:Предприятие 7.7 » однопользовательская версия.
Для ввода новых данных и их хранения используются многочисленные справочники, в которых при необходимости можно редактировать, удалять или добавлять новые записи.
В программе присутствуют следующие справочники:
Справочник №1: Товар
Индефикатор
Синонимы
Тип значения
Ред-ние
Обяз-ное поле
Код
-
Число
В диалоге
Да
Наименование
Товар
Строка
Да
Цена
Цена
Число
Да
Справочник №2: Сотрудники
Индефикатор
Синонимы
Тип значения
Ред-ние
Обяз-ное поле
Код
-
Число
В списке
Да
Наименование
Сотрудник
Строка
Да
Квалификация
Квалификация
Строка
Да
Справочник №3: Поставщики
Индефикатор
Синонимы
Тип значения
Ред-ние
Обяз-ное поле
Код
-
Число
В диалоге
Да
Наименование
Поставщик
Строка
Да
ИНН
ИНН
Число
Да
Адрес
Адрес
Строка
Да
Телефон
Телефон
Число
Да
Индефикатор
Синоним
Тип значения
Ред-ние
Обяз-ное поле
Код
-
Число
В диалоге
Да
Наименование
Покупатель
Строка
Да
Телефон
Телефон
Число
Да
Программное обеспечение имеет следующие формы:
· Заявка - в этом документе сохраняются данные о покупателе сделавшего
заказ на определённый товар.
· Поступление товара - данный документ предназначен для учета товара
поступающего в магазин.
· · Списание - документ отображает какой товар, в каком количестве и по какой
причине будет списан.
· Переоценка - данный документ предназначен для упрощения ввода новой
розничной цены в справочник Товар.
Программное обеспечение имеет следующие отчеты:
· Остатки товара - отображает оставшееся количество товара.
· Отчет по продажам - отчет о проданном товаре.
· Заказы - в отчёте Заказы можно посмотреть, что именно и в каком
количестве заказал покупатель.
· Списание - в этом отчете можно посмотреть, какой товар, в каком
количестве и по какой причине был списан.
· Поступление - в этом отчете показывается, какой товар и в каком
количестве поступил на продажу.
.1.2 Структурная схема
.2 Программирование
В соответствии со структурной схемой, приведенной выше, в представленном
программном обеспечение разработаны тексты программных модулей на встроенном
языке «1С:Предприятие7.7». Тексты, соответствующие программе и запросам,
приведены в пункте V. “Приложение”
Описание аномалии
Реакции на аномалию
Способ защиты
1. Ввод в поле не существующего товара.
Выводит сообщение о том, что, такого товара нет.
Защищено разработчиком.
2. Ввод в поле большее количество имеющегося товара.
Выводит сообщение о том, что, такого товара нет в таком
количестве. Документ не проводится.
Защищено разработчиком.
3.Повторный ввод одного и того же товара.
Выводит сообщение о том, что, товар уже был введен.
Защищено разработчиком.
С целью повышения надежности функционирования программы необходимо
обеспечить программный контроль:
Ввода корректных данных дат: конечная дата должна быть больше начальной,
иначе выводится сообщение об ошибке;
Невозможность проведения документа, если не введены или не выбраны
некоторые необходимые параметры или наименования.
.4 Тестирование и отладка
Тестирование - процесс многократного выполнения программы с целью
выявления ошибок. Отладка-исправление ошибок, найденных с помощью тестирования.
При тестировании должны использоваться следующие принципы:
) необходимой частью каждого теста должно являться описание ожидаемых
результатов работы программы, чтобы можно было быстро выяснить наличие или
отсутствие ошибки в ней;
2) т.к. обнаружение ошибок в своей работе (программе) разработчику
сложно, тестирование должен производить посторонний человек или организация;
) должны являться правилом доскональное изучение результатов каждого
теста, чтобы не пропустить малозаметную на поверхностный взгляд ошибку в
программе;
4) необходимо тщательно подбирать тест не только для правильных
(предусмотренных) входных данных, но и для неправильных (непредусмотренных);
) при анализе результатов каждого теста необходимо проверить, не делает
ли программа того, что она не должна делать;
) следует сохранять использованные тесты (для повышения эффективности
повторного тестирования программы после ее модификации или установки у
заказчика);
Хотя программа прошла тестирование успешно, в ней, тем не менее, могут
содержаться ошибки, т.к.
1) программа может не соответствовать своей внешней спецификации, что в
частности, может привести к тому, что в ее управляющем графе окажутся
пропущенными некоторые необходимые пути;
2) не будут обнаружены ошибки, появление которых зависит от
обрабатываемых данных (т.е. на одних исходных данных программа работает
правильно, а на других - с ошибкой).
5. Анализ результатов решения
В соответствии с пунктом 4.4 тестирование и отладка производились
непосредственно во время разработки приложения. После завершения работы было
еще раз произведено полное тестирование всей программы.
Все найденные ошибки были успешно устранены.
Получившееся в результате приложение удовлетворяет всем предъявленным
требованиям, полностью работоспособно и готово к эксплуатации.
программа электронный учет
6. Инструкция пользователю
Это приложение служит для эффективного учета товаров, позволит
производить хранение данных, осуществлять поиск по заданным критериям, получать
отчеты о количественных и качественных составляющих имеющейся в наличии или у
клиента товаров.
Описание
Достоинства программы:
Удобство и простота в эксплуатации (минимальные навыки работы
пользователя на 1С); существенное облегчение работы сотрудника магазина; более
оперативное обслуживание клиентов; не большой объём занимаемой памяти. Для того
чтобы открыть базу данных, необходимо открыть базу данных 1С «Zepter».
Запуск программы.
Запуск программы осуществляется нажатием левой клавиши мыши на ярлык
программы «1С:Предприятие7.7»
В данной программе существует 2 набора прав: Администратор и
пользователь. При запуске «1С:Предприятие7.7» необходимо выбрать пользователя и
ввести пароль.
Для администратора установлены все права, у пользователя ограниченный
набор прав. Пользователь не имеет права менять значение и удалять документы.
Открытая база “Zepter”
выглядит следующим образом:
После запуска «1С:Предприятие7.7» вы можете открыть любой интересующий
вас справочник, журнал документов, отчет, создать и провести новый документ.
Журнал документов можно открыть из меню “Журналы”:
Журнал «Общий»
Как и во всех других журналах, на форме присутствуют реквизиты: Дата,
Время, Документ, Номер.
Журнал «Заявки»
На форме присутствуют реквизиты: Дата, Время, Документ, Номер и Заказчик.
Также в программе присутствуют справочники. Они необходимы для хранения
различных данных. В меню “Справочники” можно открыть любой из справочников:
Справочник «Товары»
В данном справочнике можно отредактировать или посмотреть всю необходимую
информацию об интересующем вас товаре, при двойном нажатии левой кнопкой мыши
на наименование открывается диалоговое окно, в котором можно отредактировать
информацию о товаре.
Справочник «Поставщики»
В данном справочнике можно отредактировать или посмотреть всю необходимую
информацию об интересующем вас поставщике.
Справочник «Покупатели»
В данный справочник заноситься, и редактируется информация о клиентах
магазина.
Также в программе существуют различные документы. Они необходимы для
осуществлений операций связанных с покупкой, реализацией, заказом товара.
Документы проводятся по регистрам оперативного учета.
Любой документ можно открыть из меню ”Документы”.
Документ «Заявка»
Документ «Заявка» содержит информацию о заказчике и товаре, на который
осуществляется заявка.
Документ «Поступление товара»
Документ содержит информацию о поставщике и принятом товаре. После
заполнения документа, его можно вывести на печать (Накладная).
Документ «Продажа»
Документ содержит информацию о товаре и покупателе. После заполнения
документа, его можно вывести на печать (Товарный чек).
Документ «Списание»
Документ «Переоценка»
Так же в программе существуют Отчеты. Они необходимы для просмотра
результата продаж товара, прихода товара, остаток товара.
Отчет «Продажи»
Данный отчет формирует информацию о продажах за период, который выбран на
форме. Так же можно выбрать по какому товару будет формироваться отчет.
Отчет «Заказы»
Данный отчет формирует информацию о принятый заказах за период, который
выбран на форме. Так же можно выбрать определенного заказчика и посмотреть, на
какой товар он осуществил заявку.
Отчет «Списание»
Данный отчет формирует информацию о списанном товаре за период, который
выбран на форме.
Отчет «Поступление»
Данный отчет формирует информацию о поступлении товара за период, который
выбран на форме. Так же можно выбрать определенный товар и посмотреть в каком
количестве он поступил.
Отчет «Остаток товара»
Данный отчет формирует информацию о том, какое количество товара осталось
после продажи за период, который выбран на форме. Так же можно выбрать определенный
товар и увидеть остаток его количества в магазине.
Для того чтобы данный проект был реализован в магазине необходимо
подсчитать годовой экономический эффект от внедрения программного продукта
«Автоматизация товарного учета продукции Zepter».
Экономический эффект - это, прежде всего, экономия денежных средств. В
связи с тем, что реальной экономии добиться сложно, экономическим эффектом
данного программного проекта будет экономия рабочего времени. Благодаря чему
сотрудник сможет выполнить большое количество работ. В нашем случае это работы
связанные с ведением количественного учета товаров в магазине.
Таблица 1.
Этап разработки
Характеристика
Трудоёмкость ч.
Постановка задачи
Пред проектное обследование. Разработка, утверждение,
технико-экономическое обследование.
10
Составление технического проекта
Уточнение структуры и формы представления входных и
выходных данных (алгоритм и структура), Разработка плана мероприятий по
проекту. Согласование утверждение технического проекта.
40
Составление рабочего проекта
Написание программы на языке программирования.
Первоначальная отладка, тестирование. Разработка согласование и утверждения
порядка и методики испытания. Корректировка программы.
85
Документирование и внедрение
Разработка программной документации. Сдача программы и
программной документации.
25
ИТОГО:
160
ч.
Затраты на внедрение проекта.
Коэффициент сложности задачи C характеризует сложность данной программы по отношению к типовой задаче,
сложность которой принята за 1 (величина C лежит в пределах от 0,5 до 1). Для данной программы C равно 0,7 , так как в данной
программе разработаны формы, имеющие в себе наиболее удобный поиск информации,
всевозможные отчёты.
C =
0,7 - коэффициент сложности программы
Коэффициент P увеличения
объёма работ за счёт внесения изменений в алгоритм или программу по результатам
уточнения установок. Коэффициент меняется от 0,1 до 0,5. Заказчик четко описал
конечный результат, который должен выдаваться данным программным обеспечением,
однако некоторые изменения и доработки все же придётся внести. Необходимо
принять во внимание, что в данном случае заказчик не имел глубоких компьютерных
знаний и не мог изначально объяснить задачу в целом. Это приводило к
неоднократным доработкам, модернизациям и корректировке. Лучше всего взять
среднее значение коэффициента.
Р = 0,3 - коэффициент увеличения работ
Коэффициент В - коэффициент увеличения затрат труда вследствие
недостаточного описания задач. Коэффициент меняется от 1 до 1,5. В данном
случае коэффициент В будет равен 1 , так как задача имеет достаточное описание
для работы с ней.
В =1 - коэффициент увеличения затрат труда
Коэффициент К коэффициент квалификации разработчика, который зависит от
стажа. Коэффициент К равен: для работающих до двух лет - 0,8; от трех до пяти -
1; от пяти до восьми - 1,2; более восьми лет - 1,5. Поскольку опыта у
разработчика не достаточно, то коэффициент К мы берем равным 0,8.
К = 0,8 - коэффициент квалификации разработчика
ЗПосн = ЗП*С*(1+Р)*В*К
С учетом всех коэффициентов заработная плата в месяц составит: ЗПосн =
9000 * 0,7 * (1 + 0,3) * 1 * 0,8 = 6552 рублей/ месяц.
Дополнительная заработная плата высчитывается по формуле:
ЗПдоп = ЗПосн * К
К - размер премии в процентах. Премия работнику за это время не
выплачивалась.
Общие затраты предприятия на заработную плату за период разработки ПО
вычисляется по формуле:
ЗПсум = (ЗПосн + ЗПдоп)
Количество временных затрат на создание равно 160 часов.
Страховые отчисления берутся в размере 26% от ЗПсум. СО = 5956* 26% =
1548.6 рублей.
Суммарная затрата на оплату труда ЗПобщ = ЗПсум + СО =
((5956+1548.6)*160)/22*8=6822.4рублей.
Содержание и эксплуатация вычислительной техники.
Время, затраченное на отладку программы (2 + 3 + 4 этапы из таблицы 1)
равно 150 ч. Необходимо посчитать стоимость одного машинного часа по формуле:
(стоимость электроэнергии + амортизация + затраты на ремонт)/Фвт
Фвт - действительный фонд времени работы вычислительного комплекса.
Стоимость электроэнергии - 4 рубля за кВт/ч., потребление энергии - 300
Вт/ч.
ч. * 22дня * 12 мес. * 0,3 кВт/ч * 4 рубля = 2534,4 рубля стоимость за
год.
Амортизация зависит от срока эксплуатации компьютера, а т.к. срок
эксплуатации компьютера на котором производилась разработка данного
программного продукта - 3 года, то амортизация еще начисляется и учитывается в
дальнейших подсчетах.
Амортизация = общая сумма / количество лет.
Стоимость ПК составила 21000 рублей, а количество лет полезного
использования - 4 года. Амортизация = 21000 / 4 = 5250 руб/год.
На ремонт уходит 5 % от стоимости ПК. В данном случае на ремонт будет
уходить 21000 * 5 % = 1050 рублей.
Действительный фонд времени работы вычислительного комплекса рассчитываем
так:
Фвт = Фном - Фпроф
Фном - номинальный фонд времени работы вычислительного
комплекса.
Фпроф - годовые затраты времени на профилактические работы (5%
= 0,05).
Фвт=Фном -Фпроф= (8ч. * 22 дн. * 12
мес.) - (8ч.* 22 дн.* 12 мес.* 0,05)=2112-106=2006 ч.
Стоимость 1 машинного часа работы = (2534.4 + 5250+ 1050) / 2006 = 4.4
рубля.
Стоимость затрат всего равна 150 * 4.4 рубля = 660 рублей.
Работа с данным программным продуктом не требует приобретения нового
компьютера, т.к. имеющийся ПК полностью соответствует системным требованиям.
Наем нового работника не обязателен, т.к. данный продукт прост в использовании
и имеет удобный пользовательский интерфейс, поэтому любой из имеющихся в штате
служащих может легко научиться использовать данный программный продукт для
экономии своих временных ресурсов.
Смета затрат на разработку данного программного приложения приведена в
таблице 2.
Таблица 2
№
Наименование статьи расходов
Затраты
1
Зарплата суммарная исполнителя 2
Страховые отчисления
1548,6
руб.
3
Затраты на эксплуатацию ПК, используемого для написания
программы
660 руб.
Итого:
8164,6руб.
Экономический эффект.
Рассчитаем экономический эффект получаемый за счет сокращения времени на
выполнение необходимых операций. Для этого нам потребуются следующие данные:
Т1 - время которое занимала одна операция.
До внедрения программного обеспечения сотрудник выполнял примерно 10
операций по поиску и вводу данных в день. На одну операцию он тратил
приблизительно 10 минут, т.к. определенную информацию приходилось искать в
бумажных архивах. Т1 = 10 мин. = 0.16 часа.
Тестирование показало, что время выполнения операции после внедрения
программного обеспечения стало занимать 5 минут вместо 8. Так как вся
информация уже находится в базе и надо всего лишь открыть необходимую форму,
которая выведет нам нужные данные; нет никакой необходимости отвлекать другого
сотрудника от работы либо производить ручной поиск в архиве. Т2 = 5
мин. = 0.08 часа.
Мы сократили время на
Теперь
рассчитаем стоимость работы сотрудника.
В
месяц количество рабочих часов равно: 8 * 22 = 176.
Стоимость
одного часа работы высчитывается по формуле:
ч = ЗП / 176.
Заработная
плата сотрудника составляет 12000 руб. / месяц. Тогда стоимость одного часа
работы будет стоить 12000 / 176 = 68,2 руб.
Стоимость
экономии фондовых отчислений рассчитывается по формуле:
со = (ЗП * 0,26) / 176 =
(12000 * 0,26) / 176 = 17,7 руб.
В
итоге получается
сум = Pч + Pсо
= 68,2 + 17,7 = 85,9 руб.
Годовая
экономия времени рассчитывается по формуле: Годовая
экономия составит
Вычтем
затраты и определим экономический эффект:
-8164,6=
9977,4 руб. в год
Теперь
посчитаем, за какое количество времени окупится приложение: Т = затраты / ЭФ =
9977,4 / 18142 = 0,5 года.
Таким
образом, если магазин по продаже продукции Zepter захочет
реализовать у себя данный программный продукт, то он окупится за 0,5 года.
Заключение
В дипломной работе на тему “Автоматизация товарного учета продукции Zepter” был автоматизирован процесс учета
поступлений и продаж товаров в магазине. Написанное приложение полностью
соответствует поставленной задаче.
Оценка экономической эффективности от внедрения приложения показала, что
проект экономически выгоден, срок его окупаемости составит 6 месяцев.
В конечном итоге разработанный мною проект “Автоматизация товарного учета
продукции Zepter” на «1С:Предприятие7.7». существенно
упростит работу сотрудника и сократит его рабочее время.
Литература
· “1C:Предприятие 7.7
Описание встроенного языка” 77.001.03 14 октября 2011г.
· “1C:Предприятие
7.7 Введение в конфигурирование ” 2010г.
· Официальный сайт компании 1С “ www.1C.ru”.
· “1C:Предприятие
7.7 Руководство по установке и запуску” 77.003.04
· “1C:Бухгалтерия
7.7Руководство по ведению учета (Описание типовой конфигурации редакции 4.5)”
77.450.02 8 сентября 2012г.
· “1C:Предприятие
7.7Конфигурирование и администрирование. Часть1 77.002.03 17 октября 2009г.
Приложение
Справочник. Товар
Форма элемента
1. Процедура ПриЗаписи()
2. если пустоезначение(наименование)=1 тогда
. предупреждение("Введите наименование товара!");
. статусвозврата(0);
. конецесли;
. если пустоезначение(цена)=1 тогда
. предупреждение("Введите цену товара!");
. статусвозврата(0);
. конецесли;
. КонецПроцедуры
Справочник. Поставщики
Форма элемента
1. Процедура ПриЗаписи()
2. если пустоезначение(наименование)=1 тогда
. предупреждение("Введите поставщика!");
. статусвозврата(0);
. конецесли;
. если пустоезначение(адрес)=1 тогда
. предупреждение("Введите адрес!");
. статусвозврата(0);
. конецесли;
. если пустоезначение(телефон)=1 тогда
. предупреждение("Введите телефон!");
. статусвозврата(0);
. конецесли;
. КонецПроцедуры
Справочник. Покупатели
Форма элемента
1. Процедура ПриЗаписи()
2. если пустоезначение(наименование)=1 тогда
. предупреждение("Введите покупателя!");
. статусвозврата(0);
. конецесли;
. если пустоезначение(телефон)=1 тогда
. предупреждение("Введите телефон!");
. статусвозврата(0);
. конецесли;
. КонецПроцедуры
Документ. Продажи
Форма элемента
1. Процедура Печ()
2. Таб = СоздатьОбъект("Таблица");
. таб.ИсходнаяТаблица("Таблица");
. Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
. покк=Покупатель;
. проо=Продавец;
. квалл=Квалификация;
. Таб.ВывестиСекцию("Шапка");
. Выбратьстроки();
. пока получитьстроку()=1 цикл;
. _Ном = 0;
. ном=НомерСтроки;
. товв=Товар;
. колл=Количество;
. ценн=Цена;
. сумм=сумма;
. Таб.ВывестиСекцию("строка");
. конеццикла;
. итоо=Формат(Итог("сумма"), "Ч20.2-,");
. Таб.ВывестиСекцию("подвал");
. Таб.ТолькоПросмотр(1);
. Таб.Показать("Продажа","");
. Конецпроцедуры
Процедура Счет()
24. Перем Запрос, ТекстЗапроса;
25. если количество=0 тогда
. количество=1;
. конецесли;
. Цена=Товар.Цена;
. Квалификация=Продавец.Квалификация;
. Сумма= Цена*Количество;
. товв=товар;
. _Ном = 0;
. ном=НомерСтроки;
. Выбратьстроки();
. пока Получитьстроку()=1 цикл
. если товар=товв тогда
. Если _Ном > 0 Тогда
. товар = "";
. количество="";
. предупреждение("ТАКОЙ ТОВАР УЖЕ ЕСТЬ,выберете другой товар
или удалите строку!");
. _Ном = НомерСтроки;
. Прервать;
. КонецЕсли;
. _Ном = НомерСтроки;
. Конецесли;
. Стр = "";
. конеццикла;
. конецпроцедуры
Модуль документа
1. Процедура ОбработкаПроведения()
2. //проверка остатков
. рег=создатьобъект("регистр.Поступлениетовара") ;
. Если не(СравнитьТА() = 0 ) тогда
. рег.временныйрасчет(1);
. конецесли;
. РассчитатьРегистрыНа(текущийдокумент());
. Таб = создатьобъект("Таблицазначений") ;
. рег.ВыгрузитьИтоги(Таб,0,1);
. Выбратьстроки();
. пока Получитьстроку()=1 цикл
. Стр = "";
. Если Таб.НайтиЗначение(Товар,стр,1) = 1 Тогда
. таб.ПолучитьСтрокуПоНомеру(Стр);
. Стр = "";
. рег=регистр.Поступлениетовара;
. рег.ПривязыватьСтроку(НомерСтроки);
. рег.товар=товар;
. рег.сумма=сумма;
. кол=количество;
. Запрос = СоздатьОбъект("Запрос") ;
. ТекстЗапроса =
. "//{{ЗАПРОС(Сформировать)
. |Тов = Регистр.Поступлениетовара.Товар;
. |Кол = Регистр.Поступлениетовара.Количество;
. |Функция КоличествоКонОст = КонОст(Кол);
. |Условие(товар = тов);
. |Группировка тов;
. |";
. Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
. Возврат;
. КонецЕсли;
. Пока Запрос.Группировка(1) = 1 Цикл
. зК = запрос.кол;
. если зк<кол Тогда
. Предупреждение("В таком количестве товара
"+запрос.тов+" нет! " );
. непроводитьдокумент();
. возврат;
. конецесли;
. Если зк <= кол тогда
. рег.количество = зк; иначе
. рег.количество = КОЛ;
. конецесли;
. КОЛ = кол - зк;
. рег.движениерасходвыполнить();
. Если кол <= 0 тогда
. Прервать;
. КонецЕсли;
. КонецЦикла; иначе
. Предупреждение("Товара "+строка(Товар)+" нет на
складе! ") ;
. непроводитьдокумент();
. возврат;
. КонецЕсли;
. конеццикла;
. КонецПроцедуры
Документ. Переоценка
Форма элемента
1. Процедура перес()
2. Старая_цена=Товар.Цена;
. товв=товар;
. _Ном = 0;
. ном=НомерСтроки;
. Выбратьстроки();
. пока Получитьстроку()=1 цикл
. если товар=товв тогда
. Если _Ном > 0 Тогда
. товар = "";
. количество="";
. предупреждение("ТАКОЙ ТОВАР УЖЕ ЕСТЬ,выберете другой товар
или удалите строку!");
. _Ном = НомерСтроки;
. Прервать;
. КонецЕсли;
. _Ном = НомерСтроки;
. Конецесли;
. Стр = "";
. конеццикла;
. конецпроцедуры
. Процедура Печ()
. Таб = СоздатьОбъект("Таблица");
. таб.ИсходнаяТаблица("Таблица");
. Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
. Таб.ВывестиСекцию("Шапка");
. Выбратьстроки();
. пока получитьстроку()=1 цикл;
. _Ном = 0;
. ном=НомерСтроки;
. товв=Товар;
. старр=Старая_цена;
. новв=Новая_цена;
. провв=Провел_переоценку;
. Таб.ВывестиСекцию("строка");
. конеццикла;
. провв=Провел_переоценку;
. Таб.ВывестиСекцию("подвал");
. Таб.ТолькоПросмотр(1);
. Таб.Показать("Продажа","");
. Конецпроцедуры
Модуль документа
1. Процедура ОбработкаПроведения()
2. рег=регистр.Переоценка;
. спр=создатьобъект("справочник.Товары");
. выбратьстроки();
. пока получитьстроку()=1 цикл
. спр.выбратьэлементы();
. Спр.НайтиЭлемент(Товар);
. Спр.Цена=Новая_цена;
. Спр.Записать();
. ПривязыватьСтроку(НомерСтроки);
. Рег.Товар=Товар;
. Рег.Новая_цена=Новая_цена;
. Рег.Старая_цена=Старая_цена;
. Рег.ДвижениеВыполнить();
. конеццикла;
. КонецПроцедуры
Документ. Заявка
Форма элемента
1. Процедура заяв()
2. Перем Запрос, ТекстЗапроса;
. если количество=0 тогда
. количество=1;
. конецесли;
. Телефон=Заказчик.Телефон;
. Цена=Товар.Цена;
. Сумма=Цена*Количество;
. товв=товар;
. _Ном = 0;
. ном=НомерСтроки;
. Выбратьстроки();
. пока Получитьстроку()=1 цикл
. если товар=товв тогда
. Если _Ном > 0 Тогда
. товар = "";
. количество="";
. предупреждение("ТАКОЙ ТОВАР УЖЕ ЕСТЬ,выберете другой товар
или удалите строку!");
. _Ном = НомерСтроки;
. Прервать;
. КонецЕсли;
. _Ном = НомерСтроки;
. Конецесли;
. Стр = "";
. конеццикла;
. Конецпроцедуры
. Процедура Печ()
. Таб = СоздатьОбъект("Таблица");
. таб.ИсходнаяТаблица("Таблица");
. Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
. телл=Телефон;
. закк=Заказчик;
. Таб.ВывестиСекцию("Шапка");
. Выбратьстроки();
. пока получитьстроку()=1 цикл;
. _Ном = 0;
. ном=НомерСтроки;
. товв=Товар;
. колл=Количество;
. ценн=Цена;
. сумм=сумма;
. Таб.ВывестиСекцию("строка");
. конеццикла;
. итоо=Формат(Итог("сумма"), "Ч20.2-,");
. закк=Заказчик;
. прии=Принял_заказ;
. Таб.ВывестиСекцию("подвал");
. Таб.ТолькоПросмотр(1);
. Таб.Показать("Продажа","");
. Конецпроцедуры
Модуль документа
1. Процедура ОбработкаПроведения()
2. выбратьстроки();
. пока получитьстроку()=0 цикл
. если товар.выбран()=0 тогда
. предупреждение("Не выбран товар!!!");
. непроводитьдокумент();
. возврат;
. конецесли;
. конеццикла;
. если заказчик.выбран()=0 тогда
. предупреждение("Выберетие заказчика!!!");
. непроводитьдокумент();
. возврат;
. конецесли;
. если Принял_заказ.выбран()=0 тогда
. предупреждение("Выберетие продавец!!!");
. непроводитьдокумент();
. возврат;
. конецесли;
. КонецПроцедуры
Документ. Списание
Форма элемента
1. Процедура списс()
2. Перем Запрос, ТекстЗапроса;
. если количество=0 тогда
. количество=1;
. конецесли;
. Цена=Товар.Цена;
. Сумма=Количество*Цена;
. товв=товар;
. _Ном = 0;
. ном=НомерСтроки;
. конецпроцедуры
. Процедура Печ()
. Таб = СоздатьОбъект("Таблица");
. таб.ИсходнаяТаблица("Таблица");
. Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
. Таб.ВывестиСекцию("Шапка");
. Выбратьстроки();
. пока получитьстроку()=1 цикл;
. _Ном = 0;
. ном=НомерСтроки;
. товв=Товар;
. колл=Количество;
. дефф=Дефект;
. ценн=Цена;
. сумм=сумма; . конеццикла;
. ущщ=Формат(Итог("сумма"), "Ч20.2-,");
. обнн=Обнаружил_деффект;
. Таб.ВывестиСекцию("подвал");
. Таб.ТолькоПросмотр(1);
. Таб.Показать("Акт списания","");
.Конецпроцедуры
Модуль документа
1. Процедура ОбработкаПроведения()
2. Если Пустоезначение(Товар) = 0 тогда
. Предупреждение("Товар не выбран! " );
. НепроводитьДокумент();
. КонецЕсли;
. Регистр.Списание.Привязыватьстроку(1);
. Регистр.Списание.Обнаружил_деффект = Обнаружил_деффект;
. Выбратьстроки();
. Пока Получитьстроку() = 1 Цикл;
. Регистр.Списание.Товар = Товар;
. Регистр.Списание.Дефект = Дефект;
. Регистр.Списание.Количество = Количество;
. Регистр.Списание.Цена = Цена;
. Регистр.Списание.Сумма = Сумма;
. Регистр.Списание.ДвижениеРасходВыполнить();
. КонецЦикла;
Документ. Поступление товара
Форма элемента
1. Процедура счет()
2. Перем Запрос, ТекстЗапроса;
. если количество=0 тогда
. количество=1;
. конецесли;
. Цена=товар.цена;
. Сумма=Количество*Цена;
. Телефон=Поставщик.Телефон;
. Адрес=Поставщик.Адрес;
. Квалификация=Принял_товар.Квалификация;
. товв=товар;
. _Ном = 0;
. ном=НомерСтроки;
. Выбратьстроки();
. пока Получитьстроку()=1 цикл
. если товар=товв тогда
. Если _Ном > 0 Тогда
. товар = "";
. количество="";
. предупреждение("ТАКОЙ ТОВАР УЖЕ ЕСТЬ,выберете другой товар
или удалите строку!");
. _Ном = НомерСтроки;
. Прервать;
. КонецЕсли;
. _Ном = НомерСтроки;
. Конецесли;
. Стр = "";
. конеццикла;
. Конецпроцедуры
. Процедура Печ()
. Таб = СоздатьОбъект("Таблица");
. таб.ИсходнаяТаблица("Таблица");
. Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
. посс=Поставщик;
. прии=Принял_товар;
. телл=Телефон;
. расс=Расчетный_счет;
. адд=Адрес;
. Таб.ВывестиСекцию("Шапка");
. Выбратьстроки();
. пока получитьстроку()=1 цикл;
. _Ном = 0;
. ном=НомерСтроки;
. товв=Товар;
. колл=Количество;
. ценн=Цена;
. сумм=сумма;
. Таб.ВывестиСекцию("строка");
. конеццикла;
. итоо=Формат(Итог("сумма"), "Ч20.2-,");
. Таб.ВывестиСекцию("подвал");
. Таб.ТолькоПросмотр(1);
. Таб.Показать("Продажа","");
.Конецпроцедуры
Модуль документа
1. Процедура ОбработкаПроведения()
2. Регистр.Поступлениетовара.Привязыватьстроку(1);
. Выбратьстроки();
. Пока Получитьстроку() = 1 Цикл
. Регистр.Поступлениетовара.Товар=Товар;
. Регистр.Поступлениетовара.Количество=Количество;
. Регистр.Поступлениетовара.Сумма=Сумма;
. Регистр.Поступлениетовара.ДвижениеПриходВыполнить();
. КонецЦикла;
. конецпроцедуры
Отчет. Отчет продаж
Форма диалога
1. Процедура Сформировать()
2. если пустоезначение(начдата)=1 тогда
. предупреждение("Выберете начальную дату формирования
отчета!");
. возврат;
. конецесли;
. если пустоезначение(кондата)=1 тогда
. предупреждение ("Выберете конечную дату формирования
отчета!");
. возврат;
. конецесли;
. если(кондата)<(начдата) тогда
. предупреждение ("Неправельный диапазон дат!");
. возврат;
. конецесли;
. ДатаТА=ПолучитьДатуТА();
. если кондата>ДатаТА тогда
. предупреждение ("Конечная дата запроса больше даты
актуальности итогов");
. возврат;
. конецесли;
. запр=создатьобъект("Запрос");
. текстзапроса="
. |период с начдата по кондата;
. |ОбрабатыватьДокументы Проведенные;
. |док=документ.Продажа.текущийдокумент;
. |Товар=документ.Продажа.Товар;
. |код=документ.Продажа.номерстроки;
. |количество=документ.Продажа.количество;
. |цена=документ.Продажа.цена;
. |сумма=документ.Продажа.сумма;
. |функция кондата=коност(сумма);
. |ФУНКЦИЯ колич=коност(количество);
. |Группировка товар без групп;
. |группировка код;
. |группировка док;";
. Если пустоезначение(Выбтов)=0 Тогда
. ТекстЗапроса = ТекстЗапроса +"
. |условие(Товар=выбтов);";
. КонецЕсли;
. запр.выполнить(Текстзапроса);
. Если Запр.Выполнить(ТекстЗапроса) = 0 Тогда
. Возврат;
. КонецЕсли;
. Таб = СоздатьОбъект("Таблица");
. Таб.ИсходнаяТаблица("Таблица");
. Таб.ВывестиСекцию("Шапка");
. Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
. Пока запр.группировка(1)=1 Цикл
. Пока запр.группировка(2)=1 Цикл
. кол=запр.колич;
. тов=запр.товар;
. цена=запр.цена;
. сумм=запр.сумма;
. Таб.ВывестиСекцию("Строка_1");
. Пока запр.группировка(3)=1 Цикл
. д=запр.док;
. Таб.ВывестиСекцию("Строка_2");
. КонецЦикла;
. КонецЦикла;
. КонецЦикла;
. сумит= " "+запр.Кондата+": " ;
. Таб.ВывестиСекцию("Итог");
. Таб.ТолькоПросмотр(1);
. Таб.Показать("Отчет по продажам","");
. КонецПроцедуры
Отчет. Заказы
Форма диалога
1. Процедура Сформировать()
2. если пустоезначение(начдата)=1 тогда
. предупреждение("Выберете начальную дату формирования
отчета!");
. возврат;
. конецесли;
. если пустоезначение(кондата)=1 тогда
. предупреждение ("Выберете конечную дату формирования
отчета!");
. возврат;
. конецесли;
. если(кондата)<(начдата) тогда
. предупреждение ("Неправельный диапазон дат!");
. возврат;
. конецесли;
. ДатаТА=ПолучитьДатуТА();
. если кондата>ДатаТА тогда
. предупреждение ("Конечная дата запроса больше даты
актуальности итогов");
. возврат;
. конецесли;
. запр=создатьобъект("Запрос");
. текстзапроса="
. |период с начдата по кондата;
. |ОбрабатыватьДокументы Проведенные;
. |док=документ.Заявка.текущийдокумент;
. |Товар=документ.Заявка.Товар;
. |код=документ.Заявка.номерстроки;
. |количество=документ.Заявка.количество;
. |Покупатель=документ.Заявка.Заказчик;
. |цена=документ.Заявка.цена;
. |сумма=документ.Заявка.сумма;
. |функция кондата=коност(сумма);
. |ФУНКЦИЯ колич=коност(количество);
. |Группировка товар без групп;
. |группировка код;
. |группировка док;";
. Если пустоезначение(аа)=0 Тогда
. ТекстЗапроса = ТекстЗапроса +"
. |условие(покупатель=аа);";
. КонецЕсли;
. запр.выполнить(Текстзапроса);
. Если Запр.Выполнить(ТекстЗапроса) = 0 Тогда
. Возврат;
. КонецЕсли;
. Таб = СоздатьОбъект("Таблица");
. Таб.ИсходнаяТаблица("Таблица");
. Таб.ВывестиСекцию("Шапка");
. Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
. Пока запр.группировка(1)=1 Цикл
. Пока запр.группировка(2)=1 Цикл
. кол=запр.колич;
. тов=запр.товар;
. покк=запр.покупатель;
. цена=запр.цена;
. сумм=запр.сумма;
. Таб.ВывестиСекцию("Строка_1");
. Пока запр.группировка(3)=1 Цикл
. д=запр.док;
. Таб.ВывестиСекцию("Строка_2");
. КонецЦикла;
. КонецЦикла;
. КонецЦикла;
. сумит= " "+запр.Кондата+": " ;
. Таб.ВывестиСекцию("Итог");
. Таб.ТолькоПросмотр(1);
. Таб.Показать("Отчет по продажам","");
. КонецПроцедуры
Отчет. Списание
Форма диалога
1. Процедура Сформировать()
2. если пустоезначение(начдата)=1 тогда
. предупреждение("Выберете начальную дату формирования
отчета!");
. возврат;
. конецесли;
. если пустоезначение(кондата)=1 тогда
. предупреждение ("Выберете конечную дату формирования
отчета!");
. возврат;
. конецесли;
. если(кондата)<(начдата) тогда
. предупреждение ("Неправельный диапазон дат!");
. возврат;
. конецесли;
. ДатаТА=ПолучитьДатуТА();
. если кондата>ДатаТА тогда
. предупреждение ("Конечная дата запроса больше даты
актуальности итогов");
. возврат;
. конецесли;
. запр=создатьобъект("Запрос");
. текстзапроса="
. |период с начдата по кондата;
. |ОбрабатыватьДокументы Проведенные;
. |док=документ.Списание.текущийдокумент;
. |Товар=документ.Списание.Товар;
. |код=документ.Списание.номерстроки;
. |количество=документ.Списание.количество;
. |цена=документ.Списание.цена;
. |сумма=документ.Списание.сумма;
. |Дефект=документ.Списание.Дефект;
. |функция кондата=коност(сумма);
. |ФУНКЦИЯ колич=коност(количество);
. |Группировка товар без групп;
. |группировка код;
. |группировка док;";
. запр.выполнить(Текстзапроса);
. Если Запр.Выполнить(ТекстЗапроса) = 0 Тогда
. Возврат;
. КонецЕсли;
. Таб = СоздатьОбъект("Таблица");
. Таб.ИсходнаяТаблица("Таблица");
. Таб.ВывестиСекцию("Шапка");
. Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
. Пока запр.группировка(1)=1 Цикл
. Пока запр.группировка(2)=1 Цикл
. кол=запр.колич;
. дефф=запр.дефект;
. тов=запр.товар;
. цена=запр.цена;
. сумм=запр.сумма;
. Таб.ВывестиСекцию("Строка_1");
. Пока запр.группировка(3)=1 Цикл
. д=запр.док;
. Таб.ВывестиСекцию("Строка_2");
. КонецЦикла;
. КонецЦикла;
. КонецЦикла;
. сумит= " "+запр.Кондата+": " ;
. Таб.ВывестиСекцию("Итог");
. Таб.ТолькоПросмотр(1);
. Таб.Показать("Отчет по списанию товара","");
. КонецПроцедуры
Отчет. Поступление
Форма диалога
1. Процедура Сформировать()
2. если пустоезначение(начдата)=1 тогда
. предупреждение("Выберете начальную дату формирования
отчета!");
. возврат;
. конецесли;
. если пустоезначение(кондата)=1 тогда
. предупреждение ("Выберете конечную дату формирования
отчета!");
. возврат;
. конецесли;
. если(кондата)<(начдата) тогда
. предупреждение ("Неправельный диапазон дат!");
. возврат;
. конецесли;
. ДатаТА=ПолучитьДатуТА();
. если кондата>ДатаТА тогда
. предупреждение ("Конечная дата запроса больше даты
актуальности итогов");
. возврат;
. конецесли;
. запр=создатьобъект("Запрос");
. текстзапроса="
. |период с начдата по кондата;
. |ОбрабатыватьДокументы Проведенные;
|док=документ.Поступление_товара.текущийдокумент;
. |Товар=документ.Поступление_товара.Товар;
. |код=документ.Поступление_товара.номерстроки;
. |количество=документ.Поступление_товара.количество;
. |цена=документ.Поступление_товара.цена;
. |сумма=документ.Поступление_товара.сумма;
. |функция кондата=коност(сумма);
. |ФУНКЦИЯ колич=коност(количество);
. |Группировка товар без групп;
. |группировка код;
. |группировка док;";
. Если пустоезначение(Выбтов)=0 Тогда
. ТекстЗапроса = ТекстЗапроса +"
. |условие(Товар=выбтов);";
. КонецЕсли;
. запр.выполнить(Текстзапроса);
. Если Запр.Выполнить(ТекстЗапроса) = 0 Тогда
. Возврат;
. КонецЕсли;
. Таб = СоздатьОбъект("Таблица");
. Таб.ИсходнаяТаблица("Таблица");
. Таб.ВывестиСекцию("Шапка");
. Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
. Пока запр.группировка(1)=1 Цикл
. Пока запр.группировка(2)=1 Цикл
. кол=запр.колич;
. тов=запр.товар;
. цена=запр.цена;
. сумм=запр.сумма;
. Таб.ВывестиСекцию("Строка_1");
. Пока запр.группировка(3)=1 Цикл
. д=запр.док;
. Таб.ВывестиСекцию("Строка_2");
. КонецЦикла;
. КонецЦикла;
. КонецЦикла;
. сумит= " "+запр.Кондата+": " ;
. Таб.ВывестиСекцию("Итог");
. Таб.ТолькоПросмотр(1);
. Таб.Показать("Отчет по продажам","");
. КонецПроцедуры
Отчет. Остаток товара 1. Процедура Сформировать()
2. если пустоезначение(начдата)=1 тогда
. предупреждение("Выберете начальную дату формирования
отчета!");
. возврат;
. конецесли;
. если пустоезначение(кондата)=1 тогда
. предупреждение("Выберете конечную дату формирования
отчета!");
. возврат;
. конецесли;
. если(кондата)<(начдата) тогда
. предупреждение("Неправельный диапазон дат!");
. возврат;
. конецесли;
. ДатаТА=ПолучитьДатуТА();
. если кондата>ДатаТА тогда
. предупреждение("Конечная дата запроса больше даты
актуальности итогов");
. возврат;
. конецесли;
. запр=создатьобъект("запрос");
. текстзапроса="
. |период с начдата по кондата;
. |товар=регистр.Поступлениетовара.товар;
. |количество=регистр.Поступлениетовара.количество;
. |функция коностк=коност(количество);
. |группировка количество без групп;
. |группировка товар без групп ;
. |";
. Если ПустоеЗначение(Выбтовар) = 0 Тогда
. ТекстЗапроса = ТекстЗапроса + "Условие(товар = Выбтовар);
. |";
. КонецЕсли;
. Если пустоезначение(Выбтов)=0 Тогда
. ТекстЗапроса = ТекстЗапроса +"
. |условие(Товар=выбтов);";
. КонецЕсли;
. запр.выполнить(текстзапроса) ;
. Таб = СоздатьОбъект("Таблица");
. Таб.ИсходнаяТаблица("Таблица");
. Таб.ВывестиСекцию("Шапка");
. Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
. Пока запр.группировка(1)=1 Цикл
. Пока запр.группировка(2)=1 Цикл
. товв=запр.товар;
. колл= запр.коностк;
. Таб.ВывестиСекцию("Строка");
. КонецЦикла;
. КонецЦикла;
. Таб.ВывестиСекцию("Подвал");
. Таб.ТолькоПросмотр(1);
. Таб.Показать("Остатки товара","");
. КонецПроцедуры
Справочник
№4: Покупатель
Продажа - данный документ реализует возможность продажи товаров. При проведении
документа фиксируется факт взаиморасчетов с покупателем.
4.3 Аномалии и защитное программирование
II .Экономическая часть
Т = Т1
- Т2 = 10 мин. - 5 мин. = 5 мин. = 0.08 часа.
Тгод =
Т * Q * кол-во рабочих дней в месяц * кол-во месяцев =
0.08 * 10 * 22 * 12 = 211.2 часа.
Тгод * Pсум
= 211.2 * 85,9 = 18142 руб.