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

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

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

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

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

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

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

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

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

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

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

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

 

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


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

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

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

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

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

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

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

3 Comments

  1. mikhailv

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

    Можно, например, так еще сделать. Перед изменением делать «архивную копию» организации: копируем элемент справочника и в наименовании пишем «до дд.мм.гггг». Добавляем РСВ периодический. Измерение «Организация», ресурс «организация для печати». Соотв., после изменения реквизитов регистр будет выглядеть так:

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

    01.05.2012 «Рога и копыта» «Рога и копыта»

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

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

    Показать

    Универсально: для организации и для контрагентов

    Reply
  2. w22u

    (1) Miffka, Теперь понятно, из — за какой организации, налоговая начала требовать краткое и полное название в сф )))

    Reply
  3. Linda1C

    Спасибо! Полезная статья!)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *