Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа с ТаблицейЗначений на форме обработки
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Pavlik1c
Имеется:
"Управление производственным предприятием для Украины", редакция 1.3
Разработка конфигурации: "ABBYY Ukraine", 2005-2016 (1.3.45.1) (http://1c.ua/v8/RegionalSolutions_UA_UPP.php)
Copyright © ООО "1C", 2005-2016
(http://www.1c.ru/)
"Обычное приложение".

На форме обработки расположено табличное поле: "тзВременная"(ТаблицаЗначений) - в нее импортируются данные из xls.файла (только одна колонка).
Необходимо преобразовать данную "тзВременная" в "тзТаблица" - как на картинке...
sava1
Преобразую.
twilight_dream
Написать конечный автомат распознавания. Или поделить функциями эксель чтобы в одной колонке была одна сущность, затем программно без проблем загрузить.
Mularik
Предположим, что данные уже загружены в ТабличноеПоле1. Результат поместим в ТабличноеПоле2.
Процедура КнопкаВыполнитьНажатие(Кнопка)
    ТабличноеПоле2.Очистить();
    
    НС=1;
    Счетчик =  ТабличноеПоле1.Количество() - 1;

    Пока Счетчик > 0 Цикл      
        
        ОбработкаПрерыванияПользователя(); //указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break
                    
        Если НЕ ПустаяСтрока(ТабличноеПоле1[НС].Данные) Тогда
            
                                       НоваяСтрока = ТабличноеПоле2.Добавить();
                            
            ТекущееЗначение = Сред(ТабличноеПоле1[НС].Данные,12,3);
            ИмяКолонки = "Контракт";             
            НоваяСтрока[ИмяКолонки] = ТекущееЗначение;
                    
            ТекущееЗначение = Прав(ТабличноеПоле1[НС].Данные,11);
            ИмяКолонки = "Телефон";             
            НоваяСтрока[ИмяКолонки] = ТекущееЗначение;
                
            ДлСтр2 = СтрДлина(ТабличноеПоле1[НС+1].Данные);
            Стр2 =  ТабличноеПоле1[НС+1].Данные;
            ТекущееЗначение = Лев(Прав(Стр2,ДлСтр2-17),СтрДлина(Прав(Стр2,ДлСтр2-17))-1);
            ИмяКолонки = "Пакет";             
            НоваяСтрока[ИмяКолонки] = ТекущееЗначение;
                
            ТекущееЗначение = Лев(Прав(ТабличноеПоле1[НС+2].Данные,7),3);
            ИмяКолонки = "Цена";             
            НоваяСтрока[ИмяКолонки] = ТекущееЗначение;
                
            НС = НС+3;
            Счетчик = Счетчик - 3;    
            
        Иначе
            НС = НС + 1;
            Счетчик = Счетчик - 1;
            Продолжить;
            
        КонецЕсли;
                
    КонецЦикла;
    
    ЭлементыФормы.ТабличноеПоле2.Значение = ТабличноеПоле2;
              ЭлементыФормы.ТабличноеПоле2.СоздатьКолонки();

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

Нужно учесть, что данный код будет работать корректо только на данном примере, т.к. если, например, данные ВАРТІСТЬ ПАКЕТА/ЩОМІСЯЧНА ПЛАТА будут с копейками, то результат будет неверным. Для этого необходимо более сложный алгоритм разбора строки. Либо при заполнении исходного файла предусмотреть точное форматирование данных (писать не 100 грн, а всегда 100,00 грн. и т.д.)

необходимо зарегистрироваться для просмотра ссылки
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.