gifts2017

Вывод старого юридического адреса организации при печати документов задним числом для 1С УПП

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

Иногда возникает необходимость с определенной даты во всех печатных формах выводить новые реквизиты организации. Сделать это элементарно, просто меняем реквизиты организации в справочнике. Но что делать, когда бухгалтерия настаивает, чтобы до определенной даты печатные формы ВСЕХ ПЕРВИЧНЫХ ДОКУМЕНТОВ содержали старые реквизиты, а начиная с конкретной даты - новые?

Казалось бы, тривиальная проблема... В условиях российского бизнеса многие организации меняли свой юридический адрес, и не один раз. Но почему-то 1С в этой ситуации не предлагает никакого другого выхода, кроме как создание внешних печатных форм со старым адресом для печати документов задним числом. Это неудобно как минимум по 2 причинам:

1. Первичных документов много, для каждого делать отдельную печатную форму очень лениво.

2. Есть потенциальная вероятность того, что какие-либо реквизиты метаданных документа поменяются с выходом очередного релиза,  и тогда придется переделывать в том числе и созданные внешние печатные формы, опять таки это не по фэн-шую.

Как бы сделать по-удобнее?

Решение достаточно простое. Знаете наверно про регистр сведений "Ответственные лица организации". Правильно, он периодический и с ним никаких проблем не возникает, с определенной даты можно в печатные формы выводить нужное ответственное лицо. Так что помешало 1С сделать то же самое, например, для регистра "Контактная информация", содержащего в частности юридический адрес организации? Но не сделали.... видимо, посчитали, что это достаточно редкая ситуация, чтобы ее автоматизировать.

У меня такая ситуация возникла, бухгалтерия поставила задачу сделать так, чтобы до определенной даты все документы печатались со старым юридическим адресом, а после этой даты - с новым. Делать внешние печатные формы ко всем документам мне было лень, в итоге, что я сделал:

в Общем модуле УправлениеКонтактнойИнформацией внутри функции СведенияОЮрФизЛице() перед строкой

Возврат Сведения;

добавил строку

Сведения = МойДополнительныйМодуль.СведенияОЮрФизЛицеДополненные(Сведения, ЮрФизЛицо, ДатаПериода);

 

Внутри добавленного в конфигурацию общего модуля МойДополнительныйМодуль прописал следующую функцию: 


// Функция используется для замены в печатных формах юридического адреса нашей организации
// на старый юридический адрес для документов, распечатываемых задним числом до 10 мая 2012 года

Функция СведенияОЮрФизЛицеДополненные(Сведения, ЮрФизЛицо, ДатаПериода) Экспорт

Если ДатаПериода >= Дата(2012, 05, 10) Тогда
// печатаем актуальные на текущий момент сведения
Возврат Сведения;
КонецЕсли;

// если это более ранний документ, тогда заменяем юридический адрес организации
Если ТипЗнч(ЮрФизЛицо) = Тип("СправочникСсылка.Организации") Тогда
ЮридическийАдресДляЗамены = Неопределено;
Если Сведения.Свойство("ЮридическийАдрес", ЮридическийАдресДляЗамены) Тогда
Сведения.Вставить("ЮридическийАдрес", "Тут пишем строку со старым юридическим адресом организации");
КонецЕсли;
КонецЕсли;

Возврат Сведения;

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

Вот собственно и вся хитрость. Можно сделать универсальнее: ввести свой периодический регистр сведений для хранения контактной информации и забить старый адрес туда, соответвующим образом переделав и указанную выше функцию. Но мне кажется, чем проще и быстрее можно выполнить какую-то задачу, тем лучше, т.к. можно переключиться на решение других более интересных и актуальных задач.

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Miffka (mikhailv) 16.05.12 11:45
Вцелом, хоть что-то. Но не хватает универсальности: изменяться может не только юр.адрес, но и другие адреса, телефоны, наименование наконец. И как у организации, так и у контрагентов.
Можно, например, так еще сделать. Перед изменением делать "архивную копию" организации: копируем элемент справочника и в наименовании пишем "до дд.мм.гггг". Добавляем РСВ периодический. Измерение "Организация", ресурс "организация для печати". Соотв., после изменения реквизитов регистр будет выглядеть так:

01.01.0001 "Рога и копыта" "РиК до 01.05.2012"
01.05.2012 "Рога и копыта" "Рога и копыта"

Соответственно, в общем модуле не вручную будем дописывать каждый раз, а один раз подмену организуем:) Типа

Функция СведенияОЮрФизЛице(ЮрФизЛицо, ДатаПериода, ДляФизЛицаТолькоИнициалы = Истина, БанковскийСчет = Неопределено) Экспорт

	Сведения = Новый Структура("Представление, ПолноеНаименование, КодПоОКПО, ИНН, КПП, Телефоны, ЮридическийАдрес, Банк, БИК, КоррСчет, НомерСчета, АдресБанка");
	Запрос   = Новый Запрос;
	Данные   = Неопределено;

	Если НЕ ЗначениеЗаполнено(ЮрФизЛицо) Тогда
		Возврат Сведения;
	ИначеЕсли ТипЗнч(ЮрФизЛицо) = Тип("Строка") Тогда
		Сведения.Вставить("Представление",      ЮрФизЛицо);
		Сведения.Вставить("полноеНаименование", ЮрФизЛицо);
		Возврат Сведения;
	КонецЕсли;

	Если БанковскийСчет = Неопределено ИЛИ БанковскийСчет.Пустая() Тогда
		ТекБанковскийСчет = ЮрФизЛицо.ОсновнойБанковскийСчет;
	Иначе
		ТекБанковскийСчет = БанковскийСчет;
	КонецЕсли;
	//new+
	Срез = РегистрыСведений.СтарыеЗначенияРеквизитов.ПолучитьПоследнее(ДатаПериода, Новый Структура("ЮрФизЛицо", ЮрФизЛицо));
 
	Если Не Срез.ЮрФизЛицоДляПечати.ПустаяСсылка() Тогда
		ЮрФизЛицо = Срез.ЮрФизЛицоДляПечати;
	КонецЕсли;
	//new-
	// Выберем основные сведения о контрагенте и банковском счете
	Если ТекБанковскийСчет.БанкДляРасчетов.Пустая() Тогда
		ИмяРеквизитаБанка = "Банк";
	Иначе
		ИмяРеквизитаБанка = "БанкДляРасчетов";
	КонецЕсли;

...
...Показать Скрыть


Универсально: для организации и для контрагентов
2. Павел Хорев (w22u) 12.08.12 23:09
(1) Miffka, Теперь понятно, из - за какой организации, налоговая начала требовать краткое и полное название в сф )))
3. Линда Иванова (Linda1C) 19.02.14 11:12
Спасибо! Полезная статья!)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа