Версия: 1.0
Дата создания: 23.12.2025
Назначение: Автоматическая выгрузка данных о платежах по договорам в систему Tessa в формате JSON
- Общее описание
- Архитектура решения
- Состав объектов метаданных
- Структура данных
- Настройка системы
- Инструкция по использованию
- Формат JSON
- Техническая документация
- Возможные ошибки и решения
Обработка предназначена для:
- Сбора данных о платежах по договорам с контрагентами
- Расчёта фактических платежей (списания минус поступления)
- Формирования JSON-файла для передачи в систему Tessa
- Отправки данных по HTTP API
┌─────────────────┐
│ Документы │
│ - Списание с РС │──┐
│ - Поступление │ │ Проведение документа
└─────────────────┘ │
↓
┌──────────────────────────────────┐
│ Регистр накопления │
│ "ПлатежиПоДоговорам" │
│ - Автоматическое заполнение │
│ - Накопление остатков │
└──────────────────────────────────┘
↓
┌──────────────────────────────────┐
│ Обработка "ОтчетПоПлатежам" │
│ - Чтение остатков из регистра │
│ - Формирование JSON │
│ - Отправка в Tessa │
└──────────────────────────────────┘
↓
┌──────────┐
│ Tessa │
└──────────┘
| Компонент | Тип | Роль |
|---|---|---|
| ПлатежиПоДоговорам | Регистр накопления | Хранит данные о платежах |
| СоответствиеДоговоровTessa | Регистр сведений | Связь договора 1С ↔ Tessa ID |
| СписаниеСРасчетногоСчета | Документ | Источник данных (расход) |
| ПоступлениеНаРасчетныйСчет | Документ | Источник данных (приход) |
| ОтчетПоПлатежам | Обработка | Формирование и отправка JSON |
| АдресСервераTessa | Константа | URL endpoint API Tessa |
Полный путь: РегистрыНакопления.ПлатежиПоДоговорам
Вид регистра: Остатки
Периодичность: В пределах секунды
Режим записи: По регистратору
| Имя | Тип | Описание |
|---|---|---|
| Договор | СправочникСсылка.ДоговорыКонтрагентов | Договор с контрагентом |
| Имя | Тип | Описание |
|---|---|---|
| СуммаСписаний | Число (15, 2) | Сумма исходящих платежей |
| СуммаПоступлений | Число (15, 2) | Сумма входящих платежей |
| СуммаНДС | Число (15, 2) | Сумма НДС в платеже |
Документ.СписаниеСРасчетногоСчетаДокумент.ПоступлениеНаРасчетныйСчет
Полный путь: РегистрыСведений.СоответствиеДоговоровTessa
Периодичность: Непериодический
Режим записи: Независимый
| Имя | Тип | Описание |
|---|---|---|
| ДоговорКонтрагента | СправочникСсылка.ДоговорыКонтрагентов | Договор в 1С |
| Имя | Тип | Длина | Описание |
|---|---|---|---|
| TessaID | Строка | 50 | Идентификатор договора в Tessa |
Назначение: Связывает договоры 1С с их идентификаторами в системе Tessa
Полный путь: Константы.АдресСервераTessa
Тип: Строка (200)
Описание: URL endpoint API Tessa для отправки данных
Пример значения:
https://tessa.company.ru/api/mid/update
Полный путь: Обработки.ОтчетПоПлатежам
| Имя | Тип | Описание |
|---|---|---|
| ДатаНачала | Дата | Начало периода отбора |
| ДатаОкончания | Дата | Окончание периода отбора |
| ТекстJSON | Строка (неограниченная) | Сформированный JSON |
| Команда | Описание |
|---|---|
| СформироватьИПоказатьJSON | Формирует JSON на основе остатков регистра |
| ОтправитьВTessa | Отправляет JSON по HTTP в Tessa |
| СохранитьJSONВФайл | Сохраняет JSON в файл на диске |
| ВернутьсяКОтчету | Возврат к форме настройки |
Модуль объекта → Процедура ОбработкаПроведения
// Движения по регистру ПлатежиПоДоговорам
Если ЗначениеЗаполнено(ДоговорКонтрагента) Тогда
Движения.ПлатежиПоДоговорам.Записывать = Истина;
Для Каждого СтрокаРасшифровки Из РасшифровкаПлатежа Цикл
Движение = Движения.ПлатежиПоДоговорам.Добавить();
Движение.Период = Дата;
Движение.Договор = ДоговорКонтрагента;
Движение.СуммаСписаний = СтрокаРасшифровки.СуммаПлатежа;
Движение.СуммаПоступлений = 0;
Движение.СуммаНДС = ?(СтрокаРасшифровки.СуммаНДС = Null, 0, СтрокаРасшифровки.СуммаНДС);
КонецЦикла;
КонецЕсли;
Связь данных:
- Договор берётся из шапки документа (
ДоговорКонтрагента) - Сумма берётся из табличной части
РасшифровкаПлатежа→СуммаПлатежа
Модуль объекта → Процедура ОбработкаПроведения
// Движения по регистру ПлатежиПоДоговорам
Движения.ПлатежиПоДоговорам.Записывать = Истина;
Для Каждого СтрокаРасшифровки Из РасшифровкаПлатежа Цикл
Если ЗначениеЗаполнено(СтрокаРасшифровки.ДоговорКонтрагента) Тогда
Движение = Движения.ПлатежиПоДоговорам.Добавить();
Движение.Период = Дата;
Движение.Договор = СтрокаРасшифровки.ДоговорКонтрагента;
Движение.СуммаСписаний = 0;
Движение.СуммаПоступлений = СтрокаРасшифровки.СуммаПлатежа;
Движение.СуммаНДС = ?(СтрокаРасшифровки.СуммаНДС = Null, 0, СтрокаРасшифровки.СуммаНДС);
КонецЕсли;
КонецЦикла;
Связь данных:
- Договор берётся из табличной части
РасшифровкаПлатежа→ДоговорКонтрагента - Сумма берётся из табличной части →
СуммаПлатежа
Формула расчёта ActualPayment:
ActualPayment = СуммаСписаний (остаток) − СуммаПоступлений (остаток)
Пример:
| Договор | Списания | Поступления | ActualPayment |
|---|---|---|---|
| Договор-001 | 600 000 | 150 000 | 450 000 |
- Открыть Конфигуратор
- Регистры накопления → правый клик → Добавить
- Заполнить свойства:
- Имя:
ПлатежиПоДоговорам - Синоним:
Платежи по договорам - Вид регистра:
Остатки - Периодичность:
В пределах секунды
- Имя:
- Вкладка Измерения → добавить:
Договор(Тип:СправочникСсылка.ДоговорыКонтрагентов)
- Вкладка Ресурсы → добавить:
СуммаСписаний(Тип:Число, длина 15, точность 2)СуммаПоступлений(Тип:Число, длина 15, точность 2)СуммаНДС(Тип:Число, длина 15, точность 2)
- Вкладка Движения → добавить регистраторы:
Документ.СписаниеСРасчетногоСчетаДокумент.ПоступлениеНаРасчетныйСчет
- Регистры сведений → правый клик → Добавить
- Заполнить:
- Имя:
СоответствиеДоговоровTessa - Синоним:
Соответствие договоров Tessa - Периодичность:
Непериодический
- Имя:
- Вкладка Измерения:
ДоговорКонтрагента(Тип:СправочникСсылка.ДоговорыКонтрагентов)
- Вкладка Ресурсы:
TessaID(Тип:Строка(50))
- Общие → Константы → правый клик → Добавить
- Заполнить:
- Имя:
АдресСервераTessa - Синоним:
Адрес сервера Tessa - Тип:
Строка(200)
- Имя:
- Открыть документ в конфигураторе
- Вкладка "Движения" → добавить
ПлатежиПоДоговорам - Открыть Модуль объекта
- Найти процедуру
ОбработкаПроведения - В самом конце добавить код (см. раздел "Структура данных")
- Открыть документ в конфигураторе
- Вкладка "Движения" → добавить
ПлатежиПоДоговорам - Открыть Модуль объекта
- Найти процедуру
ОбработкаПроведения - В самом конце добавить код (см. раздел "Структура данных")
- Нажать F7
- Дождаться завершения обновления
- Перезапустить 1С
- Открыть 1С в режиме Предприятие
- Главное → Константы
- Найти
АдресСервераTessa - Указать URL:
https://tessa.company.ru/api/mid/update
- Открыть Регистры сведений →
СоответствиеДоговоровTessa - Для каждого договора создать запись:
- ДоговорКонтрагента: выбрать договор из 1С
- TessaID: указать идентификатор из Tessa (например:
4578456845448)
Пример:
| Договор 1С | TessaID |
|---|---|
| Договор № 123 от 01.01.2025 | 4578456845448 |
| Договор № 456 от 15.02.2025 | 7891011121314 |
Чтобы заполнить регистр историческими данными:
- Открыть Журнал документов →
Деньги - Отбор по типу:
СписаниеСРасчетногоСчетаПоступлениеНаРасчетныйСчет
- Отбор по периоду (например, за последний год)
- Выделить все документы → Провести
- Обработки →
ОтчетПоПлатежам - Нажать Открыть
На форме обработки указать:
- Дата начала: начало периода (например,
01.12.2025) - Дата окончания: конец периода (например,
31.12.2025)
Примечание: Дата начала в текущей версии не используется — формируются остатки на дату окончания. Это поле оставлено для будущих доработок.
- Нажать кнопку "Сформировать и показать JSON"
- Обработка выполнит запрос к регистру
- Сформирует JSON
- Переключит на вкладку предпросмотра
Результат:
Сформировано договоров: 5
На вкладке "Предпросмотр" отображается сформированный JSON.
Пример JSON:
{
"MIDUpdateRequest": [
{
"GUID": "4578456845448",
"ActualPayment": 450000,
"ActualDelivery": 0,
"ReconciliationReportDate": "2025-12-23",
"Completed": "Нет",
"PaymentSchedule": [
{
"GUID_Link": "6de8562f-d9bf-11f0-b59f-7cb566b617ea",
"Completed_Link": "1",
"PaymentType": "Списание",
"ScheduledPaymentDate": "",
"ActualPaymentDate": "2025-12-15",
"Amount": 600000,
"VAT_Amount": 100000,
"Currency": "RUB",
"Rate": 1,
"PaymentDocument": "Платёжное поручение"
},
{
"GUID_Link": "8af9562f-e1c2-22g1-c6a0-8dc677c728fb",
"Completed_Link": "1",
"PaymentType": "Поступление",
"ScheduledPaymentDate": "",
"ActualPaymentDate": "2025-12-20",
"Amount": 150000,
"VAT_Amount": 25000,
"Currency": "RUB",
"Rate": 1,
"PaymentDocument": "Платёжное поручение"
}
]
}
]
}- Убедиться что JSON сформирован
- Нажать кнопку "Отправить в Tessa"
- Обработка отправит HTTP POST-запрос
Успешная отправка:
Данные успешно отправлены в Tessa!
Код ответа: 200
Ошибка отправки:
Ошибка отправки: Код ответа: 404. Тело: Not Found
- Нажать кнопку "Сохранить JSON в файл"
- Выбрать место сохранения
- Файл сохранится с именем:
MIDUpdateRequest_20251223_143052.json - Передать файл вручную администратору Tessa
{
"MIDUpdateRequest": [
{
"GUID": "string", // ID договора в Tessa
"ActualPayment": number, // Списания - Поступления
"ActualDelivery": number, // Всегда 0 (резерв)
"ReconciliationReportDate": "YYYY-MM-DD", // Дата формирования
"Completed": "string", // Статус ("Да"/"Нет")
"PaymentSchedule": [...] // Массив платежей
}
]
}| Поле | Тип | Обязательное | Описание | Источник данных |
|---|---|---|---|---|
| GUID | String | Да | Идентификатор договора в Tessa | РегистрСведений.СоответствиеДоговоровTessa.TessaID |
| ActualPayment | Number | Да | Фактический платёж (списания минус поступления) | Расчётное: СуммаСписаний - СуммаПоступлений |
| ActualDelivery | Number | Нет | Фактическая поставка | Всегда 0 (не используется) |
| ReconciliationReportDate | String | Да | Дата формирования отчёта | Текущая дата в формате YYYY-MM-DD |
| Completed | String | Да | Признак завершения обязательств | Всегда "Нет" |
| PaymentSchedule | Array | Да | Массив платежей по договору | Движения регистра ПлатежиПоДоговорам |
| Поле | Тип | Обязательное | Описание | Источник данных |
|---|---|---|---|---|
| GUID_Link | String | Да | UUID документа-платежа в 1С | Документ.УникальныйИдентификатор() |
| Completed_Link | String | Да | Признак проведения документа | "1" - проведён, "0" - не проведён |
| PaymentType | String | Да | Тип платежа | "Списание" или "Поступление" |
| ScheduledPaymentDate | String | Нет | Планируемая дата платежа | Всегда "" (пустая строка) |
| ActualPaymentDate | String | Да | Фактическая дата платежа | Документ.Дата в формате YYYY-MM-DD |
| Amount | Number | Да | Сумма платежа | РасшифровкаПлатежа.СуммаПлатежа |
| VAT_Amount | Number | Да | Сумма НДС | РасшифровкаПлатежа.СуммаНДС |
| Currency | String | Да | Валюта платежа | Всегда "RUB" |
| Rate | Number | Да | Кратность валюты | Всегда 1 |
| PaymentDocument | String | Да | Описание платёжного документа | Всегда "Платёжное поручение" |
{
"MIDUpdateRequest": [
{
"GUID": "4578456845448",
"ActualPayment": 450000,
"ActualDelivery": 0,
"ReconciliationReportDate": "2025-12-23",
"Completed": "Нет",
"PaymentSchedule": [
{
"GUID_Link": "6de8562f-d9bf-11f0-b59f-7cb566b617ea",
"Completed_Link": "1",
"PaymentType": "Списание",
"ScheduledPaymentDate": "",
"ActualPaymentDate": "2025-12-15",
"Amount": 600000,
"VAT_Amount": 100000,
"Currency": "RUB",
"Rate": 1,
"PaymentDocument": "Платёжное поручение"
},
{
"GUID_Link": "8af9562f-e1c2-22g1-c6a0-8dc677c728fb",
"Completed_Link": "1",
"PaymentType": "Поступление",
"ScheduledPaymentDate": "",
"ActualPaymentDate": "2025-12-20",
"Amount": 150000,
"VAT_Amount": 25000,
"Currency": "RUB",
"Rate": 1,
"PaymentDocument": "Платёжное поручение"
}
]
},
{
"GUID": "7891011121314",
"ActualPayment": 1000000,
"ActualDelivery": 0,
"ReconciliationReportDate": "2025-12-23",
"Completed": "Нет",
"PaymentSchedule": [
{
"GUID_Link": "9bf1673g-f2d3-33h2-d7b1-9ed788d839gc",
"Completed_Link": "1",
"PaymentType": "Списание",
"ScheduledPaymentDate": "",
"ActualPaymentDate": "2025-12-22",
"Amount": 1000000,
"VAT_Amount": 166666.67,
"Currency": "RUB",
"Rate": 1,
"PaymentDocument": "Платёжное поручение"
}
]
}
]
}Назначение: Формирует JSON на основе остатков регистра накопления
Алгоритм:
1. Очистка предыдущего JSON
2. Запрос остатков регистра на дату окончания периода
↓
SELECT
Договор,
СуммаСписанийОстаток,
СуммаПоступленийОстаток
FROM РегистрНакопления.ПлатежиПоДоговорам.Остатки()
WHERE СуммаСписанийОстаток > 0 OR СуммаПоступленийОстаток > 0
↓
3. Для каждого договора:
3.1. Расчёт ActualPayment = СуммаСписаний - СуммаПоступлений
3.2. Получение TessaID из регистра соответствия
3.3. Получение детализации платежей (вызов ПолучитьПлатежиПоДоговору)
3.4. Формирование структуры договора
3.5. Добавление в массив MIDUpdateRequest
↓
4. Формирование итогового JSON
5. Сохранение в Объект.ТекстJSON
6. Возврат количества договоров
Запрос к регистру:
ВЫБРАТЬ
ПлатежиОстатки.Договор КАК Договор,
ПлатежиОстатки.СуммаСписанийОстаток КАК СуммаСписаний,
ПлатежиОстатки.СуммаПоступленийОстаток КАК СуммаПоступлений
ИЗ
РегистрНакопления.ПлатежиПоДоговорам.Остатки(&ДатаОкончания, ) КАК ПлатежиОстатки
ГДЕ
(ПлатежиОстатки.СуммаСписанийОстаток > 0
ИЛИ ПлатежиОстатки.СуммаПоступленийОстаток > 0)Назначение: Получает детализацию всех платежей по конкретному договору
Алгоритм:
1. Запрос движений регистра по договору
↓
SELECT
Регистратор,
Период,
СуммаСписаний,
СуммаПоступлений,
СуммаНДС
FROM РегистрНакопления.ПлатежиПоДоговорам
WHERE Договор = &Договор
ORDER BY Период
↓
2. Для каждого движения:
2.1. Определение типа платежа (Списание/Поступление)
2.2. Получение UUID документа
2.3. Формирование структуры платежа
2.4. Добавление в массив PaymentSchedule
↓
3. Возврат массива платежей
Запрос к регистру:
ВЫБРАТЬ
Платежи.Регистратор КАК Документ,
Платежи.Период КАК ДатаПлатежа,
Платежи.СуммаСписаний КАК СуммаСписаний,
Платежи.СуммаПоступлений КАК СуммаПоступлений,
Платежи.СуммаНДС КАК СуммаНДС
ИЗ
РегистрНакопления.ПлатежиПоДоговорам КАК Платежи
ГДЕ
Платежи.Договор = &Договор
УПОРЯДОЧИТЬ ПО
Платежи.ПериодНазначение: Получает идентификатор договора в системе Tessa
Алгоритм:
1. Запрос к регистру СоответствиеДоговоровTessa
↓
SELECT TessaID
FROM РегистрСведений.СоответствиеДоговоровTessa
WHERE ДоговорКонтрагента = &Договор
↓
2. Если найдено → возврат TessaID
3. Если не найдено → возврат пустой строки ""
Запрос:
ВЫБРАТЬ
СоответствиеДоговоровTessa.TessaID
ИЗ
РегистрСведений.СоответствиеДоговоровTessa КАК СоответствиеДоговоровTessa
ГДЕ
СоответствиеДоговоровTessa.ДоговорКонтрагента = &ДоговорНазначение: Отправляет JSON по HTTP API в Tessa
Алгоритм:
1. Получение URL из константы АдресСервераTessa
2. Парсинг URL (схема, сервер, порт, путь)
3. Определение типа соединения (HTTP/HTTPS)
4. Создание HTTPСоединение
5. Формирование заголовков:
- Content-Type: application/json; charset=utf-8
- Accept: application/json
6. Создание HTTPЗапрос с телом = Объект.ТекстJSON
7. Отправка POST-запроса
8. Обработка ответа:
- Код 200-299 → успех
- Иначе → ошибка
9. Возврат структуры результата
Параметры HTTP-запроса:
| Параметр | Значение |
|---|---|
| Метод | POST |
| Content-Type | application/json; charset=utf-8 |
| Accept | application/json |
| Таймаут | 60 секунд |
| Тело запроса | JSON (UTF-8) |
| Операция | Время (примерно) | Зависит от |
|---|---|---|
| Чтение остатков регистра | 0.1 - 0.5 сек | Количество договоров |
| Получение детализации платежей | 0.5 - 2 сек | Количество движений |
| Формирование JSON | 0.1 - 0.3 сек | Размер данных |
| Отправка HTTP | 1 - 5 сек | Скорость сети |
| Итого | 2 - 8 сек | — |
Пример расчёта:
- 100 договоров
- В среднем 10 платежей на договор
- Итого: 1000 записей платежей
- Размер JSON: ~500 КБ
- Время формирования: ~3 секунды
- Используется HTTPS для защищённой передачи
- Поддержка
ЗащищенноеСоединениеOpenSSL - Данные передаются в кодировке UTF-8
Все критичные операции обёрнуты в Попытка...Исключение:
- Обращение к реквизитам документов
- HTTP-запросы
- Сохранение файлов
Причина:
- Регистр
ПлатежиПоДоговорампустой - Документы не проведены
- Не заполнены договоры в документах
Решение:
- Проверить проведены ли документы
- Открыть регистр: Регистры накопления →
ПлатежиПоДоговорам - Проверить есть ли движения
- Если пусто — перепровести документы
Причина:
Не заполнен регистр СоответствиеДоговоровTessa
Решение:
- Открыть Регистры сведений →
СоответствиеДоговоровTessa - Добавить записи для всех договоров:
- ДоговорКонтрагента = договор из 1С
- TessaID = идентификатор из Tessa
Причина: Константа не заполнена
Решение:
- Главное → Константы →
АдресСервераTessa - Указать URL:
https://tessa.company.ru/api/mid/update
Причина: Неверный URL endpoint
Решение:
- Уточнить у администратора Tessa правильный URL
- Проверить доступность сервера (ping, telnet)
- Обновить константу
АдресСервераTessa
Причина: Требуется авторизация
Решение:
Добавить в функцию ОтправитьJSON_НаСервере() заголовки авторизации:
Заголовки.Вставить("Authorization", "Bearer YOUR_TOKEN");
Причина: Ошибка на стороне сервера Tessa
Решение:
- Сохранить JSON в файл
- Проверить корректность JSON (онлайн-валидатор)
- Передать файл администратору Tessa для диагностики
Причина:
В коде написано Сумма вместо СуммаПлатежа
Решение: Исправить в модуле документа:
Было:
Движение.СуммаСписаний = СтрокаРасшифровки.Сумма;
Стало:
Движение.СуммаСписаний = СтрокаРасшифровки.СуммаПлатежа;
Причина:
Регистр создан как "Обороты", а в коде указан ВидДвижения
Решение: Удалить строку из кода документа:
// Убрать эту строку:
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Для регистров "Обороты" ВидДвижения не указывается.
Путь: Обработки.ОтчетПоПлатежам.Форма.Модуль
(Код приведён в предыдущем сообщении — финальная версия)
Путь: Документы.СписаниеСРасчетногоСчета.МодульОбъекта
// В процедуре ОбработкаПроведения, в самом конце:
// Движения по регистру ПлатежиПоДоговорам
Если ЗначениеЗаполнено(ДоговорКонтрагента) Тогда
Движения.ПлатежиПоДоговорам.Записывать = Истина;
Для Каждого СтрокаРасшифровки Из РасшифровкаПлатежа Цикл
Движение = Движения.ПлатежиПоДоговорам.Добавить();
Движение.Период = Дата;
Движение.Договор = ДоговорКонтрагента;
Движение.СуммаСписаний = СтрокаРасшифровки.СуммаПлатежа;
Движение.СуммаПоступлений = 0;
Движение.СуммаНДС = ?(СтрокаРасшифровки.СуммаНДС = Null, 0, СтрокаРасшифровки.СуммаНДС);
КонецЦикла;
КонецЕсли;
Путь: Документы.ПоступлениеНаРасчетныйСчет.МодульОбъекта
// В процедуре ОбработкаПроведения, в самом конце:
// Движения по регистру ПлатежиПоДоговорам
Движения.ПлатежиПоДоговорам.Записывать = Истина;
Для Каждого СтрокаРасшифровки Из РасшифровкаПлатежа Цикл
Если ЗначениеЗаполнено(СтрокаРасшифровки.ДоговорКонтрагента) Тогда
Движение = Движения.ПлатежиПоДоговорам.Добавить();
Движение.Период = Дата;
Движение.Договор = СтрокаРасшифровки.ДоговорКонтрагента;
Движение.СуммаСписаний = 0;
Движение.СуммаПоступлений = СтрокаРасшифровки.СуммаПлатежа;
Движение.СуммаНДС = ?(СтрокаРасшифровки.СуммаНДС = Null, 0, СтрокаРасшифровки.СуммаНДС);
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК Количество,
| СУММА(Платежи.СуммаСписаний) КАК СуммаСписаний,
| СУММА(Платежи.СуммаПоступлений) КАК СуммаПоступлений
|ИЗ
| РегистрНакопления.ПлатежиПоДоговорам КАК Платежи";
Результат = Запрос.Выполнить().Выбрать();
Результат.Следующий();
Сообщить("Записей: " + Результат.Количество);
Сообщить("Списаний: " + Результат.СуммаСписаний);
Сообщить("Поступлений: " + Результат.СуммаПоступлений);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СоответствиеДоговоровTessa.ДоговорКонтрагента,
| СоответствиеДоговоровTessa.TessaID
|ИЗ
| РегистрСведений.СоответствиеДоговоровTessa КАК СоответствиеДоговоровTessa";
Результат = Запрос.Выполнить().Выбрать();
Сообщить("=== СООТВЕТСТВИЕ ДОГОВОРОВ ===");
Пока Результат.Следующий() Цикл
Сообщить(Результат.ДоговорКонтрагента + " → " + Результат.TessaID);
КонецЦикла;