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

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    6546    17    6    

27

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

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

7200 руб.

02.08.2023    4591    18    1    

36

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

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

2400 руб.

13.01.2014    82888    1394    91    

151

Печатные формы Адаптация типовых решений Бухгалтер Пользователь Платформа 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    7255    75    17    

32

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

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

2 стартмани

22.04.2024    5599    dimanich70    15    

22

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

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

01.03.2024    8569    dimanich70    10    

21

Займы, кредит, лизинг Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Абонемент ($m)

Благодаря данному решению, в конфигурации 1С:Бухгалтерия 3.0 реализована возможность начислять проценты по полученным/выданным займам.

2 стартмани

24.11.2023    2431    43    Cab-dv    47    

16

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

Доработка типового отчета "Связанные документы" позволяет просто и быстро расширять состав объектов для построения структуры подчиненности документов, используя объекты основной конфигурации и любых расширений.

1 стартмани

27.10.2023    4043    32    TempTablesManager    14    

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