История изменения контактной информации контрагентов, на примере cохранения истории изменений адресов партнеров и контрагентов, для УТ 11.2

13.01.17

Задачи пользователя - Адаптация типовых решений

Сохраняем историю изменений адресов партнеров и контрагентов для УТ 11.2 с возможностью печати документов задним числом с нужными адресами. В публикации описаны необходимые минимальные доработки конфигурации для: хранения истории изменений и автоматической подстановки нужного адреса (в зависимости от даты) в печатные бланки.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
ЗаполнитьИсториюТекущимиКонтактнымиДанными
.epf 7,02Kb
4 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Доработка тестировалась на конфигурации: Управление Торговлей 11.2 (11.2.3.129).

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

Реализация:

1) Создадим периодический "Регистр сведений", в котором будем хранить историю контактной информации.

- Наименование: ИсторияКонтактнойИнформации
- Синоним: История изменения контактной информации 
- Переодичность: В пределах секунды
- Режим записи : Независимый
- Измерения: Объект(СправочникСсылка.Контрагенты, СправочникСсылка.Партнеры), Тип, Вид, ВидДляСписка
- Ресурсы: Представление, ЗначенияПолей, Страна, Регион, Город, АдресЭП, ДоменноеИмяСервера, НомерТелефона, НомерТелефонаБезКодов

Измерения и ресурсы полностью взяты из табличной части "КонтактнаяИнформация" справочника "Контрагенты", кроме имерения "Объект". Данный регистр сведений позволит хранить историю любую контактной информации справочников "Партнеры" и "Контрагенты".
Не забываем на вкладке "права" настроить права для нужных ролей.

2) Создадим процедуру "СохранитьИсториюКонтактнойИнформации". Данную процедуру расположим в общем модуле "ПартнерыИКонтрагенты" и сделаем ее экспортной. В качестве параметра будем передавать объект, чью историю необходимо сохранить.

Процедура СохранитьИсториюКонтактнойИнформации(спрОбъект) Экспорт
    
    текДата = ТекущаяДатаСеанса();
    
    //Получаем уже сохраненную историю(на последнюю актуальную дату)...
    Запрос = Новый Запрос("ВЫБРАТЬ
                          |    История.Тип,
                          |    История.Вид,
                          |    История.ВидДляСписка,
                          |    История.Представление,
                          |    История.ЗначенияПолей,
                          |    История.Страна,
                          |    История.Регион,
                          |    История.Город,
                          |    История.АдресЭП,
                          |    История.ДоменноеИмяСервера,
                          |    История.НомерТелефона,
                          |    История.НомерТелефонаБезКодов
                          |ИЗ
                          |    РегистрСведений.ИсторияКонтактнойИнформации.СрезПоследних(&Дата, Объект = &Объект) КАК История");
    
    Запрос.УстановитьПараметр("Дата", текДата);
    Запрос.УстановитьПараметр("Объект", спрОбъект.Ссылка);
    
    РезультатЗапросаИстория = Запрос.Выполнить();
    табИстория = РезультатЗапросаИстория.Выгрузить();
    ПараметрыПоиска = Новый Структура;
    РеквизитыКонтактнойИнформации = спрОбъект.Метаданные().ТабличныеЧасти.КонтактнаяИнформация.Реквизиты;
    
    //Идем по контактной информации и сохраняем измененную и новую...
    Для каждого стрИнф из спрОбъект.КонтактнаяИнформация Цикл
        
        СохранятьКонтактнуюИнформацию = Ложь;
        
        //Если нет данных сохраняем сразу...
        Если РезультатЗапросаИстория.Пустой() Тогда
            СохранятьКонтактнуюИнформацию = Истина;
        Иначе
            
            ПараметрыПоиска.Очистить();
            ПараметрыПоиска.Вставить("Тип", стрИнф.Тип);
            ПараметрыПоиска.Вставить("Вид", стрИнф.Вид);
            ПараметрыПоиска.Вставить("ВидДляСписка", стрИнф.ВидДляСписка);
            
            //Ищем...
            масСтрок = табИстория.НайтиСтроки(ПараметрыПоиска);
            
            Если масСтрок.Количество() = 0 Тогда 
                СохранятьКонтактнуюИнформацию = Истина;

            Иначе
                
                //Сравним каждую колонку...
                Для каждого Рек из РеквизитыКонтактнойИнформации Цикл
                    Если масСтрок[0][Рек.имя] <> стрИнф[Рек.имя] Тогда
                        СохранятьКонтактнуюИнформацию = Истина;
                        Прервать;
                    КонецЕсли;    
                КонецЦикла;    
                
            КонецЕсли;    
            
        КонецЕсли;    
        
        //Сохраняем...
        Если СохранятьКонтактнуюИнформацию Тогда    
            
            НовКонИнф = РегистрыСведений.ИсторияКонтактнойИнформации.СоздатьМенеджерЗаписи();
            НовКонИнф.Объект = спрОбъект.Ссылка;
            НовКонИнф.Период = текДата;
        
            Для каждого Рек из РеквизитыКонтактнойИнформации Цикл
                НовКонИнф[Рек.имя] = стрИнф[Рек.имя];    
            КонецЦикла;    
        
            НовКонИнф.Записать();
            
        КонецЕсли;    
        
    КонецЦикла;
    
КонецПроцедуры 

   

3) В модуле объекта справочников "Партнеры" и "Контрагенты" в процедуре "ПередЗаписью" вызовем нашу процедуру "СохранитьИсториюКонтактнойИнформации". На данном этапе доработки история контактной информации уже будет сохраняться. 

