gifts2017

УТ 10.3: как сделать периодическими налоговые реквизиты организации (ИНН, КПП, Юридический адрес).

Опубликовал Пацталоцци Задунайский (Пацталоцци) в раздел Программирование - Практика программирования

Думаю, вряд ли кто-то будет отрицать, что  в плане решения задач оперативного учёта, УТ 10.3  является одной из наиболее удачных конфигураций.
Однако и в ней порой нет-нет да и наткнёшься на маленькие шероховатости, которые хочется ласково и с любовью доработать напильником.
Например  – налоговые реквизиты организаций и контрагентов (ИНН, КПП, Юридический адрес) не являются периодическими.

Да, к сожалению, в УТ 10.3  налоговые реквизиты организаций и контрагентов (ИНН, КПП, Юридический адрес) не являются периодическими.

Если у организации поменялся юридический адрес (и, соответственно, КПП), становится проблематичным

распечатать документы за прошлые месяцы  (со старыми значениями реквизитов). 

 

Ниже описаны небольшие доработки, которые нужно внести в конфигурацию для решения этой проблемы.

  1. Добавляем в конфигурацию новый периодический независимый регистр сведений ИсторияНалоговыхРеквизитовОрганизаций.

Периодичность – в пределах дня.  С одним измерением и тремя ресурами.

Измерение:     Объект  (тип СправочникСсылка.Организации, СправочникСсылка.Контрагенты)

Ресурсы:            ИНН (Строка, 12);   КПП (Строка, 9); ЮридическийАдрес (Строка, 200)

 

 

  1. Открываем общий модуль УправлениеКонтактнойИнформацией,   находим функцию СведенияОЮрФизЛице().

Эта функция возвращает  структуру реквизитов организации (или контрагента).

Необычайное удобство этой функции состоит в том, что она используется  при  заполнении ВСЕХ типовых печатных форм (ТОРГ-12, Акт оказания услуг, СФ, и прочее),

То есть, мы можем здесь перехватить заполненную структуру реквизитов, и внести  туда свои поправки.

 

        Переходим в конец функции, находим там следующий фрагмент:

Если Данные <> Неопределено Тогда
	Сведения.Вставить("Представление",    Данные.Наименование);
	Сведения.Вставить("ИНН",              Данные.ИНН);
	Сведения.Вставить("Телефоны",         ПолучитьТелефонИзКонтактнойИнформации(ЮрФизЛицо));
	Сведения.Вставить("НомерСчета",       Данные.НомерСчета);
	Сведения.Вставить("Банк",             Данные.Банк);
	Сведения.Вставить("БИК",              Данные.БИК);
	Сведения.Вставить("АдресБанка",       Данные.АдресБанка);
	Сведения.Вставить("КоррСчет",         Данные.КоррСчет);
	Сведения.Вставить("ЮридическийАдрес", ПолучитьАдресИзКонтактнойИнформации(ЮрФизЛицо,"Юридический"));
	Сведения.Вставить("ФактическийАдрес", ПолучитьАдресИзКонтактнойИнформации(ЮрФизЛицо,"Фактический"));

 	Если НЕ ЗначениеЗаполнено(Сведения.ПолноеНаименование) Тогда
		Сведения.ПолноеНаименование = Сведения.Представление;
	КонецЕсли;
КонецЕсли;

 

И добавляем после этого фрагмента свои пять копеек:

 

	//{ Пацталоцци
	//если налоговые реквизиты организации когда-нибудь менялись, тогда старые реквизиты (актуальные на ДатаПериода)
	//могут храниться в регистре сведений ИсторияНалоговыхРеквизитовОрганизаций
	//
	СтарыеНалоговыеРеквизиты = ПолучитьНалоговыеРеквизиты(ЮрФизЛицо, ДатаПериода);

	Если СтарыеНалоговыеРеквизиты.ИНН <> Неопределено Тогда
		Сведения.Вставить("ИНН", СтарыеНалоговыеРеквизиты.ИНН);
	КонецЕсли;

	Если СтарыеНалоговыеРеквизиты.КПП <> Неопределено Тогда
		Сведения.Вставить("КПП", СтарыеНалоговыеРеквизиты.КПП);
	КонецЕсли;

	Если СтарыеНалоговыеРеквизиты.ЮридическийАдрес <> Неопределено Тогда
		Сведения.Вставить("ЮридическийАдрес", СтарыеНалоговыеРеквизиты.ЮридическийАдрес);
	КонецЕсли;
	//} Пацталоцци

               

 

  1. Теперь осталось отписать функцию ПолучитьНалоговыеРеквизиты(ЮрФизЛицо, ДатаПериода)

Её можно поместить в любой общий модуль, который доступен на сервере и на клиенте. Например, в модуль УправлениеКонтактнойИнформацией.

(Но чтобы не париться с обновлениями, правильнее для самопальных функций создать дополнительный общий модуль).

 Вот текст функции:

 

               

	// Пацталоцци
	// Функция возвращает коды ИНН и КПП объекта (организации или контрагента) на указанную дату
	//
	Функция ПолучитьНалоговыеРеквизиты(Ссылка, ДатаПериода) Экспорт

		Запрос = Новый Запрос;
		Запрос.УстановитьПараметр("Ссылка",      Ссылка);
		Запрос.УстановитьПараметр("ДатаПериода", ДатаПериода);

 		Запрос.Текст =
		"ВЫБРАТЬ
		|	ИНН КАК ИНН,
		|	КПП КАК КПП,
		|	ЮридическийАдрес КАК ЮридическийАдрес
		|ИЗ
		|	РегистрСведений.ИсторияНалоговыхРеквизитовОрганизаций.СрезПоследних(&ДатаПериода, Объект = &Ссылка)
		|";

 		Выборка = Запрос.Выполнить().Выбрать();
		Выборка.Следующий();

 		Результат = Новый Структура("ИНН, КПП, ЮридическийАдрес");

 		Результат.ИНН	= Выборка.ИНН;
		Результат.КПП	= Выборка.КПП;
		Результат.ЮридическийАдрес	= Выборка.ЮридическийАдрес;

		Возврат Результат;

	КонецФункции

 
  1. Собственно,  этих настроек достаточно для решения задачи. 

