|
|
|
Как в запросе преобразовать Число в строку | ☑ | ||
|---|---|---|---|---|
|
0
lirt82
08.01.26
✎
14:28
|
Всем привет, делаю загрузку данных из файла эксель в таб. часть, и столкнулся с проблемой когда в файле эксель колонка ИНН тип общий а после передачи в запрос для последующей обработки в качестве параметра таблицы значении поле преобразуется в число, и ВЫРАЗИТЬ очищает поле.
/////////////// Данные = ПолучитьИзВременногоХранилища(Адрес); ИмяВременногоФайла = ПолучитьИмяВременногоФайла(РасширениеExcelФайла); Данные.Записать(ИмяВременногоФайла); Документ = Новый ТабличныйДокумент; Документ.Прочитать(ИмяВременногоФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение); ПЗ = Новый ПостроительЗапроса; ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(Документ.Область(1, 1, Документ.ВысотаТаблицы, 6)); ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять; ПЗ.ЗаполнитьНастройки(); ПЗ.Выполнить(); ТЗ_Excel = Новый ТаблицаЗначений; ТЗ_Excel.Колонки.Добавить("ФИО", Новый ОписаниеТипов("Строка")); ТЗ_Excel.Колонки.Добавить("ИНН", Новый ОписаниеТипов("Строка")); ТЗ_Excel = ПЗ.Результат.Выгрузить(); ///////////////////// Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТаблицаExcel.ФИО КАК СотрудникИзExcel, | ТаблицаExcel.ИНН КАК ИНН_Сотрудника |ПОМЕСТИТЬ ВТ_ТаблицаExcel |ИЗ | &ТЗ_ТаблицаExcel КАК ТаблицаExcel |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ТаблицаExcel.СотрудникИзExcel КАК СотрудникИзExcel, | ВЫРАЗИТЬ(ВТ_ТаблицаExcel.ИНН_Сотрудника КАК СТРОКА(19)) КАК ИНН_Сотрудника |ИЗ | ВТ_ТаблицаExcel КАК ВТ_ТаблицаExcel"; Запрос.УстановитьПараметр("ТЗ_ТаблицаExcel", ТЗ_Excel); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); |
|||
|
1
Волшебник
08.01.26
✎
14:12
|
ИНН - это не число
задайте тип этой колонки "Строка" (формат=Текст) ещё в Ecxel |
|||
|
2
lirt82
08.01.26
✎
14:24
|
(1) сделал не помогло, в запросе поле числовое почему-то и очищается
|
|||
|
3
Волшебник
08.01.26
✎
14:34
|
(2) сказки
|
|||
|
4
lirt82
08.01.26
✎
14:42
|
(3) Что-то Построитель колдует при загрузке если цифру увидел то в ТЗ добавляет как число
|
|||
|
5
Маленький Вопросик
08.01.26
✎
15:27
|
СокрЛП()
|
|||
|
6
shuhard
08.01.26
✎
15:28
|
(4) ну да, проще всего в цикле по ТЗ форматом окучить
если акция разовая - в xls слева прилепить префикс из одной буквы, потом отрезать |
|||
|
7
Garykom
гуру
08.01.26
✎
16:20
|
(0) сделай значения в экселе настоящими строками (а не числами)
добавь ' (или ` уже не помню точно) впереди в каждой ячейке перед ИНН |
|||
|
8
Garykom
гуру
08.01.26
✎
16:22
|
Или тупо постобработай ТЗ после построителя перед передачей в запрос
Через Формат(Значение, "ЧГ=0") |
|||
|
9
Timon1405
08.01.26
✎
17:34
|
(0) ТЗ_Excel.Колонки.Добавить("ИННСтрокой", Новый ОписаниеТипов("Строка"));
и в цикле как в (8) обойти (7) если разово нужно в текст то в экселе есть формула '=ТЕКСТ(ячейка,"0")', она точно помогает без ' |
|||
|
10
craxx
08.01.26
✎
18:47
|
ТЗ_Excel = Новый ТаблицаЗначений;
ТЗ_Excel.Колонки.Добавить("ФИО", Новый ОписаниеТипов("Строка")); ТЗ_Excel.Колонки.Добавить("ИНН", Новый ОписаниеТипов("Строка")); ТЗ_Excel = ПЗ.Результат.Выгрузить(); Ничего не понимаю, а зачем добавляешь колонки, если все равно потом ТЗ_Excel получаешь из построителя? |
|||
|
11
lirt82
09.01.26
✎
09:17
|
(8) да, теперь помогло, благодарю
Для Каждого Стр Из ТЗ_Excel Цикл Если ТипЗнч(Стр.ИНН) = Тип("Число") Тогда Стр.ИНН = СтрЗаменить(Строка(Стр.ИНН), Символы.НПП, "") КонецЕсли; |
|||
|
12
lirt82
09.01.26
✎
08:35
|
(10) если сразу ТЗ передавать в запрос в качестве параметра то будет ошибка "Содержимое объекта данных может быть выбрано только во временную таблицу", так как сначала нужно явно описать типы значении в ТЗ, иначе запрос не понимает что за таблица с какими свойствами.
|
|||
|
13
Garykom
гуру
09.01.26
✎
10:18
|
(12) У тебя какие-то дикие заблуждения
1. Построитель затирает нахрен твои типы колонок и ставит свои 2. Тебе уже сказали про Формат в (8) какого хрена ты говнокодишь в (11)? С чего взял что символом разделителем групп всегда будет НПП? |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |