HelpF.pro

Загрузка данных в документ из табличного документа (в ТД скопировано из Excel)

Частенько пользователи просят упростить ввод данных в программу используя копирование таблиц из Excel. Ниже я приведу пример как загрузить данные скопированные из Excel:

Создаем форму для загрузки данных:

внутри пишем код:

Код 1C v 8.х
 // Функция ПолучитьТЗИзМакета(ТабДок, КолонкаИндекса = 1)     
    ТаблицаДанных = Новый ТаблицаЗначений;
    НомерКолонки = 0;
    Пока Истина Цикл
        НомерКолонки = НомерКолонки + 1;
        ИмяКолонки = ТабДок.Область(1, НомерКолонки).Текст;
        Если ПустаяСтрока(ИмяКолонки) Тогда
            Прервать;
        КонецЕсли;        
        ТаблицаДанных.Колонки.Добавить("К"+Строка(НомерКолонки));
    КонецЦикла;
    
    СчетчикКолонок = НомерКолонки - 1;
    
    НомерСтроки = 1; ФлагПрерывания = Ложь;
    Пока Истина Цикл
        НомерСтроки = НомерСтроки + 1;
        Стр = ТаблицаДанных.Добавить();
        
        Для А = 1 ПО СчетчикКолонок Цикл
            ТекстКолонки = ТабДок.Область(НомерСтроки, А).Текст;
            Если ПустаяСтрока(ТекстКолонки) Тогда
                Если А = КолонкаИндекса Тогда
                    Флагпрерывания = Истина;
                    ТаблицаДанных.Удалить(Стр);
                КонецЕсли;
            Иначе
                Стр[А - 1] = ТекстКолонки
            КонецЕсли;
            
            Если Флагпрерывания Тогда
                Прервать
            КонецЕсли;
        КонецЦикла;
        
        Если Флагпрерывания Тогда
            Прервать
        КонецЕсли;
    КонецЦикла;
    
    Возврат ТаблицаДанных
КонецФункции

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

В документ добавлена кнопка  - Загрузка из Excel ее код:

Код 1C v 8.х
  //Функция преобразует строку вида 31.01.2015 в дату
Функция РазобратьДату(ИзмДата);
Возврат Дата(Сред(ИзмДата,7,4)+Сред(ИзмДата,4,2)+Сред(ИзмДата,0,2));      
КонецФункции

Процедура ЗагрузитьИзЕкселНажатие(Элемент)
тзДанных = ПолучитьФорму("ФормаЗагрузкиИзExcel").ОткрытьМодально();
//ТЗ получили, загружаем:
ГрафикПлатежейКлиент.Очистить();
Для Каждого стр из тзДанных Цикл 
нСтр = ГрафикПлатежейКлиент.Добавить();
нСтр.Дата = РазобратьДату(стр.К1);
нСтр.Сумма = стр.К2;
нСтр.СуммаАкта = стр.К3;
КонецЦикла;

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

Смысл в том что из Excel копируют таблицу:

Жмут на кнопку загрузить и в документе Табличная часть заполняется автоматически:


Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq8/view/1687.html