Внутренности регламентированной отчетности

09.12.15

Разработка - Механизмы типовых конфигураций

Публикация по мотивам статьи http://infostart.ru/public/418967/. В комментариях задавали вопросы о внутренней структуре, что, собственно, и сподвигло оформить наработки в виде отдельной статьи.

Сразу напомню, что внутренние данные лучше не трогать без особой необходимости и понимания, что именно делаешь. База не упадет, но конкретный отчет может перестать открываться, и его придется создавать заново. У меня особая необходимость состоит в том, что много данных экспортируется из внешних систем. В бухгалтерии их просто нет, а вносить вручную достаточно затратно по времени. Плюс сама отчетность на управляемых формах плохо реализована, постоянно происходит передача данных с клиента на сервер. И если в маленькой форме это не проблема, то на форме с множеством дополнительных листов и строк даже переход с одного поля на другое занимает порой несколько десятков секунд.

Я всегда создаю новый регламентированный отчет вручную, чтобы корректно создались и заполнились все внутренние структуры, и только затем лезу в него с ножом своей обработкой, чтобы углубить, расширить и дополнить.

Рассмотрим внутреннюю структуру данных на примере декларации по налогу на прибыль, Лист 3А. С января 2015 года Лист 3А представляет из себя совмещенные два листа, собственно 3А и 3В. Лист 3В это лист с дополнительными строками.

 

Как выяснили из статьи, нам нужен документ «Регламентированный отчет». Пройдемся по его реквизитам, которые нас могут заинтересовать:

ИсточникОтчета – тип строка. Хранит наименование отчета, в том виде как он задан в конфигураторе. Для нашего примера: «РегламентированныйОтчетПрибыль».

ВыбраннаяФорма – с типом строка. Форма отчетности, для которой заполнены структуры. Как пример: «ФормаОтчета2015Кв1».

 

В реквизите ДанныеОтчета – хранилище значений, тут непосредственно хранится вся внутренняя информация по регламентированному отчету.

 

Перед заполнением лучше проверить правильный отчет или нет. Если записать данные в отчет другого типа или старой формы, то он просто перестанет открываться.

Если НЕ (ДокументСсылка.ИсточникОтчета = "РегламентированныйОтчетПрибыль"
     И ДокументСсылка.ВыбраннаяФорма = "ФормаОтчета2015Кв1") Тогда
Возврат;
КонецЕсли;

Получаем структуру с данными:

ДанныеОтчета = ДокументСсылка.ДанныеОтчета.Получить();

 

Особенно нас интересует раздел «ДанныеМногостраничныхразделов». Как видно на рисунке, ДанныеМногостраничныхразделов это структура, в которой ключ – строки, соответствующие листам в отчете и имеющие вид «Лист02», «Раздел1_1» и т.д., а значения – это таблица значений.

ДанныеОтчета

Получаем и опционально очищаем данные интересующего листа

ТаблицаСтраницРаздела = ДанныеОтчета.ДанныеМногостраничныхразделов.Лист03А;
ТаблицаСтраницРаздела.Очистить();

Таблица значений имеет следующие колонки:

Представление – строка с номером и наименованием листа.

Данные – структура, в ней хранится вся информация по листу.

ДанныеДопСтрок – таблица значений с данными по дополнительным строкам

Список листов на форме отчета

Список листов во внутренней структуре

 Лист03А Листы в отчете ДанныеМногостраничныхразделов Лист03А

 

 

Структура «Данные» представляет из себя ключ, равный номеру ячейки из макета отчета и значение, так, как нам его нужно заполнить.

 

ДанныеМногостраничныхРазделов

 

Добавляем новую страницу и заполняем

НоваяСтраница = ТаблицаСтраницРаздела.Добавить();
НоваяСтраница.Представление = "Лист " + Н + " (" + ВыборкаЭмитент.Эмитент + ")";
НоваяСтраница.АктивнаяСтраница = Ложь;
НоваяСтраница.АвтоматическоеПредставление = Истина;
ПоляРаздела = Новый Структура;
ПоляРаздела.Вставить("П000310000100", "2");   // Категория налогового агента
ПоляРаздела.Вставить("П000310000200", ВыборкаЭмитент.ЭмитентИНН);  // ИНН организации - эмитента ценных бумаг
ПоляРаздела.Вставить("П000310000300", ВыборкаЭмитент.ВидДивидендов); // Вид дивидендов

 

Данные дополнительных строк

С дополнительными строками все несколько запутанней. Они хранятся сразу в двух местах: в таблице значений ДанныеДопСтрок и структуре Данные.

Таблица состоит из колонок, имена которых, соответствуют именам ячеек в макете, но без символов «_1». Каждая строчка таблицы это отдельная дополнительная строка в отчете.

 ДанныеДопСтрок 

Создаем таблицу значений, обязательно типизированную. Типы значений нужно брать так же из макета.

ДанныеДопСтрок = Новый ТаблицаЗначений;
ДанныеДопСтрок.Колонки.Добавить("П000330000503", Новый ОписаниеТипов("Строка",,,, New StringQualifiers(10)));   //  ИНН получателя
ДанныеДопСтрок.Колонки.Добавить("П000330000504", Новый ОписаниеТипов("Строка",,,, New StringQualifiers(9)));    //  КПП
ДанныеДопСтрок.Колонки.Добавить("П000330000505", Новый ОписаниеТипов("Строка",,,, New StringQualifiers(2)));    // Тип 00 - первичная

Заполняем

сДопСтрока = ДанныеДопСтрок.Добавить();
сДопСтрока.П000330000503 = ВыборкаДетали.ИНН; //  ИНН получателя
сДопСтрока.П000330000504 = ВыборкаДетали.КПП;  //  КПП
сДопСтрока.П000330000505 = "00";      // Тип 00 - первичная

 Данные дополнительных строк также дублируются в структуре Данные. В формате: П000330000503_1 – первая строка, П000330000503_2 – вторая и т.д.

сНом = "_"+Формат(Ном, "ЧДЦ=; ЧГ=0");
ПоляРаздела.Вставить("П000330000503"+сНом, ВыборкаДетали.ИНН);  //  ИНН получателя
ПоляРаздела.Вставить("П000330000504"+сНом, ВыборкаДетали.КПП);  //  КПП
ПоляРаздела.Вставить("П000330000505"+сНом, "00");               // Тип 00 - первичная

 

После заполнения записываем получившиеся структуры данных в документ, а сам документ в базу:

НоваяСтраница.Данные = ПоляРаздела;
Попыка НоваяСтраница.ДанныеДопСтрок = ДанныеДопСтрок;
Исключение
КонецПопытки;

ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
ДокументОбъект.ДанныеОтчета = Новый ХранилищеЗначения(ДанныеОтчета);
Попытка
	ДокументОбъект.Записать();
Исключение
	Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное);
КонецПопытки;
 

Печатные формы в регламентированной отчетности

Есть небольшой нюанс, в хранении отчетности. Некоторые отчеты хранят не форму для редактирования, а сразу готовую печатную форму в формате mxl. Например, «Регламентированный отчет НДС» именно так хранит формы книги покупок и продаж в базе данных. Как это реализовано?

Для хранения печатных форм используется регистр сведений  «Дополнительные файлы регламентированных отчетов». Выглядит он вот так:

ДополнительныеФайлыРегламентированныхОтчетов

Каким образом его правильно готовить?

Измерения:

РегламентированныйОтчет – ссылка на документ.

ВидДополнительногоФайла – текстовая строка. Как правило тут хранится наименование печатной формы. Для отчета «Регламентированный отчет НДС» имеет значения «ДанныеХХХ» и «ТабличныйДокументХХХ», где ХХХ – имя раздела, например: «Раздел8». Вид дополнительного файла зависит от отчета, так что

Единственный ресурс – СодержимоеФайла, с типом – хранилище значения. Здесь непосредственно хранится сам файл.

Реквизиты: собственно, ничего интересного, чисто техническая информация по файлу. Имя, размер, даты добавления и изменения.

 

Пример записи:

Процедура СохранитьСведенияНДС(ИмяРаздела, ДокСсылка, АдресДанных, АдресТабличногоДокумента=Неопределено)
                ЗаписьРегистраСведений = РегистрыСведений.ДополнительныеФайлыРегламентированныхОтчетов.СоздатьМенеджерЗаписи();
                ЗаписьРегистраСведений.РегламентированныйОтчет = ДокСсылка;
                ЗаписьРегистраСведений.ВидДополнительногоФайла = "ТабличныйДокумент" + ИмяРаздела;
                ЗаписьРегистраСведений.СодержимоеФайла = Новый ХранилищеЗначения(АдресТабличногоДокумента);
                ЗаписьРегистраСведений.ИмяФайла = ИмяРаздела + ".mxl";
                ЗаписьРегистраСведений.Размер = 1;
                ЗаписьРегистраСведений.ДатаДобавления = ТекущаяДатаСеанса();
                ЗаписьРегистраСведений.Записать();
КонецПроцедуры

Заключение

Естесственно, к каждому отчету нужно подходить индивидуально, но общий принцип у всех один. И наработки по одному отчету можно по аналогии перенести на любой другой.

регламентированный отчет

См. также

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2343    YA_418728146    11    

40

Регистры накопления в 1С:КА2 и 1С:ERP для расчета НДФЛ, страховых взносов и взаиморасчетов с сотрудниками на январь 2024 года. Краткое описание

Зарплата Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет НДФЛ Абонемент ($m)

Для расчета зарплаты и соответствующих налогов в конфигурациях 1С:КА2 и 1С:ERP используется 22 регистра накопления, 7 регистров сведений, 1 регистр расчета и бухгалтерские проводки. В таблице приведены названия этих регистров, указаны основные регистраторы и виды движений приход/расход. В описании приводится краткое функциональное назначение регистров в основных зарплатных процессах. Описание регистров родилось из черновиков при написании различных отчетов и обработок при эксплуатации 1С-овских конфигураций и исправлении ошибок по НДФЛ, взаиморасчетов с сотрудниками и прочих. Информация не претендует на полноценное описание работы регистров, скорее это дискуссионный материал. Но, возможно, кому-то пригодится и сократит время при подготовке отчетности за непростой (в плане учета зарплаты) 2023 год. А возможно, кто-то поделится своим опытом.

1 стартмани

10.01.2024    1013    6    2ncom    3    

8

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

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

28.12.2023    4819    mrXoxot    11    

99

Ключи аналитик учета в ЕРП, КА, УТ

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

Разбираемся, зачем в системе ЕРП созданы справочники: ключи аналитик учета, зачем созданы аналогичные по набору измерений регистры сведений. Какие проблемы они решают, какие создают новые и что с этим делать.

08.11.2023    7014    ids79    25    

74

Распределение по базе среднего в ЗИКГУ 3.1

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

Результат расчета начислений (отпуск, БЛ и т.д.) может распределятся по базе среднего заработка. У таких начислений на вкладке "Налоги, взносы, бухучет" стоит галка "По базе среднего заработка". Но бывают случаи, что данное распределение необходимо скорректировать.

1 стартмани

14.09.2023    444    2    Vlx    0    

1

Расширение типового механизма настройки заполнения бухгалтерской отчетности (на примере конфигурации 1С:ERP. Управление холдингом 3.1.8.15)

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление холдингом 1С:Франчайзи, автоматизация бизнеса Россия Бесплатно (free)

В статье приведен алгоритм доработок типового механизма настройки заполнения бухгалтерской отчетности на примере конфигурации 1С:ERP. Управление холдингом (3.1.8.15). Цель доработок - сделать процесс настроек более гибким и удобным для пользователей

11.09.2023    1922    ICL-Soft    3    

12

Разбор механизма "Настройки полей формы" в 1С:ERP. Управление холдингом

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

В данной статье я постараюсь разобрать механизм, который Вам может встретиться на просторах типовой конфигурации 1С:ERP. Управление холдингом. Я не могу гарантировать, что этот механизм не исключат из следующих версий конфигурации (как, собственно, и любой другой). К сожалению, мне не удалось найти его ни в одном модуле конфигурации "Библиотеки стандартных подсистем". Мне он показался интересным, и захотелось более детально во всем этом разобраться.

18.07.2023    2153    it_box    1    

7

Работа с контактной информацией. Часть 2

Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Во второй части статьи рассмотрим вопрос преобразования адреса из старого формата в новый. Рассмотрим реальные задачи, связанные с контактной информацией.

05.06.2023    6940    biimmap    4    

41
Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. klinval 337 15.12.15 10:22 Сейчас в теме
Судя по вашей публикации вы уже грузили данные с внешних источников в отчёты. Мне сейчас это тоже предстоит. Оказывается новые отчеты "РегламентированныйОтчетРеестрНДСПриложение<Число от 1 до 14>" также как и "Декларация по НДС" держит отдельно данные (в виде структуры, где основное место занимает дерево значений) и табличный документ (в РС «ДополнительныеФайлыРегламентированныхОтчетов»).

Как я обычно воспринимал табличный документ - это печатная форма. Т.е. первичнее данные и из данных получается табличный документ. Тут наоборот: сначала ты заполняешь табличный документ, он сохраняется, из него вырываются и сохраняются данные (в виде дерева). Потом тебе надо что-то изменить: загружается ранее сохранённый табличный документ, его заполняешь, сохраняешь и только потом из него данные попадают в дерево значений. Дальше выгрузка в xml идёт из дерева значений. Т.е. получается, что из ДЗ и ТД первичнее ТД, из которого потом идёт ДЗ…

Мне интересно: в других отчётах, как я понимаю, не используется РС «ДополнительныеФайлыРегламентированныхОтчетов», значит там всё сохраняется в структуру (точнее в ДанныеОтчета – хранилище значений, не суть) и при открытии отчёта из структуры данные идут в ТД?
shalupov61; +1 Ответить
2. defender 357 15.12.15 13:22 Сейчас в теме
(1) klinval, да регистр ДополнительныеФайлыРегламентированныхОтчетов используется в трех-четырех регламентированных отчетах. А остальные хранят только данные, и при открытии рег. отчета заполняют ими форму (табличный документ).
3. klinval 337 15.12.15 16:03 Сейчас в теме
(2)
А остальные хранят только данные, и при открытии рег. отчета заполняют ими форму (табличный документ).

