Содержание:
1. Разработка выгрузки данных по налогам в XML для 1С: ЗУП 3.1 КОРП
2. Внешний вид обработки
Разработка выгрузки данных по налогам в XML для 1С: ЗУП 3.1 КОРП
Необходимо разработать обработку за выбранный период (по месяцам) выгрузки данных по налогам в формате xml для дальнейшей передачи в другие системы. В конфигурации ЗУП 3.1 по кнопке «заполнить» в форме обработки надо разработать процедуру заполнения табличных частей 1С НДФЛ и ПрочиеНалоги.
Данных по налогу НДФЛ необходимо получить из регистра накопления в 1С: ЗУП РасчетыНалогоплательщиковСБюджетомПоНДФЛ с отбором по Организация по Подразделение по Период и только вид движения регистра как приход.
Данных по ПрочиеНалоги (ФСС, ФССНС, ФФОМС, ПФР) необходимо получить из регистра накопления в 1С: ЗУП СтраховыеВзносыПоФизическимЛицам с отбором по Организация и по Период.
Потом заполненные данные по кнопке «Выгрузить» необходимо выгрузить в xml файл в 1С.
В первой закладке заполняются налоги по НДФЛ. Во второй закладке ПрочиеНалоги.
Внешний вид обработки
Внешний вид обработки выглядит так:

