Эта статья - приложение к видео Кейс из практики консультанта-аналитика 1С: списать со счетов БУ остатки стоимости ТМЦ без количества
Продолжаю серию практических кейсов из жизни аналитика 1С.
Иногда ошибки учета приводят к зависанию на счетах учета ТМЦ суммовых остатков без количественных.
Наиболее существенные проблемы разобрали вручную. Малосущественные суммы главный бухгалтер попросила списать на 91 счет.
В этом видео я покажу, как составить запрос для формирования движений по регистру бухгалтерии Хозрасчетый (в верии УПП 1.3).
Что делать с этим запросом дальше (общую схему корректировки регистров с помощью консоли кода ИР (набора утилит Инструменты разработчика)) смотрите в выпуске https://dzen.ru/video/watch/65661d8292e29f5b12943049
Авторские права на подсистему "Инструменты разработчика", упоминаемую в материале, принадлежат Сергею Старых http://devtool1c.ucoz.ru
Запрос из видео и код его обработки (код адаптирован под использование в консоли кода ИР):
====================================================
Док = Корр.ПолучитьОбъект();
ДвижНУ = Док.Движения.Налоговый;
ДвижНУ.Очистить();
ДвижНУ.Записать();
//Если Корр = Неопределено Тогда
// Док = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
// Док.Дата = ТекущаяДата();
// Док.Записать();
// Корр = Док.Ссылка;
//Иначе
// Док = Корр.ПолучитьОбъект();
//КонецЕсли;
//Для Каждого Рег Из РегБухгалтерии Цикл
// СтрокаУжеЕсть = Ложь;
// Для Каждого стр Из Док.ТаблицаРегистровБухгалтерии Цикл
// Если стр.Имя = Рег Тогда СтрокаУжеЕсть = Истина; КонецЕсли;
// КонецЦикла;
// Если не СтрокаУжеЕсть Тогда
// стр = Док.ТаблицаРегистровБухгалтерии.Добавить();
// стр.Имя = Рег;
// КонецЕсли;
//
//Док.Записать();
//КонецЦикла;
//НУ
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НалоговыйОстатки.Субконто1,
| СУММА(НалоговыйОстатки.СуммаОстаток) КАК СуммаОстаток
|ПОМЕСТИТЬ КВСОстатками
|ИЗ
| РегистрБухгалтерии.Налоговый.Остатки(&ДатаОстатка, Счет.Код = ""08.03"", , ВидУчета = ЗНАЧЕНИЕ(Перечисление.ВидыУчетаПОпбу18.НУ)) КАК НалоговыйОстатки
|ГДЕ
| НЕ НалоговыйОстатки.СуммаОстаток = 0
|
|СГРУППИРОВАТЬ ПО
| НалоговыйОстатки.Субконто1
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| НалоговыйОстатки.Субконто1 КАК СубконтоКт1,
| НалоговыйОстатки.Субконто2 КАК СубконтоКт2,
| НалоговыйОстатки.Субконто3 КАК СубконтоКт3,
| НалоговыйОстатки.СуммаОстаток КАК Сумма,
| НалоговыйОстатки.ВидУчета КАК ВидУчетаКт,
| НалоговыйОстатки.Счет КАК СчетКт,
| НалоговыйОстатки.Организация,
| НалоговыйВидыСубконто1.ВидСубконто КАК ВидСубконтоКт1,
| НалоговыйВидыСубконто2.ВидСубконто КАК ВидСубконтоКт2,
| НалоговыйВидыСубконто3.ВидСубконто КАК ВидСубконтоКт3,
| &Период,
| &Регистратор
|ИЗ
| РегистрБухгалтерии.Налоговый.Остатки(&ДатаОстатка, Счет.Код = ""08.03"", , ВидУчета = ЗНАЧЕНИЕ(Перечисление.ВидыУчетаПОпбу18.НУ)) КАК НалоговыйОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ КВСОстатками КАК КВСОстатками
| ПО НалоговыйОстатки.Субконто1 = КВСОстатками.Субконто1
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланСчетов.Налоговый.ВидыСубконто КАК НалоговыйВидыСубконто1
| ПО НалоговыйОстатки.Счет = НалоговыйВидыСубконто1.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланСчетов.Налоговый.ВидыСубконто КАК НалоговыйВидыСубконто2
| ПО НалоговыйОстатки.Счет = НалоговыйВидыСубконто2.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланСчетов.Налоговый.ВидыСубконто КАК НалоговыйВидыСубконто3
| ПО НалоговыйОстатки.Счет = НалоговыйВидыСубконто3.Ссылка
|ГДЕ
| КВСОстатками.Субконто1 ЕСТЬ NULL
| И НалоговыйВидыСубконто1.НомерСтроки = 1
| И НалоговыйВидыСубконто2.НомерСтроки = 2
| И НалоговыйВидыСубконто3.НомерСтроки = 3";
Запрос.Параметры.Вставить("ДатаОстатка", ДатаОстатка);
Запрос.Параметры.Вставить("Период", Корр.Дата);
Запрос.Параметры.Вставить("Регистратор", Корр);
ТЗ = Запрос.Выполнить().Выгрузить();
ДвижНУ.Загрузить(ТЗ);
ДвижНУ.Записать();
//БУ
ДвижБУ = Док.Движения.Хозрасчетный;
ДвижБУ.Очистить();
ДвижБУ.Записать();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1,
| СУММА(ХозрасчетныйОстатки.СуммаОстаток) КАК СуммаОстаток
|ПОМЕСТИТЬ КВСОстатками
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОстатка, Счет.Код = ""08.03"", , ) КАК ХозрасчетныйОстатки
|ГДЕ
| НЕ ХозрасчетныйОстатки.СуммаОстаток = 0
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОстатки.Субконто1
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК СубконтоКт1,
| ХозрасчетныйОстатки.Субконто2 КАК СубконтоКт2,
| ХозрасчетныйОстатки.Субконто3 КАК СубконтоКт3,
| ХозрасчетныйОстатки.СуммаОстаток КАК Сумма,
| ХозрасчетныйОстатки.Счет КАК СчетКт,
| ХозрасчетныйОстатки.Организация,
| ХозрасчетныйВидыСубконто1.ВидСубконто КАК ВидСубконтоКт1,
| ХозрасчетныйВидыСубконто2.ВидСубконто КАК ВидСубконтоКт2,
| ХозрасчетныйВидыСубконто3.ВидСубконто КАК ВидСубконтоКт3,
| &Период,
| &Регистратор,
| &Счет000 КАК СчетДт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОстатка, Счет.Код = ""08.03"", , ) КАК ХозрасчетныйОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ КВСОстатками КАК КВСОстатками
| ПО ХозрасчетныйОстатки.Субконто1 = КВСОстатками.Субконто1
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто1
| ПО ХозрасчетныйОстатки.Счет = ХозрасчетныйВидыСубконто1.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто2
| ПО ХозрасчетныйОстатки.Счет = ХозрасчетныйВидыСубконто2.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто3
| ПО ХозрасчетныйОстатки.Счет = ХозрасчетныйВидыСубконто3.Ссылка
|ГДЕ
| КВСОстатками.Субконто1 ЕСТЬ NULL
| И ХозрасчетныйВидыСубконто1.НомерСтроки = 1
| И ХозрасчетныйВидыСубконто2.НомерСтроки = 2
| И ХозрасчетныйВидыСубконто3.НомерСтроки = 3";
Запрос.Параметры.Вставить("ДатаОстатка", ДатаОстатка);
Запрос.Параметры.Вставить("Период", Корр.Дата);
Запрос.Параметры.Вставить("Регистратор", Корр);
Запрос.Параметры.Вставить("Счет000", Счет000);
ТЗ = Запрос.Выполнить().Выгрузить();
ДвижБУ.Загрузить(ТЗ);
ДвижБУ.Записать();