Выгружаем из 1С в EXCEL с помощью ADO. Часть III. Решаем проблему с кавычками.

Выгружаем из 1С в EXCEL с помощью ADO. Часть III. Решаем проблему с кавычками.

Многие читатели предыдущих статей, посвященных выгрузке из 1С в EXCEL с помощью технологии ADO, столкнулись с проблемой, которая возникает когда в значении поля, которое подставляется в запрос к базе данных, встречается апостроф(одинарная кавычка). В данной статье будет приведено простое и элегантное решение данной проблемы, которое сообщил один из посетителей сайта.

Рассмотрим фрагмент кода из первой статьи «Выгружаем из 1С в EXCEL с помощью ADO. Часть I»

// Заполняем таблицу данными выборки
Пока Выборка.Следующий() Цикл
    Command.CommandText = "
    |INSERT INTO [Table] VALUES ('"+Выборка.Код+"','"
    +Выборка.Наименование+"')";
    Command.Execute();
КонецЦикла;

Ошибка возникает если Выборка.Код или Выборка.Наименование содержат апостроф. Чтобы избежать этого я предлагал либо экранировать, либо заменять этот символ другим. Но более правильное решение этой проблемы заключается в использовании параметров:

Command.CommandText = "INSERT INTO [Table] VALUES (@Код, @Наименование)";
Пока Выборка.Следующий() Цикл
    Command.Parameters("@Код").Value = Выборка.Код;
    Command.Parameters("@Наименование").Value = Выборка.Наименование;
    Command.Execute();
КонецЦикла;

Если публикация помогла Вам справится с проблемой, решить задачу или расширить свои знания - поддержите автора.

Комментарии:

  1. SkyVixen:

    Скажите, как можно задать имя нового листа, если оно (имя) содержит пробел? Например, «Лист 1» или «Таблица товаров и цен»

  2. Skalolazz:

    Отличные статьи, жаль они не попались мне пол года назад.

Оставить комментарий на Skalolazz