Closed ovt256 closed 4 months ago
консоль (версия 3.1.420) определяет типы колонок Дата и Число, но не определяет Строку. сделал следующие изменения в модуле ФормаУпр:
в Процедура ПослеЗакрытияВопросаПытатьсяОпределятьТипЗначений
..
Пока Сч1 < лКоличествоКолонок Цикл Если СтрокаВЧисло(лМассивКолонокСтрокиТаблицы[Сч1]) <> Неопределено Тогда лТипыКолонок.Вставить(Сч1, Новый ОписаниеТипов("Число")); ИначеЕсли ЗначениеЗаполнено(СтрокаВДату(лМассивКолонокСтрокиТаблицы[Сч1])) Тогда лТипыКолонок.Вставить(Сч1, Новый ОписаниеТипов("Дата")); Иначе // ++ иначе считаем строкой лТипыКолонок.Вставить(Сч1, Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(100)) ); // ++ КонецЕсли; Сч1 = Сч1 + 1; КонецЦикла;
в Процедура ОбработкаДействияВыгрузитьВПараметрНаСервере
..
Если лТипыКолонок <> Неопределено И лТипыКолонок[Сч] <> Неопределено Тогда лЗначение.Колонки.Добавить(лИмяКолонки, лТипыКолонок[Сч]); Иначе
В соответствие лТипыКолонок передаю не типы, а готовые Описания типов. Это позволяет задать ограничение строки. После этого все остальные колонки будут назначены тип Строка(100 символов). Если не задать ограничение строки колонки, то такие строки нельзя сравнивать в запросе.
Попробовал: проблема с определением данных с типом "Строка" решена! Спасибо!
Исправлено в последнем релизе
При создании параметра из буфера обмена иногда возникают сложности. Консоль не всегда правильно определяет тип данных. Это связано прежде всего с самими данными (например, строка из цифр будет распознана как число) и, вероятно, анализом лишь нескольких первых строк значений. Как правило, пользователь знает, какие данные он собирается использовать в параметре. Думаю, было бы полезно предусмотреть в Консоли возможность указания типов данных (в том числе и составных) вручную.