Начиная с 1 квартала 2021 сдача деклараций будет происходить по новым формам.
Новый формат сдачи был утвержден Постановлением Правительства №1719 еще в 2018 году, однако Росалкогольрегулирование не спешило с их разработкой и утверждением. Новые формы и порядок их сдачи установлены приказом Федеральной службы по регулированию алкогольного рынка от 17.12.2020 №396 «Об утверждении порядка и формата представления в форме электронного документа деклараций об объеме производства, оборота и (или) использования этилового спирта, алкогольной и спиртосодержащей продукции, об использовании производственных мощностей производителями пива и пивных напитков сидра, пуаре, медовухи, форм и порядка заполнения таких деклараций».
К сожалению, фирма 1С не всегда своевременно учитывает в своих обновлениях все нововведения. Поэтому конечным пользователям зачастую приходится в авральном режиме решать проблемы, связанные с подобного рода изменениями в законодательстве.
Поэтому я решил перестраховаться. Создать полноценный отчет с возможностью заполнения, расшифровки и выгрузки с нуля довольно сложно. Можно взять типовой отчет, который служил верой и правдой до сего момента и его переработать. Как говорится "... а заусенцы обработать рашпилем". Данная разработка предназначена исключительно для пользователей конфигурации "КТ акоголь", Поэтому описание доработок выполнено в терминах именно этой конфигурации. Для любителей экстрима моя работа может послужить исходным материалом для создания собственного механизм выгрузки декларации.
Итак, исходные данные:
конфигурация "KT2000_Alcohol_Trade" (1С: Управление торговлей алкогольной продукцией 8, редакция 10.3), создана на базе типовой УТ 10.3.;
отчет " алкРегламентированныйОтчетАлкоПриложение11" из этой конфигурации (назовем его "типовой");
структура выгрузки декларации в виде файла xsd (взято тут https://fsrar.gov.ru/Declaring/xsd_shemy)
Описание доработок:
меняем содержимое макета. Насколько я понял из кода макет служит для описания структуры выгружаемого файла, определения его показателей их имен, типов. За основу берем макет "СхемаВыгрузки431". Делаем с него копию и сохраняем под именем "СхемаВыгрузки44".
1) Первые десять строк макета содержат параметры для заголовка выгрузки: версия формата, номер формы, дата выгрузки.
Исходный вариант:
после изменения:
результат в файле выгрузки:
2) Значение атрибутов "ВерсФорм" "НомФорм" задано в соответствии с xsd-схемой.
Значение атрибута "ALK_7.xsd" задается в модуле формы " ФормаОтчета2013Кв4" Процедура ИнициацияФормы()
Группировка макета "ОбъемОборота". Убираем строку с параметром &НаличиеОборота
3) В группировке "Поставщик" меняем имя вложенной группировки "Продукция" на "Поставка".
Тут же меняем имена показателей.(префикс "П2" меняем на "П0"). И добавляем вложенную группировку "Возврат" путем копирования группировки "Поставка".
4) Далее группировка "Движение" Согласно новой схеме из нее нужно убрать показатель "П100000000009" {Поступление (закупки) по импорту (дал)} а все нижележащие показатели сдвинуть вверх и на единицу уменьшить их номера. Т.е. показатель " П100000000010" надо переименовать в "П100000000009", "П100000000011" в "П100000000010" и т.д. Т.е. количество показателей должно уменьшиться. Но тогда структура макета не будет согласована с запросом, который собирает данные и определяет значения показателей. Корячить запрос я не стал, поэтому удалил строчку с показателем код "П100000000021 " чтобы количество выводимых показателей соответствовало новой схеме.
а значения показателей переписал в процедуре. Об этом чуть ниже.
Корректировка макета на этом закончена
Изменения в коде.
Содержимое выгрузки формируется из модуля формы "ФормаОтчета2013Кв4" (далее просто форма). Что делаем тут....
5) Функция ИзвлечьСтруктуруXML() задействуем наш новый макет Макет = ПолучитьМакет("СхемаВыгрузки44");
6) Процедура ЗаполнитьСодержательнуюЧастьДокумент служит для заполнения и выгрузки всех группировок начиная с "ОбъемОборота". Т.к. группировку "Продукция" мы изменили на "Поставка" то отразим это в этой процедуре:
УзелПоставкаШаблон = ПолучитьПодчиненныйЭлемент(УзелКонтрагентЛицензия, "Продукция");
меняем на
УзелПоставкаШаблон = ПолучитьПодчиненныйЭлемент(УзелКонтрагентЛицензия, "Поставка");
Ниже идет цикл по заполнению и выгрузки показателей этого узла. В теле цикла согласно xsd-схеме исключаем все движения, сделанные документами "ВозвратТоваровОтПокупателя"
7) После этого цикла добавляем фрагмент для заполнения показателей новой группировки "Возврат". Для этого копируем фрагмент группировки "Поставка", меняем в копии имя нужной группировки
УзелВозвратШаблон = ПолучитьПодчиненныйЭлемент(УзелКонтрагентЛицензия, "Возврат");
и в цикле выгрузки меняем условие обхода цикла, т.е. обрабатываем только движения по возвратам от покупателя.
8) Т.к. состав и содержимое показателей группировки "Движение" изменены (см п.4) согласно xsd-схеме (нужно убрать вывод данных показателя "П000000000010" (закупка импорт) ), а макет в этой части мы не трогали, то учтем это при выводе группировки "Движение", програмно сдвинем значения показателей начиная с этого показателя.
СтруктураДанных.П000000000010 = СтруктураДанных.П000000000011;
СтруктураДанных.П000000000011 = СтруктураДанных.П000000000012; и т.д.
И последнее. Запрос, собирающий данные для выгрузки находится в модуле объекта
функция ФормаОтчета2012Кв1ЗаполнитьПоказателиПоДаннымУчета. По итогу этого запроса формируется дерево значений, структура которого должна быть согласована с макетом. Запрос мы не трогали. Поэтому структура дерева не соответствует составу показателей в группировке "Движение" (мы же там один показатель удалили.) Поэтому это нужно учесть при выводе показателя в процедуре модуля формы "ВыгрузитьСтрокуМногострочнойЧасти"
В принципе на этом все.
Для чего я все так расписывал... Это на тот случай если моей работой захочет воспользоваться человек для разработки своей выгрузки. Ему будет проще понять где что происходит. Ну и для себя ... в процессе изложения привел мысли в порядок.. ).
Не исключаю, что не все учел. После отправке пробной выгрузки файла в л/к РАРа, возможно, что-то будет доработано.
Всем удачи.
P.S.
Сегодня, 07.03.2021 выгруженная декларация успешно принята в л/к РАРа. Кое-что пришлось еще доработать:
1) Имя файла выгрузки: изменен префикс (первые 2 символа) было "R1", стало "07" (08) для алкоголя и пива соответственно.
можно исправить в коде: МодульФормы. ф-я СформироватьСтруктуруПараметров()
Параметры.Вставить("ПрефиксИмениФайлаВыгрузки", "07"); //стр.5095
2) Узел "Поставщики" (подчинен "Справочники") теперь не должен содержать "Лицензии"
было:
стало:
как это сделать в коде пока не разобрался, поэтому после выгрузки удалил все руками.
3) изменено отражение информации по лицензиям:
было:
стало:
тоже исправил руками
4) Изменено имя узла "СведПроизвИмпорт"
было:
стало:
как исправить: а) в макете
и в модуле формы Процедура ЗаполнитьСодержательнуюЧастьДокумент(УзелРодитель)
ТаблицаПроизводителейИмпортеров.Сортировать("ИДПроизвИмп"); //стр. 5514 изменилось имя узла, отразил в макете и тут
УзелСведПроизвИмпортШаблон = ПолучитьПодчиненныйЭлемент(УзелОборот, "СведПроизвИмпортер"); //СведПроизвИмпорт
P.S. (25/05/2021) нашел как исправить выгрузку узла "Лицинзируема" (см. пред p.s. пп.3).
Для правильного отражения нужно немного изменить ту часть макета, которая описывает структуру выгрузки лицензий.
В моем макете это строки 67-71. Там просто нужно поменять тип параметра с "С" на "П"
вроде все.