Казалось бы, тривиальная проблема... В условиях российского бизнеса многие организации меняли свой юридический адрес, и не один раз. Но почему-то 1С в этой ситуации не предлагает никакого другого выхода, кроме как создание внешних печатных форм со старым адресом для печати документов задним числом. Это неудобно как минимум по 2 причинам:
1. Первичных документов много, для каждого делать отдельную печатную форму очень лениво.
2. Есть потенциальная вероятность того, что какие-либо реквизиты метаданных документа поменяются с выходом очередного релиза, и тогда придется переделывать в том числе и созданные внешние печатные формы, опять таки это не по фэн-шую.
Как бы сделать по-удобнее?
Решение достаточно простое. Знаете наверно про регистр сведений "Ответственные лица организации". Правильно, он периодический и с ним никаких проблем не возникает, с определенной даты можно в печатные формы выводить нужное ответственное лицо. Так что помешало 1С сделать то же самое, например, для регистра "Контактная информация", содержащего в частности юридический адрес организации? Но не сделали.... видимо, посчитали, что это достаточно редкая ситуация, чтобы ее автоматизировать.
У меня такая ситуация возникла, бухгалтерия поставила задачу сделать так, чтобы до определенной даты все документы печатались со старым юридическим адресом, а после этой даты - с новым. Делать внешние печатные формы ко всем документам мне было лень, в итоге, что я сделал:
в Общем модуле УправлениеКонтактнойИнформацией внутри функции СведенияОЮрФизЛице() перед строкой
Возврат Сведения;
добавил строку
Сведения = МойДополнительныйМодуль.СведенияОЮрФизЛицеДополненные(Сведения, ЮрФизЛицо, ДатаПериода);
Внутри добавленного в конфигурацию общего модуля МойДополнительныйМодуль прописал следующую функцию:
// Функция используется для замены в печатных формах юридического адреса нашей организации
// на старый юридический адрес для документов, распечатываемых задним числом до 10 мая 2012 года
Функция СведенияОЮрФизЛицеДополненные(Сведения, ЮрФизЛицо, ДатаПериода) Экспорт
Если ДатаПериода >= Дата(2012, 05, 10) Тогда
// печатаем актуальные на текущий момент сведения
Возврат Сведения;
КонецЕсли;
// если это более ранний документ, тогда заменяем юридический адрес организации
Если ТипЗнч(ЮрФизЛицо) = Тип("СправочникСсылка.Организации") Тогда
ЮридическийАдресДляЗамены = Неопределено;
Если Сведения.Свойство("ЮридическийАдрес", ЮридическийАдресДляЗамены) Тогда
Сведения.Вставить("ЮридическийАдрес", "Тут пишем строку со старым юридическим адресом организации");
КонецЕсли;
КонецЕсли;
Возврат Сведения;
КонецФункции
Вот собственно и вся хитрость. Можно сделать универсальнее: ввести свой периодический регистр сведений для хранения контактной информации и забить старый адрес туда, соответствующим образом переделав и указанную выше функцию. Но мне кажется, чем проще и быстрее можно выполнить какую-то задачу, тем лучше, т.к. можно переключиться на решение других более интересных и актуальных задач.