При настройке регулярной синхронизации между программами «1С:Управление торговлей» (ред. 11) и «1С:Бухгалтерия предприятия» (ред. 3.0) пользователи часто сталкиваются с неочевидным поведением системы. Типичная ситуация: вам необходимо выгрузить документы за прошлый период (например, восстановить потерянные данные за прошлый месяц), вы изменяете дату начала выгрузки в настройках обмена на более раннюю, запускаете синхронизацию, но в результирующий файл старые документы всё равно не попадают. Для управления расписанием и автоматизации таких процессов применяется программа для регулярного обмена данными между базами 1С.
В этой статье мы подробно разберем логику работы планов обмена в платформе «1С:Предприятие», выясним, почему простое изменение даты в настройках не заставляет программу «видеть» старые документы, и рассмотрим практические способы решения этой проблемы.
---
Одно из самых распространенных заблуждений пользователей заключается в том, что изменение даты начала обмена в настройках синхронизации заставляет систему сканировать базу данных за весь указанный период. На самом деле это работает совершенно иначе.
Параметр «Отправлять все, начиная с даты» — это жесткий фильтр (ограничение) на стороне механизма отправки, а не триггер для регистрации данных. Рассмотрим этот процесс по шагам:
ОбменУправлениеТорговлейБухгалтерияПредприятия30).Таким образом, если вы изменили дату начала обмена «назад» (например, с апреля на март), автоматической регистрации мартовских документов не произойдет. Программа просто разрешит их выгрузку в случае, если они будут зарегистрированы (например, если вы откроете старый документ, измените его и перепроведете). Без явного изменения объектов или их принудительной ручной регистрации таблицы обмена останутся пустыми для этого периода.
Важное ограничение: если вы попытаетесь зарегистрировать документ за дату, которая меньше установленной в фильтре настроек синхронизации, платформа 1С проигнорирует эту регистрацию при выгрузке. Поэтому порядок действий всегда должен быть следующим: сначала сдвигаем дату начала обмена назад в настройках синхронизации, и только после этого регистрируем документы к обмену.
---
Рассмотрим ситуацию, когда при многократном запуске выгрузки (без изменения данных в базах) в файл попадает один и тот же массив документов. Почему так происходит?
В классическом двустороннем обмене 1С используется механизм квитирования (подтверждения приема). Он работает по следующему алгоритму:
Если ваши базы данных работают локально (например, на разных компьютерах без прямой сетевой связи) и вы обмениваетесь файлами вручную (через флешку или по электронной почте), очень часто обратный файл (квитанция) из Бухгалтерии просто не загружается обратно в Управление торговлей.
В результате УТ «не знает», дошли ли документы до адресата, и при каждой последующей обычной выгрузке продолжает упаковывать те же самые документы в новые файлы обмена. Как только вы измените правила или очистите регистрацию вручную, этот «хвост» пропадет.
---
Если вам требуется разово выгрузить документы за определенный период (например, восстановить пропущенный месяц), самым простым и безопасным способом является использование интерактивной выгрузки.
Рассмотрим, как запустить этот процесс по шагам:
Этот метод хорош тем, что он не затрагивает текущие настройки автоматической синхронизации и не требует от вас детального понимания механизмов планов обмена.
---
Для более гибкого управления обменом и очистки «зависших» регистраций нам потребуется стандартный инструмент платформы — обработка регистрации изменений.
Проанализируем по шагам, как правильно зарегистрировать к обмену старые документы:
Реализация товаров и услуг или Поступление товаров и услуг). Обратим внимание на число в колонке «Количество» — оно показывает, сколько именно документов данного типа сейчас ожидает отправки.После проведения ручной регистрации запустим обычную синхронизацию — все принудительно зарегистрированные документы гарантированно попадут в файл обмена.
---
В случаях, когда стандартного интерфейса недостаточно (например, требуется автоматизировать периодическую перерегистрацию документов по сложным условиям), мы можем воспользоваться возможностями встроенного языка 1С. Рассмотрим шаблон кода, который позволяет зарегистрировать документы определенного типа за период на выбранном узле плана обмена:
// Выберем узел плана обмена, для которого регистрируем данные
УзелОбмена = ПланыОбмена.ОбменУправлениеТорговлейБухгалтерияПредприятия30.НайтиПоКоду("БП");
Если Не УзелОбмена.Пустая() Тогда
// Зададим период выборки документов
ДатаНачала = НачалоДня('20200301');
ДатаКонца = КонецДня('20200315');
// Запрос для выбора документов за период
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
| И РеализацияТоваровУслуг.Проведен = ИСТИНА";
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаКонца", ДатаКонца);
Выборка = Запрос.Выполнить().Выбрать();
// Начинаем транзакцию для ускорения процесса записи регистраций
НачатьТранзакцию();
Попытка
Пока Выборка.Следующий() Цикл
// Регистрируем каждый найденный документ на узле обмена
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Выборка.Ссылка);
КонецЦикла;
ЗафиксироватьТранзакцию();
Сообщить("Регистрация документов успешно завершена.");
Исключение
ОтменитьТранзакцию();
Сообщить("Ошибка при регистрации изменений: " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
---
Иногда возникает ситуация, когда в базе УТ выгрузка проходит без ошибок, все документы регистрируются и записываются в XML-файл обмена (это можно проверить, открыв zip-архив выгрузки текстовым редактором), но после загрузки файла в «1С:Бухгалтерию» документов там не оказывается.
В этом случае проанализируем настройки безопасности в информационной базе Бухгалтерии: