Имя: Пароль:
1C
1С v8
Сложный вопрос по таблице BinaryData.
0 Sevish
 
04.08.25
10:32
Добрый день всем!
Посмотрел какие таблицы файла SQL сколько весят и обнаружил, что таблица "BinaryData" выросла за два месяца на 15Гб.

Как посмотреть, чем именно она приросла?
Насколько я понимаю, туда пишутся значения реквизитов типа "ХранилищеЗначения", а как понять какой именно?

У меня все файлы хранятся во внешних томах и это не менялось.
Просто SELECT из этой таблицы дает какой-то "f-key" вида "0x9562A0AB5240DE4FA4F2033E4DB9F09D". А в какой таблице искать этот ключ, чтобы понять к какому реквизиту, какого объекта метаданных он относится?

Спасибо за помощь.
1 arsik
 
гуру
04.08.25
13:32
Поищи базопузомер. Я думаю он тебе скажет, к чему относятся бинарные данные.
PS: Что-то я не верю, что у тебя таблица с таким именем есть в скуле. Все таблицы https://its.1c.ru/db/metod8dev/content/1798/hdoc
2 Sevish
 
04.08.25
11:45
Есть:
SELECT TOP (1000) [f_key]
      ,[f_off]
      ,[f_num]
      ,[f_data]
  FROM [MYIB].[dbo].[BinaryData]
3 Sevish
 
04.08.25
11:22
(1) именно скачал обработку, которая и показала, что там 17Гб.
4 Garykom
 
гуру
04.08.25
11:56
(1) про 1С77 не забыл?
5 PR
 
04.08.25
12:09
ПолучитьСтруктуруХраненияБазыДанных
ПолучитьРазмерДанныхБазыДанных
6 Sevish
 
04.08.25
12:18
(5) это все сделано, меня интересует что именно внутри таблицы "BinaryData". Это просто какая-то таблица SQL, у неё нет сопоставления с объектом метаданных.
7 PR
 
04.08.25
12:21
(6) Плясать нужно от 1С, а не от SQL
Или ты хочешь сказать, что по данным 1С этого прироста нигде нет?
8 PR
 
04.08.25
12:23
А, так это же вроде строки неограниченной длины что ли, они же вроде в отдельной таблице SQL хранятся
9 arsik
 
гуру
04.08.25
12:30
(4) Что то я ничего не понимаю. Ну нет в 8ке + SQL такой таблицы. Если и есть, то это их собственные костыли.
И при чем тут 77?
10 maxab72
 
04.08.25
12:32
чего гадать? удалить таблицу и посмотреть что сломается...
11 PR
 
04.08.25
12:33
(9) Есть
12 arsik
 
гуру
04.08.25
12:39
13 maxab72
 
04.08.25
12:47
а эта таблица  BinaryData не может быть от какого-либо расширения, вроде 1с++ или чего подобного?
14 PR
 
04.08.25
13:01
(12) Открой список скулевых таблиц и посмотри
15 PR
 
04.08.25
13:01
(13) Нет
16 maxab72
 
04.08.25
13:33
(14) в списке таблиц 1с-ных баз не вижу такого, те имена таблиц, что начинаются с буквы, а не "_" начинаются с Config. Или это в другом месте смотреть надо?
17 d4rkmesa
 
04.08.25
13:20
(0) Надо поискать по табличкам данные с ключом 0x9562A0AB5240DE4FA4F2033E4DB9F09D ,  который в данной таблице является внешним. Скорее всего, какие-то blob-ы, хранилища значений или строки неогр. длины.
18 Ёпрст
 
гуру
04.08.25
13:31
(0) Неправильно понимаешь. Это не табличка от 1с-базы.
Переименуй её и смотри, чего сломается. Узнаешь кто что и зачем туда пишет.
19 arsik
 
гуру
04.08.25
14:00
(14) У меня такой нет. Да и не может такой быть, в (12) четко указанно какие таблицы могут быть. Это не от 1С таблица, это какая то примочка-самоделка.
ЗЫ: Ты же вроде все время топил, за лицензионную чистоту, а сейчас пытаешься нам тут продать, что это стандартная таблица.
20 Garykom
 
