Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 00:49

Прочитать Excel

Автор Shaman_blr, 29 мар 2023, 13:22

0 Пользователей и 1 гость просматривают эту тему.

Shaman_blr

Всем привет загружаю данные из excel в Документ
Прогресс=0;
ТабДок = ПрочитатьТабличныйДокумент();
ТаблицаЗначений = Новый ТаблицаЗначений;
ТаблицаЗначений.Колонки.Добавить("Номер");
ТаблицаЗначений.Колонки.Добавить("Дата");
ТаблицаЗначений.Колонки.Добавить("СтатусПротокола");

Если не ТабДок=null тогда
КоличествоСтрокТаблицы = ТабДок.ВысотаТаблицы;
Для НомерСтрокиТаблицы = 3 по 3 цикл           

Область = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтрокиТаблицы,"ЧГ=0") + "C1");
ТекущаяОбласть = Область.ТекущаяОбласть;
Столбец2 = ТекущаяОбласть.Текст;

Область = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтрокиТаблицы,"ЧГ=0") + "C2");
ТекущаяОбласть = Область.ТекущаяОбласть;
Столбец3 = СокрЛП(ТекущаяОбласть.Текст);

Область = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтрокиТаблицы,"ЧГ=0") + "C3");
ТекущаяОбласть = Область.ТекущаяОбласть;
Столбец4 = СокрЛП(ТекущаяОбласть.Текст);


НоваяСтрока = ТаблицаЗначений.Добавить();
Новаястрока.Номер = Столбец2;
Новаястрока.Дата = Столбец3;
НоваяСтрока.СтатусПротокола = Столбец5;

КонецЦикла;

НовыйДокумент = Документы.Рабочие.СоздатьДокумент();
НовыйДокумент.Номер = Новаястрока.Номер;
НовыйДокумент.Дата = Новаястрока.Дата;
        НовыйДокумент.СтатусПротокола = ???????????????????????
НовыйДокумент.Записать();
Прогресс = 100;
Предупреждение("Выполнено!!!");
Прогресс = 0;

КонецЕсли;
Подскажите такой вопрос СтатусПротокола в excel - "согласован"
В 1с Статусы находятся в перечислениях. Подскажите как мне найти по названия из excel

LexaK

Shaman_blr, если у вас имя перечисления совпадает с его синонимом, то можно так получать нужное перечисление по имени

        НовыйДокумент.СтатусПротокола = Вычислить("Перечисления.НужноеПеречисление." + НоваяСтрока.СтатусПротокола);
если помогло нажмите: Спасибо!

Shaman_blr

LexaK, сейчас попробую, спасибо)

Shaman_blr

В excele если "Согласовано" и перечисление "Согласовано" и синоним "Согласовано" То все Ок.
А если в excele "На согласовании" и в перечислении "НаСогласовании" и синоним "На согласовании" То выдает ошибка)

{(1,38)}: Ошибка в выражении
Перечисления.НужноеПеречисление.На<<?>> согласовании

LexaK

так и было описано
Цитироватьесли у вас имя перечисления совпадает с его синонимом, то можно так

теперь осталось придумать как по синониму искать!
сделайте перебором! там всего то их, 10-20
если помогло нажмите: Спасибо!

LexaK

напишите функцию
ПолучитьПеречисление(Наименование)

которая возвращает ссылку на найденный элемент перечисления или Неопределено - если не найдено
(в ней 5 строчек всего)
если помогло нажмите: Спасибо!

Shaman_blr

LexaK, ну у меня все получилось, только один нюанс есть.
Когда я загружаю колонку номер в excele он выглядит так 000001
При импорте в 1с он распознает его вот так 000 00 и он съел 4-й символ.
В excele в поле номер числовой тип = дополнительный, скорее всего из за этого, потому-что если я меняю в excele тип = общий и вручную пропишу 000001 то выгружается все ок)
Есть ли какая нибудь фича при экспорте указать чтобы в такой то колонке тип в excele был другой?

Afinogen

я бы перед тем как грузить эксель
объявил переменную - Новое Соответствие
затем циклом пробежался по метаданным
Перечисление.Как оно  там называется и сохранил его значения в созданное соответствие
Где бы ключ  - синоним значения
Значение - имя значения

ну а потом бы уже когда обрабюатывал эксель получал бы по ключу значение перечисления

Shaman_blr

Afinogen, с перечислением я разобрался, мне теперь с с реквизитом номер нужно разобраться)

Afinogen

Цитата: Shaman_blr от 30 мар 2023, 09:50Есть ли какая нибудь фича при экспорте указать чтобы в такой то колонке формат в excele был другой?
вот это мне в принципе не понятно

тем более что вы сходу конвертируете эксель в таб документ, если бы вы подключались к экселю по COM то тогда можно было  бы для такого случая обрабатывать не значение ячейки экселя а текст, то есть  вы бы получали в какую нибудь переменную  текстовое представление и за тем уже внутри 1с могли б с ним играться,  пусвть меня поправят коллеги но  я не припомню  чтобы при конвертации в таб док такое было возможно,  могу ошибаться, надо читать синтексис помощник)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск