Имя: Пароль:
1C
1С v8
При копировании из Excel в 1С не корректно вставляет значения
,
0 dan4ik
 
03.02.22
16:48
Все привет!
При копировании из xlsx в 1с, если скопировать из строки > 65536 при вставке в 1с в табличный документ вставляет из другой строки (у меня из 65536), может кто сталкивался с такой проблемой
1 Бизон
 
03.02.22
16:58
когда деревья были маленькими у экселя не могло быть больше 64000 строк
2 dan4ik
 
03.02.22
17:23
идея пришла только сделать к примеру кнопку с сочетанием клавиш Ctrl+V и в обработчике команды создать ComОбъект htmlfile получить значение из буфера... как так пока
3 vicof
 
03.02.22
17:30
Говорят, что к экселю можно обращаться, как к ком-объекту.
4 dan4ik
 
03.02.22
18:08
На всякий случай оставлю здесь, вдруг кому поможет...


Процедура Панель1ПриСменеСтраницы(Элемент, ТекущаяСтраница)

              

                Если ТекущаяСтраница = ЭлементыФормы.Панель1.Страницы.Индекс(ЭлементыФормы.Панель1.Страницы.Страница7) Тогда

                               ЭлементыФормы.КоманднаяПанель15.Кнопки.ВставитьИзБуфера.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.V, Ложь, Истина);

                Иначе

                               ЭлементыФормы.КоманднаяПанель15.Кнопки.ВставитьИзБуфера.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.Нет);

                КонецЕсли;

КонецПроцедуры



Процедура КоманднаяПанель15Вставить(Кнопка)

                ТабДок = ЭлементыФормы.ПолеТабличногоДокумента14;

                Если ВводДоступен() И ТекущийЭлемент = ТабДок Тогда

                               Верх = ТабДок.ТекущаяОбласть.Верх;

                               Лево = ТабДок.ТекущаяОбласть.Лево;

                               Разделитель = Символ(9);

                               Текст = ПолучитьТекстБуфераОбмена();

                               МассивСтрок = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Текст, Символы.ПС);

                               Для Индекс = 0 По МассивСтрок.ВГраница() Цикл

                                               ТекущаяСтрока = МассивСтрок[Индекс];

                                               МассивЧастей = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекущаяСтрока, Разделитель);

                                               Для ИндексКолонки = 0 По МассивЧастей.ВГраница() Цикл

                                                               Зн = СокрЛП(МассивЧастей[ИндексКолонки]);

                                                               СтрокаИндекс = Верх + Индекс;

                                                               КолонкаИндекс = Лево + ИндексКолонки;

                                                               ТабДок.Область(СтрокаИндекс, КолонкаИндекс, СтрокаИндекс, КолонкаИндекс).Текст = Зн;

                                               КонецЦикла;

                               КонецЦикла;

                КонецЕсли;

КонецПроцедуры



Функция ПолучитьТекстБуфераОбмена() Экспорт

                #Если Клиент Тогда

                               Объект = Новый COMОбъект("htmlfile");

                               Возврат Объект.ParentWindow.ClipboardData.Getdata("text");

                #КонецЕсли

КонецФункции