Загрузка файла в SQL из 1С

1. nik.averkin@mail.ru 21.03.22 17:10 Сейчас в теме
Морочился тут с записью файла во внешнюю систему. Искал по всей сети - не нашёл, может кому пригодится.
Платформа 1С:Предприятие 8.3 (8.3.20.1674)
SQL Server 2019
Если ТабличныйДокумент.ВысотаТаблицы = 0 Тогда
        СформироватьОтчет("Расш");
    КонецЕсли;
    
    /////////////////////////////////////////
    //Подключение к SQL-серверу
    Соединение  = Новый COMОбъект("ADODB.Connection");
    Команда     = Новый COMОбъект("ADODB.Command");
    Выборка     = Новый COMОбъект("ADODB.RecordSet");
    Соединение.ConnectionString =
        "driver={SQL Server};" +
        "server="+ИмяСервераSQL+";"+
        "uid="+ПользовательSQL+";"+
        "pwd="+ПарольSQL+";"+
        "database="+БазаДанныхSQL+";";
    Соединение.ConnectionTimeout = 30;
    Соединение.CommandTimeout = 600;
    //Открытие соединение
    Соединение.Open();
    Команда.ActiveConnection   = Соединение;
    ИмяФайла = КаталогВременныхФайлов()+"Отчет.pdf";
    ТабличныйДокумент.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.PDF);
    Попытка
        ДД = Новый ДвоичныеДанные(ИмяФайла);
    Исключение
        Возврат;
    КонецПопытки;
    Если ДД.Размер() = 0 Тогда
        Возврат;
    КонецЕсли;    
    ТекстКоманды = 
    "DECLARE @hexstring varchar(max);
    |SET @hexstring = '"+ПолучитьHexСтрокуИзДвоичныхДанных(ДД)+"';
    |INS ERT IN TO ClientFiles 
    |(UID, CLIENT_UID, NAME, CONTENT)
    //, SIGNATURE, ERROR)
    |VALUES ('"+Новый УникальныйИдентификатор()+"', '"+Клиент()+"', 'Отчет.pdf', CONVERT(varbinary(max),@hexstring,2))";
    Команда.CommandText = ТекстКоманды;
    Команда.Execute();
    Соединение.Close();
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. МихаилМ 21.03.22 21:09 Сейчас в теме
Сериализация в стиле фирмы 1с.
(1) Какой максимальный размер файла удалось записать таким вандалистским неандертальским способом ? Если у этого "SQL Server 2019" есть админ, то он за такие извраты имеет полное право отбить вам копчик.
3. nik.averkin@mail.ru 23.03.22 13:40 Сейчас в теме
4. ishelper 23.03.22 14:10 Сейчас в теме
(3) Зачем такие вещи размещать на форуме? Ветка просто утонет и вряд ли "кому пригодится". Так что знаменатель этой дроби можете смело примерять на себя.

А числитель... Сделайте публикацию, по количеству скачиваний или плюсов станет понятно и насчет числителя. :-)
5. nik.averkin@mail.ru 23.03.22 14:48 Сейчас в теме
(4) На публикацию не тянет как-то. Придётся что-то писать - зачем это всё, какую задачу решал и т.п.
Что касается "утонет" - когда я искал инфу по вопросу, так 2011 год на мисте всплывал...
Мне не помогло НИЧЕГО из того, что я нашёл. Пришлось читать, вникать и т.д.
И вообще - по делу есть что-то? Ваши комменты - информационный шум, который не имеет отношения к вопросу.
6. ishelper 23.03.22 15:16 Сейчас в теме
(5)
информационный шум, который не имеет отношения к вопросу
А где вопрос-то? "Я тут наваял нетленку - берите, пользуйтесь... вдруг кому надо" - это вопрос?

Ну, посмотрим, кому еще оно понадобится... Лично я больше ничего тут писать не буду, учитывая вашу манеру общения.
7. nik.averkin@mail.ru 23.03.22 17:53 Сейчас в теме
(6)
Лично я больше ничего тут писать не буду, учитывая вашу манеру общения.
Благодарю!
Вопрос - он же - тема в том, как без дополнительных программных конструкций передавать файлики типа .pdf и прочие, генерируемые 1С при печати, в стороннюю базу данных. Оба комментатора пришли оттоптаться на авторе, ничего по делу не сказав. Своё наиценнейшее мнение при себе удержать, видимо, сил не было, но хоть что-то бы по делу сказали! Ихсперты....
9. alul 17.11.23 09:00 Сейчас в теме
Автор, браво! Отличная публикация.
Не слушайте набежавших с мисты "коекакеров", которые не способны на синтез кода, их максимум возможностей - желчь в строках форума.
10. nik.averkin@mail.ru 17.11.23 15:48 Сейчас в теме
(9) Я и не слушаю. :) В коде видно, что я формирую отчет в 1С, записываю его в pdf. Самый большой получился килобайт на 36. КИЛО байт... Товарищи же предлагают мне сделать непонятно для чего универсальный, общий случай - разбить AppendChunk-ом (а вдруг, огромный?) двухстраничный мой отчетик на куски, чтобы он не порушил тонкую душевную организацию SQL... :) Реально - моя задача не требует никаких усложнений, вот уже полтора года колбасит без сбоев и напрягов.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот