8.х Заглавные и прописные равнозначны для запросов.

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем alves, 13 ноя 2009.

  1. TopicStarter Overlay
    alves
    Offline

    alves

    Регистрация:
    13 ноя 2009
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Есть проблема следующего плана:
    1. Стоит задача заполнения данных с внешних обработок (Форм). Для загрузки данных используется база данных FOXPRO с dbf таблицами.
    2. Таблицы имеют поля для связи в этих полях хранятся уникальные значения, причем эти значения не повторяются, так например 000А и 000а - это разные значения.
    3. Когда исполняется программа в 1С, то Запрос выбирает и 000А и 000а - как равнозначные, а это недопустимо, так как уникальность кода прописных и заглавных букв должна позиционировать как отдельный уникальный код.

    АКаталог.Очистить();
    xB_Acatalog.Первая(); //позиционируемся на первой записи
    Пока xB_Acatalog.ВКонце()=0 Цикл //пока не дошли до конца, крутим цикл
    НоваяЗапись = АКаталог.Добавить();
    НоваяЗапись.Номер = СокрЛП(xB_Acatalog.Rn);
    НоваяЗапись.Родитель = СокрЛП(xB_Acatalog.Parent_rn);
    НоваяЗапись.Название = СокрЛП(xB_Acatalog.Listname);
    xB_Acatalog.Следующая(); //переходим на следующую запись
    КонецЦикла;
    НайденнаяСтрока = АКаталог.Найти("Контрагенты","Название");
    Номер2 = НайденнаяСтрока.Номер;
    Если НайденнаяСтрока = Неопределено Тогда
    Предупреждение("Вид структуры не найден!");
    Возврат;
    Иначе
    ТаблВывода = ЭтотОбъект.АКаталог.Выгрузить();
    Запрос2 = Новый Запрос;
    Запрос2.МенеджерВременныхТаблиц=Новый МенеджерВременныхТаблиц;
    Запрос2.Текст = "Выбрать * Поместить ВременнаяТаблица из &Таблица Как ВнешнийИсточник";
    Запрос2.УстановитьПараметр("Таблица",ТаблВывода);
    Результат1 = Запрос2.Выполнить();
    Запрос2.Текст = "ВЫБРАТЬ
    | ВременнаяТаблица.Название,
    | ВременнаяТаблица.Номер,
    | ВременнаяТаблица.Родитель
    |ИЗ
    | ВременнаяТаблица
    |ГДЕ
    | ВременнаяТаблица.Номер ПОДОБНО &Номер1";
    Запрос2.УстановитьПараметр("Номер1", Номер2);
    ЗначТабЧасти = Запрос2.Выполнить().Выбрать();

    Пока ЗначТабЧасти.Следующий() Цикл
    Если Номер2 = ЗначТабЧасти.Номер Тогда



    Иначе

    Сообщить(ЗначТабЧасти.Номер);

    КонецЕсли;
    Состояние("Вывод данных"+ЗначТабЧасти.Номер+ЗначТабЧасти.Родитель+ЗначТабЧасти.Название);
    КонецЦикла;

    КонецЕсли;


    Хотелось бы узнать лекарство от этой проблемы.
  2. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    На сколько я помню, 1С к регистру не чувствительна. И для нее 000А и 000а одно и тоже.
  3. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Да, запросы не различают регистр в условиях. Сделать придется через добавление дополнительного кода для сравнения.
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Уточню: все зависит от самой СУБД, а не от 1С.
    В частности, MS SQL не чувствителен в регистру.
    По этому поводу есть тема на партнерском форуме

Поделиться этой страницей