Skip to content

Gabriel329-bot/1c-payment-export-json

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 

Repository files navigation

📋 Документация: Обработка "Отчёт по платежам для Tessa"

Версия: 1.0
Дата создания: 23.12.2025
Назначение: Автоматическая выгрузка данных о платежах по договорам в систему Tessa в формате JSON


📑 Содержание

  1. Общее описание
  2. Архитектура решения
  3. Состав объектов метаданных
  4. Структура данных
  5. Настройка системы
  6. Инструкция по использованию
  7. Формат JSON
  8. Техническая документация
  9. Возможные ошибки и решения

🎯 Общее описание

Назначение

Обработка предназначена для:

  • Сбора данных о платежах по договорам с контрагентами
  • Расчёта фактических платежей (списания минус поступления)
  • Формирования JSON-файла для передачи в систему Tessa
  • Отправки данных по HTTP API

Бизнес-процесс

┌─────────────────┐
│ Документы       │
│ - Списание с РС │──┐
│ - Поступление   │  │ Проведение документа
└─────────────────┘  │
                     ↓
┌──────────────────────────────────┐
│ Регистр накопления               │
│ "ПлатежиПоДоговорам"            │
│ - Автоматическое заполнение     │
│ - Накопление остатков           │
└──────────────────────────────────┘
                     ↓
┌──────────────────────────────────┐
│ Обработка "ОтчетПоПлатежам"     │
│ - Чтение остатков из регистра   │
│ - Формирование JSON             │
│ - Отправка в Tessa              │
└──────────────────────────────────┘
                     ↓
              ┌──────────┐
              │  Tessa   │
              └──────────┘

🏗️ Архитектура решения

Компоненты системы

Компонент Тип Роль
ПлатежиПоДоговорам Регистр накопления Хранит данные о платежах
СоответствиеДоговоровTessa Регистр сведений Связь договора 1С ↔ Tessa ID
СписаниеСРасчетногоСчета Документ Источник данных (расход)
ПоступлениеНаРасчетныйСчет Документ Источник данных (приход)
ОтчетПоПлатежам Обработка Формирование и отправка JSON
АдресСервераTessa Константа URL endpoint API Tessa

📦 Состав объектов метаданных

1. Регистр накопления "ПлатежиПоДоговорам"

Полный путь: РегистрыНакопления.ПлатежиПоДоговорам
Вид регистра: Остатки
Периодичность: В пределах секунды
Режим записи: По регистратору

Измерения

Имя Тип Описание
Договор СправочникСсылка.ДоговорыКонтрагентов Договор с контрагентом

Ресурсы

Имя Тип Описание
СуммаСписаний Число (15, 2) Сумма исходящих платежей
СуммаПоступлений Число (15, 2) Сумма входящих платежей
СуммаНДС Число (15, 2) Сумма НДС в платеже

Регистраторы

  • Документ.СписаниеСРасчетногоСчета
  • Документ.ПоступлениеНаРасчетныйСчет

2. Регистр сведений "СоответствиеДоговоровTessa"

Полный путь: РегистрыСведений.СоответствиеДоговоровTessa
Периодичность: Непериодический
Режим записи: Независимый

Измерения

Имя Тип Описание
ДоговорКонтрагента СправочникСсылка.ДоговорыКонтрагентов Договор в 1С

Ресурсы

Имя Тип Длина Описание
TessaID Строка 50 Идентификатор договора в Tessa

Назначение: Связывает договоры 1С с их идентификаторами в системе Tessa


3. Константа "АдресСервераTessa"

Полный путь: Константы.АдресСервераTessa
Тип: Строка (200)
Описание: URL endpoint API Tessa для отправки данных

Пример значения:

https://tessa.company.ru/api/mid/update

4. Обработка "ОтчетПоПлатежам"

Полный путь: Обработки.ОтчетПоПлатежам

Реквизиты

Имя Тип Описание
ДатаНачала Дата Начало периода отбора
ДатаОкончания Дата Окончание периода отбора
Текст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

⚙️ Настройка системы

Шаг 1: Создание объектов метаданных

1.1 Регистр накопления "ПлатежиПоДоговорам"

  1. Открыть Конфигуратор
  2. Регистры накопления → правый клик → Добавить
  3. Заполнить свойства:
    • Имя: ПлатежиПоДоговорам
    • Синоним: Платежи по договорам
    • Вид регистра: Остатки
    • Периодичность: В пределах секунды
  4. Вкладка Измерения → добавить:
    • Договор (Тип: СправочникСсылка.ДоговорыКонтрагентов)
  5. Вкладка Ресурсы → добавить:
    • СуммаСписаний (Тип: Число, длина 15, точность 2)
    • СуммаПоступлений (Тип: Число, длина 15, точность 2)
    • СуммаНДС (Тип: Число, длина 15, точность 2)
  6. Вкладка Движения → добавить регистраторы:
    • Документ.СписаниеСРасчетногоСчета
    • Документ.ПоступлениеНаРасчетныйСчет

1.2 Регистр сведений "СоответствиеДоговоровTessa"

  1. Регистры сведений → правый клик → Добавить
  2. Заполнить:
    • Имя: СоответствиеДоговоровTessa
    • Синоним: Соответствие договоров Tessa
    • Периодичность: Непериодический
  3. Вкладка Измерения:
    • ДоговорКонтрагента (Тип: СправочникСсылка.ДоговорыКонтрагентов)
  4. Вкладка Ресурсы:
    • TessaID (Тип: Строка(50))

1.3 Константа "АдресСервераTessa"

  1. ОбщиеКонстанты → правый клик → Добавить
  2. Заполнить:
    • Имя: АдресСервераTessa
    • Синоним: Адрес сервера Tessa
    • Тип: Строка(200)

Шаг 2: Добавление движений в документы

2.1 Документ "СписаниеСРасчетногоСчета"

  1. Открыть документ в конфигураторе
  2. Вкладка "Движения" → добавить ПлатежиПоДоговорам
  3. Открыть Модуль объекта
  4. Найти процедуру ОбработкаПроведения
  5. В самом конце добавить код (см. раздел "Структура данных")

2.2 Документ "ПоступлениеНаРасчетныйСчет"

  1. Открыть документ в конфигураторе
  2. Вкладка "Движения" → добавить ПлатежиПоДоговорам
  3. Открыть Модуль объекта
  4. Найти процедуру ОбработкаПроведения
  5. В самом конце добавить код (см. раздел "Структура данных")

Шаг 3: Обновление конфигурации БД

  1. Нажать F7
  2. Дождаться завершения обновления
  3. Перезапустить 1С

Шаг 4: Первоначальная настройка

4.1 Заполнение константы

  1. Открыть 1С в режиме Предприятие
  2. ГлавноеКонстанты
  3. Найти АдресСервераTessa
  4. Указать URL:
    https://tessa.company.ru/api/mid/update
    

4.2 Заполнение соответствия договоров

  1. Открыть Регистры сведенийСоответствиеДоговоровTessa
  2. Для каждого договора создать запись:
    • ДоговорКонтрагента: выбрать договор из 1С
    • TessaID: указать идентификатор из Tessa (например: 4578456845448)

Пример:

Договор 1С TessaID
Договор № 123 от 01.01.2025 4578456845448
Договор № 456 от 15.02.2025 7891011121314

Шаг 5: Перепроведение существующих документов

Чтобы заполнить регистр историческими данными:

  1. Открыть Журнал документовДеньги
  2. Отбор по типу:
    • СписаниеСРасчетногоСчета
    • ПоступлениеНаРасчетныйСчет
  3. Отбор по периоду (например, за последний год)
  4. Выделить все документы → Провести

📖 Инструкция по использованию

Формирование отчёта

Шаг 1: Открытие обработки

  1. ОбработкиОтчетПоПлатежам
  2. Нажать Открыть

Шаг 2: Указание периода

На форме обработки указать:

  • Дата начала: начало периода (например, 01.12.2025)
  • Дата окончания: конец периода (например, 31.12.2025)

Примечание: Дата начала в текущей версии не используется — формируются остатки на дату окончания. Это поле оставлено для будущих доработок.

Шаг 3: Формирование JSON

  1. Нажать кнопку "Сформировать и показать JSON"
  2. Обработка выполнит запрос к регистру
  3. Сформирует JSON
  4. Переключит на вкладку предпросмотра

Результат:

Сформировано договоров: 5

Шаг 4: Проверка данных

На вкладке "Предпросмотр" отображается сформированный 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": "Платёжное поручение"
        }
      ]
    }
  ]
}

Отправка в Tessa

Способ 1: Отправка по HTTP

  1. Убедиться что JSON сформирован
  2. Нажать кнопку "Отправить в Tessa"
  3. Обработка отправит HTTP POST-запрос

Успешная отправка:

Данные успешно отправлены в Tessa!
Код ответа: 200

Ошибка отправки:

Ошибка отправки: Код ответа: 404. Тело: Not Found

Способ 2: Сохранение в файл

  1. Нажать кнопку "Сохранить JSON в файл"
  2. Выбрать место сохранения
  3. Файл сохранится с именем:
    MIDUpdateRequest_20251223_143052.json
    
  4. Передать файл вручную администратору Tessa

📄 Формат JSON

Структура MIDUpdateRequest

