Небольшое введение
Наткнулся тут в анонсах на измененный отчет "ОСВ по счету" из БП 3.0, в котором добавлен вывод "Дата принятия к учету" для счетов содержащих субконто основных средств (далее ОС) и вспомнил, что мы это давненько проходили, но тогда заказчик еще попросил добавить возможность вывода данных по счет-фактуре в отчете по счетам 76.АВ и 76.ВА (далее счета НДС с авансов). Но прежде чем рассказать, как мы это сделали, небольшое введение.
Большинство отчетов БП 3.0 сделано с помощью СКД, поэтому вытащить в них дополнительную группировку или дополнительную колонку по реквизиту субконто не составит проблем. Например, сформировать ОСВ по счету 60 с группировкой по КПП можно сделать на раз-два. А вот если данные, связанные с субконто, находятся не непосредственно в его реквизитах, а где-нибудь в связанных объектах, например в регистрах сведений (далее РС), то возникают вопросы: "как это туда добавить?". Например, если мы захотим вытащить ОСВ по счету 01 с выводом информации о "Дата принятия к учету" на основное средство, то возникнут проблемы, по причине того, что данная информация находится уже в РС связанного с ОС, а не непосредственно в его справочнике.
Для решения задач, по выводу дополнительной информации по субконто, которая находится в связанных объектах, фирма 1С уже добавила в схему СКД дополнительные связи. Например, в уже стандартном отчете (смотрю релиз 3.0.52.39) имеется возможность вывести дополнительную информацию для основных средств такую как: МОЛ, местонахождение и прочее. Так же имеется возможность использовать дополнительную информацию по таким субконто как нематериальные активы (данные о сроках использования и прочее) и физические лица (паспортные данные, гражданство и прочее). Перечисленную информацию, на ряду с реквизитами субконто, можно увидеть используя закладку "Дополнительные колонки" настройки отчета. Выглядеть настройка отчета будет так:
При данной настройке, если в отчете присутствует информация по ОС, то выведется дополнительная колонка с информацией о местонахождении на конечную дату отчета.
Следует отметить, что такая дополнительная информация в стандартном отчете не может участвовать в группировке и в отборах, только в дополнительных полях, сортировке и оформлении. Почему так было сделано? Я не могу сказать, может кто в курсе. Возможно связанно с производительностью, либо с особенностью технической реализацией отчета, либо с тем, что данная информация по замыслу разработчиков должна выводиться в других специализированных отчетах.
Собственно, сама реализация задачи
Вернемся к нашим "баранам") Клиент, который ранее очень долго работал на 7ке в бухгалтерии, попросил добавить информацию о счет-фактуре выданной и счет-фактура полученной при выводе информации по счетам НДС с авансов 76.АВ и 76.ВА. Вся проблема заключалась в том, что субконто по счетам НДС с авансов используется сам расчетный документ. То есть, если мы получили предоплату от покупателя, то на счете 76.АВ в качестве субконто -расчетного документа будет сам документ "Поступление на расчетный счет". А нужный нам документ: счет-фактура, останется невидим, т.к. он находится в подчиненных у данного документа. Предупреждаю, что данный механизм подходит только для тех случаев, когда на один расчетный документ введена одна с/ф.
Ну а теперь подробнее о том, как мы решали эту задачу.
Думаю, и так понятно, что дело касается стандартного отчета "ОборотноСальдоваяВедомостьПоСчету", его то мы и будем изменять:
1. В наборах схемы под названием "СхемаКомпоновкиДанных" добавляем 2 новых набора:
ДанныеСФВыд, для него текст запроса следующий:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
СчетФактураВыданный.Ссылка КАК СчетФактураВыданный,
СчетФактураВыданный.ДокументОснование КАК СвязанноеПолеСсылка_ДокументОснование
{ВЫБРАТЬ
СчетФактураВыданный.* КАК СчетФактураВыданный}
ИЗ
Документ.СчетФактураВыданный КАК СчетФактураВыданный
Настройки полей следует сделать следующим образом:
здесь заголовок поля "СчетФактураВыданный" начинается со знака "_" это упростит поиск реквизита при добавлении его в отчет.
ДанныеСФПолуч, для него текст запроса следующий:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
СчетФактураПолученный.Ссылка КАК СчетФактураПолученный,
СчетФактураПолученный.ДокументОснование КАК СвязанноеПолеСсылка_ДокументОснование
{ВЫБРАТЬ
СчетФактураПолученный.* КАК СчетФактураПолученный}
ИЗ
Документ.СчетФактураПолученный КАК СчетФактураПолученный
и здесь настройки полей следующим образом:
с заголовком -такой же подход, как и с выданной счет-фактурой
2. Связываем наборы данных:
3. Далее необходимо внести небольшие изменения в модуль формы отчета. Все изменения делаются по образу и подобию выводимой информации для ОС (или НМА или физлиц)
Процедура ИзменениеСхемыКомпоновкиДанныхНаСервере
к строке:
ПараметрыФизЛица = Новый Структура("ИндексСубконто, ЗаголовокСубконто", 0, "");
добавляем следующий код:
ПараметрыСФВыд = Новый Структура("ИндексСубконто, ЗаголовокСубконто", 0, "");
ПараметрыСФПолуч = Новый Структура("ИндексСубконто, ЗаголовокСубконто", 0, "");
далее в этой же процедуре после блока:
ИначеЕсли Поле.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ФизическиеЛица")) Тогда
ПараметрыФизЛица.ИндексСубконто = Индекс;
ПараметрыФизЛица.ЗаголовокСубконто = Поле.Заголовок;
КонецЕсли;
добавляем следующий код:
Если Отчет.Счет.Код="76.АВ" и Поле.ТипЗначения.СодержитТип(Тип("ДокументСсылка.ДокументРасчетовСКонтрагентом")) Тогда
ПараметрыСФВыд.ИндексСубконто = Индекс;
ПараметрыСФВыд.ЗаголовокСубконто = Поле.Заголовок;
ИначеЕсли Отчет.Счет.Код="76.ВА" и Поле.ТипЗначения.СодержитТип(Тип("ДокументСсылка.ДокументРасчетовСКонтрагентом")) Тогда
ПараметрыСФПолуч.ИндексСубконто = Индекс;
ПараметрыСФПолуч.ЗаголовокСубконто = Поле.Заголовок;
КонецЕсли;
и в самом конце процедуры, после строки:
БухгалтерскиеОтчеты.ОбработатьНаборДанныхСвязаннойИнформации(Схема, "ДанныеФизЛица", ПараметрыФизЛица);
добавляем:
БухгалтерскиеОтчеты.ОбработатьНаборДанныхСвязаннойИнформации(Схема, "ДанныеСФВыд" , ПараметрыСФВыд);
БухгалтерскиеОтчеты.ОбработатьНаборДанныхСвязаннойИнформации(Схема, "ДанныеСФПолуч" , ПараметрыСФПолуч);
Как видно, что ничего сложного нет) главное знать куда и что ударить добавить)
Теперь, после сохранений, в отчете для дополнительных полей появится возможность добавить новое поле (на рисунке для счета 76.ВА - счет-фактура полученный):
Результат отчета будет выглядеть следующим образом:
Для вывода номера и даты счет-фактура выданный требуется выбрать из "_Счет фактура выданный" реквизиты: "Дата" и "Номер", а вот для счет-фактура полученный входящие номер и дата можно вытащить используя реквизиты: "Входящий номер" и "от":
и соответственно отчет будет выглядеть уже так:
На текущий момент, не проверял работу отчета, если каким-либо образом будут введены 2 счет-фактуры по расчетному документу. По логике записей должно появится более 1 штуки и для предотвращения этого скорее всего нужно переделать запросы по выборке счет-фактур, а возможно что-то еще. Оставлю этот вопрос на суд сообщества, может кто уже проходил эту тему.
Ну и как уже сказано было выше: в приложении 2 файла. Первый для добавления отчета в качестве внешнего, а второй для замены стандартного отчета в конфигурации, если такая возможность/необходимость имеется.
Спасибо за внимание!