Имя: Пароль:
IT
 
Как из массива данных взять информацию?
🠗 (PR 29.09.2011 10:37)
,
0 Blakangelos
 
29.09.11
10:28
Как из массива данных взять информацию номер,инн,Имя Фамилия и т.д и переносить в справочник физические лица.
Code
Процедура КнопкаВыполнитьНажатие(Кнопка)
   // Вставить содержимое обработчика.
КонецПроцедуры

Процедура ИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка)
        // Отключение стандартной обработки
    СтандартнаяОбработка = Ложь;
   
    // Выбор файла Microsoft Excel
    ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ВыборФайла.Фильтр = "Документ Excel (*.txt)|*.txt";
    ВыборФайла.ПроверятьСуществованиеФайла = Истина;
    ВыборФайла.ПолноеИмяФайла = ИмяФайла;
    Выбор = ВыборФайла.Выбрать();
    Если НЕ Выбор Тогда
       
        Возврат;
       
    КонецЕсли;
   
    ИмяФайла = ВыборФайла.ВыбранныеФайлы[0];

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

Процедура ЧтениеТХТФайла(Элемент)
   
   // Проверка на наличие имени файла
   Если ПустаяСтрока(ИмяФайла) Тогда
       Предупреждение("Для запуска обработки необходимо предварительно выбрать файл данных.");
       Возврат;
   КонецЕсли;
   
   // Открыть файл, создать текстовый документ, прочитать
   ПотокСтрок = ПолучитьПотокЧтенияСтрок(ИмяФайла);
   
   // Очистить предыдущие значения
   ТаблицаДокумента.Очистить();
   ТаблицаДокумента.Колонки.Очистить();
   
   // Создать колонки табличного документа
   ТаблицаДокумента.Колонки.Добавить("Номер",,"Номер",25);
   ТаблицаДокумента.Колонки.Добавить("ДатаСсоздания",,"ДатаСсоздания",25);
   ТаблицаДокумента.Колонки.Добавить("ДатаПроведения",,"ДатаПроведения",25);
   ТаблицаДокумента.Колонки.Добавить("СуммарнаяЦена",,"СуммарнаяЦена",25);
   ТаблицаДокумента.Колонки.Добавить("ССС",,"ССС",25);
   ТаблицаДокумента.Колонки.Добавить("ФФФ",,"ФФФ",25);
   ТаблицаДокумента.Колонки.Добавить("ЫЫЫ",,"ЫЫЫ",25);
   ТаблицаДокумента.Колонки.Добавить("й",,"й",25);
   ТаблицаДокумента.Колонки.Добавить("йй",,"йй",25);
   ТаблицаДокумента.Колонки.Добавить("ЫЫчЫ",,"ЫЫчЫ",25);
   ТаблицаДокумента.Колонки.Добавить("ЫЫччЫ",,"ЫЫччЫ",25);
   ТаблицаДокумента.Колонки.Добавить("ЫЫчччЫ",,"ЫЫчччЫ",25);
   ТаблицаДокумента.Колонки.Добавить("ЫЫччччЫ",,"ЫЫччччЫ",25);
   ТаблицаДокумента.Колонки.Добавить("ЫЫчччччЫ",,"ЫЫчччччЫ",25);
   ТаблицаДокумента.Колонки.Добавить("ЫЫччччччЫ",,"ЫЫччччччЫ",25);
   ТаблицаДокумента.Колонки.Добавить("ЫЫчччччччЫ",,"ЫЫчччччччЫ",25);
   ТаблицаДокумента.Колонки.Добавить("ЫЫччччччччЫ",,"ЫЫччччччччЫ",25);
   ТаблицаДокумента.Колонки.Добавить("ЫЫяЫ",,"ЫЫяЫ",25);
   ТаблицаДокумента.Колонки.Добавить("ЫЫяяЫ",,"ЫЫяяЫ",25);
   ТаблицаДокумента.Колонки.Добавить("ЫЫяяяЫ",,"ЫЫяяяЫ",25);
   ТаблицаДокумента.Колонки.Добавить("ЫЫяяяяЫ",,"ЫЫяяяяЫ",25);
   ТаблицаДокумента.Колонки.Добавить("ЫЫяяяяяЫ",,"ЫЫяяяяяЫ",40);
   ТаблицаДокумента.Колонки.Добавить("ЫЫфЫ",,"ЫЫфЫ",70);
   //ТаблицаДокумента.Колонки.Добавить("ЫЫффЫ",,"ЫЫффЫ",70);
   //ТаблицаДокумента.Колонки.Добавить("ЫЫфффЫ",,"ЫЫфффЫ",70);
   //ТаблицаДокумента.Колонки.Добавить("ЫЫффффЫ",,"ЫЫффффЫ",25);
       
   
   

   // Последовательное чтение строк текстового файла
   КоличествоСтрок = ПотокСтрок.КоличествоСтрок();
   Для Строка = 1 По КоличествоСтрок Цикл
               
       // Обработка нажатия Ctrl + Break
       ОбработкаПрерыванияПользователя();
       
       // Чтение строки из файла тхт / csv
       СтрокаИзФайла = ПотокСтрок.ПолучитьСтроку(Строка);
       
       // Разбор строки в массив, используя в качествен символа-разделителя "|"
       МассивСтрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СтрокаИзФайла,";");
       
       // Добавить данные в табличную часть экранной формы
       Стр=ТаблицаДокумента.Добавить();
       Стр.Номер                = Строка;
       Стр.ДатаСсоздания        = МассивСтрок[0];
       Стр.ДатаПроведения        = МассивСтрок[2];
       СТр.ЫЫччЫ                = МассивСтрок[9];
       Стр.СуммарнаяЦена        = МассивСтрок[1];
       СТр.ССС                    = МассивСтрок[3];
       СТр.ФФФ                    = МассивСтрок[4];
       СТр.ЫЫЫ                    = МассивСтрок[5];
       СТр.й                    = МассивСтрок[6];
       СТр.йй                    = МассивСтрок[7];
       СТр.ЫЫчЫ                    = МассивСтрок[8];
       СТр.ЫЫчччЫ                    = МассивСтрок[10];
       СТр.ЫЫччччЫ                    = МассивСтрок[11];
       СТр.ЫЫчччччЫ                    = МассивСтрок[12];
       СТр.ЫЫччччччЫ                    = МассивСтрок[13];
       СТр.ЫЫчччччччЫ                    = МассивСтрок[14];
       СТр.ЫЫччччччччЫ                    = МассивСтрок[15];
       СТр.ЫЫяЫ                    = МассивСтрок[16];
       СТр.ЫЫяяЫ                    = МассивСтрок[17];
       СТр.ЫЫяяяЫ                    = МассивСтрок[18];
       СТр.ЫЫяяяяЫ                    = МассивСтрок[19];
       СТр.ЫЫяяяяяЫ                    = МассивСтрок[20];
       СТр.ЫЫфЫ                    = МассивСтрок[21];
       //СТр.ЫЫффЫ                    = МассивСтрок[22];
       //СТр.ЫЫфффЫ                    = МассивСтрок[23];
       //СТр.ЫЫффффЫ                    = МассивСтрок[24];
               
       // Отобразить информацию о ходе выполнения обработки
       Состояние("Обработка строки файла : "
        + "строка " + Строка + " из " + КоличествоСтрок);
       
    КонецЦикла;
   
    // Отобразить результаты загрузки в форме элемента
    ЭлементыФормы.ТаблицаДокумента.Значение = ТаблицаДокумента;
    ЭлементыФормы.ТаблицаДокумента.СоздатьКолонки();
   
