Заполнение дополнительных реквизитов по адресному классификатору

05.11.25

Задачи пользователя - Мастера заполнения

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

Файлы

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

Наименование Скачано Купить файл
Заполнение дополнительных реквизитов по адресному классификатору
.cfe 31,58Kb
3 2 500 руб. Купить

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

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

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

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

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

1. Создание Дополнительных реквизитов.

Для примера буду использовать конфигурацию 1С ЗУП КОРП и справочник "Подразделения".

Создаем два дополнительных реквизита типа Строка c наименованиями "Адрес" и "АдресЗначение". Второй дополнительный реквизит "АдресЗначение" нам необходим чтобы хранить значение адреса в том формате в котором его распознает классификатор.

Для удобства сделаем этот реквизит скрытым, добавив любое невыполнимое условие видимости.

 

 

2. Добавляем дополнительному реквизиту кнопку выбора и назначаем на нее команду

В конфигураторе создаем расширение и добавляем в него процедуру нашей формы элемента справочника "Подразделения": "ПриСозданииНаСервереПосле" или "ПриОткрытииПосле".

В этой процедуре ищем название нашего дополнительного реквизита "Адрес" и ставим ему свойство КнопкаВыбора = ИСТИНА и назначаем этой кнопке команду. Основная трудность, с которой я здесь столкнулся была связана с тем, что  для дополнительных реквизитов генерируется неудобоваримое наименование, которое не меняется в рамках одной БД, и его даже можно прописать в коде, но уж очень безобразно это все будет выглядеть и расширение каждый раз придется править перенося на другую БД.

 

 

Спасение из данной ситуации нашел здесь:

 

 

Через "Свойства_ОписаниеДополнительныхРеквизитов" можно, по нашим названиям доп. реквизитов, найти их сгенерированные названия элементов форм  и обращаться к ним.

Пройдя циклом по ЭтотОбъект.Свойства_ОписаниеДополнительныхРеквизитов находим нужный нам элемент формы и назначаем ему нужные нам свойства

&НаСервере
Процедура Расш_ЗАДРПКПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	Для Каждого Эл Из ЭтотОбъект.Свойства_ОписаниеДополнительныхРеквизитов Цикл
		Если Эл.Наименование = "Адрес" Тогда
			ИмяДопРек = Эл.ИмяРеквизитаЗначение;
			ЭтаФорма.Элементы[ИмяДопРек].КнопкаВыбора = Истина;
			ЭтаФорма.Элементы[ИмяДопРек].УстановитьДействие("НачалоВыбора","Расш_ЗАДРПК_ЗаполнитьАдресНаКлиенте");
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

3. Пишем процедуру для нашей кнопки выбора

Не забываем назначить параметры работы с элементом формы "Элемент, ДанныеВыбора, СтандартнаяОбработка". 

&НаКлиенте
Процедура Расш_ЗАДРПК_ЗаполнитьАдресНаКлиенте(Элемент, ДанныеВыбора, СтандартнаяОбработка)

Для начала нам необходимо получить значение нашего дополнительного реквизита "АдресЗначение"  для его передачи в адресный классификатор.

Для Каждого Эл Из ЭтотОбъект.Свойства_ОписаниеДополнительныхРеквизитов Цикл
	Если Эл.Наименование = "АдресЗначение" Тогда
		ИмяРеквизита = Эл.ИмяРеквизитаЗначение;
		Если ЗначениеЗаполнено(ЭтотОбъект[ИмяРеквизита]) Тогда
			ЗнАдреса = ЭтотОбъект[ИмяРеквизита ];
		Иначе
			ЗнАдреса = Элемент.ТекстРедактирования;
		КонецЕсли;
	КонецЕсли;
КонецЦикла;

