() УПД: добавить процедуры в модуль, переопределить вызов процедур и функций
// Формирует таблицу макетов всех печатных форм УПД для разный версий постановления 1137.
//
// Возвращаемое значение:
// ТаблицаМакетов - ТаблицаЗначений - см.тело функции
//
Функция ТаблицаМакетовУПД() Экспорт
ТаблицаМакетов = Новый ТаблицаЗначений;
ТаблицаМакетов.Колонки.Добавить("ИДМакета", Новый ОписаниеТипов("Строка"));
ТаблицаМакетов.Колонки.Добавить("СинонимМакета", Новый ОписаниеТипов("Строка"));
ТаблицаМакетов.Колонки.Добавить("Статус", Новый ОписаниеТипов("Строка"));
ТаблицаМакетов.Колонки.Добавить("ВерсияПостановленияНДС1137", Новый ОписаниеТипов("Число"));
ТаблицаМакетов.Колонки.Добавить("ПолныйПутьКМакету", Новый ОписаниеТипов("Строка"));
ТаблицаМакетов.Колонки.Добавить("ПрослеживаемыеТовары", Новый ОписаниеТипов("Булево"));
ТаблицаМакетов.Колонки.Добавить("КлючПараметровПечати", Новый ОписаниеТипов("Строка"));
ПорядокПримененияФормСФ = СоответствиеВерсийПостановленияФормамСчетовФактур();
// УПД.
НовыйМакет = ТаблицаМакетов.Добавить();
НовыйМакет.ИДМакета = "УПДСтатус1";
НовыйМакет.СинонимМакета = "УПД (статус 1)";
НовыйМакет.Статус = "1";
НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
НовыйМакет.ПолныйПутьКМакету = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент";
НовыйМакет.ПрослеживаемыеТовары = Ложь;
НовыйМакет.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент";
НовыйМакет = ТаблицаМакетов.Добавить();
НовыйМакет.ИДМакета = "УПДСтатус2";
НовыйМакет.СинонимМакета = "УПД (статус 2)";
НовыйМакет.Статус = "2";
НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
НовыйМакет.ПолныйПутьКМакету = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент";
НовыйМакет.ПрослеживаемыеТовары = Ложь;
НовыйМакет.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент";
// УПД 981.
НовыйМакет = ТаблицаМакетов.Добавить();
НовыйМакет.ИДМакета = "УПДСтатус1_981";
НовыйМакет.СинонимМакета = "УПД (статус 1)";
НовыйМакет.Статус = "1";
НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
НовыйМакет.ПолныйПутьКМакету = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент981";
НовыйМакет.ПрослеживаемыеТовары = Ложь;
НовыйМакет.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент_981";
НовыйМакет = ТаблицаМакетов.Добавить();
НовыйМакет.ИДМакета = "УПДСтатус2_981";
НовыйМакет.СинонимМакета = "УПД (статус 2)";
НовыйМакет.Статус = "2";
НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
НовыйМакет.ПолныйПутьКМакету = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент981";
НовыйМакет.ПрослеживаемыеТовары = Ложь;
НовыйМакет.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент_981";
// УПД 534
// без прослеживаемого товара.
НовыйМакет = ТаблицаМакетов.Добавить();
НовыйМакет.ИДМакета = "УПДСтатус1_534";
НовыйМакет.СинонимМакета = "УПД (статус 1)";
НовыйМакет.Статус = "1";
НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
НовыйМакет.ПолныйПутьКМакету = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент534";
НовыйМакет.ПрослеживаемыеТовары = Ложь;
НовыйМакет.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент_534";
НовыйМакет = ТаблицаМакетов.Добавить();
НовыйМакет.ИДМакета = "УПДСтатус2_534";
НовыйМакет.СинонимМакета = "УПД (статус 2)";
НовыйМакет.Статус = "2";
НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
НовыйМакет.ПолныйПутьКМакету = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент534";
НовыйМакет.ПрослеживаемыеТовары = Ложь;
НовыйМакет.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент_534";
// УПД 534
// с прослеживаемым товаром.
НовыйМакет = ТаблицаМакетов.Добавить();
НовыйМакет.ИДМакета = "УПДСтатус1_534Прослеж";
НовыйМакет.СинонимМакета = "УПД (статус 1)";
НовыйМакет.Статус = "1";
НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
НовыйМакет.ПолныйПутьКМакету = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент534Прослеж";
НовыйМакет.ПрослеживаемыеТовары = Истина;
НовыйМакет.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент_534Прослеж";
НовыйМакет = ТаблицаМакетов.Добавить();
НовыйМакет.ИДМакета = "УПДСтатус2_534Прослеж";
НовыйМакет.СинонимМакета = "УПД (статус 2)";
НовыйМакет.Статус = "2";
НовыйМакет.ВерсияПостановленияНДС1137 = ПорядокПримененияФормСФ[НовыйМакет.ИДМакета];
НовыйМакет.ПолныйПутьКМакету = "Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент534Прослеж";
НовыйМакет.ПрослеживаемыеТовары = Истина;
НовыйМакет.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент_534Прослеж";
Возврат ТаблицаМакетов;
КонецФункции
// Формирует соответствие идентификатора формы счета-фактуры, корректировочного счета-фактуры, УПД и УКД версии
// постановления 11371. Если одна форма соответствует нескольким версиям, то в соответствие помещается наименьшая
// подходящая для формы версия.
//
// Возвращаемое значение:
// СоответствиеВерсийПостановленияФормам - Соответствие - см. тело функции
//
Функция СоответствиеВерсийПостановленияФормамСчетовФактур() Экспорт
СоответствиеВерсийПостановленияФормам = Новый Соответствие;
// Идентификаторы форм счетов-фактур.
СоответствиеВерсийПостановленияФормам.Вставить("СчетФактура", ВерсияПостановленияНДС1137('00010101'));
СоответствиеВерсийПостановленияФормам.Вставить("СчетФактура1137", ВерсияПостановленияНДС1137('20131106'));
СоответствиеВерсийПостановленияФормам.Вставить("СчетФактура981", ВерсияПостановленияНДС1137('20171001'));
СоответствиеВерсийПостановленияФормам.Вставить("СчетФактура534", ВерсияПостановленияНДС1137('20210701'));
СоответствиеВерсийПостановленияФормам.Вставить("СчетФактура534Прослеж", ВерсияПостановленияНДС1137('20210701'));
// Идентификаторы форм корректировочных счетов-фактур.
СоответствиеВерсийПостановленияФормам.Вставить("КорректировочныйСчетФактура", ВерсияПостановленияНДС1137('00010101'));
СоответствиеВерсийПостановленияФормам.Вставить("КорректировочныйСчетФактура1137", ВерсияПостановленияНДС1137('20131006'));
СоответствиеВерсийПостановленияФормам.Вставить("КорректировочныйСчетФактура952", ВерсияПостановленияНДС1137('20131106'));
СоответствиеВерсийПостановленияФормам.Вставить("КорректировочныйСчетФактура981", ВерсияПостановленияНДС1137('20171001'));
СоответствиеВерсийПостановленияФормам.Вставить("КорректировочныйСчетФактура981Аванс", ВерсияПостановленияНДС1137('20171001'));
СоответствиеВерсийПостановленияФормам.Вставить("КорректировочныйСчетФактура534", ВерсияПостановленияНДС1137('20210701'));
СоответствиеВерсийПостановленияФормам.Вставить("КорректировочныйСчетФактура534Прослеж", ВерсияПостановленияНДС1137('20210701'));
// Идентификаторы форм УПД.
СоответствиеВерсийПостановленияФормам.Вставить("УПДСтатус1", ВерсияПостановленияНДС1137('20131106'));
СоответствиеВерсийПостановленияФормам.Вставить("УПДСтатус2", ВерсияПостановленияНДС1137('20131106'));
СоответствиеВерсийПостановленияФормам.Вставить("УПДСтатус1_981", ВерсияПостановленияНДС1137('20171001'));
СоответствиеВерсийПостановленияФормам.Вставить("УПДСтатус2_981", ВерсияПостановленияНДС1137('20171001'));
СоответствиеВерсийПостановленияФормам.Вставить("УПДСтатус1_534", ВерсияПостановленияНДС1137('20210701'));
СоответствиеВерсийПостановленияФормам.Вставить("УПДСтатус2_534", ВерсияПостановленияНДС1137('20210701'));
СоответствиеВерсийПостановленияФормам.Вставить("УПДСтатус1_534Прослеж", ВерсияПостановленияНДС1137('20210701'));
СоответствиеВерсийПостановленияФормам.Вставить("УПДСтатус2_534Прослеж", ВерсияПостановленияНДС1137('20210701'));
// Идентификаторы форм УКД.
СоответствиеВерсийПостановленияФормам.Вставить("УКДСтатус1", ВерсияПостановленияНДС1137('20131106'));
СоответствиеВерсийПостановленияФормам.Вставить("УКДСтатус2", ВерсияПостановленияНДС1137('20131106'));
СоответствиеВерсийПостановленияФормам.Вставить("УКДСтатус1_981", ВерсияПостановленияНДС1137('20171001'));
СоответствиеВерсийПостановленияФормам.Вставить("УКДСтатус2_981", ВерсияПостановленияНДС1137('20171001'));
СоответствиеВерсийПостановленияФормам.Вставить("УКДСтатус1_534", ВерсияПостановленияНДС1137('20210701'));
СоответствиеВерсийПостановленияФормам.Вставить("УКДСтатус2_534", ВерсияПостановленияНДС1137('20210701'));
СоответствиеВерсийПостановленияФормам.Вставить("УКДСтатус1_534Прослеж", ВерсияПостановленияНДС1137('20210701'));
СоответствиеВерсийПостановленияФормам.Вставить("УКДСтатус2_534Прослеж", ВерсияПостановленияНДС1137('20210701'));
Возврат СоответствиеВерсийПостановленияФормам;
КонецФункции
// Возвращает версию постановления Правительства РФ от 26.12.2011 г. № 1137
//
// Параметры
// Период - тип дата, в данном параметре передается
// дата на которую необходимо определить версию постановления
// Возвращаемое значение:
// Число - версия постановления,
// 0 - постановление Правительства РФ от 26.12.2011 г. № 1137 не используется
// 1 - исходная версия постановления Правительства РФ от 26.12.2011 г. № 1137
// 2 - постановление Правительства РФ от 26.12.2011 г. № 1137 в редакции постановления № 952
// 3 - постановление Правительства РФ от 26.12.2011 г. № 1137 в редакции постановления № 735
// 4 - постановление Правительства РФ от 26.12.2011 г. № 1137 в редакции постановления № 981
// 5 - постановление Правительства РФ от 26.12.2011 г. № 1137 в редакции постановления № 534
//
Функция ВерсияПостановленияНДС1137(Период) Экспорт
Если Период >= '20210701' Тогда // Постановление № 534 вступает в силу с 1 июля 2021 года.
Возврат 5;
ИначеЕсли Период >= '20171001' Тогда // Постановление № 981 вступает в силу с 1 октября 2017 года.
Возврат 4;
ИначеЕсли Период >= '20141001' Тогда // Постановление № 735 вступает в силу с 1 октября 2014 года.
Возврат 3;
ИначеЕсли Период >= '20131106' Тогда // Постановление № 952 вступает в силу с 6 ноября 2013 года.
Возврат 2;
Иначе
Если ИспользуетсяПостановлениеНДС1137(Период) Тогда
Возврат 1; // исходная версия Постановления Правительства РФ от 26.12.2011 г. № 1137.
Иначе
Возврат 0; // Постановление РФ от 26.12.2011 г. № 1137. не используется.
КонецЕсли;
КонецЕсли;
КонецФункции
// Функция возвращает признак ведения учета по постановлению Правительства РФ № 1137 от 26.12.2011
//
Функция ИспользуетсяПостановлениеНДС1137(Период) Экспорт
Результат = ПолучитьФункциональнуюОпцию("ИспользуетсяПостановлениеНДС1137",
Новый Структура("Период", НачалоДня(Период)));
Возврат Результат;
КонецФункции
// Конструктор коллекции, содержащей параметры для печатной формы УПД или УКД.
//
// Возвращаемое значение:
// Структура - параметры печати УПД или УКД
//
Функция НовыйСтруктураПараметровПечатиУПД_УКД() Экспорт
Результат = Новый Структура;
Результат.Вставить("МассивОбъектов", Неопределено);
Результат.Вставить("ОбъектыПечати" , Неопределено);
Результат.Вставить("ТекстЗапросаДокументам", "");
Результат.Вставить("ТолькоПередаточныйДокумент", Ложь);
Результат.Вставить("ТабДокумент", Неопределено);
Результат.Вставить("ПараметрыПечати", Неопределено);
Результат.Вставить("КлючПараметровПечати", "");
Результат.Вставить("ПолныйПутьКМакету", "");
Возврат Результат;
КонецФункции
// Определяет, является ли контрагент резидентом государства-члена таможенного союза (ЕАЭС)
// Параметры:
// Контрагент - СправочникСсылка.Контрагенты - контрагент, для которого определяется резидентство в ЕАЭС
//
// Возвращаемое значение:
// Булево - Истина, если переданный контрагент является резидентом ЕАЭС,
// Ложь - в противном случае.
Функция КонтрагентРезидентТаможенногоСоюза(Контрагент) Экспорт
Если ЗначениеЗаполнено(Контрагент) Тогда
СтранаРегистрацииКонтрагента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "СтранаРегистрации");
Возврат ГосударствоЧленТаможенногоСоюза(СтранаРегистрацииКонтрагента);
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
// Определяет, является ли страна мира государством-членом таможенного союза (ЕАЭС)
// Параметры
// СтранаРегистрацииКонтрагента - СправочникСсылка.СтраныМира - страна мира
//
// Возвращаемое значение:
// Булево - Истина, если переданная страна является государством-членом таможенного союза (ЕАЭС)
// Для российских контрагентов возвращается Ложь.
Функция ГосударствоЧленТаможенногоСоюза(СтранаРегистрацииКонтрагента) Экспорт
Если ЗначениеЗаполнено(СтранаРегистрацииКонтрагента)
И ТипЗнч(СтранаРегистрацииКонтрагента) = Тип("СправочникСсылка.СтраныМира")
И СтранаРегистрацииКонтрагента <> Справочники.СтраныМира.Россия Тогда
Возврат УправлениеКонтактнойИнформацией.ЭтоСтранаУчастникЕАЭС(СтранаРегистрацииКонтрагента);
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
Показать