КонецПроцедуры // ЧтениеTXTФайла(Элемент)

// Функция "расщепляет" строку на подстроки, используя заданный
//        разделитель. Разделитель может иметь любую длину.
//        Если в качестве разделителя задан пробел, рядом стоящие пробелы
//        считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр
//        игнорируются.
//        Например,
//        РазложитьСтрокуВМассивПодстрок(",ку,,,му", ",") возвратит массив значений из пяти элементов,
//        три из которых - пустые строки, а
//        РазложитьСтрокуВМассивПодстрок(" ку   му", " ") возвратит массив значений из двух элементов
//
//    Параметры:
//        Стр -            строка, которую необходимо разложить на подстроки.
//                        Параметр передается по значению.
//        Разделитель -    строка-разделитель, по умолчанию - запятая.
//
//
//    Возвращаемое значение:
//        массив значений, элементы которого - подстроки
//
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт
   
   МассивСтрок = Новый Массив();
   Если Разделитель = " " Тогда
       Стр = СокрЛП(Стр);
       Пока Истина Цикл
           Поз = Найти(Стр,Разделитель);
           Если Поз=0 Тогда
               МассивСтрок.Добавить(Стр);
               Возврат МассивСтрок;
           КонецЕсли;
           МассивСтрок.Добавить(Лев(Стр,Поз-1));
           Стр = СокрЛ(Сред(Стр,Поз));
       КонецЦикла;
   Иначе
       ДлинаРазделителя = СтрДлина(Разделитель);
       Пока Истина Цикл
           Поз = Найти(Стр,Разделитель);
           Если Поз=0 Тогда
               МассивСтрок.Добавить(Стр);
               Возврат МассивСтрок;
           КонецЕсли;
           МассивСтрок.Добавить(Лев(Стр,Поз-1));
           Стр = Сред(Стр,Поз+ДлинаРазделителя);
       КонецЦикла;
   КонецЕсли;
   
КонецФункции // глРазложить

Функция ПолучитьПотокЧтенияСтрок(Файл)
   Попытка
       // Используется для доступа к параметрам файлов или каталогов.
       ТекстовыйФайл = Новый Файл(Файл);
       Если ТекстовыйФайл.Существует() = Ложь Тогда
           Сообщить("Файла "+Файл+" не существует!");
           Возврат Неопределено;
       КонецЕсли;
       // Текстовый документ предназначен для работы с текстами.
       // Объект позволяет получать и сохранять текст в файле,
       // работать со строками
       ПотокЧтенияСтрок = Новый ТекстовыйДокумент();
       ПотокЧтенияСтрок.Прочитать(Файл);
   Исключение
       Сообщить("Файл не прочитан.", СтатусСообщения.Внимание);
       Сообщить(ОписаниеОшибки());
       Возврат Неопределено;
   КонецПопытки;
   // Возвращает текст, извлеченный из файла
   Возврат ПотокЧтенияСтрок;
КонецФункции // ПолучитьПотокЧтенияСтрок
1 Jstunner
 
29.09.11
10:29
поле, за полем
2 Пол Ньюман
 
29.09.11
10:29
Спасибо, очень ценная и полезная информация, сильно не хватало в работе. Оставьте веб-кошелек, скину 100 евро в знак благодарности
3 zak555
 
29.09.11
10:30
использовать серелизацию ?
4 PR
 
29.09.11
10:30
(0) Это вопрос или ответ?
5 Blakangelos
 
29.09.11
10:31
Вопрос
6 Blakangelos
 
29.09.11
10:33
у меня есть таблица и как от туда брать данные и ложить в новый созданный элемент справочника физические лица.
7 PR
 
29.09.11
10:33
(6) А что говорит документация?
8 Blakangelos
 
29.09.11
10:33
???
10 Blakangelos
 
29.09.11
10:34
тоесть?
11 poligraf
 
29.09.11
10:34
(6) ты применительно к 1С или вообще?
Вообще - Вирт, очень доступно про массивы, сортировки и т.д. написал.
Жду 100 евро
12 Goggy
 
29.09.11
10:34
(7) Ашоито? )
13 PR
 
29.09.11
10:35
(8) Ты с полом-то определилось, создание?
14 zak555
 
29.09.11
10:35
Пол: Женский
15 andrewks
 
29.09.11
10:35
могу только одно сказать:

ЫЫффЫ
16 zak555
 
29.09.11
10:35
(13) так я всё верно изложил
17 SeraFim
 
29.09.11
10:35
(11) предлагаешь вирт за 100 евро???))
18 Blakangelos
 
29.09.11
10:36
что сложно подсказать?
19 Goggy
 
29.09.11
10:36
тяпница близиццо :)
20 poligraf
 
29.09.11
10:36
(17) Школьники...
(18) так вопроса не было
21 PR
 
29.09.11
10:36
(18) Подсказываю. Тебе нужно начать читать документацию. С самого начала.
22 Goggy
 
29.09.11
10:38
(21) ну судя по ёлочкам, которые он текстом рисует ему на количество строк платят, так что документация только уменьшит ему з/п :)
23 PR
 
29.09.11
10:38
(18) Ты смотри, с девушек обычно просят фото вперед :))
24 andrewks
 
29.09.11
10:38
ответ на сабж:

ИмяМас[Индекс]
25 sda553
 
29.09.11
10:39
Для ы=1 по МассивСтрок.Количество()-1 Цикл
  Стр[ТаблицаДокумента.Колонки[ы].Имя]=МассивСТрок[ы];
КонецЦикла;
26 poligraf
 
29.09.11
10:40
(25) "Для Каждого" более кошерно:)
27 andrewks
 
29.09.11
10:40
(25) почему с единицы?
28 sda553
 
29.09.11
10:41
(27) недоспал потому что, с нуля конечно
29 Blakangelos
 
29.09.11
10:59
Для ы=1 по МассивСтрок.Количество()-1  объясните первую строчку не пойму ???
30 Blakangelos
 
29.09.11
11:00
АУ есть живые?
31 Blakangelos
 
29.09.11
11:03
1     2       3
A- Имя |Фамилия|Отчество
B- DEn |Denisov|Denisovic
C- Ivan|Ivanovi|Ivanov
32 Blakangelos
 
29.09.11
12:06
НАРОД ПОМОГИТЕ АУУУУУУ
33 poligraf
 
29.09.11
12:36
(29) Что там не понятно?
Конструкция цикла?
Или почему "ы" должно быть равно 0?
34 Blakangelos
 
29.09.11
13:53
да почему Ы=0???