Приветствую!
Есть общий макет с двоичными данными. Как узнать расширение файла из этих двоичных данных?
---
Извиняюсь за некропростинг...
Можно использовать TrID ( https://mark0.net/soft-trid-e.html ) для того чтобы узнать тип любого файла
---
Сохраните под разными расширениями и посмотрите с каким открывается корректно.
---
просто попробовать файл открыть(word/excel)...
---
Вроде же его можно сохранить в файл? Так и будет известно, что за расширение
---
Да его сохранить можно но он не воспримет расширение файла. Поэтому скорее всего вам это не удастся определить какой это именно файл - расширение файла
---
По сигнатуре файла, например.
https://en.wikipedia.org/wiki/List_of_file_signatures
---
а не подскажете как прочитать эту сигнатуру?
Также, в этом списке на википедии я не нашел некоторые расширения, на пример .dll.
Где можно найти?
Спасибо!
---
Используйте методы работы с двоичными данными 1С или откройте файл в любом hex-редакторе, например, WinHex.
Просто вбейте первые 2-3 байта своего файла в гугле со словами "file signature", думаю вы найдёте что это за расширение.
---
Извиняюсь за некропростинг...
Можно использовать TrID ( https://mark0.net/soft-trid-e.html ) для того чтобы узнать тип любого файла
---
а причем тут 1с?
---
А при том что файл находится в макете 1С типа двоичные данные
---
имел ввиду как использовать материал по приведенной вами ссылке непосредственно в 1с.
---
можно примерно так, но не знаю насколько корректно

```1c
    Функция ОпределитьРасширениеФайлаДанныхПоСигнатуре(ДанныеИлиСтруктура) Экспорт

    Если ТипЗнч(ДанныеИлиСтруктура) = Тип("Структура") Тогда
    Попытка
    МакетИДанныеОбъекта = УправлениеПечатью.МакетыИДанныеОбъектовДляПечати(ДанныеИлиСтруктура.МенеджерПечати,
    ДанныеИлиСтруктура.Идентификатор, Новый Массив);
    ДвоичныеДанныеМакета = МакетИДанныеОбъекта.Макеты.ДвоичныеДанныеМакетов.Получить(ДанныеИлиСтруктура.Идентификатор);
    Исключение
    Возврат Неопределено;
    КонецПопытки;
    Иначе
    ДвоичныеДанныеМакета = ДанныеИлиСтруктура;
    КонецЕсли;

    Если ДвоичныеДанныеМакета = Неопределено Тогда
    Возврат Неопределено;
    КонецЕсли;

    ПотокДанных = ДвоичныеДанныеМакета.ОткрытьПотокДляЧтения();
    ЧтениеДанных = Новый ЧтениеДанных(ПотокДанных);

    Символ1 = ЧтениеДанных.ПрочитатьБайт();
    Символ2 = ЧтениеДанных.ПрочитатьБайт();
    Символ3 = ЧтениеДанных.ПрочитатьБайт();
    Символ4 = ЧтениеДанных.ПрочитатьБайт();
    Символ5 = ЧтениеДанных.ПрочитатьБайт();
    Символ6 = ЧтениеДанных.ПрочитатьБайт();
    Символ7 = ЧтениеДанных.ПрочитатьБайт();
    Символ8 = ЧтениеДанных.ПрочитатьБайт();

    ПотокДанных.Закрыть();

    Если Символ1 = 208 И Символ2 = 207 И Символ3 = 17 И Символ4 = 224 И Символ5 = 161 И Символ6 = 177 И Символ7 = 26 И Символ8 = 225 Тогда
    Возврат "doc";
    ИначеЕсли Символ1 = 80 И Символ2 = 75 И Символ3 = 3 И Символ4 = 4 И Символ5 = 20 И Символ6 = 0 И Символ7 = 0 И Символ8 = 8
    ИЛИ Символ1 = 80 И Символ2 = 75 И Символ3 = 3 И Символ4 = 4 И Символ5 = 10 И Символ6 = 0 И Символ7 = 0 И Символ8 = 0 Тогда
    Возврат "odt";
    ИначеЕсли Символ1 = 80 И Символ2 = 75 И Символ3 = 3 И Символ4 = 4 И Символ5 = 20 И Символ6 = 0 Тогда
    Возврат "docx";
    ИначеЕсли Символ1 = 37 И Символ2 = 80 И Символ3 = 68 И Символ4 = 70 Тогда
    Возврат "pdf";
    Иначе
    Возврат Неопределено;
    КонецЕсли;

    КонецФункции
```