гуру
04.08.25
14:04
Возможно путает табличку с одноименными колонками других таблиц
Хранилища поименованных двоичных данных (файлов)
1С:Предприятие создает в базе данных несколько таблиц, которые содержат конфигурацию, профайлы и некоторые другие данные в виде набора поименованных двоичных данных (файлов). К ним относятся таблицы: Config (конфигурация базы данных), ConfigSave (сохраненная конфигурация), ConfigCAS (системное хранилище конфигураций расширений), ConfigCASSave (сохраненное системное хранилище конфигураций расширений), DepotFiles (работа с хранилищем конфигурации), Files (работа с хранилищем конфигурации на платформе версии 8.3.9 и ниже, профайлы и т.п.), Params (служебные параметры информационной базы).

Все они имеют одинаковый набор полей:

FileName - имя файла;
Creation - момент времени создания файла;
Modified - момент времени последней модификации файла;
Attributes - атрибуты файла;
DataSize - длина файла в байтах;
BinaryData - данные, хранимые в файле.
21 Garykom
 
гуру
04.08.25
14:05
(20)+ Теоретически хз что пилят в платформе, возможно это некий кэш/индекс для данных конфигурации если типовое
Либо совершенно нетиповое
22 arsik
 
гуру
04.08.25
14:12
23 Garykom
 
гуру
04.08.25
14:10
Имхо сделать копию базы средствами sql
Снести эту табличку и глянуть что будет

Еще логи настроить и посмотреть что/когда в нее пишет, сравнить с техжурналом
24 Garykom
 
гуру
04.08.25
14:31
(22) да похоже оно
а часть - в специальном каталоге кластера серверов 1С:Предприятие

вот эта табличка это походу индекс этого "специального каталога"
возможно с полнотекстовым поиском даже
25 Ёпрст
 
гуру
04.08.25
14:45
(23) Зачем её сносить ? Достаточно просто переименовать
26 PR
 
04.08.25
17:15
(16) Открываю список таблиц, вижу везде dbo.BinaryData
Что мне еще сделать, видео тебе прислать?
27 PR
 
04.08.25
17:17
(19) Еще раз, для тех, кто понимает только с пятого раза
Открыл несколько баз, поискал, везде нашел эту табличку
28 PR
 
04.08.25
17:26
Вот вы ленивые
Создал пустую базу, таблица есть
Удалил таблицу
Запустил 1С, все работает
Добавил справочник с реквизитом строка неограниченной длины и реквизитом хранилище данных
Запустил 1С, все работает
Табличка при реструктуризации не появляется

Копайте дальше
29 PR
 
04.08.25
17:44
Вот что говорит наш китайский товарищ https://chat.qwen.ai
Подробности
Таблица `dbo.binarydata` в базе данных 1С (в формате SQL Server) — это системная таблица, которая используется платформой 1С:Предприятие для **хранения двоичных данных**, таких как:

- Прикреплённые файлы (например, сканы документов, изображения, PDF и т.п.)
- Вложения к объектам конфигурации (документам, справочникам, регистрам и др.)
- Двоичные данные, сохраняемые через механизм "Приложения" или "Внешние обработки"
- Иногда — временные данные, кэши, миниатюры и т.п.

---

### 🔹 Основные характеристики таблицы `binarydata`:

| Колонка | Тип данных | Описание |
|--------|------------|--------|
| `objid` | `uniqueidentifier` | Уникальный идентификатор объекта, к которому привязано двоичное содержимое |
| `part` | `int` | Номер части данных (если файл разбит на части — используется при больших объёмах) |
| `data` | `varbinary(max)` | Само двоичное содержимое (например, содержимое файла) |

---

### 🔹 Как работает хранение:

- Если файл небольшой — он хранится целиком в одной строке.
- Если файл большой — он **разбивается на части**, и каждая часть записывается в отдельную строку с одинаковым `objid`, но разным `part` (например, 0, 1, 2...).
- Объект в 1С (например, документ или справочник) ссылается на это содержимое через специальное поле типа `Хранилище` или `Приложение`.

---

### 🔹 Где используется в конфигурации?

В конфигурации 1С это может быть:

- Поле с типом **"Хранилище"** (например, `ХранилищеФайла`)
- Использование объекта `Приложение` в коде (например, `Новый Приложение`)
- Вложения в электронной почте (в конфигурациях с почтой)
- Миниатюры изображений
- Подписи, электронные подписи и т.п.

---

### 🔹 Пример запроса:

```sql
-- Получить все части двоичных данных для конкретного объекта
SELECT objid, part, DATALENGTH(data) AS size
FROM dbo.binarydata
WHERE objid = 'A1B2C3D4-...'
ORDER BY part;
```

> ⚠️ **Важно**: Прямое редактирование таблицы `binarydata` напрямую в SQL **не рекомендуется**, так как это может повредить целостность данных в 1С. Все операции с двоичными данными должны выполняться через платформу 1С.

---

### 🔹 Как посмотреть, к какому объекту относится запись?

Чаще всего `objid` соответствует ссылке (`Ref`) на объект в других таблицах. Например:

```sql
-- Попробовать найти, где используется objid
SELECT TOP 10 *
FROM dbo.DOCUMENT_Документ
WHERE Ref = 'A1B2C3D4-...'
```

Или использовать `UUID` в запросе к `CONFIG` или `OBJECTS` (в зависимости от структуры).

---

### 🔹 Альтернативные таблицы:

В более новых версиях 1С (особенно при использовании **файлового хранилища**) двоичные данные могут храниться **не в `binarydata`**, а в отдельных файлах на диске, а в базе — только ссылки. Это управляется настройкой **"Хранить двоичные данные в файлах"** в конфигураторе.

---

### 🔚 Вывод:

`dbo.binarydata` — это **основная таблица для хранения вложений и двоичных данных** в 1С на SQL Server. Она используется автоматически платформой и не предназначена для прямого доступа извне, хотя анализировать её можно (с осторожностью).

Если нужно извлечь файл из `binarydata` — это делается программно через 1С или с помощью скриптов, собирающих части по `objid` и `part`, и объединяющих `varbinary` в файл.

Если нужно — могу помочь с примером извлечения файла из `binarydata` через SQL или C#.
30 PR
 
04.08.25
17:41
А, ну и все
Попытался в реквизит справочника типа хранилище значения запихнуть cf файл, получил такое
Невосстановимая ошибка

Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:
по причине:
Ошибка СУБД:
Microsoft OLE DB Driver for SQL Server: Недопустимое имя объекта "BinaryData".
HRESULT=80040E37, SQLSrvr: SQLSTATE=42S02, state=1, Severity=10, native=208, line=1

Расходимся, лентяи :))
31 Garykom
 
гуру
04.08.25
17:52
(27) А теперя повтори на бис на разных версиях платформы 1С и с разными режимами совместимости
32 arsik
 
гуру
04.08.25
17:53
33 PR
 
04.08.25
17:59
(31) Любой каприз
Куда кидать КП?
34 Garykom
 
гуру
04.08.25
18:08
(33) Так и не признаешься что слегка наврал (ибо от версии платформы и режима совместимости зависит) с
Открываю список таблиц, вижу везде dbo.BinaryData

в (26)?
35 PR
 
04.08.25
18:16
(34) Я и не утверждал, что такая есть везде
Очевидно же, что это бред и что появилась она в какой-то момент
Я сказал лишь, что это типовая табличка 1С, а не приблуда какого-то расширения или какой-то приложухи
К чему твоя попытка натянуть сову на глобус?
36 PR
 
04.08.25
18:16
+(35) Посмотрел сейчас в ERP, там нет
И че и че?
37 Sevish
 
05.08.25
05:02
Огромное спасибо за разбор ситуации!!!

А почему раньше эта таблица так не раздувалась? У меня самый ранний бэкап от 06.06.2025, там ещё у меня была платформа 8.3.26. Таблица эта то же была, но весила всего 2 Гб.
С тех пор никаких доработок, которые бы что-то пихали в хранилище не было.

Остался у меня один вопрос: как все же посмотреть и понять что именно её раздувает?
Независимо от того, куда вы едете — это в гору и против ветра!