#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция СведенияОПодразделении(РегистрацияВНалоговомОргане, Дата = Неопределено) Экспорт
Сведения = Новый Структура("Организация, Представление, ПолноеНаименование, КодПоОКПО, ИНН, КПП, ОГРН, ЮридическийАдрес, ФактическийАдрес, НомерСчета, Банк, БИК, КоррСчет");
Если ЗначениеЗаполнено(РегистрацияВНалоговомОргане) Тогда
ИменаРеквизитов = Новый Структура;
ИменаРеквизитов.Вставить("Организация", "Владелец");
ИменаРеквизитов.Вставить("Представление", "НаименованиеОбособленногоПодразделения");
ИменаРеквизитов.Вставить("ПолноеНаименование", "НаименованиеОбособленногоПодразделения");
ИменаРеквизитов.Вставить("КодПоОКПО", "Владелец.КодПоОКПО");
ИменаРеквизитов.Вставить("ИНН", "Владелец.ИНН");
ИменаРеквизитов.Вставить("КПП", "КПП");
ИменаРеквизитов.Вставить("ОГРН", "Владелец.ОГРН");
ЗаполнитьЗначенияСвойств(
Сведения,
ОбщегоНазначения.ЗначенияРеквизитовОбъекта(РегистрацияВНалоговомОргане, ИменаРеквизитов));
Сведения.Вставить("ЮридическийАдрес", ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(Сведения.Организация, "Юридический", Дата));
Сведения.Вставить("ФактическийАдрес", ФормированиеПечатныхФорм.ПолучитьАдресИзКонтактнойИнформации(РегистрацияВНалоговомОргане, "Фактический", Дата));
РеквизитыСчета =
Справочники.БанковскиеСчетаОрганизаций.ПолучитьРеквизитыБанковскогоСчетаОрганизации(
Справочники.БанковскиеСчетаОрганизаций.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(Сведения.Организация));
ЗаполнитьЗначенияСвойств(
Сведения,
РеквизитыСчета,
"НомерСчета, Банк, БИК, КоррСчет");
КонецЕсли;
Возврат Сведения;
КонецФункции
Функция ПолучитьКоличествоПодчиненныхЭлементовПоВладельцу(Владелец) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| РегистрацииВНалоговомОргане.Ссылка
|ИЗ
| Справочник.РегистрацииВНалоговомОргане КАК РегистрацииВНалоговомОргане
|ГДЕ
| РегистрацииВНалоговомОргане.Владелец = &Владелец";
Запрос.УстановитьПараметр("Владелец", Владелец);
Выборка = Запрос.Выполнить().Выбрать();
Возврат Выборка.Количество();
КонецФункции
Функция ВозможнаРегистрацияДляОбособленныхПодразделений() Экспорт
Возврат Истина;
КонецФункции
Функция РегистрацияВНалоговомОргане(СтруктурнаяЕдиница, Знач ДатаАктуальности = Неопределено, РегистрацияВНалоговомОргане = Неопределено) Экспорт
Если РегистрацияВНалоговомОргане <> Неопределено Тогда
Возврат РегистрацияВНалоговомОргане;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("СтруктурнаяЕдиница", СтруктурнаяЕдиница);
Запрос.Текст =
"ВЫБРАТЬ
| Регистрации.РегистрацияВНалоговомОргане КАК РегистрацияВНалоговомОргане
|ИЗ
| РегистрСведений.РегистрацииВНалоговомОргане КАК Регистрации
|ГДЕ
| Регистрации.Организация = &СтруктурнаяЕдиница
| И Регистрации.Подразделение = ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Организации.РегистрацияВНалоговомОргане
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.Ссылка = &СтруктурнаяЕдиница";
Если Не ЗначениеЗаполнено(ДатаАктуальности) Тогда
ДатаАктуальности = ТекущаяДатаСеанса()
КонецЕсли;
Запрос.УстановитьПараметр("ДатаАктуальности", ДатаАктуальности);
Запрос.Текст =
"ВЫБРАТЬ
| Регистрации.РегистрацияВНалоговомОргане КАК РегистрацияВНалоговомОргане
|ИЗ
| РегистрСведений.ИсторияРегистрацийВНалоговомОргане.СрезПоследних(&ДатаАктуальности, СтруктурнаяЕдиница = &СтруктурнаяЕдиница) КАК Регистрации";
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка.РегистрацияВНалоговомОргане;
КонецЕсли;
Если ТипЗнч(СтруктурнаяЕдиница) = Тип("СправочникСсылка.ПодразделенияОрганизаций") Тогда
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтруктурнаяЕдиница, "Родитель,Владелец");
Если ЗначениеЗаполнено(ЗначенияРеквизитов.Родитель) Тогда
Возврат Справочники.РегистрацииВНалоговомОргане.РегистрацияВНалоговомОргане(ЗначенияРеквизитов.Родитель, ДатаАктуальности);
Иначе
Возврат Справочники.РегистрацииВНалоговомОргане.РегистрацияВНалоговомОргане(ЗначенияРеквизитов.Владелец, ДатаАктуальности);
КонецЕсли;
КонецЕсли;
Возврат Справочники.РегистрацииВНалоговомОргане.ПустаяСсылка();
КонецФункции
Функция РегистрацияВНалоговомОрганеПоКодуНО(Организация, КПП, КодНалоговогоОргана) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ГоловнаяОрганизация", БухгалтерскийУчетПереопределяемый.ГоловнаяОрганизация(Организация));
Запрос.УстановитьПараметр("КПП", КПП);
Запрос.УстановитьПараметр("Код", КодНалоговогоОргана);
ТекстЗапроса =
"ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрацииВНалоговомОргане.Ссылка
|ИЗ
| Справочник.РегистрацииВНалоговомОргане КАК РегистрацииВНалоговомОргане
|ГДЕ
| РегистрацииВНалоговомОргане.Владелец = &ГоловнаяОрганизация
| И РегистрацииВНалоговомОргане.Код = &Код
| И &УсловиеПоКПП
|
|УПОРЯДОЧИТЬ ПО
| РегистрацииВНалоговомОргане.КПП";
Если ПустаяСтрока(КПП) Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеПоКПП", "ИСТИНА");
ИначеЕсли Найти(КПП, "_") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеПоКПП", "РегистрацииВНалоговомОргане.КПП ПОДОБНО &КПП");
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеПоКПП", "РегистрацииВНалоговомОргане.КПП = &КПП");
КонецЕсли;
Запрос.Текст = ТекстЗапроса;
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Ссылка;
КонецЕсли;
Возврат Справочники.РегистрацииВНалоговомОргане.ПустаяСсылка();
КонецФункции
Функция КодТерритории(РегистрацияВНалоговомОргане, Знач ТипКода = "ОКТМО") Экспорт
Если Не ЗначениеЗаполнено(РегистрацияВНалоговомОргане) Тогда
Возврат "";
КонецЕсли;
Если ТипЗнч(ТипКода) = Тип("Дата") И Год(ТипКода) < 2014 Тогда
ТипКода = "ОКАТО";
ИначеЕсли ТипКода <> "ОКАТО" Тогда
ТипКода = "ОКТМО";
КонецЕсли;
Возврат СокрЛП(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РегистрацияВНалоговомОргане, "КодПо" + ТипКода));
КонецФункции
Функция НаименованиеСлужебное(РегистрацияВНалоговомОргане) Экспорт
Если Не ЗначениеЗаполнено(РегистрацияВНалоговомОргане) Тогда
Возврат "";
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("РегистрацияВНалоговомОргане", РегистрацияВНалоговомОргане);
Запрос.Текст =
"ВЫБРАТЬ
| ВЫБОР
| КОГДА Организации.НаименованиеПолное = """"
| ТОГДА Организации.Наименование
| ИНАЧЕ Организации.НаименованиеПолное
| КОНЕЦ КАК Наименование,
| ВЫБОР
| КОГДА НЕ Организации.ОбособленноеПодразделение
| И Организации.НаименованиеПолное <> """"
| ТОГДА 1
| КОГДА Организации.ОбособленноеПодразделение
| И Организации.НаименованиеПолное <> """"
| ТОГДА 2
| КОГДА НЕ Организации.ОбособленноеПодразделение
| ТОГДА 4
| ИНАЧЕ 5
| КОНЕЦ КАК Порядок
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.РегистрацияВНалоговомОргане = &РегистрацияВНалоговомОргане
| И НЕ Организации.ПометкаУдаления
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПодразделенияОрганизаций.Наименование,
| 6
|ИЗ
| Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
|ГДЕ
| ПодразделенияОрганизаций.РегистрацияВНалоговомОргане = &РегистрацияВНалоговомОргане
| И ПодразделенияОрганизаций.ОбособленноеПодразделение
| И НЕ ПодразделенияОрганизаций.ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| Порядок,
| Наименование УБЫВ";
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат "";
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка.Наименование;
КонецФункции
Функция КодРегионаПоКодуНалоговогоОргана(Знач КодНалоговогоОргана) Экспорт
КодРегиона = "";
Если СтрДлина(КодНалоговогоОргана) < 2 Тогда
Возврат КодРегиона;
КонецЕсли;
КодРегиона = Лев(КодНалоговогоОргана, 2);
Если КодРегиона = "99" И КодНалоговогоОргана <> "9901" Тогда
КодРегиона = "77";
КонецЕсли;
Возврат КодРегиона;
КонецФункции
Процедура ЗаполнитьСписокВыбораРегиона(СписокРегионов, ТолькоИспользуемые = Ложь, КодРегиона = Неопределено) Экспорт
СписокРегионов.Очистить();
Если ЗначениеЗаполнено(КодРегиона) И КодРегиона <> "00" Тогда
ШаблонПредставления = НСтр("ru='%1'");
НаименованиеРегиона = АдресныйКлассификатор.НаименованиеРегионаПоКоду(КодРегиона);
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонПредставления, НаименованиеРегиона);
СписокРегионов.Добавить(КодРегиона, Представление);
Возврат;
КонецЕсли;
КлассификаторСубъектовРФ = АдресныйКлассификатор.СубъектыРФ();
Если НЕ ТолькоИспользуемые Тогда
ТаблицаРегионов = КлассификаторСубъектовРФ;
Иначе
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| РегистрацииВНалоговомОргане.КодРегиона КАК КодРегиона
|ИЗ
| Справочник.РегистрацииВНалоговомОргане КАК РегистрацииВНалоговомОргане
|";
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
ВыборкаРегионов = РезультатЗапроса.Выбрать();
ТаблицаРегионов = КлассификаторСубъектовРФ.СкопироватьКолонки();
Пока ВыборкаРегионов.Следующий() Цикл
СтрокаРегиона = ТаблицаРегионов.Добавить();
СтрокаРегиона.КодСубъектаРФ = ВыборкаРегионов.КодРегиона;
СтрокаКлассификатора = КлассификаторСубъектовРФ.Найти(СтрокаРегиона.КодСубъектаРФ, "КодСубъектаРФ");
Если СтрокаКлассификатора <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(СтрокаРегиона, СтрокаКлассификатора);
КонецЕсли;
КонецЦикла;
КонецЕсли;
ШаблонПредставления = НСтр("ru='%1 %2'");
Для Каждого Регион Из ТаблицаРегионов Цикл
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонПредставления,
Регион.Наименование,
Регион.Сокращение);
СписокРегионов.Добавить(Формат(Регион.КодСубъектаРФ, "ЧЦ=2; ЧН=; ЧВН="), Представление);
КонецЦикла;
СписокРегионов.СортироватьПоПредставлению();
КонецПроцедуры
Функция ПроверитьСоздатьРегистрациюВНалоговомОрганеПоКодуНО(Организация, КПП, КодНалоговогоОргана, ПараметрыСоздания) Экспорт
Если Организация.Пустая() Тогда
Возврат Справочники.РегистрацииВНалоговомОргане.ПустаяСсылка();
КонецЕсли;
Регистрация = РегистрацияВНалоговомОрганеПоКодуНО(Организация, КПП, КодНалоговогоОргана);
Если Регистрация.Пустая() Тогда
РегистрацияОбъект = Справочники.РегистрацииВНалоговомОргане.СоздатьЭлемент();
ДатаПостановкиНаУчет = Неопределено;
Ссылка = Неопределено;
ПараметрыСоздания.Свойство("ДатаПостановкиНаУчет", ДатаПостановкиНаУчет);
ПараметрыСоздания.Свойство("Ссылка", Ссылка);
РегистрацияОбъект.Код = КодНалоговогоОргана;
КодРегионаРегистрации = ДанныеГосударственныхОрганов.КодРегионаПоКодуНалоговогоОргана(КодНалоговогоОргана);
РегистрацияОбъект.КодРегиона = КодРегионаРегистрации;
РегистрацияОбъект.КПП = КПП;
РегистрацияОбъект.ДатаПостановкиНаУчет = ДатаПостановкиНаУчет;
Если Не Ссылка = Неопределено Тогда
РегистрацияОбъект.УстановитьСсылкуНового(Ссылка);
КонецЕсли;
РеквизитыНалоговогоОргана = РаботаСКонтрагентами.РеквизитыНалоговогоОрганаПоКоду(КодНалоговогоОргана);
РегистрацияОбъект.Владелец = Организация;
Если ЗначениеЗаполнено(РеквизитыНалоговогоОргана.Наименование) Тогда
РегистрацияОбъект.Наименование = РеквизитыНалоговогоОргана.Наименование;
КонецЕсли;
Если ЗначениеЗаполнено(РеквизитыНалоговогоОргана.ПолноеНаименование) Тогда
РегистрацияОбъект.НаименованиеИФНС = РеквизитыНалоговогоОргана.ПолноеНаименование;
КонецЕсли;
РегистрацияОбъект.Записать();
Регистрация = РегистрацияОбъект.Ссылка;
КонецЕсли;
Возврат Регистрация;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"ПрисоединитьДополнительныеТаблицы
|ЭтотСписок КАК ЭтотСписок
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Владельцы
| ПО Владельцы.Ссылка = ЭтотСписок.Владелец
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК ОбособленныеПодразделения
| ПО ОбособленныеПодразделения.ГоловнаяОрганизация = Владельцы.Ссылка
|;
|РазрешитьЧтение
|ГДЕ
| ЗначениеРазрешено(Владелец)
| ИЛИ ЗначениеРазрешено(ОбособленныеПодразделения.Ссылка)
|;
|РазрешитьИзменениеЕслиРазрешеноЧтение
|ГДЕ
| ЗначениеРазрешено(Владелец)";
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
Если Параметры.Отбор.Свойство("Организация") Тогда
Если ЗначениеЗаполнено(Параметры.Отбор.Организация) Тогда
ГоловнаяОрганизация = ОбщегоНазначенияУТВызовСервера.ЗначениеРеквизитаОбъекта(Параметры.Отбор.Организация, "ГоловнаяОрганизация");
Если ЗначениеЗаполнено(ГоловнаяОрганизация) Тогда
Параметры.Отбор.Организация = ГоловнаяОрганизация;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Параметры.Свойство("ТолькоИспользуемые") И Параметры.ТолькоИспользуемые Тогда
НалоговыеОрганы = Новый СписокЗначений;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Организация", Параметры.Отбор.Владелец);
Запрос.УстановитьПараметр("КодРегиона", Параметры.Отбор.КодРегиона);
Запрос.УстановитьПараметр("Период", Параметры.Период);
Запрос.Текст =
"ВЫБРАТЬ
| Организации.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
| Организации.Ссылка КАК Ссылка,
| Организации.РегистрацияВНалоговомОргане КАК РегистрацияВНалоговомОргане
|ПОМЕСТИТЬ СтруктурныеЕдиницы_ФилиалыИГО
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| (Организации.Ссылка = &Организация
| ИЛИ Организации.ГоловнаяОрганизация = &Организация)
| И Организации.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОрганизацийПодразделений.Действует)
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| СтруктурныеЕдиницы.РегистрацияВНалоговомОргане КАК РегистрацияВНалоговомОргане
|ПОМЕСТИТЬ НезаполненнаяИстория
|ИЗ
| СтруктурныеЕдиницы_ФилиалыИГО КАК СтруктурныеЕдиницы
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияРегистрацийВНалоговомОргане КАК ИсторияРегистрацийВНалоговомОргане
| ПО СтруктурныеЕдиницы.Ссылка = ИсторияРегистрацийВНалоговомОргане.СтруктурнаяЕдиница
|ГДЕ
| СтруктурныеЕдиницы.РегистрацияВНалоговомОргане.КодРегиона = &КодРегиона
| И ИсторияРегистрацийВНалоговомОргане.Период ЕСТЬ NULL
|;
|
|
|ВЫБРАТЬ
| ИсторияНалоговыхОрганов.РегистрацияВНалоговомОргане КАК Ссылка
|ИЗ
| РегистрСведений.ИсторияРегистрацийВНалоговомОргане.СрезПоследних(
| &Период,
| СтруктурнаяЕдиница В
| (ВЫБРАТЬ
| СтруктурныеЕдиницы.Ссылка
| ИЗ
| СтруктурныеЕдиницы_ФилиалыИГО КАК СтруктурныеЕдиницы)) КАК ИсторияНалоговыхОрганов
|ГДЕ
| ИсторияНалоговыхОрганов.РегистрацияВНалоговомОргане.КодРегиона = &КодРегиона
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ИсторияНалоговыхОргановОП.РегистрацияВНалоговомОргане КАК Ссылка
|ИЗ
| РегистрСведений.РегистрацииВНалоговомОргане.СрезПоследних(
| &Период,
| Организация В
| (ВЫБРАТЬ
| СтруктурныеЕдиницы.ГоловнаяОрганизация
| ИЗ
| СтруктурныеЕдиницы_ФилиалыИГО КАК СтруктурныеЕдиницы)) КАК ИсторияНалоговыхОргановОП
|ГДЕ
| ИсторияНалоговыхОргановОП.РегистрацияВНалоговомОргане.КодРегиона = &КодРегиона
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| НезаполненнаяИстория.РегистрацияВНалоговомОргане
|ИЗ
| НезаполненнаяИстория КАК НезаполненнаяИстория";
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
НалоговыеОрганы.ЗагрузитьЗначения(РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Ссылка"));
Параметры.Отбор.Вставить("Ссылка", НалоговыеОрганы);
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("Код");
Поля.Добавить("КПП");
Поля.Добавить("НаименованиеСлужебное");
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(Данные.КПП) И ЗначениеЗаполнено(Данные.НаименованиеСлужебное) Тогда
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'ФНС %1 КПП %2 (%3)'"),
Данные.Код, Данные.КПП, Данные.НаименованиеСлужебное);
ИначеЕсли ЗначениеЗаполнено(Данные.КПП) Тогда
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'ФНС %1 КПП %2'"),
Данные.Код, Данные.КПП);
Иначе
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'ФНС %1'"),
Данные.Код);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ОбновлениеИнформационнойБазы
Функция РегистрацииКрупнейшихНалогоплательщиковОбновлены(Параметры) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РегистрацииВНалоговомОргане.Ссылка
|ИЗ
| Справочник.РегистрацииВНалоговомОргане КАК РегистрацииВНалоговомОргане
|ГДЕ
| РегистрацииВНалоговомОргане.КрупнейшийНалогоплательщик = ЛОЖЬ
| И НЕ РегистрацииВНалоговомОргане.КПП ПОДОБНО """"
| И ПОДСТРОКА(РегистрацииВНалоговомОргане.КПП, 5, 2) = ""50""";
Результат = Запрос.Выполнить();
Возврат Результат.Пустой();
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли