1С 8.3 Заполнить таблицу значений на основе строки - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Заполнить таблицу значений на основе строки

Данные > Примеры кода 1С > 1С 8.3 Таблица значений
Позволяет в коде не используя макеты заполнить ТЗ на основе текстовой таблицы с отступами в 1С 8.3:
// Возвращает таблицу значений на основе текста (формат в примере использования).
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/11
//
// Параметры:
//  Текст - Строка
//
// Возвращаемое значение:
//  ТаблицаЗначений
//
// Пример:
//     Содержимое =
//     "Фамилия             |Имя                 |Отчество
//               |
//               |Смирнов             |Александр           |Владимирович
//               |Иванова             |Мария               |Петровна
//               |Кузнецов            |Дмитрий             |Александрович";
//
//     Таблица = ТаблицаЗначенийИзСтроки(Содержимое);
//     //Таблица будет содержать 3 колонки Фамилия, Имя, Отчество и 3 строки
//
Функция ТаблицаЗначенийИзСтроки(Знач Текст) Экспорт

   Таблица = Новый ТаблицаЗначений();
   ЗаполнитьТаблицуЗначенийИзСтроки(Текст, Таблица, Истина);

   Возврат Таблица;

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

// Заполнить таблицу значений из строки (формат в примере использования)
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/11
//
// Параметры:
//  Текст   - Строка
//  Таблица - ТаблицаЗначений, Неопределено - Таблица или переменная, в которую она будет помещена
//  ДополнятьКолонками - Булево - Нужно ли дополнять колонками таблицу
//
// Пример:
//     Содержимое =
//     "Фамилия             |Имя                 |Отчество
//               |
//               |Смирнов             |Александр           |Владимирович
//               |Иванова             |Мария               |Петровна
//               |Кузнецов            |Дмитрий             |Александрович";
//
//     Таблица = Новый ТаблицаЗначений();
//     Таблица.Колонки.Добавить("Фамилия");
//     Таблица.Колонки.Добавить("Имя");
//
//     ЗаполнитьТаблицуЗначенийИзСтроки(Содержимое, Таблица, Истина);
//     //Таблица будет содержать 3 колонки Фамилия, Имя, Отчество и 3 строки
//
Процедура ЗаполнитьТаблицуЗначенийИзСтроки(Знач Текст, Знач Таблица = Неопределено, Знач ДополнятьКолонками = Ложь) Экспорт

   Если Таблица = Неопределено Тогда
       Таблица = Новый ТаблицаЗначений();
   КонецЕсли;

   ЧислоСтрок   = СтрЧислоСтрок(Текст);
   ИменаКолонок = Новый Массив; // Массив из Строка
   Разделитель  = "          |";

   Для НомерСтроки = 1 По ЧислоСтрок Цикл

       СтрокаТекста = СтрПолучитьСтроку(Текст, НомерСтроки);
       Если ПустаяСтрока(СтрокаТекста) Тогда
           Продолжить;
       КонецЕсли;

       ЧастиСтроки = СтрРазделить(СтрокаТекста, Разделитель, Истина);
       ЗаполненыКолонки = ЗначениеЗаполнено(ИменаКолонок);

       Если ЗаполненыКолонки Тогда
           СтрокаТаблицы = Таблица.Добавить();
       КонецЕсли;

       Для ИндексЧасти = 0 По ЧастиСтроки.Количество() - 1 Цикл
           ЧастьСтроки = СокрЛП(ЧастиСтроки[ИндексЧасти]);
           Если ПустаяСтрока(ЧастьСтроки) Тогда
               Продолжить;
           КонецЕсли;

           Если ЗаполненыКолонки Тогда
               СтрокаТаблицы[ИменаКолонок[ИндексЧасти]] = ЧастьСтроки;
           Иначе
               ИменаКолонок.Добавить(ЧастьСтроки);
               Если ДополнятьКолонками И Таблица.Колонки.Найти(ЧастьСтроки) = Неопределено Тогда
                   Таблица.Колонки.Добавить(ЧастьСтроки, Новый ОписаниеТипов("Строка"));
               КонецЕсли;
           КонецЕсли;
       КонецЦикла;

   КонецЦикла;

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


// MIT License
// Copyright (c) 2024 SeiOkami
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files
// (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify,
// merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:

// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
Результат:
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 20.10.2023
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому