Мой взгляд и моя версия получения таблицы расчета арендных платежей по ОС

25.11.24

Учетные задачи - Займы, кредит, лизинг

Изменения, внесённые мною в штатный типовой код конфигурации БП 3.0 КОРП для учёта лизинговых операций.

1. Сцена первая "Условия и факторы возникновения проблемы".

Крупная организация, приобретающая большое количество основных средств (допустим, это автотранспорт) в лизинг и имеющая некоторое количество удалённых филиалов (обособленных подразделений) иногда приходит к такому организационному решению: Из числа своих хозяйствующих субъектов выделяет (или создаёт) одного, имеющего функционал приобретения основных средств в лизинг. Затем, эти приобретённые объекты лизинга сдаются уже для непосредственной эксплуатации в прочие филиалы и подразделения уже на правах субаренды. 

Такая модель управления упрощает процессы первоначального приобретения, контроля за лизинговыми платежами и прочие управленческие удобства. С учетом того, что такой хозяйствующий субъект, занимающийся только приобретением и последующим владением основных средств, сам их не эксплуатирует и напрашивается соответствующее отражение этих объектов в бухгалтерском учёте как "Доходные вложения в материальные ценности" на счете "03.01". Ничего особо уникального в таком учётном действе нет, более того, масса организаций, имеющих своим основным видом деятельности именно сдачу в аренду своего имущества, как раз на этом счете и должна учитывать то самое имущество. И если бы бухгалтера, имеющие привычку любое ОС сваливать на привычный счет учета "01", слегка разнообразили свои учетные традиции, то гораздо чаще упирались бы в интересный казус, до сих пор "живущий" в типовой конфигурации БП (думаю, что в остальных конфигурациях - тоже).
Мне повезло. Моя подведомственная организация приобрела в лизинг и учла приобретение на счете "03.01". И я познакомился с "казусом". 

2. Сцена вторая "Место возникновения первой проблемы". 

В общем модуле "Учёт ОС" есть экспортная функция 
 

Функция ПодготовитьТаблицуАрендныхПлатежей(ТаблицаОС, Реквизиты, Отказ)

Эта функция вызывается как при проведении некоторых документов по учету ОС и лизинговых операций с ними, так и при закрытии периода в регламентной операции. Задача функции следующая - рассчитать значения сумм начисленных арендных платежей по показателям бухгалтерского и налогового учёта для каждого арендованного ОС. И вот что отсутствует в этой функции.
 

	СчетаУчетаСобственныхОС = Новый Массив;
	СчетаУчетаСобственныхОС.Добавить(ПланыСчетов.Хозрасчетный.ОСвОрганизации);      // 01.01
	СчетаУчетаСобственныхОС.Добавить(ПланыСчетов.Хозрасчетный.ОСБезГосРегистрации); // 01.08 
	
	// +++ Климушкин Д.Ю. 31.07.2024
	// Добавлю счет 03.01 в массив счетов учета собственных ОС организации
	СчетаУчетаСобственныхОС.Добавить(ПланыСчетов.Хозрасчетный.МЦвОрганизации); // 03.01
	// --- Климушкин Д.Ю. 31.07.2024

При формировании массива счетов учета ОС, понимаемых, как "счета учета собственных ОС", счет "03.01" не подразумевается. Да, в этом счете нет прямого отсыла именно к основным средствам, но это не означает какого-то запрета или невозможности учета ОС именно по этому счету. У меня нет другого объяснения, почему этот счет как-то позабыли включить в массив и по этой причине ОС, числящиеся на счете "03.01" вообще не участвовали в расчетах при закрытии периода или проведении документов. Сами понимаете, бухгалтеров это не радовало. Это я исправил сразу.

3. Сцена третья "Замена одной проблемы на несколько других". 

Радость была недолгой. Участие в ОС, числящихся на счёте "03.01" в расчетах дало удивительные результаты. Дело в том, что в практике делового оборота моей организации вполне часто применяется досрочный выкуп предмета лизинга. Сама эта процедура штатными возможностями программы выполнялась и вопросов не вызывала. Но затем при закрытии периода бухгалтеры начинали видеть совершенно непонятные цифры арендных платежей по оставшимся в лизинге ОС. Причём, сначала начислялась сумма "краснотой", которая следующей проводкой приводилась в некую "норму" уже проводкой с положительной суммой. При этом ни сумма "красным", ни последующая корректирующая суммы никак не коррелировались с размерами фактических арендных начислений и отличались даже не на проценты, а в разы.

Эту причину я разбирал чуть дольше. Нашёл её вот здесь.

	"... ВЫБРАТЬ
	|	ПервоначальныеСведенияОС.ОсновноеСредство КАК ОсновноеСредство,
	|	ПервоначальныеСведенияОС.Контрагент КАК Контрагент,
	|	ПервоначальныеСведенияОС.ДоговорКонтрагента КАК ДоговорКонтрагента,
	|	ПервоначальныеСведенияОС.ИнвентарныйНомер КАК ИнвентарныйНомер,
	|	ПервоначальныеСведенияОС.ПервоначальнаяСтоимость КАК ПервоначальнаяСтоимость
	|ПОМЕСТИТЬ АрендованныеОС
	|ИЗ
	|	РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних(
	|			&КонецПериодаГраница,
	|			Организация = &Организация
// Вот здесь формируется описываемая проблема
	|				И СпособПоступления В (ЗНАЧЕНИЕ(Перечисление.СпособыПоступленияАктивов.ПоДоговоруЛизинга), ЗНАЧЕНИЕ(Перечисление.СпособыПоступленияАктивов.ПоДоговоруАренды))) КАК ПервоначальныеСведенияОС
//////////////////////////////////
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Контрагент,
	|	ДоговорКонтрагента...."

Изначально таблица ОС понимаемых, как "Арендованные" исходит из способа приобретения.

Соответственно, несложное решение - раз приобрели по договору лизинга или аренды, стало быть - арендованное. В первом приближении - логично и для лабораторного эксперимента вполне работает. Но с учётом разнообразия управленческих зигзагов, не мешает проверять - а арендовано ли это ОС на текущий период? То, что когда-то это ОС приобрели в лизинг никак не мешает тому обстоятельству, что на третий месяц это ОС вполне оказывается в перечне собственных "выкупленных". Так и продолжают выкупленные ОС фигурировать в расчетах общих сумм. Кратко выглядит следующим образом. Имеется договор лизинга на 100 автомобилей сроком на 60 месяцев. Организация- лизингополучатель через два месяца начинает процедуры досрочного выкупа авто по 10 единиц в месяц. И пока весь договор лизинга не закроется расчет арендных платежей оставшихся в лизинге (аренде) ОС будет производиться с учетом всех объектов ОС, проходивших по этому договору. Отсюда удивительные цифры "красным" с последующей корректировкой "черным".

4. Финал "Решение проблемы".

Кардинально поменял текст запроса, формирующий данные для расчетной таблицы. Кратко можно так описать мой подход. Он, сугубо - бухгалтерский. Я предпочёл не ворошить "судьбы и истории" имеющихся в учёте ОС. По ФСБУ 25 есть внятная методика учета арендных платежей и арендных обязательств. Есть понятные (прежде всего - бухгалтеру) места формирования итогов, которые несложно контролируются и опрашиваются. Есть счет "01.К" и группа счетов под общим заголовком "76.07" По логике учета я не могу (не имею прав и возможностей!) начислять арендные платежи больше, чем осталось на счете "01.К" (показатель НУ, собственно только в этом показателе данный счет и учитывается) И уже не важна история приобретения - я изначально беру в расчет только те ОС, для которых вообще есть основания для начисления арендных платежей. И даже если по какому-то ОС не будет такого начисления , бухгалтеру сразу будет понятно - почему это не случилось и он просто посмотрит карточку счета "01.К", чтобы увидеть точку (момент) в котором исчезли основания для начисления арендных платежей. Он (бухгалтер) точно сможет обойтись в этом случае без программиста.

Резюме.

После внесения изменений огромная организация с лизингом в сотни единиц за месяц закрывает еже пятый период. ОС на счете "03.01" стало участвовать в расчетах. Цифры пришли в здравый размер и стали понятны, т.е без несуразных оборотов по обеим сторонам корреспонденции "красным и чёрным". 
Вот код запроса, которым я заменил штатный текст. Счёл удобным вытащить его в отдельную функцию
 