4) В модуле менеджера нашего регистра сведений создадим экспортную функцию "ПолучитьПредставление". 

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

5) Для того, чтобы при печати адреса подставлялись из нашей сохраненной истории, вызовем функцию "ПолучитьПредставление" из модуля менеджера нашего регистра сведений. Место, откуда будем вызывать функцию, - это модуль "ФормированиеПечатныхФорм", в нем ищем функцию "ПолучитьАдресИзКонтактнойИнформации". Комментируем кусок кода и вызываем нашу функцию, как показано на скрине ниже.

6) В этом же модуле находим функцию "СведенияОЮрФизЛице" и добавляем параметр "ДатаПериода" в вызов функции "ПолучитьАдресИзКонтактнойИнформации".

7) Все готово.

Р.S. Не забываем перезаписать все справочники "Партнеры" и "Контрагенты", чтобы текущая контактная информация сохранилась в регистре сведений "ИсторияКонтактнойИнформации". 

Вступайте в нашу телеграмм-группу Инфостарт

история адресов сохранить историю адресов история изменения адресов УТ

См. также

Разработка Адаптация типовых решений Производство готовой продукции (работ, услуг) Розничная торговля 1С:Управление торговлей 10 Россия Платные (руб)

Доработка для 1С:Управление торговлей 10.3 (релиз 10.3.88.3) добавляет поддержку маркировки новых категорий товаров согласно постановлениям Правительства РФ 2025–2026 гг. Конфигурация УТ 10.3 снята с поддержки — новые маркируемые категории в типовую поставку больше не попадают. Доработка закрывает этот пробел: новые виды номенклатуры, обмен с ГИС МТ «Честный Знак». Поставляется в виде файла .cf

14640 руб.

23.04.2026    1633    12    13    

16

Адаптация типовых решений БСП (Библиотека стандартных подсистем) Кадровый учет ЭДО и ОФД 1C:Бухгалтерия 1С:Зарплата и кадры 7.7 1C:ERP 1С:ЗУП 1С:УТ 1С:ДО Платные (руб)

Наше расширение 1С Госключ обеспечивает интеграцию любой конфигурации 1С на базе БСП с мобильным приложением «Госключ», позволяя сотрудникам подписывать кадровые документы (КЭДО) и документы материальной ответственности (МОЛ, ПБ) усиленной электронной подписью прямо со смартфона. Решение автоматизирует формирование и отправку документов на подпись, отслеживает статусы подписания и хранит подписанные файлы непосредственно в базе 1С

25000 руб.

06.03.2026    1445    4    0    

3

Печатные формы Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

6000 руб.

07.02.2023    13663    120    25    

76

Банковские операции Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Решение позволяет автоматически заполнять отдельные реквизиты загружаемых банковских документов, основываясь на известных значениях реквизитов и тексте назначения платежа. Простая настройка, широкие возможности анализа назначения платежа без написания кода и сложных шаблонов.

9760 руб.

17.06.2025    4071    10    0    

9

Адаптация типовых решений 1С 8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Расширение, которое в форму списка и форму выбора справочника «Номенклатура» добавляет табличную часть в виде дерева, в которую выводится информация об остатках и доступности выбранной номенклатурной позиции.

6710 руб.

20.04.2026    495    1    0    

3

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Расширение для УНФ, чтобы автоматически отменять старые резервы и не мешалть эффективно продавать.

9150 руб.

02.08.2023    8454    26    5    

41

Адаптация типовых решений 1С 8.3 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Беларусь Россия Платные (руб)

Расширение "Дополнительные документы" предназначено для создания дополнительных документов различного назначения, как форм для внесения данных так и печатных форм в расширяемой конфигурации пользовательскими средствами, без работы в конфигураторе и внесения изменений в структуру данных. Тестировалось для "1С:БП", "1С:УНФ","1С:КА"

21859 руб.

29.12.2025    1625    1    8    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. gzharkoj 596 15.09.16 08:40 Сейчас в теме
А чем вам не подошел стандартный механизм версионирования?
2. sergey512 36 15.09.16 12:56 Сейчас в теме
(1) ifal, При использовании стандартного механизма версионирования, получим только историю изменения для просмотра. При печати документов задним числом, в печатный бланк будут подставляться текущие данные контактной информации, а не данные актуальные на дату документа. Т.е.перед печатью задним числом, придется менять все вручную. В способе описанном выше, адрес в печатный бланк подставится актуальный на дату документа. Аналогично адресу, можно подставлять и другие актуальные, на дату документа, данные из контактной информации.
3. gzharkoj 596 15.09.16 13:42 Сейчас в теме
(2) Вы не поняли, что я спрашиваю. Я хочу узнать зачем делать новый регистр сведений, писать код, чтобы туда что-то сохранять, если есть подсистема версионирования, которая все это делает из коробки. Остается только достать оттуда данные и все. А в Платформе 8.3.9 можно будет через расширение решить вашу задачу, не снимая с поддержки конфигурацию, если опираться на версионирование.
4. sergey512 36 15.09.16 14:07 Сейчас в теме
(3) ifal, Согласен. Моя публикация - это всего лишь пример решения данной задачи. В ближайшее время напишу публикацию, по решению данной задачи с помощью механизма версионирования. Интересно будет сравнить быстродействие работы двух вариантов реализации.
5. bluntschi 15.12.22 12:03 Сейчас в теме
(4)добрый день, а удалось сделать с помощью механизма версионирования?
Для отправки сообщения требуется регистрация/авторизация