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

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 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Абонемент ($m)

Продолжение темы вынесения кусков повторно-используемого кода в запрос. В прошлый раз мы сделали это с вычислением пользовательских формул. Здесь замахнулись на формулы, задаваемые пользователем запросами.

1 стартмани

11.04.2024    499    tango    0    

3

Формула в реквизите. Приквелл к сериалу "Ценовая власть"

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

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

10 стартмани

11.04.2024    386    tango    5    

3

Ценовая власть. Второй сезон

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

В первом сезоне мы рассмотрели (с точки зрения программиста) внутренний механизм, помещающий цены в регистр "Цены". Из этого регистра цена попадает в исходящие УПД (в продажи). Но эта цена (в прайс-листе) дифференцирована (ценообразована) в разрезах свойств самой номенклатуры. Но стратегия ценообразования, ценовая власть - это в первую очередь о работе с ценами для клиента. И тут вступает в дело второй акт марлезонского, Скидки (наценки) и кешбек.

08.04.2024    649    tango    0    

2

Ценовая власть (УТ 11.5) - 2

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

В прошлый раз специальной обработкой мы выбрали объекты УТ 1.5, группируя по подсистемам. Оказалось, что состав подсистем не вполне корректно отображает функциональную структуру, но зато мы нашли процедуру, которая, вроде бы, должна содержать в себе всё, что нас интересует. Обновление цен должно ведь следовать выбранной стратегии ценообразования, верно? Иначе что она обновляет...

06.04.2024    449    tango    1    

1

Ценовая власть или Управление ценообразованием (УТ 11.5)

Ценообразование, анализ цен Механизмы типовых конфигураций Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Россия Управленческий учет Абонемент ($m)

Ценовая власть - это способность (возможность) компании изменять в некоторых пределах отпускную цену своего товара (услуг, продукции). Чем в более широких пределах вы можете играть в цену продажи, тем больше этой власти у вас. Если вы не можете управлять отпускной ценой, то это или не ваш бизнес, или не бизнес вовсе. Здесь в рубрике "База знаний аналитика и руководителя проекта" слово проект не ограничено "проектом в 1С". Посмотрим, что для этого есть в УТ 11.5.

1 стартмани

05.04.2024    535    tango    12    

2

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

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

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

07.02.2024    2607    YA_418728146    11    

43

Регистры накопления в 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    1156    8    2ncom    6    

8

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

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

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

28.12.2023    4973    mrXoxot    11    

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

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

Мне интересно: в других отчётах, как я понимаю, не используется РС «ДополнительныеФайлыРегламентированныхОтчетов», значит там всё сохраняется в структуру (точнее в ДанныеОтчета – хранилище значений, не суть) и при открытии отчёта из структуры данные идут в ТД?
shalupov61; +1
2. defender 357 15.12.15 13:22 Сейчас в теме
(1) klinval, да регистр ДополнительныеФайлыРегламентированныхОтчетов используется в трех-четырех регламентированных отчетах. А остальные хранят только данные, и при открытии рег. отчета заполняют ими форму (табличный документ).
+
3. klinval 338 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 338 25.01.16 13:22 Сейчас в теме
(4) fomix, в РС указано к каким документам (регламентированным отчетам) относятся эти файлы. Если зайдёте в эти отчёты в БП 3.0 скорее что-то работать не будет: либо выгрузка в Xml, либо вообще отчёт не откроется (если табличный документ загружался из этих файлов).
Если опираться на то что я знаю: на новые отчёты скорее всего не повлияет... Хотя там схема такая, что я не удивлюсь если повлияет и на новые!
+
6. dnikolaev 177 17.05.16 16:56 Сейчас в теме
Спасибо огромное. у меня тоже все получилось с Вашей помощью
+
7. Synoecium 779 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 Сейчас в теме
(12)Проблема решена
+
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) Может кому пригодится. Надо было добавить экспортную процедуру Инициализация

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

Инициализация();
ivan453; +1
23. user1990613 28.03.24 13:19 Сейчас в теме
Добрый день. Можете подсказать, откуда берутся данные для заполнения 7 раздела декларации по ндс
+
Оставьте свое сообщение