Загрузка из эксель через таблицу значений

1. Metabos 29 05.12.21 10:56 Сейчас в теме
Добрый день! Есть обработка которая загружает в базу данные из Эксель, написанная другим сотрудником. Она загружает через таблицу значений. С ней все ок. У меня вопрос по тому, как меняются названия колонок в файле при загрузке. Например там есть колонки с пробелом, в каком то случае они преобразовываются в подчеркивание, в каком то просто убираются, не могу понять логику.
Спасибо!
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. uriah 17 05.12.21 11:05 Сейчас в теме
(1)
Есть обработка которая загружает в базу данные из Эксель, написанная другим сотрудником. Она загружает через таблицу значений. С ней все ок. У меня вопрос по тому, как меняются названия колонок в файле при загрузке. Например там есть колонки с пробелом, в каком то случае они преобразовываются в подчеркивание, в каком то просто убираются, не могу понять логику.

Гадаю по кофейной гуще. Дорого.
Код в студию,
3. ishelper 05.12.21 11:08 Сейчас в теме
(1)
там есть колонки с пробелом, в каком то случае они преобразовываются в подчеркивание, в каком то просто убираются
Минуточку, мы посмотрим в код обработки и все вам растолкуем.
не могу понять логику.
Потому, что это не женская логика, а логика программирования.

Женская логика - это рассказать (не показать!) об какой-то обработке, "написанной другим сотрудником", которую никто тут в глаза не видел и ждать объяснения ее работы.
4. Metabos 29 05.12.21 11:25 Сейчас в теме
Код по считыванию данных из эксель в таблицу значений
ТЗДанныеИзЭксель = Новый ТаблицаЗначений; 
ТД = Новый ТабличныйДокумент;	
ТД.Прочитать(ИмяФайлаЭксель);
ТЗДанныеИзЭксель = ТаблицаДанныхИзЭксель(ТД);

Функция ТаблицаДанныхИзЭксель
Функция ТаблицаДанныхИзФайла(ТД, Лист)
ПЗ = Новый ПостроительЗапроса;	
ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТД.Область("Область"));	
ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;	
ПЗ.ЗаполнитьНастройки();	
ПЗ.Выполнить();	
Возврат ПЗ.Результат.Выгрузить();		
КонецФункции
Показать

И вот после всего этого в ТЗДанныеИзЭксель таблица с преобразованными колонками.
Например в эксель колонка называется - "Сроки для (для клиента) и не клиента". Преобразуется в Сроки_для_клиента_и_не_клиента.
А колонка "База для расчета" преобразуется в БазаДляРасчета.
7. ishelper 05.12.21 11:47 Сейчас в теме
(4)
Например в эксель колонка называется - "Сроки для (для клиента) и не клиента". Преобразуется в Сроки_для_клиента_и_не_клиента.
А колонка "База для расчета" преобразуется в БазаДляРасчета.
Ну вот, уже хоть какая-то конкретика.

Вероятнее всего, проблема в самом файле Excel - где-то обычные пробелы, а где-то - неразрывные. Или еще какие-нибудь визуально неотличимые от пробела символы, Excel богат на такие заморочки.
8. ishelper 05.12.21 11:58 Сейчас в теме
+(7)
Или еще какие-нибудь визуально неотличимые от пробела символы, Excel богат на такие заморочки.
ЧСХ, именно эта авторка уже наступала на именно эти грабли: https://forum.infostart.ru/forum9/topic271579/

Вывод: пациентка безнадежна, в морг!
9. Metabos 29 05.12.21 12:38 Сейчас в теме
(7) Т.е. есть какой то алгоритм который преобразует названия колонок?
5. uriah 17 05.12.21 11:34 Сейчас в теме
после всего этого в ТЗДанныеИзЭксель таблица с преобразованными колонками.
Например в эксель колонка называется - "Сроки для (для клиента) и не клиента". Преобразуется в Сроки_для_клиента_и_не_клиента.
А колонка "База для расчета" преобразуется в БазаДляРасчета.

ПЗ.ЗаполнитьНастройки(); 

Покажите код
ЗаполнитьНастройки()
6. Metabos 29 05.12.21 11:39 Сейчас в теме
(5) Это я так поняла какая то стандартная процедура. Не переходит по F12.
11. lefthander 06.12.21 09:35 Сейчас в теме
(6)и не перейдет - это метод построителя запроса.

ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТД.Область("Область"));
Ну вот же!!!! В построитель запроса запихнули область табличного документа, а он(построитель) там все сделал сам.
12. Metabos 29 06.12.21 12:39 Сейчас в теме
(11)
ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТД.Область("Область"));
Ну вот же!!!! В построитель запроса запихнули область табличного документа, а он(построитель) там все сделал сам.

А как этот построитель меняет названия колонок? Почему в некоторых случаях просто убирает символ, в некоторых меняет на подчеркивание?
13. lefthander 06.12.21 17:29 Сейчас в теме
(12)У разработчиков наверно надо спросить. Я обычно сам прописываю как менять названия колонок для таблицы при загрузке.
10. lefthander 06.12.21 09:35 Сейчас в теме
(5)
Покажите код

ЗаполнитьНастройки()

Ну и как показать код метода построителя запроса?
Оставьте свое сообщение

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