Как решить проблему с потерей формата ячеек при копировании данных из 1С через RDP в локальный Excel?

Системный администратор IT и автоматизация бизнеса
← На главную

Многие системные администраторы и активные пользователи 1С сталкиваются с крайне неприятной ситуацией: после перехода на новые версии операционных систем (например, при связке Windows 10 на клиентских рабочих станциях и Windows Server 2016 на сервере терминалов) ломается привычный процесс переноса данных. При копировании таблиц, отчетов или списков из удаленной сессии 1С (запущенной через RemoteApp или классический RDP-рабочий стол) в локально установленный Microsoft Excel полностью теряется форматирование ячеек. Числа, которые раньше переносились как числовые значения, внезапно превращаются в текстовые строки, а разделители тысяч (пробелы) мешают Excel выполнять математические операции.

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

---

Выясняем причину: почему пропадает форматирование?

Давайте проанализируем, как устроен механизм копирования данных через буфер обмена в Windows. Когда мы выделяем ячейки в 1С и нажимаем комбинацию клавиш Ctrl + C, платформа 1С не просто помещает в память компьютера обычную строку текста. Она регистрирует в системном буфере обмена данные сразу в нескольких альтернативных форматах:

  1. CF_UNICODETEXT — простой неформатированный текст.
  2. HTML Format — разметка, которая сохраняет структуру таблицы, цвета ячеек, стили и шрифты.
  3. Microsoft Excel 8.0 (Biff8) или другие специализированные бинарные форматы — именно они позволяют Excel понять, где в буфере находится число, где дата, а где формула.

При работе в терминальной сессии за передачу содержимого буфера между удаленным сервером и локальным компьютером отвечает системная утилита rdpclip.exe (на стороне сервера) и библиотека mstscax.dll (на стороне клиента).

В операционной системе Windows Server 2016 и определенных версиях Windows 10 (начиная с юбилейного обновления 1607) присутствует известный баг механизма синхронизации RDP. Виртуальный канал передачи данных буфера обмена из-за этой ошибки «срезает» все сложные, составные и бинарные форматы данных. В итоге до локального компьютера доходит только самый примитивный формат — простой неформатированный текст CF_UNICODETEXT.

Когда вы открываете локальный Excel и пытаетесь выполнить вставку, программа просто не видит в буфере обмена разметки Excel. Доступна только вставка текста. В результате числа с разделителями (например, 1 000.00 с неразрывным пробелом) импортируются как текстовые строки, и пользователям приходится вручную очищать их от пробелов и преобразовывать в числа, что вызывает массу жалоб.

---

Способ 1. Безопасный перезапуск процесса rdpclip.exe через пользовательский скрипт

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

Разберем по шагам, как настроить этот инструмент:

  1. Откройте обычный текстовый редактор (Блокнот) внутри терминальной сессии 1С.
  2. Скопируйте и вставьте следующий код сценария:

@echo off
taskkill /FI "USERNAME eq %username%" /im rdpclip.exe /f
timeout /t 2 /nobreak
start rdpclip.exe
  1. Сохраните этот файл под именем FixClipboard.bat (убедитесь, что расширение файла именно .bat, а не .txt).
  2. Разместите ярлык этого файла на рабочем столе пользователя в терминальной сессии или опубликуйте его как дополнительное приложение RemoteApp.

Когда у пользователя в очередной раз пропадает форматирование при копировании, ему достаточно запустить этот файл. Скрипт принудительно завершит зависший процесс rdpclip.exe, принадлежащий исключительно текущему пользователю (не затрагивая других коллег на сервере), подождет две секунды и запустит его заново. После этого работоспособность буфера обмена восстанавливается без необходимости перезахода в систему.

---

Способ 2. Замена системных файлов на более стабильные версии

Если системный администратор готов применить радикальное, но проверенное временем решение проблемы «в лоб», можно заменить проблемные компоненты операционной системы на версии из стабильных релизов, где этот баг еще не появился или уже был обойден.

В зависимости от конфигурации вашей инфраструктуры, примените один из следующих вариантов:

Вариант А. На сервере Windows Server 2016

Если пользователи работают на локальных машинах под управлением Windows 7 / 8.1 или старых сборках Windows 10, а серверная ОС — Windows Server 2016, источником проблемы является серверный процесс буфера обмена.

Решение: Замените исполняемый файл rdpclip.exe в каталоге C:\Windows\System32 на сервере Server 2016 на аналогичный файл, взятый из дистрибутива Windows Server 2012 R2. Для выполнения замены вам потребуется временно стать владельцем файла rdpclip.exe (изменить владельца с TrustedInstaller на Администратора) и предоставить себе полные права на запись.

