Всем приветс)
в общем такая ситуация,
у нас не правильно списывается 98 счет по безвозмездно полученным ОС, программа начинает списывать его сразу после ввода в эксплуатацию, не зависимо от того начислялась по объекту первая амортизация или нет.
У меня появилась мысль чтоб добавить в закрытие месяца в процедуру, отвечающую за списание 98 счета проверку на остаток по 02 счёту по объектам - если есть остаток по 02 счёту - то списывать 98 счёт, если нету, то не списывать, вот только с релизацией этой идеи возникли сложности. Подскажи пожалуйста как это лучше сделать.
модуль ниже:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Период", ДатаРасчета);
Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ДатаРасчета));
Запрос.УстановитьПараметр("Организация", СтруктураШапкиДокумента.Организация);
Запрос.УстановитьПараметр("Счет_ОС1", ПланыСчетов.Хозрасчетный.ПервоначальнаяСтоимостьБезвозмездныхОС);
Запрос.УстановитьПараметр("Счет_АМ2", ПланыСчетов.Хозрасчетный.АмортизацияБезвозмездныхОС);
Запрос.УстановитьПараметр("СубконтоОС", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ОсновныеСредства);
Запрос.УстановитьПараметр("Ноль", 0);
Запрос.Текст =
"ВЫБРАТЬ
| ВложенныйЗапрос1.ОС,
| ВложенныйЗапрос1.СтатьяПрочихДоходовРасходов,
| ВЫБОР
| КОГДА ВложенныйЗапрос1.Частное <= ВложенныйЗапрос1.Разность
| ТОГДА ВложенныйЗапрос1.Частное
| ИНАЧЕ ВложенныйЗапрос1.Разность
| КОНЕЦ КАК СуммаСписания
|ИЗ
| (ВЫБРАТЬ
| ВложенныйЗапрос1.ОС КАК ОС,
| ВложенныйЗапрос1.СПИ КАК СПИ,
| ВложенныйЗапрос1.ОС1 КАК ОС1,
| ВложенныйЗапрос1.АМ2 КАК АМ2,
| ВЫРАЗИТЬ(ВложенныйЗапрос1.ОС1 / ВложенныйЗапрос1.СПИ КАК ЧИСЛО(15, 2)) КАК Частное,
| ВложенныйЗапрос1.ОС1 - ВложенныйЗапрос1.АМ2 КАК Разность,
| ВложенныйЗапрос1.СтатьяПрочихДоходовРасходов КАК СтатьяПрочихДоходовРасходов
| ИЗ
| (ВЫБРАТЬ
| ХозрасчетныйОстатки_ОС1.Субконто1 КАК ОС,
| ЕСТЬNULL(ХозрасчетныйОстатки_ОС1.СуммаОстатокДт, 0) КАК ОС1,
| ЕСТЬNULL(ХозрасчетныйОстатки_АМ2.СуммаОстатокКт, 0) КАК АМ2,
| ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.СрокИспользованияДляВычисленияАмортизации КАК СПИ,
| ОприходованиеТоваровТовары.Ссылка.СтатьяПрочихДоходовРасходов КАК СтатьяПрочихДоходовРасходов
| ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &Счет_ОС1, &СубконтоОС, Организация = &Организация) КАК ХозрасчетныйОстатки_ОС1
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &Счет_АМ2, &СубконтоОС, Организация = &Организация) КАК ХозрасчетныйОстатки_АМ2
| ПО ХозрасчетныйОстатки_ОС1.Субконто1 = ХозрасчетныйОстатки_АМ2.Субконто1
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыАмортизацииОСБухгалтерскийУчет.СрезПоследних(
| &Период,
| Организация = &Организация
| И СрокИспользованияДляВычисленияАмортизации > 0) КАК ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних
| ПО ХозрасчетныйОстатки_ОС1.Субконто1 = ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОприходованиеТоваров.Товары КАК ОприходованиеТоваровТовары
| ПО ХозрасчетныйОстатки_ОС1.Субконто1 = ОприходованиеТоваровТовары.ОсновноеСредство
| ГДЕ
| ЕСТЬNULL(ХозрасчетныйОстатки_ОС1.СуммаОстатокДт, 0) - ЕСТЬNULL(ХозрасчетныйОстатки_АМ2.СуммаОстатокКт, 0) > &Ноль
|
| СГРУППИРОВАТЬ ПО
| ХозрасчетныйОстатки_ОС1.Субконто1,
| ОприходованиеТоваровТовары.Ссылка.СтатьяПрочихДоходовРасходов,
| ПараметрыАмортизацииОСБухгалтерскийУчетСрезПоследних.СрокИспользованияДляВычисленияАмортизации,
| ЕСТЬNULL(ХозрасчетныйОстатки_ОС1.СуммаОстатокДт, 0),
| ЕСТЬNULL(ХозрасчетныйОстатки_АМ2.СуммаОстатокКт, 0)) КАК ВложенныйЗапрос1) КАК ВложенныйЗапрос1";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
// Д98.2-К91.1 исходя из стоимости для вычисление амортизации находящейся на счете ОС1
ПроводкаБУ = мПроводкиБУ.Добавить();
ПроводкаБУ.Период = СтруктураШапкиДокумента.Дата;
ПроводкаБУ.Содержание = "Списание доходов будущих периодов";
ПроводкаБУ.НомерЖурнала = "ОС";
ПроводкаБУ.Организация = СтруктураШапкиДокумента.Организация;
ПроводкаБУ.Сумма = Выборка.СуммаСписания;
ПроводкаБУ.СчетДт = ПланыСчетов.Хозрасчетный.БезвозмездныеПоступления;
УстановитьСубконто(ПроводкаБУ.СчетДт, ПроводкаБУ.СубконтоДт, "ОсновныеСредства", Выборка.ОС);
ПроводкаБУ.СчетКт = ПланыСчетов.Хозрасчетный.ПрочиеДоходы;
Если НЕ (Выборка.СтатьяПрочихДоходовРасходов = NUll) Тогда
УстановитьСубконто(ПроводкаБУ.СчетКт, ПроводкаБУ.СубконтоКт, "ПрочиеДоходыИРасходы", Выборка.СтатьяПрочихДоходовРасходов);
Иначе
УстановитьСубконто(ПроводкаБУ.СчетКт, ПроводкаБУ.СубконтоКт, "ПрочиеДоходыИРасходы", Справочники.ПрочиеДоходыИРасходы.НайтиПоКоду("00019")); //извините, но по-другому ну никак нельзя
КонецЕсли;
//Проводка К АМ2
ПроводкаБУ = мПроводкиБУ.Добавить();
ПроводкаБУ.Период = СтруктураШапкиДокумента.Дата;
ПроводкаБУ.Содержание = "Списание доходов будущих периодов";
ПроводкаБУ.НомерЖурнала = "ОС";
ПроводкаБУ.Организация = СтруктураШапкиДокумента.Организация;
ПроводкаБУ.Сумма = Выборка.СуммаСписания;
ПроводкаБУ.СчетКт = ПланыСчетов.Хозрасчетный.АмортизацияБезвозмездныхОС;
//Если НЕ (Выборка.СтатьяПрочихДоходовРасходов = NUll) Тогда
// УстановитьСубконто(ПроводкаБУ.СчетКт, ПроводкаБУ.СубконтоКт, "ПрочиеДоходыИРасходы", Выборка.СтатьяПрочихДоходовРасходов);
//Иначе
// УстановитьСубконто(ПроводкаБУ.СчетКт, ПроводкаБУ.СубконтоКт, "ПрочиеДоходыИРасходы", Справочники.ПрочиеДоходыИРасходы.НайтиПоКоду("00019")); //извините, но по-другому ну никак нельзя
//КонецЕсли;
УстановитьСубконто(ПроводкаБУ.СчетКт, ПроводкаБУ.СубконтоКт, "ОсновныеСредства", Выборка.ОС);
//Проводки по НУ
// нужно сделать все как в БУ (это желание Заказчика)
ПроводкаНУ = мПроводкиНУ.Добавить();
ПроводкаНУ.Период = СтруктураШапкиДокумента.Дата;
ПроводкаНУ.Организация = СтруктураШапкиДокумента.Организация;
ПроводкаНУ.НомерЖурнала = "ОС";
ПроводкаНУ.Содержание = "Списание доходов будущих периодов";
ПроводкаНУ.Сумма = Выборка.СуммаСписания;
ПроводкаНУ.ВидУчетаДт = Перечисления.ВидыУчетаПоПБУ18.ВР;
ПроводкаНУ.ВидУчетаКт = Перечисления.ВидыУчетаПоПБУ18.ВР;
ПроводкаНУ.СчетДт = ПланыСчетов.Налоговый.НайтиПоКоду("98.02");
УстановитьСубконто(ПроводкаНУ.СчетДт, ПроводкаНУ.СубконтоДт, "ОсновныеСредства", Выборка.ОС);
ПроводкаНУ.СчетКт = ПланыСчетов.Налоговый.ВнереализационныеДоходы;
Если НЕ (Выборка.СтатьяПрочихДоходовРасходов = NUll) Тогда
УстановитьСубконто(ПроводкаНУ.СчетКт, ПроводкаНУ.СубконтоКт, "ПрочиеДоходыИРасходы", Выборка.СтатьяПрочихДоходовРасходов);
Иначе
УстановитьСубконто(ПроводкаНУ.СчетКт, ПроводкаНУ.СубконтоКт, "ПрочиеДоходыИРасходы", Справочники.ПрочиеДоходыИРасходы.НайтиПоКоду("00019")); //ну правда ну никак нельзя
((
КонецЕсли;
КонецЦикла;
мПроводкиБУ.Записать(Ложь);
мПроводкиНУ.Записать(Ложь);
КонецЕсли;
КонецЕсли;
Пасибо)))