1. Отчет «ОСВ по счету»
2. Какая схема и как она попадает в реквизит форму в конфигурации системы 1С
4. Что нужно для внесения изменений в типовой макет бухгалтерского отчета 1С
1. Отчет «ОСВ по счету»
У формы отчета «ОСВ по счету» есть реквизит СхемаКомпоновкиДанных.
Это строка, которая хранит адрес в хранилище. По адресу находится Схема компоновки данных. Именно эта схема и используется при формировании отчета в 1С.
Схема компоновки данных 1С
У отчета «ОСВ по счету» есть два макета: ОсновнаяСхемаКомпоновкиДанных и СхемаКомпоновкиДанных. В качестве основной схемы установлен макет ОсновнаяСхемаКомпоновкиДанных.
Схема Компоновки Данных
ОборотноСальдоваяВедомостьПоСчету
При этом, если посмотреть, что представляют собой эти схемы, мы обнаружим, что ОсновнаяСхемаКомпоновкиДанных пустая!
ОсновнаяСхемаКомпоновкиДанных пустая
Зато СхемаКомпоновкиДанных как раз и содержит информацию для компоновки данных отчета 1С:
Информация для компоновки данных отчета 1С
Итак, получаем довольно запутанную ситуацию, когда у отчета стоит пустая основная схема данных 1С, есть дополнительная рабочая схема, а отчет формируется из схемы, находящейся в хранилище по адресу из реквизита формы.
2. Какая схема и как она попадает в реквизит форму в конфигурации системы 1С
Теперь разберемся, какая же схема и как попадает в реквизит формы в конфигурации системы 1С.
Если поставить точку останова 1С в начало процедуры ПриСозданииНаСервере формы отчета, то увидим, что в этот момент реквизит формы СхемаКомпоновкиДанных еще пуст.
Реквизит формы СхемаКомпоновкиДанных пуст
Далее провалимся в процедуру общего модуля БухгалтерскиеОтчетыВызовСервера. ПриСозданииНаСервере, из нее в процедуру ИнициализацияФормыОтчета и здесь обнаружим, что в реквизит помещается адрес основной схемы отчета (той, что пустая).
Адрес основной схемы отчета
Итак, на момент открытия формы отчета, мы имеем пустую схему.
Однако, все изменится, когда мы начнем формировать отчет, или откроем настройки. Происходит обращение к процедуре 1С ИнциализацияКомпоновщикаНастроек которая и отвечает за установку правильной схемы.
Обращение к процедуре 1С ИнциализацияКомпоновщикаНастроек
Она отправляет нас в процедуру общего модуля БухгалтерскиеОтчетыВызовСервера.ИнциализацияКомпоновщикаНастроек, где и происходит самое интересное – вычисляется актуальное имя схемы.
Вычисляется актуальное имя схемы
В комментарии к процедуре общего модуля БухгалтерскиеОтчеты.ИмяСхемыКомпоновкиДанныхОтчета подробно расписано, каким условиям должен удовлетворять отчет, чтобы иметь возможность применить механизм подмены схемы компоновки данных 1С: должен быть реквизит ТекущаяСхемаКомпоновкиДанных и две служебных процедуры в модуле менеджера отчета.
Для типового отчета «ОСВ по счету 1С» отрабатывает стандартный вариант. Процедура ОтчетПоддерживаетНесколькоСхемКомпоновкиДанных возвращает Ложь (проверяется наличие реквизита ТекущаяСхемаКомпоновкиДанных), и функция вернет имя схемы по умолчанию – «СхемаКомпоновкиДанных» (это как раз и будет дополнительная рабочая схема отчета).
Далее адрес этой схемы запишется в реквизит формы СхемаКомпоновкиДанных и будет использован при формировании отчета.
3. Когда требуется изменить типовую схему компоновки данных 1С
Теперь рассмотрим ситуацию, когда требуется изменить типовую схему компоновки данных 1С. Если вносить изменения непосредственно в типовой макет СхемаКомпоновкиДанных, с большой долей вероятности, они затрутся после очередного обновления. Например, мне нужно было добавить возможность формирования отчета в 1С в разрезе Регистраций в налоговом органе 1С. Оптимально будет скопировать типовой макет и внести изменения уже в него. У меня используется расширение, поэтому я добавила отчет в расширение и уже там добавила новый макет.
Добавлен отчет в расширение и новый макет
Новую схему я доработала – добавила левым соединением регистр сведений РегистрацииВНалоговомОргане и из него саму регистрацию.
Так же в расширении я добавила отчету реквизит ТекущаяСхемаКомпоновкиДанных, а в модуле менеджера добавила две процедуры:
- НовыеПараметрыВыбораСхемыКомпоновкиДанных (так как никакие параметры на выбор схемы влиять не будут, то возвращаю просто пустую структуру;
- ТекущаяСхемаКомпоновкиДанных (принимает на вход структуру параметров, у меня просто возвращает имя нужной мне схемы).
Получила отчет «ОСВ по счету 1С», который формируется по моему доработанному макету, с удобными для обновления изменениями типовой конфигурации.
Этот механизм можно использоваться не только для отчета «ОСВ по счету 1С». Его можно применять если не с любым бухгалтерским отчетом 1С, то с большинством точно.
Что касается именно отчета «ОСВ по счету 1С», то у него еще есть места в модуле менеджера, где запрос из схемы подменяется. Изменения нужно внести и в них. Это процедуры ТекстЗапросаДляСчетовБезСубконто и ШаблонЗапроса.
4. Что нужно для внесения изменений в типовой макет бухгалтерского отчета 1С
Итак, для того чтобы внести изменения в типовой макет бухгалтерского отчета 1С нужно выполнить следующие действия:
1) копируем макет, вносим в него исправления;
2) добавляем отчету реквизит ТекущаяСхемаКомпоновкиДанных (строка, 80);
3) в модуль менеджера отчета добавляем процедуру НовыеПараметрыВыбораСхемыКомпоновкиДанных – возвращает Структуру;
4) в модуль менеджера отчета добавляем процедуру ТекущаяСхемаКомпоновкиДанных – на вход принимает Структуру, возвращает строку – имя нового макета.
Специалист компании ООО "Кодерлайн"
Екатерина Редько