Выбор типовой конфигурации и постановка задач
Для доступности и простоты настройки данного модуля, мы разработаем такую систему, которая была бы совместима с любой типовой конфигурацией 1С Предприятия 8 3.0 Это позволит увеличить спрос на данный модуль.
После обзора аналогов программного обеспечения, подходящих по функциональным возможностям, сделан вывод о том ,что наиболее подходящей программой является 1С:Предприятие.
Следовательно в дальнейшем нам необходимо сделать следующее :
1 Установка 1С: Предприятие.
2 Разработка:
- Документа «СырьеПродукция». В документе должна быть разработана табличная чать.
- Журнала «Производство» где будет отображаться готовая продукция.
- Отчета «Наличие продукции на складе». Формируется отчет по документу «СырьеПродукция».
Был произведен обзор аналогов разработки, их сравнение и обоснованный выбор наиболее подходящей. В данном случае это 1С:Предприятие. После чего система была рассмотрена более подробно. Проведена постановка задачи. Следовательно, можно приступить к разработке проектных решений.
Создание формы документа.
Для создания модуля используется конфигуратор. Для того чтобы запустить 1С в режиме конфигуратор нам нужно сначала открыть 1С:Предприятие и в открывшемся окне добавить базу данных на основе которой будет написан данный модуль, нажав на кнопку «Добавить», затем указав путь и название. В нашем случае используем типовую конфигурацию, как показано на рисунках 10 и 11.
Рисунок 10 – Окно запуска программы 1С:Предприятие
Далее нужно будет выбрать режим. Нам потребуется конфигуратор.
Рисунок 11 – Окно запуска программы 1С:Предприятие
Далее создаем новый документ. Для этого щелкаем по вкладке Конструкторы>Новый документ
В появившемся окне вводим название документа в поле идентификатор и нажимаем далее.
Рисунок 12 – Окно конструктора создания нового документа
После появляется окно, где выбираются параметры нашего документа и из этого окна можно вызвать окна для непосредственного программирования модуля, как показано на рисунке 13.
Рисунок 13 – Окно выбора параметров документа.
В поле «Журнал» выбирается журнал которому будет принадлежать документ.
Далее вводим реквизиты шапки, которые автоматически будут попадать в журнал.
Рисунок 14 – Окно свойств реквизита.
В свойствах реквизита указываем идентификатор и тип значения. Если необходим выбор реквизита из справочника указываем тип «Справочник. Номенклатура», как показано на рисунке 14.
Реквизиты табличной части, это Значения столбцов в табличной части создаваемого документа. Создание реквизитов аналогично реквизитам шапки.
У реквизита «Наименование» Тип значения выбираем «Справочник. Номенклатура», это нужно для осуществления проводок. В остальных тип значения ставим «Число»
Дальше приступаем к формированию формы документа. Для этого нажимаем кнопку «Форма».
Рисунок 15 – Окно выбора реквизитов.
Выбираем реквизиты которые необходимо отразить в форме документа, как показано на рисунке 18. Дальше добавляем необходимые элементы управления в форме документа.
Добавляем кнопки «Расчет стоимости» и «Печать»
В свойствах кнопок на вкладке дополнительно в строке ввода формул вводим название процедур «РасчетСтоимости()» для кнопки «Расчет стоимости» и «Печать()» для кнопки «Печать», как показано на рисунках 16 и 17.
Рисунок 16 – Окно свойств кнопки.
Рисунок 17 – Окно свойств кнопки.
Далее создаем таблицу «ТзДоп». Здесь будет вводиться наценка и рассчитываться продажная цена.
Далее добавим два поля ввода «Себестоимость» и «Всего». Разместим их ниже самой формы. Это для того, чтобы при работе в режиме 1С:Предприятие пользователю они были не видны.
Столбец «СтоимСырья» сделаем недоступным для изменения, как показано на рисунке 18.
Рисунок 18 – Окно свойств кнопки.
Столбец «Процент» делаем еще и невидимым, как показано на рисунке 19.
Рисунок 19 – Окно свойств кнопки.
В результате получилась такая форма- рисунок 23.
Рисунок 20 – Форма документа «СырьеПродукция».
Теперь можно приступить к разработке модуля формы. Для этого перейдем на закладку Модуль. Перед началом программирования составим алгоритм программы.
1.6.2 Разработка алгоритма функционирования документа
Рисунок 21 – Блок-схема алгоритма работы с модулем «Производство»
На донном этапе разрабатывается документ «СырьеПродукция» разработаем его алгоритм работы, рисунок 25.
Рисунок 22 – Блок-схема алгоритма ввода нового документа.
Разработка модуля.
Запускаем документ «СырьеПродукция» (Рисунок 23).
Рисунок 23 – Документ «СырьеПродукция».
При открытии документа выполняется процедура «ПриОткрытии»
Данная процедура задает начальные значения переменных документа и создает строки и столбцы в таблице значений «ТзДоп». Это осуществляеться с помощью операций «НоваяКолонка», «НоваяСтрока()».
Программный код:
Процедура ПриОткрытии()
ПриЗаписиПерепроводить(1);
СуммаКом=0;
СуммаРас=0;
тзДоп.НоваяКолонка("Инф" ,"Строка",26, ,"Информация",30);
тзДоп.НоваяКолонка("Показ","Число" ,15,2,"Показатель",15);
тзДоп.НоваяСтрока(); тзДоп.Инф = "Стоимость комплектующих";
тзДоп.НоваяСтрока(); тзДоп.Инф = "Стоимость расходных";
тзДоп.НоваяСтрока(); тзДоп.Инф = "Затраты на работу %";
тзДоп.НоваяСтрока(); тзДоп.Инф = "Прочие затраты%";
тзДоп.НоваяСтрока(); тзДоп.Инф = "Себестоимость";
тзДоп.НоваяСтрока(); тзДоп.Инф = "";
тзДоп.НоваяСтрока(); тзДоп.Инф = "Наценка";
тзДоп.НоваяСтрока(); тзДоп.Инф = "Продажная цена";
КонецПроцедуры
Идентификаторам «СуммаКом» и «СуммаРас» присваивается нулевое значение.
Далее создаются строки и колонки.
В наименование выбираем название готовой продукции из справочника «Номенклатура». Задаем количество готовой продукции в партии, без этих данных будет не корректная проводка документа.
При нажатии кнопки «Новая строка» сразу происходит вызов спраочника «Материалы».
Далее в столбце выбираем комплектующие и расходные материалы из справочника. Как показано на рисунке 24.
Рисунок 24 – Выбор материала из справочника.
Когда материал выбран вызывается процедура «Пересчет(Материал)».
Программный код будет выглядеть так:
Процедура Пересчет(ИмяРеквизита)
Если Материал.Выбран() = 1 Тогда
Если (ИмяРеквизита = "Материал") Тогда
Цена = Материал.Цена;
ИначеЕсли (ИмяРеквизита = "Колво") Тогда
Сумма = Цена*Колво;
мат=Материал.Родитель ;
Если СокрЛП(мат) ="Комплектующие" Тогда
СуммаКом=СуммаКом+сумма;
тзДоп.УстановитьЗначение(1,2,СуммаКом);
иначе
Если СокрЛП(мат) ="Расходные" тогда
СуммаРас=СуммаРас+сумма;
тзДоп.УстановитьЗначение(2,2,СуммаРас);
Иначе
Сообщить ("Выбран не верный элемент справочника",);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры //Пересчет
Так как процедура вызывается из столбца «МАтериал» то ИмяРеквизита=Материал и тогда процедура по итогам условий выполняет только одну формулу Цена = Материал.Цена По этой фрмуле в столбце Стоимость сырья проставляется Цена материала из справочника Материалы.
Далее вводим количество используемого материала. После ввода вновь вызывается процедура Пересчет(ИмяРеквизита) но с другим реквизитом. В этом случае реквизитом будет «Колво».
Процедура Пересчет(ИмяРеквизита)
Если Материал.Выбран() = 1 Тогда
Если (ИмяРеквизита = "Материал") Тогда
Цена = Материал.Цена;
ИначеЕсли (ИмяРеквизита = "Колво") Тогда
Сумма = Цена*Колво;
мат=Материал.Родитель ;
Если СокрЛП(мат) ="Комплектующие" Тогда
СуммаКом=СуммаКом+сумма;
тзДоп.УстановитьЗначение(1,2,СуммаКом);
иначе
Если СокрЛП(мат) ="Расходные" тогда
СуммаРас=СуммаРас+сумма;
тзДоп.УстановитьЗначение(2,2,СуммаРас);
Иначе
Сообщить ("Выбран не верный элемент справочника",);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры //Пересчет
Процедура выполняет следующее:
- Вычисляет сумму которая потом проставляется в форме документа Сумма = Цена*Колво,
- Находит родителя выбранного материала для расчета отдельных затрат на комплектующие и расходные материалы .После чего спомощью условий увеличивает либо сумму затрат на комплектующие (СуммаКом=СуммаКом+сумма) либо на расходные материалы (СуммаРас=СуммаРас+сумма)
- Записывает полученные суммы в в таблицу значений «ТЗдоп»
- Если объект взят не из журнала производство, то выводится сообщение ("Выбран не верный элемент справочника",)
После того как все используемые материалы выбраны, небходимо заполнить таблицу значений. Это необходимо для учета других затрат связанных с производством (электричество, транспорт, зарплата и т.д.). Данные затраты вводяться в процентном соотношении. Если их не ввести то расчет будет не корректным.
При нажатии на необходимую строку в таблице значений вызывается процедура РедактированиеТзДоп()
Процедура РедактированиеТзДоп()
ВрЧисло = тзДоп.Показ;
ВвестиЧисло(ВрЧисло,"Введите "+тзДоп.Инф,15,3);
тзДоп.Показ = ВрЧисло;
КонецПроцедуры
В ней осуществляется вывод диалога для ввода данных и запись введенных данных в таблицу значений.
После ввода необходимых данных осуществляется расчет себестоимости и продажной цены продукции.Это осуществляется после нажатия на кнопку формы «Расчет себестоимости».При этом вызывается следующая процедура:
Процедура РасчетСтоимости()
ЗатРаб=тзДоп.ПолучитьЗначение(3,2);
ЗатПр=тзДоп.ПолучитьЗначение(4,2);
Нац=тзДоп.ПолучитьЗначение(7,2);
Если ЗатРаб*ЗатПр=0 Тогда
сообщить("Введены не все параметры") ;
КонецЕсли;
Если ЗатРаб*ЗатПр <>0 Тогда
Итого=(СуммаКом+СуммаРас)*(ЗатРаб/100+ЗатПР/100+1);
тзДоп.УстановитьЗначение(5,2,Итого);
КонецЕсли;
Если Нац=0 Тогда
тзДоп.УстановитьЗначение(8,2,Итого);
иначе
Итого1=Итого+итого*нац/100;
тзДоп.УстановитьЗначение(8,2,Итого1);
КонецЕсли;
Себестоимость=Итого1;
Всего=Себестоимость*Штук;
КонецПроцедуры
С помощью команды «ПолучитьЗначение» получаем значения из таблици значений из указанных позиций.
«Если ЗатРаб*ЗатПр=0 Тогда сообщить ("Введены не все параметры") Этот параметр нужен для того, чтобы не было нулевых значений в используемых параметрах.
Если нет нулевых значений будет выполняться расчет себестоимости, а потом и продажной цены при этом наценка может отсутствовать, для этого мы присваиваем ей значение единицы.
Далее если есть необходимость то можно распечатать конфигурацию собранного системного блока с продажными ценами и отдать потенциальным покупателям. Это осуществляеться с помощью нажатия кнопки «печать». В программе при этом вызываеться процедура печати.
Процедура Печать()
пр=ЗатРаб+ЗатПр;
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Печать");
Таб.ВывестиСекцию("Шапка");
Таб.Опции(0,0,0,0);
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
мат=Материал.Родитель ;
процент=сумма*пр/100+сумма;
процент=процент*нац/100+процент;
Если СокрЛП(мат) ="Комплектующие" Тогда
Таб.ВывестиСекцию("Строка");
КонецЕсли;
КонецЦикла;
Таб.ВывестиСекцию("Шапка2");
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
мат=Материал.Родитель ;
процент=сумма*пр/100+сумма;
процент=процент*нац/100+процент;
Если СокрЛП(мат) ="Расходные" Тогда
Таб.ВывестиСекцию("Строка2");
КонецЕсли;
КонецЦикла;
Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(1);
Таб.Показать("Печать СырьеПродукция","");
КонецПроцедуры
Рисунок 25 – Форма печати документа «СырьеПродукция».
Создание формы печати. С помощью формы создается вид будущего документа. Здесь будут находиться: название изделия, дата документа, наименование изделия, его количество, сумма и общая себестоимость. Для этого создаем 2 шапки отдельно для комплектующих и расходных материалов и строки в которые будут копироваться данные.
Тут же рассчитываются проценты- «процент=сумма*пр/100+сумма», «процент=процент*нац/100+процент».Процент это переменная в которой храниться наценка и затраты применимые к каждому материалу в отдельности.
После расчета и формирования печатной формы документ необходимо провести. Проведение документа зависит от того какой на предприятии ведется план счетов и бухгалтерский учет. В данном варианте используются две проводки: дебет 20 – кредит 10.1 (списание материалов в производство) и дебет 43 – кредит 20 (списание готовой продукции из производства).
При нажатии пользователем кнопки «ОК» или «Закрыть» выходит диалоговое окно с выбором «провести документ или нет». При подтверждении запускается процедура обработки проведения. Данная процедура пишется не в модуле формы, а в модуле самого документа.
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Операция.НоваяПроводка();
Операция.Дебет.Счет = СчетПоКоду("20",ПланыСчетов.Основной);
Операция.Дебет.ВидыНоменклатуры = "Продукция";
Операция.Кредит.Счет = СчетПоКоду
("10.1",ПланыСчетов.Основной);
Операция.Кредит.Материалы = Материал;
Операция.Кредит.МестаХранения = "Основнойсклад";
Операция.Количество = Колво;
Операция.Сумма = Сумма;
Операция.СодержаниеПроводки = "Списание матерьялов в производство";
КонецЦикла;
Операция.НоваяПроводка();
Операция.Дебет.Счет = СчетПоКоду("43",ПланыСчетов.Основной);
Операция.Дебет.Номенклатура = Наименование;
Операция.Дебет.МестаХранения = "Основнойсклад";
Операция.Кредит.Счет = СчетПоКоду("20",ПланыСчетов.Основной);
Операция.Кредит.ВидыНоменклатуры = "Продукция";
Операция.Количество = Штук;
Операция.Сумма = Себестоимость;
Операция.СодержаниеПроводки = "Списание готовой продукции на склад";
Операция.Содержание = "Производство";
Операция.СуммаОперации = Себестоимость*Штук;
Операция.Записать();
КонецПроцедуры
Сначала делаем первую проводку, она делается в цикле так как каждый материал списывается отдельно. Задаем основные субконто проводки, Это ВидНоменклатуры, Материалы и места хранения. Также задаем содержание проводки. Количество и сумма проводки берется в зависимости от количества и суммы списываемого материала. Аналогично выполняется и вторая проводка. В данном случае она выполняется только раз, количество берется из того сколько готовой продукции выпускаем, а сумма от себестоимости товара.
Журнал
Теперь нужно создать журнал, где бы отображалась готовая продукция. журнал создается с помощью конструктора.
Рисунок 26 – Создание журнала.
Далее нужно назвать журнал, как показано на рисунке 27.
Рисунок 27 – Окно конструктора журнала.
В следующем окне выбреются документы которым будет принадлежать данный отчет. В нашем случае нужно выбрать один документ- «СырьеПродукция», как показано на рисунке 28.
Рисунок 28 – Окно конструктора журнала.
В следующем окне нужно выбрать графы для формы. Для этого нужно нажать кнопку «Новый» и выбрать нужные нам значения, как показано на рисунках 29 и 30.
Рисунок 29 – Окно конструктора журнала.
Рисунок 30 – Окно выбора графы журнала.
В результате получится такая форма (Рисунок 31)
Рисунок 31 – Форма журнала.
Здесь будет отобраться готовая продукция ее количество, стоимость и общая сумма.
При нажатии на кнопку завершить работу выполняется процедура «ПриЗакрытии()» С помощью которой можно либо закрыть программу либо выйти из журнала.
При нажатии на кнопку печать выполняется процедура «Печать()», которая открывает форму отчета «СкладНаличие» и выводит всю имеющуюся готовую продукцию.
Процедура ПриЗакрытии()
Если Вопрос("Закончить работу?","Да+Нет")="Да" тогда
ЗавершитьРаботуСистемы(1);
Иначе
СтатусВозврата(0);
Возврат;
КонецЕСли;
КонецПроцедуры
Процедура Печать()
ОткрытьФорму("Отчет.СкладНаличие",);
КонецПроцедуры
Отчет
Далее нужно создать отчет. Создается с помощью конструктора, как показано на рисунке 32.
Рисунок 32 – Создание отчета.
Далеесоздать простую форму отчета. Добавит туда поле выбора даты и поле выбора склада, как показано на рисунке 33.
Рисунок 33 – Форма отчета.
При открытии отчета выполняется процедура «ПриОткрытии()», в ней задается рабочая дата.
При нажатии кнопки «Сформировать» выполняется процедура «Сформировать()». Здесь с 43 счета(готовая продукция) Считываются все наименования и выбираются по введенной дате. Далее выполняется запрос на получение суммы и количества «ВыполнитьЗапрос(,Дата_1,43,,,1,,"СК")». Далее выполняется цикл, который выводит в печатную форму значения(наименование, количество и цену).
Перем Таб, БухИтоги_1;
Процедура ПриОткрытии()
Дата_1 = РабочаяДата();
КонецПроцедуры
Процедура Сформировать()
Таб = СоздатьОбъект("Таблица");
Таб.ВывестиСекцию("Шапка");
БухИтоги_1 = СоздатьОбъект("БухгалтерскиеИтоги");
БухИтоги_1.ИспользоватьСубконто(ВидыСубконто.Номенклатура,,,);
БухИтоги_1.ВыполнитьЗапрос(,Дата_1,43,,,1,,"СК");
Ном_ = СоздатьОбъект("Справочник.Номенклатура");
Ном = 1;
БухИтоги_1.ВыбратьСубконто(1,,,,,"Наименование");
Пока БухИтоги_1.ПолучитьСубконто(1) > 0 Цикл
Ном_.НайтиЭлемент(БухИтоги_1.Субконто());
Количество = Формат(БухИтоги_1.СКД("К"),"Ч12.2");
Цена = Формат(БухИтоги_1.СКД("С"),"Ч12.2");
Товар_ = Ном_.Наименование;
Таб.ВывестиСекцию("Строка");
Ном = Ном + 1;
КонецЦикла;
Таб.Опции(0,0,0,0);
Таб.Защита(0);
Таб.ТолькоПросмотр(0);
Таб.ПараметрыСтраницы(1,100,1,5,5,5,5,0,0);
Таб.Показать("Ведомость о наличии готовой продукции на складе","");
КонецПроцедуры
Далее создается печатная форма. Строится секции шапки и строки для вывода продукции. Также выносится дата наличия готовой продукции.
Рисунок 34– Форма отчета «СкладНаличие».
Экономическая часть
2.1 Расчет затрат внедряемого варианта
Целью моей дипломной работы является разработка и внедрение модуля для 1С:Предприятие.Для этого необходим компьютер с процессором (не менее) Pentium 3 и модулем памяти(не менее) 128 Мбайт RAM,работающий под управлением операционной системы Windows XP или более поздней версии. А так же необходимо приобрести программу 1С:Предприятие.Для восстановления и отладки программы вызывается техник-программист. На внедрение разработанного модуля входят затраты на обучение персонала, которые в дальнейшем будут работать с этой системой.
Затраты на вышеперечисленные программное обеспечение показаны в таблице 2.
Таблица 2 – Затраты внедряемого ПО.
№ | Наименование статей затрат | Кол-во | Цена | Сумма | |||
Программное обеспечение: ОС Windows XP Установка программы Отладка программы 1С:Преприятие 7.7 Установка программы Сопровождение программы Антивирусные программы ИТОГО: | |||||||
Годовой фонд оплаты труда | |||||||
Итого: | |||||||
Затраты на вышеперечисленные аппаратное обеспечение показаны в таблице 3.
Таблица 3 – Затраты внедряемого аппаратного обеспечения.
№ | Наименование статей затрат | Кол-во | Цена | Сумма |
Аппаратное обеспечение: Системный блок Монитор Мышь Клавиатура Принтер ИТОГО: |
Затраты на канцелярию показаны в таблице 4.
Таблица 4 – Затраты на канцелярию.
№ | Наименование статей затрат | Кол-во | Цена | Сумма |
Канцелярия: Стол Шкаф для документов Картридж Бумага Папка Диски ИТОГО: |
Базовые затраты составляют:
Программное обеспечение-7000
Аппаратное обеспечение-16000
Канцелярия- 3200