Эх, мне похоже неповезло, т.к. в моём отчёте при открытии восстанавливается ранее сохраненный ТД, а не заполняется из данных... Хорошо хоть из ТД данные переходят в "ДанныеОтчета", а то в "декларации по НДС": ТД и данные, откуда потом берётся выгрузка в xml, вообще никак не связаны.
4. fomix 33 25.01.16 12:03 Сейчас в теме
При переходе с БП 2.0 на БП 3.0 программа ругалась на не уникальность записей в указаном в статье регистре сведений «Дополнительные файлы регламентированных отчетов». Пришлось зайти в необновленную базу БП 2.0, удалить все записи в данном регистре (благо их там было не так уж и много!), после чего обновился на БП 3.0.
Вопрос: в таком случае что-то нарушилось в "стройной" схеме 1С-ки и можно ли жить до следующего отчетного периода спокойно?
5. klinval 337 25.01.16 13:22 Сейчас в теме
(4) fomix, в РС указано к каким документам (регламентированным отчетам) относятся эти файлы. Если зайдёте в эти отчёты в БП 3.0 скорее что-то работать не будет: либо выгрузка в Xml, либо вообще отчёт не откроется (если табличный документ загружался из этих файлов).
Если опираться на то что я знаю: на новые отчёты скорее всего не повлияет... Хотя там схема такая, что я не удивлюсь если повлияет и на новые!
6. dnikolaev 177 17.05.16 16:56 Сейчас в теме
Спасибо огромное. у меня тоже все получилось с Вашей помощью
7. Synoecium 778 12.11.17 19:37 Сейчас в теме
Хорошее дополнение к статье про регл. очтетность. Пригодилось, спасибо :)
8. gucci76 364 23.10.19 13:38 Сейчас в теме
А почему рег отчеты нельзя сохранить как?
9. gucci76 364 24.10.19 13:48 Сейчас в теме
(8) Не знаю почему, но сделал расширение, которое разрешает сохранять ))))
10. graphbuh 254 25.10.19 09:47 Сейчас в теме
Всем привет!
А кто знает, в какое процедуре показатели выводятся в ячейки макета...
Например в ЗУП для РСВ есть показатель
П011110003001 он выводится в ячейки П011110003001_1 до П011110003001_9 и еще две на знаки после запятой....
Прикрепленные файлы:
12. graphbuh 254 25.10.19 12:31 Сейчас в теме +5 $m
(10) кто знает, в какое процедуре показатели выводятся в ячейки макета...
Например в ЗУП для РСВ есть показатель
П011110003001 он выводится в ячейки П011110003001_1 до П011110003001_9 и еще две на знаки после запятой
Прикрепленные файлы:
13. graphbuh 254 01.11.19 14:38 Сейчас в теме
14. Urmas 01.10.20 04:50 Сейчас в теме
(13)Будьте добры, напишите как Вы решили проблему
11. пользователь 25.10.19 09:48
Сообщение было скрыто модератором.
...
15. vse4590 11.02.21 05:25 Сейчас в теме
а теперь не листы добавлять надо, а ДанныеМногострочныхЧастей
и ИНН, например, теперь П0003ВМ100503 или П0003ВМ100503_1, все названия колонок надо менять? (или я не там смотрю)
и как не добавляя новый лист, добавить ДанныеМногострочныхЧастей
16. hasan-rusel 11 20.12.22 11:09 Сейчас в теме
А как после
ДокументОбъект.Записать();
Перечитать данные в РегОтчете ? Приходится закрывать форму и заного открывать.)
17. defender 357 20.12.22 11:37 Сейчас в теме
(16) Я всегда делал заполнение отдельной обработкой, соответственно такой вопрос не стоял. Но в меню "еще" есть Обновить. можно попробовать нажать
18. hasan-rusel 11 20.12.22 12:11 Сейчас в теме
19. defender 357 20.12.22 12:15 Сейчас в теме
(18) Серенькая такая, выше "Настройка.."
20. hasan-rusel 11 20.12.22 12:16 Сейчас в теме
(19) Серенькая, собака такая)
21. hasan-rusel 11 20.12.22 13:18 Сейчас в теме
22. hasan-rusel 11 20.12.22 15:26 Сейчас в теме
(16) Может кому пригодится. Надо было добавить экспортную процедуру Инициализация

ДокументОбъект.Записать();

Инициализация();
Оставьте свое сообщение