// +++ Климушкин Д.Ю. 10.08.2024
// Текущий вариант запроса исходит из следующего алгоритма
// Обрабатывать в данной функции имеет смысл только те ОС
// у который есть дебетовый остаток счёта "01.К" по показателю НУ на конец периода
// Этот массив ОС и становится источником отбора для всех последующих запросов 
Процедура ПодготовитьТаблицуАрендныхПлатежейТекстЗапроса(Запрос, ТаблицаОСНеЗаполнена)


	ТекстЗапроса = "ВЫБРАТЬ
	               |	ОстаткиРасходов.Субконто1 КАК ОсновноеСредство,
	               |	ЕСТЬNULL(РасходыЗаПериод.СуммаНУКт, 0) - ЕСТЬNULL(РасходыПоДокументу.СуммаНУКт, 0) КАК ПризнаноРасходовСумма
	               |ПОМЕСТИТЬ РасходыЗаПериод
	               |ИЗ
	               |	РегистрБухгалтерии.Хозрасчетный.Остатки(&КонецПериода, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КорректировкаСтоимостиАрендованногоИмущества), &ВидСубконтоОС, Организация = &Организация) КАК ОстаткиРасходов
	               |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
	               |				,
	               |				,
	               |				Регистратор = &Регистратор
	               |					И СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КорректировкаСтоимостиАрендованногоИмущества)
	               |					И НЕ СчетДт В (&СчетаАрендныхОбязательств)
	               |					И НЕ СчетДт В (&СчетаНДСПоАренднымОбязательствам)
	               |					И НЕ СчетДт В (&СчетаУчетаСобственныхОС),
	               |				,
	               |				) КАК РасходыПоДокументу
	               |		ПО (РасходыПоДокументу.СубконтоКт1 = ОстаткиРасходов.Субконто1)
	               |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
	               |				&НачалоПериода,
	               |				&КонецПериода,
	               |				СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КорректировкаСтоимостиАрендованногоИмущества)
	               |					И НЕ СчетДт В (&СчетаАрендныхОбязательств)
	               |					И НЕ СчетДт В (&СчетаНДСПоАренднымОбязательствам)
	               |					И НЕ СчетДт В (&СчетаУчетаСобственныхОС),
	               |				,
	               |				) КАК РасходыЗаПериод
	               |		ПО (РасходыПоДокументу.СубконтоКт1 = РасходыЗаПериод.СубконтоКт1)
	               |ГДЕ
	               |	ОстаткиРасходов.СуммаНУОстатокДт + ЕСТЬNULL(РасходыПоДокументу.СуммаНУКт, 0) > 0
	               |
	               |ИНДЕКСИРОВАТЬ ПО
	               |	ОсновноеСредство
	               |;
	               |
	               |////////////////////////////////////////////////////////////////////////////////
	               |ВЫБРАТЬ РАЗЛИЧНЫЕ
	               |	ПервоначальныеСведенияОС.Контрагент КАК Контрагент,
	               |	ПервоначальныеСведенияОС.ДоговорКонтрагента КАК ДоговорКонтрагента
	               |ПОМЕСТИТЬ КонтрагентыДоговоры
	               |ИЗ
	               |	РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних(
	               |			&КонецПериодаГраница,
	               |			Организация = &Организация
	               |				И ОсновноеСредство В
	               |					(ВЫБРАТЬ
	               |						РасходыЗаПериод.ОсновноеСредство
	               |					ИЗ
	               |						РасходыЗаПериод)
	               |				И СпособПоступления В (ЗНАЧЕНИЕ(Перечисление.СпособыПоступленияАктивов.ПоДоговоруЛизинга), ЗНАЧЕНИЕ(Перечисление.СпособыПоступленияАктивов.ПоДоговоруАренды))) КАК ПервоначальныеСведенияОС
	               |
	               |ОБЪЕДИНИТЬ
	               |
	               |ВЫБРАТЬ
	               |	ДанныеПредметовАренды.Контрагент,
	               |	ДанныеПредметовАренды.ДоговорКонтрагента
	               |ИЗ
	               |	РегистрСведений.ДанныеПредметовАренды.СрезПоследних(
	               |			&КонецПериодаГраница,
	               |			Организация = &Организация
	               |				И ПредметАренды В
	               |					(ВЫБРАТЬ
	               |						РасходыЗаПериод.ОсновноеСредство
	               |					ИЗ
	               |						РасходыЗаПериод)) КАК ДанныеПредметовАренды
	               |
	               |ИНДЕКСИРОВАТЬ ПО
	               |	Контрагент,
	               |	ДоговорКонтрагента
	               |;
	               |
	               |////////////////////////////////////////////////////////////////////////////////
	               |ВЫБРАТЬ
	               |	ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Контрагент,
	               |	ХозрасчетныйОстаткиИОбороты.Субконто2 КАК ДоговорКонтрагента,
	               |	ВЫБОР
	               |		КОГДА ХозрасчетныйОстаткиИОбороты.Счет.Валютный
	               |			ТОГДА ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаНачальныйОстатокКт
	               |		ИНАЧЕ ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт
	               |	КОНЕЦ КАК ВалютнаяСуммаНачальныйОстаток,
	               |	ВЫБОР
	               |		КОГДА ХозрасчетныйОстаткиИОбороты.Счет.Валютный
	               |			ТОГДА ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотДт
	               |		ИНАЧЕ ХозрасчетныйОстаткиИОбороты.СуммаОборотДт
	               |	КОНЕЦ КАК ВалютнаяСуммаОборотДт,
	               |	ВЫБОР
	               |		КОГДА ХозрасчетныйОстаткиИОбороты.Счет.Валютный
	               |			ТОГДА ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаОборотКт
	               |		ИНАЧЕ ХозрасчетныйОстаткиИОбороты.СуммаОборотКт
	               |	КОНЕЦ КАК ВалютнаяСуммаОборотКт
	               |ПОМЕСТИТЬ ЗадолженностьПоАренде
	               |ИЗ
	               |	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
	               |			&НачалоПериода,
	               |			&КонецПериодаГраница,
	               |			,
	               |			,
	               |			Счет В (&СчетаАрендныхОбязательств),
	               |			&ВидыСубконтоКонтрагентыДоговоры,
	               |			Организация = &Организация
	               |				И (Субконто1, Субконто2) В
	               |					(ВЫБРАТЬ
	               |						КонтрагентыДоговоры.Контрагент,
	               |						КонтрагентыДоговоры.ДоговорКонтрагента
	               |					ИЗ
	               |						КонтрагентыДоговоры)) КАК ХозрасчетныйОстаткиИОбороты
	               |
	               |ИНДЕКСИРОВАТЬ ПО
	               |	Контрагент,
	               |	ДоговорКонтрагента
	               |;
	               |
	               |////////////////////////////////////////////////////////////////////////////////
	               |ВЫБРАТЬ
	               |	ХозрасчетныйОборотыДтКт.СубконтоДт1 КАК Контрагент,
	               |	ХозрасчетныйОборотыДтКт.СубконтоДт2 КАК ДоговорКонтрагента,
	               |	ХозрасчетныйОборотыДтКт.СуммаОборот КАК СуммаПлатежаБезНДС
	               |ПОМЕСТИТЬ АрендныеПлатежи
	               |ИЗ
	               |	РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
	               |			&НачалоПериода,
	               |			&КонецПериодаГраница,
	               |			,
	               |			СчетДт В (&СчетаАрендныхОбязательств),
	               |			&ВидыСубконтоКонтрагентыДоговоры,
	               |			СчетКт В (&СчетаАрендныхПлатежей),
	               |			,
	               |			Организация = &Организация
	               |				И (СубконтоКт1, СубконтоКт2) В
	               |					(ВЫБРАТЬ
	               |						КонтрагентыДоговоры.Контрагент,
	               |						КонтрагентыДоговоры.ДоговорКонтрагента
	               |					ИЗ
	               |						КонтрагентыДоговоры)) КАК ХозрасчетныйОборотыДтКт
	               |ГДЕ
	               |	ХозрасчетныйОборотыДтКт.СубконтоДт1 = ХозрасчетныйОборотыДтКт.СубконтоКт1
	               |	И ХозрасчетныйОборотыДтКт.СубконтоДт2 = ХозрасчетныйОборотыДтКт.СубконтоКт2
	               |
	               |ИНДЕКСИРОВАТЬ ПО
	               |	Контрагент,
	               |	ДоговорКонтрагента
	               |;
	               |
	               |////////////////////////////////////////////////////////////////////////////////
	               |ВЫБРАТЬ
	               |	ПервоначальныеСведенияОС.ОсновноеСредство КАК ОсновноеСредство,
	               |	ПервоначальныеСведенияОС.Контрагент КАК Контрагент,
	               |	ПервоначальныеСведенияОС.ДоговорКонтрагента КАК ДоговорКонтрагента,
	               |	ПервоначальныеСведенияОС.ИнвентарныйНомер КАК ИнвентарныйНомер,
	               |	ПервоначальныеСведенияОС.ПервоначальнаяСтоимость КАК ПервоначальнаяСтоимость
	               |ПОМЕСТИТЬ АрендованныеОС
	               |ИЗ
	               |	РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних(
	               |			&КонецПериодаГраница,
	               |			Организация = &Организация
	               |				И СпособПоступления В (ЗНАЧЕНИЕ(Перечисление.СпособыПоступленияАктивов.ПоДоговоруЛизинга), ЗНАЧЕНИЕ(Перечисление.СпособыПоступленияАктивов.ПоДоговоруАренды))) КАК ПервоначальныеСведенияОС
	               |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РасходыЗаПериод КАК РасходыЗаПериод
	               |		ПО ПервоначальныеСведенияОС.ОсновноеСредство = РасходыЗаПериод.ОсновноеСредство
	               |
	               |ИНДЕКСИРОВАТЬ ПО
	               |	Контрагент,
	               |	ДоговорКонтрагента
	               |;
	               |
	               |////////////////////////////////////////////////////////////////////////////////
	               |ВЫБРАТЬ
	               |	ДанныеПредметовАренды.ПредметАренды КАК ОсновноеСредство,
	               |	ДанныеПредметовАренды.Контрагент КАК Контрагент,
	               |	ДанныеПредметовАренды.ДоговорКонтрагента КАК ДоговорКонтрагента,
	               |	ДанныеПредметовАренды.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов
	               |ПОМЕСТИТЬ ДанныеПредметовАренды
	               |ИЗ
	               |	РегистрСведений.ДанныеПредметовАренды.СрезПоследних(&КонецПериодаГраница, Организация = &Организация) КАК ДанныеПредметовАренды
	               |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РасходыЗаПериод КАК РасходыЗаПериод
	               |		ПО ДанныеПредметовАренды.ПредметАренды = РасходыЗаПериод.ОсновноеСредство
	               |
	               |ИНДЕКСИРОВАТЬ ПО
	               |	ОсновноеСредство,
	               |	Контрагент,
	               |	ДоговорКонтрагента
	               |;
	               |
	               |////////////////////////////////////////////////////////////////////////////////
	               |ВЫБРАТЬ
	               |	СпособыОтраженияРасходов.ОсновноеСредство КАК ОсновноеСредство,
	               |	СпособыОтраженияРасходов.СпособОтраженияРасходовПоАренднымПлатежам КАК СпособОтраженияРасходов
	               |ПОМЕСТИТЬ СпособыОтраженияРасходов
	               |ИЗ
	               |	РегистрСведений.СпособыОтраженияРасходовПоАренднымПлатежамОСНалоговыйУчет.СрезПоследних(&КонецПериодаГраница, Организация = &Организация) КАК СпособыОтраженияРасходов
	               |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РасходыЗаПериод КАК РасходыЗаПериод
	               |		ПО СпособыОтраженияРасходов.ОсновноеСредство = РасходыЗаПериод.ОсновноеСредство
	               |
	               |ИНДЕКСИРОВАТЬ ПО
	               |	ОсновноеСредство
	               |;
	               |
	               |////////////////////////////////////////////////////////////////////////////////
	               |ВЫБРАТЬ
	               |	МестонахождениеОС.ОсновноеСредство КАК ОсновноеСредство,
	               |	МестонахождениеОС.Местонахождение КАК Подразделение
	               |ПОМЕСТИТЬ МестонахождениеОС
	               |ИЗ
	               |	РегистрСведений.МестонахождениеОСБухгалтерскийУчет.СрезПоследних(&КонецПериодаГраница, Организация = &Организация) КАК МестонахождениеОС
	               |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РасходыЗаПериод КАК РасходыЗаПериод
	               |		ПО МестонахождениеОС.ОсновноеСредство = РасходыЗаПериод.ОсновноеСредство
	               |
	               |ИНДЕКСИРОВАТЬ ПО
	               |	ОсновноеСредство
	               |;
	               |
	               |////////////////////////////////////////////////////////////////////////////////
	               |ВЫБРАТЬ
	               |	ЗадолженностьПоАренде.Контрагент КАК Контрагент,
	               |	ЗадолженностьПоАренде.ДоговорКонтрагента КАК ДоговорКонтрагента,
	               |	ЗадолженностьПоАренде.ВалютнаяСуммаНачальныйОстаток КАК ВалютнаяСуммаНачальныйОстаток,
	               |	ЗадолженностьПоАренде.ВалютнаяСуммаОборотДт КАК ВалютнаяСуммаОборотДт,
	               |	ЗадолженностьПоАренде.ВалютнаяСуммаОборотКт КАК ВалютнаяСуммаОборотКт,
	               |	ЕСТЬNULL(АрендныеПлатежи.СуммаПлатежаБезНДС, 0) КАК СуммаПлатежаБезНДС,
	               |	ЕСТЬNULL(АрендованныеОС.ОсновноеСредство, НЕОПРЕДЕЛЕНО) КАК ОсновноеСредство,
	               |	ЕСТЬNULL(АрендованныеОС.ИнвентарныйНомер, """") КАК ИнвентарныйНомер,
	               |	ВЫБОР
	               |		КОГДА РасходыЗаПериод.ОсновноеСредство ЕСТЬ NULL
	               |			ТОГДА 0
	               |		ИНАЧЕ ЕСТЬNULL(ДанныеПредметовАренды.СуммаВзаиморасчетов, ЕСТЬNULL(АрендованныеОС.ПервоначальнаяСтоимость, 0))
	               |	КОНЕЦ КАК ПервоначальнаяСтоимость,
	               |	ЕСТЬNULL(СпособыОтраженияРасходов.СпособОтраженияРасходов, ЗНАЧЕНИЕ(Справочник.СпособыОтраженияРасходовПоАмортизации.ПустаяСсылка)) КАК СпособОтраженияРасходов,
	               |	ЕСТЬNULL(МестонахождениеОС.Подразделение, ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)) КАК Подразделение,
	               |	ЕСТЬNULL(РасходыЗаПериод.ПризнаноРасходовСумма, 0) КАК ПризнаноРасходовСумма,
	               |	ЕСТЬNULL(РасходыЗаПериод.ПризнаноРасходовСумма, 0) = 0
	               |		И РасходыЗаПериод.ОсновноеСредство ЕСТЬ НЕ NULL  КАК ОСДляОтраженияРасходов
	               |ИЗ
	               |	ЗадолженностьПоАренде КАК ЗадолженностьПоАренде
	               |		ЛЕВОЕ СОЕДИНЕНИЕ АрендныеПлатежи КАК АрендныеПлатежи
	               |		ПО ЗадолженностьПоАренде.Контрагент = АрендныеПлатежи.Контрагент
	               |			И ЗадолженностьПоАренде.ДоговорКонтрагента = АрендныеПлатежи.ДоговорКонтрагента
	               |		ЛЕВОЕ СОЕДИНЕНИЕ АрендованныеОС КАК АрендованныеОС
	               |			ЛЕВОЕ СОЕДИНЕНИЕ ДанныеПредметовАренды КАК ДанныеПредметовАренды
	               |			ПО АрендованныеОС.ОсновноеСредство = ДанныеПредметовАренды.ОсновноеСредство
	               |				И АрендованныеОС.Контрагент = ДанныеПредметовАренды.Контрагент
	               |				И АрендованныеОС.ДоговорКонтрагента = ДанныеПредметовАренды.ДоговорКонтрагента
	               |			ЛЕВОЕ СОЕДИНЕНИЕ СпособыОтраженияРасходов КАК СпособыОтраженияРасходов
	               |			ПО АрендованныеОС.ОсновноеСредство = СпособыОтраженияРасходов.ОсновноеСредство
	               |			ЛЕВОЕ СОЕДИНЕНИЕ МестонахождениеОС КАК МестонахождениеОС
	               |			ПО АрендованныеОС.ОсновноеСредство = МестонахождениеОС.ОсновноеСредство
	               |			ЛЕВОЕ СОЕДИНЕНИЕ РасходыЗаПериод КАК РасходыЗаПериод
	               |			ПО АрендованныеОС.ОсновноеСредство = РасходыЗаПериод.ОсновноеСредство
	               |		ПО ЗадолженностьПоАренде.Контрагент = АрендованныеОС.Контрагент
	               |			И ЗадолженностьПоАренде.ДоговорКонтрагента = АрендованныеОС.ДоговорКонтрагента
	               |
	               |УПОРЯДОЧИТЬ ПО
	               |	Контрагент,
	               |	ДоговорКонтрагента,
	               |	ОсновноеСредство
	               |ИТОГИ
	               |	МАКСИМУМ(Контрагент),
	               |	МАКСИМУМ(ВалютнаяСуммаНачальныйОстаток),
	               |	МАКСИМУМ(ВалютнаяСуммаОборотДт),
	               |	МАКСИМУМ(ВалютнаяСуммаОборотКт),
	               |	МАКСИМУМ(СуммаПлатежаБезНДС),
	               |	СУММА(ПризнаноРасходовСумма),
	               |	МАКСИМУМ(ОСДляОтраженияРасходов)
	               |ПО
	               |	ДоговорКонтрагента";	
	
	Если ТаблицаОСНеЗаполнена	Тогда
		Запрос.Текст = ТекстЗапроса;
		Возврат;
	КонецЕсли;	
	
	СхемаSQL = Новый СхемаЗапроса;  
	СхемаSQL.УстановитьТекстЗапроса(ТекстЗапроса);
	КоллекцияПакетов = СхемаSQL.ПакетЗапросов;  
	
	ПакетСхемы = КоллекцияПакетов.Добавить(Тип("ЗапросВыбораСхемыЗапроса"));
	ПакетСхемы.УстановитьТекстЗапроса("ВЫБРАТЬ
	|	ТаблицаОС.ОсновноеСредство КАК ОсновноеСредство
	|ПОМЕСТИТЬ ВременнаяТаблицаОС
	|ИЗ
	|	&ТаблицаОС КАК ТаблицаОС");

	КоличествоПакетов = КоллекцияПакетов.Количество();
	КоллекцияПакетов.Переместить(ПакетСхемы, 0);

	ПакетСхемы = КоллекцияПакетов.Добавить(Тип("ЗапросВыбораСхемыЗапроса"));
	ПакетСхемы.УстановитьТекстЗапроса("ВЫБРАТЬ
	|	ВременнаяТаблицаОС.ОсновноеСредство КАК ОсновноеСредство
	|ПОМЕСТИТЬ ТаблицаОС
	|ИЗ
	|	ВременнаяТаблицаОС КАК ВременнаяТаблицаОС
	|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ОсновныеСредства КАК ОсновныеСредстваСпр
	|	ПО ВременнаяТаблицаОС.ОсновноеСредство = ОсновныеСредстваСпр.Ссылка
	|	И ОсновныеСредстваСпр.ЕдиницаУчета <> ЗНАЧЕНИЕ(Перечисление.ЕдиницыУчетаОС.ГрупповойОбъект)
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	ОсновноеСредство");

	КоличествоПакетов = КоллекцияПакетов.Количество();
	КоллекцияПакетов.Переместить(ПакетСхемы, 1);
	
	ПакетСхемы = КоллекцияПакетов.Получить(2);
	ОператорПакета = ПакетСхемы.Операторы.Получить(0);
	ТекущийИсточник = ОператорПакета.Источники.НайтиПоПсевдониму("РасходыПоДокументу");
	ПараметрыИсточника = ТекущийИсточник.Источник.Параметры; 
	ТекущийПараметр = ПараметрыИсточника.Получить(2);       
	СтрокаВыражения = "СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КорректировкаСтоимостиАрендованногоИмущества)
	|				И НЕ СчетДт В (&СчетаАрендныхОбязательств)
	|				И НЕ СчетДт В (&СчетаНДСПоАренднымОбязательствам)
	|				И НЕ СчетДт В (&СчетаУчетаСобственныхОС)
	|				И СубконтоКт1 В (ВЫБРАТЬ ТаблицаОС.ОсновноеСредство ИЗ ТаблицаОС)";
	ТекущийПараметр.Выражение = Новый ВыражениеСхемыЗапроса("Регистратор = &Регистратор	И " + СтрокаВыражения);

	ТекущийИсточник = ОператорПакета.Источники.НайтиПоПсевдониму("РасходыЗаПериод");
	ПараметрыИсточника = ТекущийИсточник.Источник.Параметры; 
	ТекущийПараметр = ПараметрыИсточника.Получить(2);       
	ТекущийПараметр.Выражение = Новый ВыражениеСхемыЗапроса("Организация = &Организация	И " + СтрокаВыражения);
	
	ТекущийИсточник = ОператорПакета.Источники.НайтиПоПсевдониму("ОстаткиРасходов");
	ПараметрыИсточника = ТекущийИсточник.Источник.Параметры; 
	ТекущийПараметр = ПараметрыИсточника.Получить(3);       
	ТекущийПараметр.Выражение = Новый ВыражениеСхемыЗапроса("Организация = &Организация	И Субконто1 
	|В (ВЫБРАТЬ ТаблицаОС.ОсновноеСредство ИЗ ТаблицаОС)");
	
	Запрос.Текст = СхемаSQL.ПолучитьТекстЗапроса();
	
КонецПроцедуры	

А штатная функция приобрела вот этот вид
 

Функция ПодготовитьТаблицуАрендныхПлатежей(ТаблицаОС, Реквизиты, Отказ)

	ТаблицаАрендныхПлатежей = ПолучитьПустуюТаблицуАрендныхПлатежей();
	
	МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

	Запрос = Новый Запрос();
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
	
	Запрос.УстановитьПараметр("Организация", Реквизиты.Организация);
	
// +++ Климушкин Д.Ю. 10.08.2024
// Текст запроса формируется таким образом, чтобы запрос выполнялся один раз
	ТаблицаОСНеЗаполнена = (ТаблицаОС.Количество() = 0);
	ПодготовитьТаблицуАрендныхПлатежейТекстЗапроса(Запрос, ТаблицаОСНеЗаполнена);
// --- Климушкин Д.Ю. 10.08.2024	
	
	Если ТаблицаОСНеЗаполнена Тогда
		Запрос.УстановитьПараметр("Период", КонецМесяца(Реквизиты.Период));
		Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Реквизиты.Период));
		Запрос.УстановитьПараметр("КонецПериодаГраница", Новый Граница(КонецМесяца(Реквизиты.Период), ВидГраницы.Включая));
	Иначе
		Запрос.УстановитьПараметр("Период", Реквизиты.Период);
		Запрос.УстановитьПараметр("ТаблицаОС", ТаблицаОС);
		Запрос.УстановитьПараметр("КонецПериода", Реквизиты.Период);
		Запрос.УстановитьПараметр("КонецПериодаГраница", Новый Граница(Реквизиты.Регистратор.МоментВремени(), ВидГраницы.Исключая));
	КонецЕсли;                                                              
	
	
	Запрос.УстановитьПараметр("СчетаАрендныхОбязательств", ПланыСчетов.Хозрасчетный.СчетаАрендныхОбязательств());
	Запрос.УстановитьПараметр("СчетаПроцентовПоАренде", ПланыСчетов.Хозрасчетный.СчетаПроцентовПоАренде());
	Запрос.УстановитьПараметр("СчетаНДСПоАренднымОбязательствам", ПланыСчетов.Хозрасчетный.СчетаНДСПоАренднымОбязательствам());
	Запрос.УстановитьПараметр("СчетаАрендныхПлатежей", ПланыСчетов.Хозрасчетный.СчетаАрендныхПлатежей());
	Запрос.УстановитьПараметр("Счет01К", ПланыСчетов.Хозрасчетный.КорректировкаСтоимостиАрендованногоИмущества);
	
	СчетаУчетаСобственныхОС = Новый Массив;
	СчетаУчетаСобственныхОС.Добавить(ПланыСчетов.Хозрасчетный.ОСвОрганизации);      // 01.01
	СчетаУчетаСобственныхОС.Добавить(ПланыСчетов.Хозрасчетный.ОСБезГосРегистрации); // 01.08 
	
	// +++ Климушкин Д.Ю. 31.07.2024
	// Добавлю счет 03.01 в массив счетов учета собственных ОС организации
	СчетаУчетаСобственныхОС.Добавить(ПланыСчетов.Хозрасчетный.МЦвОрганизации); // 03.01
	// --- Климушкин Д.Ю. 31.07.2024
	
	Запрос.УстановитьПараметр("СчетаУчетаСобственныхОС", СчетаУчетаСобственныхОС);
	Запрос.УстановитьПараметр("ВидСубконтоОС", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ОсновныеСредства);
	Запрос.УстановитьПараметр("Регистратор", Реквизиты.Регистратор);
	Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(Реквизиты.Период));

	ВидыСубконтоКонтрагентыДоговоры = Новый Массив;
	ВидыСубконтоКонтрагентыДоговоры.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты);
	ВидыСубконтоКонтрагентыДоговоры.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры);
	
	Запрос.УстановитьПараметр("ВидыСубконтоКонтрагентыДоговоры", ВидыСубконтоКонтрагентыДоговоры);
	Запрос.УстановитьПараметр("ВалютаРегламентированногоУчета", ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета());
	
	РезультатЗапроса = Запрос.Выполнить();  
	
	Если РезультатЗапроса.Пустой() Тогда
		Возврат ТаблицаАрендныхПлатежей;
	КонецЕсли;
	
	ВыборкаДоговоры = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ДоговорКонтрагента");
	Пока ВыборкаДоговоры.Следующий() Цикл
		
		Если (ВыборкаДоговоры.ВалютнаяСуммаНачальныйОстаток + ВыборкаДоговоры.ВалютнаяСуммаОборотКт = 0)
			И ВыборкаДоговоры.СуммаПлатежаБезНДС <> 0 Тогда
			
			ШаблонСообщения = НСтр("ru = 'По договору ""%1"" c контрагентом ""%2"" отражено начисление"
				+ " арендного платежа в сумме %3 руб., но кредиторской задолженности по договору нет."
				+ " Расходы не будут отражены в налоговом учете.'");
			ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, 
				ВыборкаДоговоры.ДоговорКонтрагента, 
				ВыборкаДоговоры.Контрагент,
				ВыборкаДоговоры.СуммаПлатежаБезНДС); 
			// Выводим сообщение, но не прерываем выполнение всей процедуры.
			БухгалтерскийУчетПереопределяемый.СообщитьОбОшибкеРегОперацииСНавигацией(ТекстСообщения, 
				ВыборкаДоговоры.ДоговорКонтрагента, , Неопределено);
			
			Продолжить;
			
		КонецЕсли;
		
		НераспределеннаяСумма = ВыборкаДоговоры.СуммаПлатежаБезНДС - ВыборкаДоговоры.ПризнаноРасходовСумма; 

		//+++ Климушкин 05.08.2024 
		// Если нераспределенная сумма затрат меньше нуля, то нет смысла ее отражать красным,
		// чтобы потом корректировать "черным"
		Если НераспределеннаяСумма < 0 Тогда
			Продолжить;
		КонецЕсли;	
		// --- Климушкин 05.08.2024 
		
		Если Не ВыборкаДоговоры.ОСДляОтраженияРасходов 
			И НераспределеннаяСумма > 0 Тогда
		
			ШаблонСообщения = НСтр("ru = 'По договору ""%1"" c контрагентом ""%2"" не определены предметы аренды "
				+ "для отражения расходов по арендным платежам. "
				+ "Расходы не будут отражены в налоговом учете.'");
			ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, 
				ВыборкаДоговоры.ДоговорКонтрагента,
				ВыборкаДоговоры.Контрагент);
			
			// Выводим сообщение, но не прерываем выполнение всей процедуры.
			БухгалтерскийУчетПереопределяемый.СообщитьОбОшибкеРегОперацииСНавигацией(ТекстСообщения, 
				ВыборкаДоговоры.ДоговорКонтрагента, , Неопределено);
			
			Продолжить;
			
		КонецЕсли;
		
		ОСДляРасходов = Новый Массив;
		СтоимостьОС = Новый Массив;
		СпособыОтраженияРасходов = Новый Массив;
		ПодразделенияОС = Новый Массив;
		ВыборкаОС = ВыборкаДоговоры.Выбрать();
		Пока ВыборкаОС.Следующий() Цикл
			
			Если Не ВыборкаОС.ОСДляОтраженияРасходов Тогда
				Продолжить;
			КонецЕсли;
			
			Если НЕ ЗначениеЗаполнено(ВыборкаОС.СпособОтраженияРасходов) 
				И НераспределеннаяСумма > 0 Тогда
				
				ШаблонСообщения = НСтр("ru = 'Не определен способ отражения расходов "
					+ " по арендным платежам в налоговом учете по договору ""%1"" с контрагентом ""%2"", "
					+ " предмет аренды ""%3"" (инвентарный номер ""%4""). "
					+ "Расходы не будут отражены в налоговом учете.'");
				ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, 
					ВыборкаДоговоры.ДоговорКонтрагента, 
					ВыборкаДоговоры.Контрагент, 
					ВыборкаОС.ОсновноеСредство, 
					ВыборкаОС.ИнвентарныйНомер);
				
				// Выводим сообщение, но не прерываем выполнение всей процедуры.
				БухгалтерскийУчетПереопределяемый.СообщитьОбОшибкеРегОперацииСНавигацией(ТекстСообщения, 
					ВыборкаОС.ОсновноеСредство, , Неопределено);
				
				Продолжить;
				
			КонецЕсли;
			
			ОСДляРасходов.Добавить(ВыборкаОС.ОсновноеСредство);
			СтоимостьОС.Добавить(ВыборкаОС.ПервоначальнаяСтоимость);
			СпособыОтраженияРасходов.Добавить(ВыборкаОС.СпособОтраженияРасходов);
			ПодразделенияОС.Добавить(ВыборкаОС.Подразделение);
			
		КонецЦикла;
		
		СуммыРасходов = ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(
			НераспределеннаяСумма, СтоимостьОС);
		ВалютныеОстатки = ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(
			ВыборкаДоговоры.ВалютнаяСуммаНачальныйОстаток, СтоимостьОС);
		ВалютныеОбороты = ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(
			ВыборкаДоговоры.ВалютнаяСуммаОборотКт, СтоимостьОС);
		
		Для Индекс = 0 По СтоимостьОС.ВГраница() Цикл
			НоваяСтрока = ТаблицаАрендныхПлатежей.Добавить();
			ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаДоговоры);
			НоваяСтрока.ОсновноеСредство = ОСДляРасходов[Индекс];
			НоваяСтрока.СпособОтраженияРасходовПоАренднымПлатежам = СпособыОтраженияРасходов[Индекс];
			НоваяСтрока.Подразделение = ПодразделенияОС[Индекс];
			НоваяСтрока.СуммаПлатежаБезНДС = ?(ЗначениеЗаполнено(СуммыРасходов), СуммыРасходов[Индекс], 0);
			НоваяСтрока.ВалютнаяСуммаНачальныйОстаток = ?(ЗначениеЗаполнено(ВалютныеОстатки), ВалютныеОстатки[Индекс], 0);
			НоваяСтрока.ВалютнаяСуммаОборотКт = ?(ЗначениеЗаполнено(ВалютныеОбороты), ВалютныеОбороты[Индекс], 0);
		КонецЦикла;
		
	КонецЦикла;
	
	Возврат ТаблицаАрендныхПлатежей;
	
КонецФункции

 

Лизинг Аренда Бухучет Налоговый Учет Основные средства

См. также

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    6116    15    5    

24

Займы, кредит, лизинг Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Внешняя обработка "Начисление процентов по кредитам и займам" предназначена для бухгалтеров, перед которыми стоит задача по расчету процентов по кредитам и займам и формированию операций по отражению начисленных процентов в бухгалтерском и налоговом учете. В своей работе обработка использует только бухгалтерские итоги по счетам учета договоров займа (66, 67, 58.03)

2400 руб.

13.01.2014    82557    481    91    

147

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    4250    15    1    

33

Печатные формы Адаптация типовых решений Бухгалтер Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с установленными именами. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3000 руб.

07.02.2023    6786    73    10    

30

Адаптация типовых решений Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    5318    dimanich70    15    

22

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    7184    dimanich70    9    

19
Оставьте свое сообщение