По-хорошему, можно ещё дописать добавление записи в регистр сведений  «История налоговых реквизитов организаций» при изменении реквизитов организации (в форме элемента справочника Организации).  Однако налоговые реквизиты меняются весьма нечасто (раз в несколько лет), поэтому автоматизировать этот процесс не вижу смысла.

Достаточно просто  зайти в регистр и вручную внести туда запись.

У меня была ситуация, когда посреди квартала (точнее, с 03.09) поменялся юр.адрес и КПП одной организации.

Я открыл регистр, добавил туда 2 записи.  Одна запись с периодом 01.01.2001,  вторая - от 03.09.2013.  Вот и всё.

 

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Пацталоцци Задунайский (Пацталоцци) 01.11.13 11:13
Я в шоке...
83 просмотра и всего один плюс...
В чём дело, коллеги?
Если есть какие-то замечания/нарекания, прошу поделиться.
2. Тарас Лохтин (Одинец) 02.11.13 05:57
Добрый день! Если уж начал делать такую доработку, то логичнее дописать добавление записи в регистр сведений "История налоговых реквизитов организаций", а иначе как сам пишешь: "налоговые реквизиты меняются весьма нечасто (раз в несколько лет), поэтому автоматизировать этот процесс не вижу смысла"(С)Панталоцци. Так что или закончи доработку и получи "+" или "автоматизировать этот процесс не вижу смысла."(С)Панталоцци
3. Пацталоцци Задунайский (Пацталоцци) 02.11.13 07:49
Если бы ты повнимательнее читал статью, то понял бы, что цель доработки - решить проблему распечатки старых документов (со старыми значениями реквизитов).
И доработка полностью выполняет свою цель.
Следить за актуальностью регистра - это второй вопрос. На мой взгляд, тут удобнее "ручное управление" содержимым регистра.

Как я уже сказал, налоговые реквизиты меняются очень редко. У меня база возрастом 9 лет, 11 организаций.
И за все 9 лет только две записи в этом регистре. За каким лядом автоматизировать это?
4. TMV 02.11.13 08:58
А в каких случаях меняется ИНН? Не нужно ли заводить нового контрагента?
5. Пацталоцци Задунайский (Пацталоцци) 02.11.13 09:04
ИНН юридического лица меняется при реорганизации (например, было ЗАО, стало ООО)
Юридический адрес и КПП могут меняться чаще - например, при переезде
6. юрий гулидов (gull22) 06.11.13 09:17
Подощли к такой же проблеме. Плюсую за ее решение.
7. Павел Парамонов (anchovy) 06.11.13 10:05
(1) Пацталоцци, делюсь.
Использовать периодический РС для хранения периодически изменяющихся данных это хорошо. Что нового в вашем решении? Ничего. Тогда за что много плюсов должно быть поставлено?
8. Пацталоцци Задунайский (Пацталоцци) 06.11.13 12:34
(7) anchovy,
Тогда за что много плюсов должно быть поставлено?

Где я написал, что много плюсов ДОЛЖНО быть поставлено? Покажи мне, где у меня есть такие слова, будь добр.
Мне нафиг твой плюс не нужен, оставь его себе и береги как зеницу око!

Что касается предлагаемого мною решения, ты мог заметить, оно заключается не только в тупой и банальной идее, что "Использовать периодический РС для хранения периодически изменяющихся данных это хорошо".

В статье перечислены детально все правки, которые нужно внести в конфигурацию. Тот, кто столкнулся с похожей проблемой, может воспользоваться статьёй и решить проблему за 10 минут. Если я смог кому-то сэкономить время, думаю он плюсанёт. Ты не относишься к этой категории, поэтому всего хорошего, иди дальше со своим драгоценным плюсом.
9. Павел Парамонов (anchovy) 06.11.13 14:05
Тренироваться.
Медитировать.
Учить Русский язык.
Удачи.
10. Пацталоцци Задунайский (Пацталоцци) 06.11.13 15:05
Я тебя тоже люблю.
Давай, покеда.
11. NickKrsk (nick_krsk) 02.02.15 09:47
Спасибо за наводку, буду прикручивать к БП 3.
12. yurik32 Повол (yurik32) 09.03.15 17:00
Спасибо, не успел купить юр адрес, и уже такую нужную статью нашел
13. Сергей (ildarovich) 16.04.15 13:55
Спасибо.

Попробовал на одной базе реализовать этот подход.
Но с небольшими изменениями.
Мне показалось, что логичнее было бы запоминать только старые значения реквизитов.
Которые были "до" даты их изменения. Это значит, что нужно использовать не срез последних, который определяет действующие реквизиты, а срез первых. Иначе непонятно, с какого периода ставить действие старых реквизитов.
ice-net; moreZ; +2 Ответить
14. sinTambov (sinTambov) 04.08.15 09:35