Далее добавляем в наше расширение предопределенный объект справочника "ВидыКонтактнойИнформации" и заполняем параметры открытия формы адресного классификатора.

	ПараметрыКИ = Новый Структура;
	ПараметрыКИ.Вставить("ВидКонтактнойИнформации",ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.ПочтовыйАдресОрганизации"));
	ПараметрыКИ.Вставить("Значение",ЗнАдреса);
	ПараметрыКИ.Вставить("Представление",Элемент.ТекстРедактирования);
	ПараметрыКИ.Вставить("Индекс",Неопределено);
	ПараметрыКИ.Вставить("Комментарий","Исходный адрес: " + Элемент.ТекстРедактирования);
	ПараметрыКИ.Вставить("ОткрытаПоСценарию",Истина);
	ПараметрыКИ.Вставить("ТолькоПросмотр",Ложь);
	ПараметрыКИ.Вставить("ТипПомещения","Квартира");

И завершаем нашу процедуру назначением обработчика и открытием формы Адресного классификатора:

Оповещение = Новый ОписаниеОповещения("Расш_ЗАДРПК_ЗаполнитьАдресЗавершениеНаКлиенте",ЭтаФорма);
УправлениеКонтактнойИнформациейКлиент.ОткрытьФормуКонтактнойИнформации(ПараметрыКИ,,Оповещение);

4. Пишем экспортную процедуру обработки результата, вызываемую после заполнения адреса:

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

Готово!

Сейчас при открытии Подразделения у нас есть доп. реквизит с кнопкой выбора, при нажатии на нее открывается форма заполнения адреса. После заполнения, адрес переносится на наш доп. реквизит "Адрес", а благодаря доп. реквизиту "АдресЗначение" при следующем редактировании адреса, классификатор откроется в том же виде, что был при закрытии: 

 

 

Без доп. реквизита "АдресЗначение", при повторном редактировании, классификатор открывался бы с адресом в свободной форме, что неудобно. А с этим служебным реквизитом адрес открывается в "муниципальном" или "административно-территориальном" делении.

Проверено на следующих конфигурациях и релизах:

  • Зарплата и управление персоналом КОРП, редакция 3.1, релизы 3.1.35.48
  • Зарплата и управление персоналом, редакция 3.1, релизы 3.1.35.48

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

Расширения Дополнительные реквизиты Адресный классификатор

См. также

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

6000 руб.

25.02.2026    4267    14    1    

18

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

Корректируйте банковские документы быстро и легко! Создайте правило обработки, и оно автоматически применится при загрузке выписки, экономя ваше время (Можно настроить отбор по любому реквизиту или по регулярному выражению). Решение позволяет автоматически заполнять расшифровку платежа, исключать загрузку ненужных документов (дублей) из банка, заполнять комиссию за эквайринг и многое другое. Вам не нужно доплачивать за алгоритмы, они уже включены в решение. Автоматическая обработка применяется при загрузке данных как из файлов клиент банка, так и через DirectBank. Доступен AI чат бот который умеет консультировать по функционалу решения.

15250 руб.

20.12.2024    16081    71    29    

66

Операции по ВЭД Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Мастера заполнения Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Обработка значительно расширяет функционал типовой конфигурации «1С:Бухгалтерия предприятия» и позволяет осуществлять автоматическое заполнение ГТД в документах «Реализация товаров и услуг», «Списание товаров», «Отчет о розничных продажах», «Отчет комиссионера (агента) о продажах», «Требование-накладная», «Возврат товаров от покупателя», «Комплектация номенклатуры», «Безвозмездная передача», «Отчет производства за смену». Обработка предназначена для работы в конфигурации «1С:Бухгалтерия предприятия 8, редакция 3.0» Есть версия обработки оптимизированная для работы в 1CFresh

12200 руб.

19.06.2012    146685    318    81    

261

ЭДО и ОФД Мастера заполнения 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 Россия Платные (руб)

Расширение добавляет возможность создавать ЭТрН и электронный заказ (заявку) на основании документа «Реализация товаров и услуг». При создании документа автоматически заполняются основные данные: участники перевозки, адреса, транспорт, водитель и сведения о грузе. Работает как расширение, не требует изменения типовой конфигурации и быстро подключается.

6000 руб.

13.05.2026    778    9    7    

11

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

Обработка позволяет создавать документы "Сведения об уплате налогов на едином налоговом счете" по данным файла операций из личного кабинета ЕНС сайта ФНС в конфигурации 1С:Бухгалтерия предприятия 3.0.

10000 руб.

22.11.2024    5379    35    13    

35

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

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

5084 руб.

28.06.2023    5307    13    5    

13

Мастера заполнения 1С:Предприятие 8 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ Отраслевые 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

OCR с ИИ для 1С: с фото документа в заполненную 1С за секунды. Полностью локально, без интернета. Настраивается под любую конфигурацию.

12200 руб.

29.05.2026    470    1    0    

1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ketr 153 18.06.26 16:53 Сейчас в теме
На новых версиях вот так работает (добавляем сначала вызов отложенной инициализации):


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