Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая 1С - Учёт бракованной продукции.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Приложение и Листинги модулей документов Листинг и.1 – Код модуля объекта документ АктОбИсправимомБраке

Примечание – Источник: собственная разработка

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

ФСЗН = ПолучитьКонстанты.ПолучитьПроцентФСЗН() / 100;

Страховые = ПолучитьКонстанты.ПолучитьПроцентСтраховыхОтчислений() / 100;

Движения.ИсправимыйВнутреннийБрак.Записывать = Истина;

Движения.Управленческий.Записывать = Истина;

// регистр Управленческий Д28 К10

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

ОбщаяСуммаМатериалов = 0;

Для Каждого ТекСтрока Из МатериалыНаИсправление Цикл

Движение = Движения.Управленческий.Добавить();

Движение.СчетДт = ПланыСчетов.Управленческий.БракВПроизводстве;

Движение.СчетКт = ПланыСчетов.Управленческий.Материалы;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Подразделение] = Подразделение;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = МОЛ;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ПричинаБрака] = ПричинаБрака;

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

Движение.Сумма = ТекСтрока.Сумма;

ОбщаяСуммаМатериалов = ОбщаяСуммаМатериалов + ТекСтрока.Сумма;

Движение.КоличествоКт = ТекСтрока.Количество;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатуры] = ТекСтрока.Номенклатура;

КонецЦикла;

КоличествоПартий = СписокБракованныхТоваров.Количество();

Для Каждого ТекСтрокаСписокБракованныхТоваров Из СписокБракованныхТоваров Цикл

// рагистр ИсправимыйВнутреннийБрак

Движение = Движения.ИсправимыйВнутреннийБрак.Добавить();

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

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

Движение.МОЛ = МОЛ;

Движение.Номенклатура = ТекСтрокаСписокБракованныхТоваров.Номенклатура;

Движение.ПричинаБрака = ПричинаБрака;

Движение.ОтветственныйЗаИсправление = ОтветственныйЗаИсправление;

Движение.КоличествоБракованныхТоваров = ТекСтрокаСписокБракованныхТоваров.Количество;

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

Движение.ОплатаЗаИсправление = ОплатаЗаИсправление / КоличествоПартий;

Движение.СтоимостьЗатраченныхМатериалов = ОбщаяСуммаМатериалов / КоличествоПартий;

Если (ПричинаБрака = Перечисления.ПричинаБрака.Технический) тогда

// регистр Управленческий Д28 К70

Движение = Движения.Управленческий.Добавить();

Движение.СчетДт = ПланыСчетов.Управленческий.БракВПроизводстве;

Движение.СчетКт = ПланыСчетов.Управленческий.РасчетыСПерсоналомПоОплатеТруда;

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

Движение.Сумма = ОплатаЗаИсправление / КоличествоПартий;

Движение.КоличествоДт = ТекСтрокаСписокБракованныхТоваров.Количество;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Подразделение] = Подразделение;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = МОЛ;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ПричинаБрака] = ПричинаБрака;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатуры] = ТекСтрокаСписокБракованныхТоваров.Номенклатура;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = ОтветственныйЗаИсправление;

// регистр Управленческий Д28 К69

Движение = Движения.Управленческий.Добавить();

Движение.СчетДт = ПланыСчетов.Управленческий.БракВПроизводстве;

Движение.СчетКт = ПланыСчетов.Управленческий.РасчетыПоСоциальномуСтрахованиюИОбеспечению;

Движение.КоличествоДт = ТекСтрокаСписокБракованныхТоваров.Количество;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Подразделение] = Подразделение;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = МОЛ;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ПричинаБрака] = ПричинаБрака;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатуры] = ТекСтрокаСписокБракованныхТоваров.Номенклатура;

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

Движение.Сумма = ОплатаЗаИсправление * ФСЗН / КоличествоПартий;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = ОтветственныйЗаИсправление;

// регистр Управленческий Д28 К76

Движение = Движения.Управленческий.Добавить();

Движение.СчетДт = ПланыСчетов.Управленческий.БракВПроизводстве;

Движение.СчетКт = ПланыСчетов.Управленческий.РасчетыПоИмущественномуИЛичномуСтрахованию;

Движение.КоличествоДт = ТекСтрокаСписокБракованныхТоваров.Количество;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Подразделение] = Подразделение;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = МОЛ;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ПричинаБрака] = ПричинаБрака;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатуры] = ТекСтрокаСписокБракованныхТоваров.Номенклатура;

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

Движение.Сумма = ОплатаЗаИсправление * Страховые / КоличествоПартий;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = ОтветственныйЗаИсправление;

// регистр Управленческий Д20 К28

Движение = Движения.Управленческий.Добавить();

Движение.СчетДт = ПланыСчетов.Управленческий.ОсновноеПроизводство;

Движение.СчетКт = ПланыСчетов.Управленческий.БракВПроизводстве;

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

Движение.Сумма = (ОбщаяСуммаМатериалов / КоличествоПартий) + (ОплатаЗаИсправление / КоличествоПартий) + (ОплатаЗаИсправление * ФСЗН / КоличествоПартий) + (ОплатаЗаИсправление * Страховые / КоличествоПартий);

Движение.КоличествоДт = ТекСтрокаСписокБракованныхТоваров.Количество;

Движение.КоличествоКт = ТекСтрокаСписокБракованныхТоваров.Количество;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатуры] = ТекСтрокаСписокБракованныхТоваров.Номенклатура;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Подразделение] = Подразделение;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = МОЛ;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.ПричинаБрака] = ПричинаБрака;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатуры] = ТекСтрокаСписокБракованныхТоваров.Номенклатура;

ИначеЕсли (МОЛ <> ОтветственныйЗаИсправление) тогда

// регистр Управленческий Д28 К70

Движение = Движения.Управленческий.Добавить();

Движение.СчетДт = ПланыСчетов.Управленческий.БракВПроизводстве;

Движение.СчетКт = ПланыСчетов.Управленческий.РасчетыСПерсоналомПоОплатеТруда;

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

Движение.Сумма = ОплатаЗаИсправление / КоличествоПартий;

Движение.КоличествоДт = ТекСтрокаСписокБракованныхТоваров.Количество;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Подразделение] = Подразделение;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = МОЛ;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ПричинаБрака] = ПричинаБрака;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатуры] = ТекСтрокаСписокБракованныхТоваров.Номенклатура;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = ОтветственныйЗаИсправление;

// регистр Управленческий Д28 К69

Движение = Движения.Управленческий.Добавить();

Движение.СчетДт = ПланыСчетов.Управленческий.БракВПроизводстве;

Движение.СчетКт = ПланыСчетов.Управленческий.РасчетыПоСоциальномуСтрахованиюИОбеспечению;

Движение.КоличествоДт = ТекСтрокаСписокБракованныхТоваров.Количество;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Подразделение] = Подразделение;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = МОЛ;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ПричинаБрака] = ПричинаБрака;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатуры] = ТекСтрокаСписокБракованныхТоваров.Номенклатура;

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

Движение.Сумма = ОплатаЗаИсправление * ФСЗН / КоличествоПартий;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = ОтветственныйЗаИсправление;

// регистр Управленческий Д28 К76

Движение = Движения.Управленческий.Добавить();

Движение.СчетДт = ПланыСчетов.Управленческий.БракВПроизводстве;

Движение.СчетКт = ПланыСчетов.Управленческий.РасчетыПоИмущественномуИЛичномуСтрахованию;

Движение.КоличествоДт = ТекСтрокаСписокБракованныхТоваров.Количество;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Подразделение] = Подразделение;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = МОЛ;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ПричинаБрака] = ПричинаБрака;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатуры] = ТекСтрокаСписокБракованныхТоваров.Номенклатура;

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

Движение.Сумма = ОплатаЗаИсправление * Страховые / КоличествоПартий;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = ОтветственныйЗаИсправление;

// регистр Управленческий Д73 К28

Движение = Движения.Управленческий.Добавить();

Движение.СчетДт = ПланыСчетов.Управленческий.РасчетыПоВозмещениюУщерба;

Движение.СчетКт = ПланыСчетов.Управленческий.БракВПроизводстве;

Движение.КоличествоКт = ТекСтрокаСписокБракованныхТоваров.Количество;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Подразделение] = Подразделение;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = МОЛ;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.ПричинаБрака] = ПричинаБрака;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатуры] = ТекСтрокаСписокБракованныхТоваров.Номенклатура;

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

Движение.Сумма = (ОбщаяСуммаМатериалов / КоличествоПартий) + (ОплатаЗаИсправление / КоличествоПартий) + (ОплатаЗаИсправление * ФСЗН / КоличествоПартий) + (ОплатаЗаИсправление * Страховые / КоличествоПартий);

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = МОЛ;

Иначе

// регистр Управленческий Д20 К28

// В случае отсутствия затрат проводка не формируется

Если (ОбщаяСуммаМатериалов > 0) тогда

Движение = Движения.Управленческий.Добавить();

Движение.СчетДт = ПланыСчетов.Управленческий.ОсновноеПроизводство;

Движение.СчетКт = ПланыСчетов.Управленческий.БракВПроизводстве;

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

Движение.Сумма = (ОбщаяСуммаМатериалов / КоличествоПартий) + (ОплатаЗаИсправление / КоличествоПартий) + (ОплатаЗаИсправление * ФСЗН / КоличествоПартий) + (ОплатаЗаИсправление * Страховые / КоличествоПартий);

Движение.КоличествоДт = ТекСтрокаСписокБракованныхТоваров.Количество;

Движение.КоличествоКт = ТекСтрокаСписокБракованныхТоваров.Количество;

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатуры] = ТекСтрокаСписокБракованныхТоваров.Номенклатура;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Подразделение] = Подразделение;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.МОЛ] = МОЛ;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.ПричинаБрака] = ПричинаБрака;

Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатуры] = ТекСтрокаСписокБракованныхТоваров.Номенклатура;

КонецЕсли;

КонецЕсли;

КонецЦикла;

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