Выгрузка налогов
Процедуры и функции модуля формы обработки:
&НаКлиенте
Процедура ВыборПериодаПриИзменении(Элемент)
ДатаДоИзменения = Объект.ПериодДокументов1;
ЗарплатаКадрыКлиент.ВводМесяцаПриИзменении(ЭтаФорма, “Объект.ПериодДокументов1”,
“ВыборПериодаСтрокой”, Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура ВыборПериодаНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
ДополнительныеПараметры = Новый Структура(“ДатаДоИзменения”, Объект.ПериодДокументов1);
Оповещение = Новый ОписаниеОповещения(“НачалоПериодаРасчетаСтрокойНачалоВыбораЗавершение”,
ЭтотОбъект, ДополнительныеПараметры);
ЗарплатаКадрыКлиент.ВводМесяцаНачалоВыбора(ЭтаФорма, ЭтаФорма, “Объект.ПериодДокументов1”,
“ВыборПериодаСтрокой”, , Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВыборПериодаРегулирование(Элемент, Направление, СтандартнаяОбработка)
ДатаДоИзменения = Объект.ПериодДокументов1;
ЗарплатаКадрыКлиент.ВводМесяцаРегулирование(ЭтаФорма, “Объект.ПериодДокументов1”,
“ВыборПериодаСтрокой”, Направление, Модифицированность);
Объект.ПериодДокументов2 = КонецМесяца(Объект.ПериодДокументов1);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Объект.Дата1 = НачалоМесяца(ТекущаяДата());
Объект.Дата2 = КонецМесяца(Объект.Дата1);
Объект.ПериодДокументов1 = Объект.Дата1;
Объект.ПериодДокументов2 = Объект.Дата2;
ДобавитьСтрокуПараметровНалогов("НДФЛ");
ДобавитьСтрокуПараметровНалогов("ФСС");
ДобавитьСтрокуПараметровНалогов("ФССНС");
ДобавитьСтрокуПараметровНалогов("ФФОМС");
ДобавитьСтрокуПараметровНалогов("ПФР");
ВыборПериодаСтрокой = ЗарплатаКадрыКлиентСервер.ПолучитьПредставлениеМесяца(Объект.ПериодДокументов1);
УстановитьВидимость();
КонецПроцедуры
Процедура ДобавитьСтрокуПараметровНалогов(Имя)
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Налог", Имя);
СтрокаПараметров = Объект.ПараметрыНалогов.НайтиСтроки(ПараметрыОтбора);
Если СтрокаПараметров.Количество() = 0 Тогда
НоваяСтрока = Объект.ПараметрыНалогов.Добавить();
НоваяСтрока.Налог = Имя;
Если Имя = "НДФЛ" Тогда
НоваяСтрока.ТекстПлатежа = "НДФЛ {Период} КПП {КПП}";
НоваяСтрока.КБК = "18210102010011000110" ;
ИначеЕсли Имя = "ФСС" Тогда
НоваяСтрока.ТекстПлатежа = "Страховые взносы ФСС {Период} Рег № {КодФСС}";
НоваяСтрока.КБК = "18210202090071010160" ;
ИначеЕсли Имя = "ФССНС" Тогда
НоваяСтрока.ТекстПлатежа = "Страховые взносы ФСС НС {Период} Рег № {КодФСС}";
НоваяСтрока.КБК = "39310202050071000160" ;
ИначеЕсли Имя = "ФФОМС" Тогда
НоваяСтрока.ТекстПлатежа = "Страховые взносы ФФОМС {Период} Рег № {КодПФР}";
НоваяСтрока.КБК = "18210202101081013160" ;
ИначеЕсли Имя = "ПФР" Тогда
НоваяСтрока.ТекстПлатежа = "Страховые взносы ПФР {Период} Рег № {КодПФР}";
НоваяСтрока.КБК = "18210202010061010160" ;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодразделенияОрганизацииНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗначениеОтбора = Новый Структура("ГоловнаяОрганизация", Объект.Организация);
ПараметрыВыбора = Новый Структура("Отбор", ЗначениеОтбора);
ПараметрыВыбора.Вставить("РежимВыбора", Истина);
ПараметрыВыбора.Вставить("МножественныйВыбор", Истина);
#Если ТолстыйКлиент Тогда
ФормаВыбора = ОткрытьФормуМодально("Справочник.ПодразделенияОрганизаций.ФормаСписка", ПараметрыВыбора, Элемент);
#Иначе
ФормаВыбора = ОткрытьФорму("Справочник.ПодразделенияОрганизаций.ФормаВыбора", ПараметрыВыбора, Элемент);
#КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура ПодразделенияОрганизацииОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Объект.ПодразделенияОрганизации.ЗагрузитьЗначения(ВыбранноеЗначение);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНаСервере()
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаНДФЛ Тогда
ЗаполнитьНДФЛ();
Иначе
ЗаполнитьНалоги();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Заполнить(Команда)
ЗаполнитьНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНДФЛ() Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Дата1", НачалоДня(Объект.Дата1));
Запрос.УстановитьПараметр("Дата2", КонецДня(Объект.Дата2));
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("ОрганизацияПустая", Объект.Организация.Пустая());
Запрос.УстановитьПараметр("ПустоеПодразделение", Справочники.ПодразделенияОрганизаций.ПустаяСсылка());
Запрос.УстановитьПараметр("ПодразделенияОрганизации", Объект.ПодразделенияОрганизации);
Запрос.УстановитьПараметр("ПодразделениеВыбран", ЗначениеЗаполнено(Объект.ПодразделенияОрганизации));
ТекстЗапроса =
"ВЫБРАТЬ
| Данные.Организация КАК Организация,
| Данные.Подразделение КАК ПодразделениеОрганизации,
| СУММА(Данные.Сумма) КАК Сумма
|ПОМЕСТИТЬ втДанные
|ИЗ
| РегистрНакопления.РасчетыНалогоплательщиковСБюджетомПоНДФЛ КАК Данные
|ГДЕ
| ВЫБОР
| КОГДА &ОрганизацияПустая
| ТОГДА ИСТИНА
| ИНАЧЕ Данные.Организация = &Организация
| КОНЕЦ
| И Данные.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
| И Данные.Период МЕЖДУ &Дата1 И &Дата2
| И Данные.Подразделение <>&ПустоеПодразделение
| И ВЫБОР
| КОГДА &ПодразделениеВыбран
| ТОГДА Данные.Подразделение В (&ПодразделенияОрганизации)
| ИНАЧЕ ИСТИНА
| КОНЕЦ
|
|СГРУППИРОВАТЬ ПО
| Данные.Организация,
| Данные.Подразделение
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Данные.Организация,
| ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка),
| СУММА(Данные.Сумма)
|ИЗ
| РегистрНакопления.РасчетыНалогоплательщиковСБюджетомПоНДФЛ КАК Данные
|ГДЕ
| ВЫБОР
| КОГДА &ОрганизацияПустая
| ТОГДА ИСТИНА
| ИНАЧЕ Данные.Организация = &Организация
| КОНЕЦ
| И Данные.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
| И Данные.Период МЕЖДУ &Дата1 И &Дата2
| И ВЫБОР
| КОГДА &ПодразделениеВыбран
| ТОГДА Данные.Подразделение В (&ПодразделенияОрганизации)
| ИНАЧЕ ИСТИНА
| КОНЕЦ
|
|СГРУППИРОВАТЬ ПО
| Данные.Организация
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| втДанные.Организация КАК Организация,
| втДанные.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
| втДанные.Сумма КАК Сумма
|ИЗ
| втДанные КАК втДанные
|
|УПОРЯДОЧИТЬ ПО
| Организация,
| ПодразделениеОрганизации
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.Текст = ТекстЗапроса;
РезультатЗапроса = Запрос.Выполнить();
Объект.НДФЛ.Загрузить(РезультатЗапроса.Выгрузить());
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалоги() Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Дата1", НачалоДня(Объект.Дата1));
Запрос.УстановитьПараметр("Дата2", КонецДня(Объект.Дата2));
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("ОрганизацияПустая", Объект.Организация.Пустая());
Запрос.Текст =
"ВЫБРАТЬ
| Данные.Организация,
| СУММА(Данные.ФСС) КАК ФСС,
| СУММА(Данные.ФССНесчастныеСлучаи) КАК ФССНС,
| СУММА(Данные.ФФОМС) КАК ФФОМС,
| СУММА(Данные.ПФРДоПредельнойВеличины) КАК ПФР
|ИЗ
| РегистрНакопления.СтраховыеВзносыПоФизическимЛицам КАК Данные
|ГДЕ
| ВЫБОР
| КОГДА &ОрганизацияПустая
| ТОГДА ИСТИНА
| ИНАЧЕ Данные.Организация = &Организация
| КОНЕЦ
| И Данные.Период МЕЖДУ &Дата1 И &Дата2
|
|СГРУППИРОВАТЬ ПО
| Данные.Организация
|
|УПОРЯДОЧИТЬ ПО
| Данные.Организация.Наименование";
РезультатЗапроса = Запрос.Выполнить();
Объект.ПрочиеНалоги.Загрузить(РезультатЗапроса.Выгрузить());
КонецПроцедуры
&НаКлиенте
Процедура ВыборПериода(Команда)
ВыбранныйПериод = Новый СтандартныйПериод;
// Устанавливаем начальные данные
ВыбранныйПериод.ДатаНачала = Объект.Дата1;
ВыбранныйПериод.ДатаОкончания = Объект.Дата2;
Диалог = Новый ДиалогРедактированияСтандартногоПериода();
Диалог.Период = ВыбранныйПериод;
// Не модальный вызов диалога выбора периода
Диалог.Показать(Новый ОписаниеОповещения("ВыборПериодаЗавершение", ЭтаФорма, Новый Структура("Диалог", Диалог)));
КонецПроцедуры
&НаКлиенте
Процедура ВыборПериодаЗавершение(Период, ДополнительныеПараметры) Экспорт
Диалог = ДополнительныеПараметры.Диалог;
Если ЗначениеЗаполнено(Период) Тогда
ВыбранныйПериод = Диалог.Период;
Объект.Дата1 = ВыбранныйПериод.ДатаНачала;
Объект.Дата2 = ВыбранныйПериод.ДатаОкончания;
Объект.ПериодДокументов1 = Объект.Дата1;
Объект.ПериодДокументов2 = Объект.Дата2;
ВыборПериодаСтрокой = ЗарплатаКадрыКлиентСервер.ПолучитьПредставлениеМесяца(Объект.ПериодДокументов1);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимость()
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаНДФЛ Тогда
Элементы.ПериодДокументов1.Видимость = Ложь;
Элементы.ПериодДокументов2.Видимость = Ложь;
Элементы.ВыборПериода.Видимость = Истина;
Объект.ПериодДокументов1 = НачалоМесяца(ТекущаяДата());
Объект.ПериодДокументов2 = КонецМесяца(Объект.ПериодДокументов1);
ВыборПериодаСтрокой = ЗарплатаКадрыКлиентСервер.ПолучитьПредставлениеМесяца(Объект.ПериодДокументов1);
ИначеЕсли Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаНалоги Тогда
Элементы.ПериодДокументов1.Видимость = Истина;
Элементы.ПериодДокументов2.Видимость = Истина;
Элементы.ВыборПериода.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
УстановитьВидимость();
КонецПроцедуры
&НаКлиенте
Процедура ИмяФайлаНДФЛНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Фильтр = НСтр("ru = 'Файла данных'; en = 'Data file'") + "(*.xml)|*.xml";;
Диалог.МножественныйВыбор = Ложь;
Диалог.Заголовок = "Выбор файла данных";
Диалог.ПолноеИмяФайла = Объект.ИмяФайлаНДФЛ;
Если Диалог.Выбрать() Тогда
Объект.ИмяФайлаНДФЛ = Диалог.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИмяФайлаНалогиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Фильтр = НСтр("ru = 'Файла данных'; en = 'Data file'") + "(*.xml)|*.xml";;
Диалог.МножественныйВыбор = Ложь;
Диалог.Заголовок = "Выбор файла данных";
Диалог.ПолноеИмяФайла = Объект.ИмяФайлаНалоги;
Если Диалог.Выбрать() Тогда
Объект.ИмяФайлаНалоги = Диалог.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Выгрузить(Команда)
Перем Ошибки;
Отказ = Ложь;
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаНДФЛ Тогда
СтрокаОшибок = ВыгрузитьНДФЛ();
Иначе
СтрокаОшибок = ВыгрузитьНалоги();
КонецЕсли;
Если СтрокаОшибок = "" Тогда
ПоказатьПредупреждение(, "Выгрузка завершена успешно!",, "ЗАВЕРШЕНИЕ!");
Иначе
ПоказатьПредупреждение(, "Выгрузка завершена с ошибками!",, "ВНИМАНИЕ!");
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, "", СтрокаОшибок,"");
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ВыгрузитьНДФЛ() Экспорт
Результат = "";
Если ПустаяСтрока(Объект.ИмяФайлаНДФЛ) Тогда
Результат = "Не задано имя файла выгрузки!";
Иначе
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("Налог", "НДФЛ");
СтрокиПараметровНалогов = Объект.ПараметрыНалогов.НайтиСтроки(СтруктураОтбора);
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(Объект.ИмяФайлаНДФЛ);
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("Коллекция");
ЗаписьXML.ЗаписатьАтрибут("Начало", Формат(Объект.Дата1, "ДФ=dd.MM.yyyy"));
ЗаписьXML.ЗаписатьАтрибут("Окончание", Формат(Объект.Дата2, "ДФ=dd.MM.yyyy"));
ЗаписьXML.ЗаписатьАтрибут("АнализЗаявокС", Формат(Объект.ПериодДокументов1, "ДФ=dd.MM.yyyy"));
ЗаписьXML.ЗаписатьАтрибут("АнализЗаявокПо", Формат(Объект.ПериодДокументов2, "ДФ=dd.MM.yyyy"));
ТаблицаНалоговых = СформироватьТаблицуНалоговых();
Для каждого СтрокаТаблицы из Объект.НДФЛ Цикл
Если СтрокаТаблицы.Сумма = 0 Тогда
Продолжить;
КонецЕсли;
ЗаписьXML.ЗаписатьНачалоЭлемента("СтрокаДанных");
Если ЗначениеЗаполнено(СтрокаТаблицы.ПодразделениеОрганизации) Тогда
РегистрацияВНалоговомОрганеПодразделение = ПолучитьРеквизит(СтрокаТаблицы.ПодразделениеОрганизации,"РегистрацияВНалоговомОргане");
ЗаписьXML.ЗаписатьАтрибут("КодИФНС", ПолучитьРеквизит(РегистрацияВНалоговомОрганеПодразделение,"Код"));
Иначе
РегистрацияВНалоговомОрганеОрганизации = ПолучитьРеквизит(СтрокаТаблицы.Организация,"РегистрацияВНалоговомОргане");
ЗаписьXML.ЗаписатьАтрибут("КодИФНС", ПолучитьРеквизит(РегистрацияВНалоговомОрганеОрганизации,"Код"));
КонецЕсли;
ЗаписьXML.ЗаписатьАтрибут("Налог", "НДФЛ");
ЗаписьXML.ЗаписатьАтрибут("ОрганизацияИНН", ПолучитьРеквизит(СтрокаТаблицы.Организация, "ИНН"));
ЗаписьXML.ЗаписатьАтрибут("ОрганизацияНаименование", ПолучитьРеквизит(СтрокаТаблицы.Организация,"Наименование"));
ЗаписьXML.ЗаписатьАтрибут("ПодразделениеКод", ПолучитьДопРеквизит(СтрокаТаблицы.ПодразделениеОрганизации,"Synchro"));
ЗаписьXML.ЗаписатьАтрибут("ПодразделениеНаименование", ПолучитьРеквизит(СтрокаТаблицы.ПодразделениеОрганизации,"Наименование"));
РегистрацияВНалоговомОрганеПодразделения = ПолучитьРеквизит(СтрокаТаблицы.ПодразделениеОрганизации,"РегистрацияВНалоговомОргане");
Если ЗначениеЗаполнено(СтрокаТаблицы.ПодразделениеОрганизации) Тогда
ЗаписьXML.ЗаписатьАтрибут("ПодразделениеОКАТО", ПолучитьРеквизит(РегистрацияВНалоговомОрганеПодразделения,"КодПоОКТМО"));
Иначе
ЗаписьXML.ЗаписатьАтрибут("ПодразделениеОКАТО", ПолучитьРеквизит(РегистрацияВНалоговомОрганеОрганизации,"КодПоОКТМО"));
КонецЕсли;
ЗаписьXML.ЗаписатьАтрибут("НалоговаяИНН", ПолучитьНалоговуюПодразделения(ТаблицаНалоговых, СтрокаТаблицы.ПодразделениеОрганизации));
ЗаписьXML.ЗаписатьАтрибут("Сумма", Формат(СтрокаТаблицы.Сумма, "ЧЦ=10; ЧДЦ=2; ЧРД=.; ЧГ="));
Если СтрокиПараметровНалогов.Количество() = 0 Тогда
ЗаписьXML.ЗаписатьАтрибут("КБК", "");
ЗаписьXML.ЗаписатьАтрибут("ТекстПлатежа", "");
Иначе
СтрокаПараметровНалогов = СтрокиПараметровНалогов[0];
ЗаписьXML.ЗаписатьАтрибут("КБК", СтрокаПараметровНалогов.КБК);
ЗаписьXML.ЗаписатьАтрибут("ТекстПлатежа", СформироватьТекстПлатежа(СтрокаПараметровНалогов.ТекстПлатежа, СтрокаТаблицы.Организация, СтрокаТаблицы.ПодразделениеОрганизации, Объект.Дата1));
КонецЕсли;
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Функция ВыгрузитьНалоги() Экспорт
Результат = "";
Если ПустаяСтрока(Объект.ИмяФайлаНалоги) Тогда
Результат = "Не задано имя файла выгрузки!";
Иначе
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("Налог", "ФСС");
СтрокиПараметровНалогов = Объект.ПараметрыНалогов.НайтиСтроки(СтруктураОтбора);
СтрокаПараметровНалоговФСС = СтрокиПараметровНалогов[0];
СтруктураОтбора.Вставить("Налог", "ФССНС");
СтрокиПараметровНалогов = Объект.ПараметрыНалогов.НайтиСтроки(СтруктураОтбора);
СтрокаПараметровНалоговФССНС = СтрокиПараметровНалогов[0];
СтруктураОтбора.Вставить("Налог", "ФФОМС");
СтрокиПараметровНалогов = Объект.ПараметрыНалогов.НайтиСтроки(СтруктураОтбора);
СтрокаПараметровНалоговФФОМС = СтрокиПараметровНалогов[0];
СтруктураОтбора.Вставить("Налог", "ПФР");
СтрокиПараметровНалогов = Объект.ПараметрыНалогов.НайтиСтроки(СтруктураОтбора);
СтрокаПараметровНалоговПФР = СтрокиПараметровНалогов[0];
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(Объект.ИмяФайлаНалоги);
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("Коллекция");
ЗаписьXML.ЗаписатьАтрибут("Начало", Формат(Объект.Дата1, "ДФ=dd.MM.yyyy"));
ЗаписьXML.ЗаписатьАтрибут("Окончание", Формат(Объект.Дата2, "ДФ=dd.MM.yyyy"));
ЗаписьXML.ЗаписатьАтрибут("АнализЗаявокС", Формат(Объект.ПериодДокументов1, "ДФ=dd.MM.yyyy"));
ЗаписьXML.ЗаписатьАтрибут("АнализЗаявокПо", Формат(Объект.ПериодДокументов2, "ДФ=dd.MM.yyyy"));
Для каждого СтрокаТаблицы из Объект.ПрочиеНалоги Цикл
РегистрацияВНалоговомОрганеОрганизации = ПолучитьРеквизит(СтрокаТаблицы.Организация, "РегистрацияВНалоговомОргане");
Если не СтрокаТаблицы.ФСС = 0 Тогда
ДобавитьИнформациюОНалоге(СтрокаТаблицы.ФСС, "СтрокаДанных", СтрокаТаблицы.Организация, СтрокаПараметровНалоговФСС, ЗаписьXML);
ЗаписьXML.ЗаписатьАтрибут("Налог", "ФСС");
ЗаписьXML.ЗаписатьАтрибут("ПодразделениеОКАТО", ПолучитьРеквизит(РегистрацияВНалоговомОрганеОрганизации, "КодПоОКТМО"));
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЕсли;
Если СтрокаТаблицы.ФССНС <> 0 Тогда
ДобавитьИнформациюОНалоге(СтрокаТаблицы.ФССНС, "СтрокаДанных", СтрокаТаблицы.Организация, СтрокаПараметровНалоговФССНС, ЗаписьXML);
ЗаписьXML.ЗаписатьАтрибут("Налог", "ФССНС");
Если ПолучитьРеквизит(СтрокаТаблицы.Организация, "ИНН") = "1616015973" Тогда
ЗаписьXML.ЗаписатьАтрибут("НалоговаяИНН", "1655003950");
ЗаписьXML.ЗаписатьАтрибут("НалоговаяКПП", "165501001");
ИначеЕсли ПолучитьРеквизит(СтрокаТаблицы.Организация, "ИНН") = "3313029011" Тогда
ЗаписьXML.ЗаписатьАтрибут("НалоговаяИНН", "3328300610");
ЗаписьXML.ЗаписатьАтрибут("НалоговаяКПП", "332801001");
ИначеЕсли ПолучитьРеквизит(СтрокаТаблицы.Организация, "ИНН") = "0245964902" Тогда
ЗаписьXML.ЗаписатьАтрибут("НалоговаяИНН", "0275016083");
ЗаписьXML.ЗаписатьАтрибут("НалоговаяКПП", "027401001");
Иначе
ЗаписьXML.ЗаписатьАтрибут("НалоговаяИНН", "1655003950");
ЗаписьXML.ЗаписатьАтрибут("НалоговаяКПП", "165501001");
КонецЕсли;
ЗаписьXML.ЗаписатьАтрибут("ПодразделениеОКАТО", ПолучитьРеквизит(РегистрацияВНалоговомОрганеОрганизации, "КодПоОКТМО"));
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЕсли;
Если СтрокаТаблицы.ФФОМС <> 0 Тогда
ДобавитьИнформациюОНалоге(СтрокаТаблицы.ФФОМС, "СтрокаДанных", СтрокаТаблицы.Организация, СтрокаПараметровНалоговФФОМС, ЗаписьXML);
ЗаписьXML.ЗаписатьАтрибут("Налог", "ФФОМС");
ЗаписьXML.ЗаписатьАтрибут("ПодразделениеОКАТО", ПолучитьРеквизит(РегистрацияВНалоговомОрганеОрганизации,"КодПоОКТМО"));
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЕсли;
Если СтрокаТаблицы.ПФР <> 0 Тогда
ДобавитьИнформациюОНалоге(СтрокаТаблицы.ПФР, "СтрокаДанных", СтрокаТаблицы.Организация, СтрокаПараметровНалоговПФР, ЗаписьXML);
ЗаписьXML.ЗаписатьАтрибут("Налог", "ПФР");
ЗаписьXML.ЗаписатьАтрибут("ПодразделениеОКАТО", ПолучитьРеквизит(РегистрацияВНалоговомОрганеОрганизации,"КодПоОКТМО"));
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЕсли;
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ДобавитьИнформациюОНалоге(Сумма, Налог, Организация, СтрокаПараметровНалогов, ЗаписьXML)
ЗаписьXML.ЗаписатьНачалоЭлемента(Налог);
РегистрацияВНалоговомОрганеОрганизации = ПолучитьРеквизит(Организация,"РегистрацияВНалоговомОргане");
КодИМНС = ПолучитьРеквизит(РегистрацияВНалоговомОрганеОрганизации, "Код");
Если СтрокаПараметровНалогов.Налог = "ФССНС" Тогда
ЗаписьXML.ЗаписатьАтрибут("КодИФНС", КодИМНС + "_2");
Иначе
ЗаписьXML.ЗаписатьАтрибут("КодИФНС", КодИМНС);
КонецЕсли;
ЗаписьXML.ЗаписатьАтрибут("ОрганизацияИНН", ПолучитьРеквизит(Организация, "ИНН"));
ЗаписьXML.ЗаписатьАтрибут("ОрганизацияНаименование", ПолучитьРеквизит(Организация,"Наименование"));
ЗаписьXML.ЗаписатьАтрибут("Сумма", Формат(Сумма, "ЧЦ=10; ЧДЦ=2; ЧРД=.; ЧГ="));
Если СтрокаПараметровНалогов = Неопределено Тогда
ЗаписьXML.ЗаписатьАтрибут("КБК", "");
ЗаписьXML.ЗаписатьАтрибут("ТекстПлатежа", "");
Иначе
ЗаписьXML.ЗаписатьАтрибут("КБК", СтрокаПараметровНалогов.КБК);
ЗаписьXML.ЗаписатьАтрибут("ТекстПлатежа", СформироватьТекстПлатежа(СтрокаПараметровНалогов.ТекстПлатежа,
Организация, Неопределено, Объект.Дата1));
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция СформироватьТаблицуНалоговых()
Запрос = Новый Запрос;
СвойствоНалоговая = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Налоговая ИНН");
Запрос.УстановитьПараметр("Свойство", СвойствоНалоговая);
Запрос.Текст =
"ВЫБРАТЬ
| Данные.Значение КАК Значение,
| Данные.Ссылка КАК Объект
|ИЗ
| Справочник.ПодразделенияОрганизаций.ДополнительныеРеквизиты КАК Данные
|ГДЕ
| Данные.Свойство = &Свойство";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
СтруктураНалоговые = Новый Соответствие;
Пока Выборка.Следующий() Цикл
СтруктураНалоговые.Вставить(Выборка.Объект, Выборка.Значение);
КонецЦикла;
Возврат СтруктураНалоговые;
КонецФункции
&НаСервереБезКонтекста
Функция СформироватьТекстПлатежа(Знач ТекстПлатежа, Организация, ПодразделениеОрганизации = Неопределено, Период)
Если ЗначениеЗаполнено(ПодразделениеОрганизации) Тогда
РегистрацияВНалоговомОрганеПодразделения = ПолучитьРеквизит(ПодразделениеОрганизации, "РегистрацияВНалоговомОргане");
КонецЕсли;
РегистрацияВНалоговомОрганеОрганизации = ПолучитьРеквизит(Организация,"РегистрацияВНалоговомОргане");
Результат = ТекстПлатежа;
Результат = СтрЗаменить(Результат, "{Период}", Формат(Период, "ДФ='ММММ гггг'"));
Результат = СтрЗаменить(Результат, "{КПП}", ?(ЗначениеЗаполнено(ПодразделениеОрганизации), ПолучитьРеквизит(РегистрацияВНалоговомОрганеПодразделения,"КПП"), ПолучитьРеквизит(РегистрацияВНалоговомОрганеОрганизации,"КПП")));
Результат = СтрЗаменить(Результат, "{КодФСС}", ?(ПустаяСтрока(Организация.РегистрационныйНомерФСС), "0", Организация.РегистрационныйНомерФСС));
Результат = СтрЗаменить(Результат, "{КодПФР}", ?(ПустаяСтрока(Организация.РегистрационныйНомерПФР), "0", Организация.РегистрационныйНомерПФР));
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьНалоговуюПодразделения(ТаблицаНалоговых, Подразделение)
Перем Результат;
Значение = ТаблицаНалоговых.Получить(Подразделение);
Если Значение = Неопределено Тогда
Результат = "";
Иначе
Результат = Значение;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьРеквизит(Ссылка, Реквизит) Экспорт
Возврат Ссылка[Реквизит];
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьДопРеквизит(Ссылка, Реквизит)
ПараметрыОтбора = Новый Структура;
Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(Реквизит);
ПараметрыОтбора.Вставить("Свойство",Свойство);
НайденныеСтроки = Ссылка.ДополнительныеРеквизиты.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтроки.Количество() > 0 Тогда
Возврат НайденныеСтроки[0].Значение;
Иначе
Возврат "";
КонецЕсли;
КонецФункции // ПолучитьДопРеквизит()
Специалист компании ООО "Кодерлайн",
Айзатуллов Марс
Добавить комментарий