Вариант Б. На клиентских машинах с Windows 10

Если сервер работает под управлением старой ОС (например, Server 2008 R2 или 2012 R2), а пользователи обновили свои локальные компьютеры до Windows 10 (версии 1607 и выше), баг кроется в обновленном клиенте подключения к удаленному рабочему столу.

Решение: На клиентских компьютерах замените файлы mstsc.exe и mstscax.dll в папке C:\Windows\System32 на версии этих же файлов, взятые из сборки Windows 10 версии 1511 (или более ранней версии).

---

Способ 3. Включение проброса локальных дисков (Drive Redirection)

Малоизвестная архитектурная особенность протокола RDP заключается в том, что передача сложных типов данных (таких как бинарные файлы, OLE-объекты и структуры таблиц Microsoft Office) через буфер обмена тесно связана со службой перенаправления локальных накопителей. Если в целях безопасности на сервере или в свойствах подключения полностью запрещен проброс локальных дисков, буфер обмена автоматически принудительно переводится в режим передачи «только текст».

Рассмотрим, как это проверить и настроить:

  1. Нажмите правой кнопкой мыши по файлу подключения к удаленному рабочему столу (.rdp) и выберите пункт «Изменить».
  2. Перейдите на вкладку «Локальные ресурсы».
  3. В разделе «Локальные устройства и ресурсы» нажмите кнопку «Подробнее...».
  4. Установите флажок напротив пункта «Устройства хранения данных» (как минимум, выберите локальный системный диск C:).
  5. Сохраните изменения в файле подключения.

Если вы используете RemoteApp, администратору необходимо открыть консоль управления сервером (Server Manager), перейти в свойства коллекции удаленных рабочих столов и убедиться, что в настройках клиента (Client Settings) разрешено перенаправление дисков (Drives).

---

Способ 4. Переход на современный RDP-клиент (Windows App)

Классическое приложение mstsc.exe, поставляемое по умолчанию со всеми версиями Windows, использует устаревшие системные API. Microsoft постепенно переводит пользователей на новую универсальную платформу подключения.

Рассмотрим альтернативный вариант подключения:

Установите на клиентские компьютеры из магазина приложений Microsoft Store программу, которая ранее называлась Microsoft Remote Desktop, а в последних обновлениях получила название Windows App. Этот клиент построен на современном движке UWP (Universal Windows Platform), имеет совершенно иную внутреннюю логику работы с локальными ресурсами и не подвержен багу «срезания» форматов буфера обмена, который наблюдается в классическом mstsc.exe.

---

Способ 5. Использование штатного экспорта из 1С (Рекомендуемая практика)

Давайте проанализируем ситуацию с точки зрения производительности системы в целом. Копирование огромных массивов данных (таблиц из десятков тысяч строк с оформлением) через буфер обмена RDP — это крайне ресурсоемкая операция. Она перегружает оперативную память сервера, забивает сетевой канал и нередко приводит к аварийному завершению сеанса пользователя.

Самым надежным, профессиональным и быстрым способом переноса данных из 1С в Excel является использование встроенного механизма экспорта файлов. Объясним пользователям правильный алгоритм действий:

  1. Сформируйте необходимый отчет или откройте таблицу в 1С.
  2. В верхнем меню выберите команду «Файл» -> «Сохранить как...» (или воспользуйтесь значком дискеты на панели инструментов).
  3. В открывшемся окне в поле «Тип файла» выберите формат «Лист Excel (*.xlsx)».
  4. Укажите путь сохранения на ваш проброшенный локальный диск (например, в вашу локальную папку «Документы» или на рабочий стол локального компьютера).

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

Если вы разрабатываете собственную конфигурацию или дорабатываете существующий отчет, мы можем автоматизировать этот процесс программно. Посмотрим на пример кода, который позволяет сохранить сформированный ТабличныйДокумент в файл формата Excel:


// Создаем объект табличного документа
ТабДок = Новый ТабличныйДокумент;

// Здесь происходит заполнение табличного документа данными отчета...
// Для примера укажем путь для сохранения файла на локальном диске
ПутьКФайлу = "C:\Temp\НашОтчет.xlsx";

// Записываем документ напрямую в формат XLSX с максимальным сохранением стилей
ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);

Использование метода Записать() с параметром ТипФайлаТабличногоДокумента.XLSX полностью решает проблему искажения числовых данных и разгружает терминальный сервер.

← На главную