Листинги модулей документов

Листинг И.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) тогда

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

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

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

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

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

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

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

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

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

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

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

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

КонецЕсли;

КонецЕсли;

КонецЦикла;

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

Листинг И.2 – Код модуля формы документа АктОбИсправимомБраке

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

&НаСервере

Функция ЦенаНоменклатуры(Номенклатура)

Возврат Номенклатура.Цена;

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

&НаКлиенте

Функция РасчётСуммы(Количество, Цена)

Возврат Количество * Цена;

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

&НаКлиенте

Процедура СписокБракованныхТоваровНоменклатураПриИзменении(Элемент)

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

Элем.Цена = ЦенаНоменклатуры(Элем.Номенклатура);

Элем.Сумма = РасчётСуммы(Элем.Количество, Элем.Цена);

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

&НаКлиенте

Процедура СписокБракованныхТоваровКоличествоПриИзменении(Элемент)

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

Элем.Сумма = РасчётСуммы(Элем.Количество, Элем.Цена);

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

&НаКлиенте

Процедура МатериалыНаИсправлениеНоменклатураПриИзменении(Элемент)

Элем = Элементы.МатериалыНаИсправление.ТекущиеДанные;

Элем.Цена = ЦенаНоменклатуры(Элем.Номенклатура);

Элем.Сумма = РасчётСуммы(Элем.Количество, Элем.Цена);

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

&НаКлиенте

Процедура МатериалыНаИсправлениеКоличествоПриИзменении(Элемент)

Элем = Элементы.МатериалыНаИсправление.ТекущиеДанные;

Элем.Сумма = РасчётСуммы(Элем.Количество, Элем.Цена);

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

&НаКлиенте

Процедура ОплатаЗаИсправлениеПриИзменении(Элемент)

ОтветственныйМОЛ();

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

&НаКлиенте

Процедура ОтветственныйМОЛ()

Если (Объект.МОЛ = Объект.ОтветственныйЗаИсправление) тогда

Объект.ОплатаЗаИсправление = 0;

КонецЕсли;

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

&НаКлиенте

Процедура МОЛПриИзменении(Элемент)

ОтветственныйМОЛ();

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

&НаКлиенте

Процедура ОтветственныйЗаИсправлениеПриИзменении(Элемент)

ОтветственныйМОЛ();

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

Наши рекомендации