{
  "MIDUpdateRequest": [
    {
      "GUID": "string",              // ID договора в Tessa
      "ActualPayment": number,       // Списания - Поступления
      "ActualDelivery": number,      // Всегда 0 (резерв)
      "ReconciliationReportDate": "YYYY-MM-DD",  // Дата формирования
      "Completed": "string",         // Статус ("Да"/"Нет")
      "PaymentSchedule": [...]       // Массив платежей
    }
  ]
}

Поля договора (MIDUpdateRequest[])

Поле Тип Обязательное Описание Источник данных
GUID String Да Идентификатор договора в Tessa РегистрСведений.СоответствиеДоговоровTessa.TessaID
ActualPayment Number Да Фактический платёж (списания минус поступления) Расчётное: СуммаСписаний - СуммаПоступлений
ActualDelivery Number Нет Фактическая поставка Всегда 0 (не используется)
ReconciliationReportDate String Да Дата формирования отчёта Текущая дата в формате YYYY-MM-DD
Completed String Да Признак завершения обязательств Всегда "Нет"
PaymentSchedule Array Да Массив платежей по договору Движения регистра ПлатежиПоДоговорам

Поля платежа (PaymentSchedule[])

Поле Тип Обязательное Описание Источник данных
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 Да Описание платёжного документа Всегда "Платёжное поручение"

Пример полного 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": "Платёжное поручение"
        }
      ]
    },
    {
      "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_НаСервере()

Назначение: Формирует 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. Возврат массива платежей

Запрос к регистру:

ВЫБРАТЬ
    Платежи.Регистратор КАК Документ,
    Платежи.Период КАК ДатаПлатежа,
    Платежи.СуммаСписаний КАК СуммаСписаний,
    Платежи.СуммаПоступлений КАК СуммаПоступлений,
    Платежи.СуммаНДС КАК СуммаНДС
ИЗ
    РегистрНакопления.ПлатежиПоДоговорам КАК Платежи
ГДЕ
    Платежи.Договор = &Договор
УПОРЯДОЧИТЬ ПО
    Платежи.Период

Функция ПолучитьTessaID(Договор)

Назначение: Получает идентификатор договора в системе Tessa

Алгоритм:

1. Запрос к регистру СоответствиеДоговоровTessa
   ↓
   SELECT TessaID
   FROM РегистрСведений.СоответствиеДоговоровTessa
   WHERE ДоговорКонтрагента = &Договор
   ↓
2. Если найдено → возврат TessaID
3. Если не найдено → возврат пустой строки ""

Запрос:

ВЫБРАТЬ
    СоответствиеДоговоровTessa.TessaID
ИЗ
    РегистрСведений.СоответствиеДоговоровTessa КАК СоответствиеДоговоровTessa
ГДЕ
    СоответствиеДоговоровTessa.ДоговорКонтрагента = &Договор

Функция ОтправитьJSON_НаСервере()

Назначение: Отправляет 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-запросы
  • Сохранение файлов

❗ Возможные ошибки и решения

Ошибки при формировании JSON

Ошибка: "Нет данных за выбранный период"

Причина:

  • Регистр ПлатежиПоДоговорам пустой
  • Документы не проведены
  • Не заполнены договоры в документах

Решение:

  1. Проверить проведены ли документы
  2. Открыть регистр: Регистры накопленияПлатежиПоДоговорам
  3. Проверить есть ли движения
  4. Если пусто — перепровести документы

Ошибка: "GUID договора пустой"

Причина: Не заполнен регистр СоответствиеДоговоровTessa

Решение:

  1. Открыть Регистры сведенийСоответствиеДоговоровTessa
  2. Добавить записи для всех договоров:
    • ДоговорКонтрагента = договор из 1С
    • TessaID = идентификатор из Tessa

Ошибки при отправке

Ошибка: "Не заполнена константа 'АдресСервераTessa'"

Причина: Константа не заполнена

Решение:

  1. ГлавноеКонстантыАдресСервераTessa
  2. Указать URL:
    https://tessa.company.ru/api/mid/update
    

Ошибка: "Код ответа: 404"

Причина: Неверный URL endpoint

Решение:

  1. Уточнить у администратора Tessa правильный URL
  2. Проверить доступность сервера (ping, telnet)
  3. Обновить константу АдресСервераTessa

Ошибка: "Код ответа: 401 Unauthorized"

Причина: Требуется авторизация

Решение: Добавить в функцию ОтправитьJSON_НаСервере() заголовки авторизации:

Заголовки.Вставить("Authorization", "Bearer YOUR_TOKEN");

Ошибка: "Код ответа: 500"

Причина: Ошибка на стороне сервера Tessa

Решение:

  1. Сохранить JSON в файл
  2. Проверить корректность JSON (онлайн-валидатор)
  3. Передать файл администратору Tessa для диагностики

Ошибки в движениях документов

Ошибка: "Поле объекта не обнаружено (СуммаПлатежа)"

Причина: В коде написано Сумма вместо СуммаПлатежа

Решение: Исправить в модуле документа:

Было:

Движение.СуммаСписаний = СтрокаРасшифровки.Сумма;

Стало:

Движение.СуммаСписаний = СтрокаРасшифровки.СуммаПлатежа;

Ошибка: "Поле объекта недоступно для записи (ВидДвижения)"

Причина: Регистр создан как "Обороты", а в коде указан ВидДвижения

Решение: Удалить строку из кода документа:

// Убрать эту строку:
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

Для регистров "Обороты" ВидДвижения не указывается.


📚 Приложения

Приложение А: Полный код модуля формы обработки

Путь: Обработки.ОтчетПоПлатежам.Форма.Модуль

(Код приведён в предыдущем сообщении — финальная версия)


Приложение Б: Код движений документов

Документ "СписаниеСРасчетногоСчета"

Путь: Документы.СписаниеСРасчетногоСчета.МодульОбъекта

// В процедуре ОбработкаПроведения, в самом конце:

// Движения по регистру ПлатежиПоДоговорам
Если ЗначениеЗаполнено(ДоговорКонтрагента) Тогда
    
    Движения.ПлатежиПоДоговорам.Записывать = Истина;
    
    Для Каждого СтрокаРасшифровки Из РасшифровкаПлатежа Цикл
        
        Движение = Движения.ПлатежиПоДоговорам.Добавить();
        Движение.Период = Дата;
        Движение.Договор = ДоговорКонтрагента;
        Движение.СуммаСписаний = СтрокаРасшифровки.СуммаПлатежа;
        Движение.СуммаПоступлений = 0;
        Движение.СуммаНДС = ?(СтрокаРасшифровки.СуммаНДС = Null, 0, СтрокаРасшифровки.СуммаНДС);
        
    КонецЦикла;
    
КонецЕсли;

Документ "ПоступлениеНаРасчетныйСчет"

Путь: Документы.ПоступлениеНаРасчетныйСчет.МодульОбъекта

// В процедуре ОбработкаПроведения, в самом конце:

// Движения по регистру ПлатежиПоДоговорам
Движения.ПлатежиПоДоговорам.Записывать = Истина;

Для Каждого СтрокаРасшифровки Из РасшифровкаПлатежа Цикл
    
    Если ЗначениеЗаполнено(СтрокаРасшифровки.ДоговорКонтрагента) Тогда
        
        Движение = Движения.ПлатежиПоДоговорам.Добавить();
        Движение.Период = Дата;
        Движение.Договор = СтрокаРасшифровки.ДоговорКонтрагента;
        Движение.СуммаСписаний = 0;
        Движение.СуммаПоступлений = СтрокаРасшифровки.СуммаПлатежа;
        Движение.СуммаНДС = ?(СтрокаРасшифровки.СуммаНДС = Null, 0, СтрокаРасшифровки.СуммаНДС);
        
    КонецЕсли;
    
КонецЦикла;

Приложение В: Консольные скрипты для диагностики

Проверка заполнения регистра

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|    КОЛИЧЕСТВО(*) КАК Количество,
|    СУММА(Платежи.СуммаСписаний) КАК СуммаСписаний,
|    СУММА(Платежи.СуммаПоступлений) КАК СуммаПоступлений
|ИЗ
|    РегистрНакопления.ПлатежиПоДоговорам КАК Платежи";

Результат = Запрос.Выполнить().Выбрать();
Результат.Следующий();

Сообщить("Записей: " + Результат.Количество);
Сообщить("Списаний: " + Результат.СуммаСписаний);
Сообщить("Поступлений: " + Результат.СуммаПоступлений);

Проверка соответствия договоров

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|    СоответствиеДоговоровTessa.ДоговорКонтрагента,
|    СоответствиеДоговоровTessa.TessaID
|ИЗ
|    РегистрСведений.СоответствиеДоговоровTessa КАК СоответствиеДоговоровTessa";

Результат = Запрос.Выполнить().Выбрать();

Сообщить("=== СООТВЕТСТВИЕ ДОГОВОРОВ ===");
Пока Результат.Следующий() Цикл
    Сообщить(Результат.ДоговорКонтрагента + " → " + Результат.TessaID);
КонецЦикла;

Интерфейс Обработки

image001 image003 image005

About

Модуль интеграции 1С:Предприятие 8.3 и СЭД Tessa. Экспорт реестра платежей и договоров через REST API.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors