Контактная информация в отчетах на основе Универсального отчета встроенными средствами

11.08.16

Разработка - Запросы

Лёгкий способ добавить контактную информацию в типовые отчеты (Закупки, Продажи и т.п.) на основе УниверсальногоОтчета (УТ 10, УПП 1.3, КА). Позволяет выводить контактную информацию любого вида без необходимости вручную задавать текст запроса. Достаточно после инициализации настроек добавить код из 11 строк. Подходит для внешних отчетов.

Файлы

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

Наименование Скачано Купить файл
Отчет Закупки с контактной информацией
.erf 17,21Kb
11 2 500 руб. Купить

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

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

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

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

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

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

После непродолжительных поисков была найдена вот эта публикаци //infostart.ru/public/259016/, в которой описываются два способа решения проблемы: 1 - модифицировать УниверсальныйОтчет; 2 - вручную задать текст запроса.

1 способ не подошел, т.к. не было возможности вносить изменения, влияющие на типовое поведение объектов системы.

2 посчитал неоптимальным, т.к. теряется гибкость, да и не хотелось заморачиваться.

Описываемый мною лёгкий способ позволяет использовать преимущества обоих без свойственных им недостатков.

Итак, в модуле объекта модифицируемого отчета присутствует процедура "УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт" в теле которой, после строки "УниверсальныйОтчет.УстановитьНачальныеНастройки(Истина);" добавляем следующий код:

ТекстЗапроса = УниверсальныйОтчет.ПостроительОтчета.Текст;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ПОЛЯ_СВОЙСТВА", "//ПОЛЯ_КОНТАКТНАЯИНФОРМАЦИЯ" + Символы.ВК + Символы.Таб + "//ПОЛЯ_СВОЙСТВА");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ПСЕВДОНИМЫ_СВОЙСТВА", "//ПСЕВДОНИМЫ_КОНТАКТНАЯИНФОРМАЦИЯ" + Символы.ВК + Символы.Таб + "//ПСЕВДОНИМЫ_СВОЙСТВА");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//СОЕДИНЕНИЯ", "" + Символы.Таб + "//КОНТАКТНАЯИНФОРМАЦИЯ_СОЕДИНЕНИЯ" + Символы.ВК + Символы.Таб + "//СОЕДИНЕНИЯ");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//УСЛОВИЯ_СВОЙСТВА", "//УСЛОВИЯ_КОНТАКТНАЯИНФОРМАЦИЯ" + Символы.ВК + Символы.Таб + "//УСЛОВИЯ_СВОЙСТВА");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ИТОГИ_СВОЙСТВА", "//ИТОГИ_КОНТАКТНАЯИНФОРМАЦИЯ" + Символы.ВК + Символы.Таб + "//ИТОГИ_СВОЙСТВА");
УниверсальныйОтчет.ДобавитьКонтактнуюИнформацияДляПоля("ИсточникДанных.Контрагент", "Контрагент" , "Контрагент", Перечисления.ВидыОбъектовКонтактнойИнформации.Контрагенты, "Справочник.Контрагенты");
УниверсальныйОтчет.ДобавитьВТекстЗапросаКонтактнуюИнформацию(ТекстЗапроса);
УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;
УниверсальныйОтчет.УстановитьПредставленияПолей(УниверсальныйОтчет.мСтруктураПредставлениеПолей, УниверсальныйОтчет.ПостроительОтчета);
УниверсальныйОтчет.ПостроительОтчета.ВыбранныеПоля.Очистить();

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

В результате, после открытия отчета, мы имеем возможность добавить в дополнительные поля контактную информацию любого вида. Чтобы добавить нужное поле необходимо: октрыть Настройки - Включить расширеныне настройки - Перейти на страницу Дополнительные поля - Нажать "Добавить" - Раскрыть "Контрагент" - Выбрать поле в списке. См. скриншот.

Кому совсем лень, может скачать файл за плюс в карму)

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

УниверсальныйОтчет контактная информация ДобавитьКонтактнуюИнформацияДляПоля ДобавитьВТекстЗапросаКонтактнуюИнформацию

См. также

Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    285747    1606    423    

1220

Инструментарий разработчика Запросы Разработчик 1С 8.3 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Структура запроса. Обработка визуально показывает, из какого количества подзапросов состоит запрос.

2 стартмани

06.07.2026    4967    65    XSlava    20    

47

Запросы Разработчик 1С 8.3 Россия Бесплатно (free)

Визуальный «Конструктор запроса» 1С, встроенный прямо в VS Code, — аналог конструктора из Конфигуратора и EDT, но без запуска платформы. Расширение читает конфигурацию, выгруженную в файлы, позволяет собрать запрос мышью и генерирует корректный текст на языке запросов 1С (SDBL). Открывает уже существующий текст запроса из кода для правки и — что особенно ценно — сохраняет комментарии при цикле «открыть - править - сохранить». Подходит тем, кто пишет код 1С в VS Code, держит под рукой множество проектов и не хочет ради одного запроса запускать тяжёлый Конфигуратор или EDT.

26.06.2026    10692    Alex_YAM    7    

34

Нейросети Инструментарий разработчика Запросы Разработчик 1С:Предприятие 8 Абонемент ($m)

Консоль запросов 1.0: добавлен ИИ-помощник (запрос в DeepSeek), который помогает быстрее получать каркас Запроса 1С Сформулируйте простое описание; нажмите кнопку – получите результат прямо в консоли. Где дальше его можно дорабатывать и тестировать. 28.5.2026 Добавил "Консоль запросов 2.0" (запрос в DeepSeek + Claude) 4.10.2026 Обновил "Консоль запросов 2.0"

3 стартмани

20.05.2026    9592    46    German4739    72    

28

WEB-интеграция Запросы Разработчик 1С 8.3 Абонемент ($m)

Post1C - это внешняя обработка, которая превращает 1С в полноценный инструмент для тестирования REST API. Всё управление сосредоточено в одном окне: настройка запроса, выполнение, просмотр ответа и генерация кода - без переключения между формами. Аналог Postman, но работающий в привычной среде 1С.

1 стартмани

02.04.2026    4659    105    priem_nv    27    

70

Инструментарий разработчика Запросы Разработчик 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

QueryConsole1C — расширение, включающее консоль запросов с поддержкой исполняемых представлений — аналогов виртуальных таблиц, основанных на методах программного интерфейса ЗУП. Оно позволяет выполнять запросы с учётом встроенной бизнес-логики, отлаживать алгоритмы получения данных и автоматически генерировать код на встроенном языке 1С.

1 стартмани

16.05.2025    13685    168    zup_dev    32    

87

Инструментарий разработчика Запросы Разработчик 1С:Предприятие 8 1С:ERP Управление предприятием 2 Абонемент ($m)

В данной публикации рассказывается о решении, которое позволяет находить сразу все ошибки в тексте запроса за раз, а не только самую первую.

2 стартмани

05.03.2025    7735    25    XilDen    12    

29
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. script 128 11.08.16 18:00 Сейчас в теме
Спасибо. Похожее решение уже было на инфостарте, но там нужно было вновить изменения в текст запроса отчета и в модуль универсального отчета.

А тут все просто и лаконично, в общем гениально.
Programador1C; Hexed; +2 – Ответить
2. Cmapnep 21 12.08.16 09:32 Сейчас в теме
(1) script, спасибо за лестную оценку! ))
Ninel_S; Hexed; +2 – Ответить
7. Ninel_S 208 08.10.26 17:43 Сейчас в теме
(2) Подарок от нового друга ;-)

В прикрепленном файле план "сиквела" Вашей статьи в 2026 году.
Может быть захотите сделать?
Прикрепленные файлы:
iix.pdf
9. Cmapnep 21 08.10.26 18:47 Сейчас в теме
(7) Спасибо! И не жаль вам токены палить на такое старьё? ))
10. Ninel_S 208 08.10.26 19:02 Сейчас в теме
(9) нисколько 🙂

Если решите сделать, озадачим этим делом моего робота
3. Areal 13 14.09.16 10:22 Сейчас в теме
Эта решение оказалось для меня просто спасением! Спасибо автору! Далее, в первую очередь для себя, напишу кое-какие заметки:
Можно сохранить из конфы отчет, как внешний и в нем, после строки "УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;" добавить весь этот код от автора, заменив в коде "ИсточникДанных.Контрагент" само "ИсточникДанных" на используемый в отчете регистр, то все будет работать.

Пример: в отчете "Задолженность по контрагентам" вместо предлагаемого автором кода
УниверсальныйОтчет.ДобавитьКонтактнуюИнформацияДляПоля("ИсточникДанных.Контрагент", "Контрагент" , "Контрагент", Перечисления.ВидыОбъектовКонтактнойИнформации.Контрагенты, "Справочник.Контрагенты");

написать

УниверсальныйОтчет.ДобавитьКонтактнуюИнформацияДляПоля("ВзаиморасчетыСКонтрагентамиОстатки.Контрагент", "Контрагент" , "Контрагент", Перечисления.ВидыОбъектовКонтактнойИнформации.Контрагенты, "Справочник.Контрагенты");
Ninel_S; Hexed; +2 – Ответить
4. xantif_2000 08.02.17 12:19 Сейчас в теме
5. Tangram 165 24.11.17 09:33 Сейчас в теме
Как все просто... В "Дебиторская задолженность по интервалам" понадобилось всего лишь 7 строк:

	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ПОЛЯ_СВОЙСТВА", "//ПОЛЯ_КОНТАКТНАЯИНФОРМАЦИЯ" + Символы.ВК + Символы.Таб + "//ПОЛЯ_СВОЙСТВА");
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ПСЕВДОНИМЫ_СВОЙСТВА", "//ПСЕВДОНИМЫ_КОНТАКТНАЯИНФОРМАЦИЯ" + Символы.ВК + Символы.Таб + "//ПСЕВДОНИМЫ_СВОЙСТВА");
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//СОЕДИНЕНИЯ", "" + Символы.Таб + "//КОНТАКТНАЯИНФОРМАЦИЯ_СОЕДИНЕНИЯ" + Символы.ВК + Символы.Таб + "//СОЕДИНЕНИЯ");
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//УСЛОВИЯ_СВОЙСТВА", "//УСЛОВИЯ_КОНТАКТНАЯИНФОРМАЦИЯ" + Символы.ВК + Символы.Таб + "//УСЛОВИЯ_СВОЙСТВА");
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ИТОГИ_СВОЙСТВА", "//ИТОГИ_КОНТАКТНАЯИНФОРМАЦИЯ" + Символы.ВК + Символы.Таб + "//ИТОГИ_СВОЙСТВА");
	УниверсальныйОтчет.ДобавитьКонтактнуюИнформацияДляПоля("РегВзаиморасчеты.Контрагент", "Контрагент" , "Контрагент", Перечисления.ВидыОбъектовКонтактнойИнформации.Контрагенты, "Справочник.Контрагенты");
	УниверсальныйОтчет.ДобавитьВТекстЗапросаКонтактнуюИнформацию(ТекстЗапроса);


Вставляем сразу после формирования текста запроса, до добавления полей свойств.
6. userT 01.03.18 14:25 Сейчас в теме
8. Ninel_S 208 08.10.26 17:44 Сейчас в теме
Поставила "плюсик" в 2026 году.
Получился "юбилейный плюсик"
;-)
Для отправки сообщения требуется регистрация/авторизация