Реализация и использование функции Split в 1С
-

Реализация и использование функции Split в 1С

1
6604
31.03.2016 Сергей Семенов
  При обработке данных довольно частой является задача разбора текстовой строки на отдельные поля по разделителю. В таких языках как Java, VBA, PascalABC для этого существует специальная функция Split(Строка, Разделитель). В 1С такой функции нет, хотя было бы полезно для единообразия с упомянутыми языками такую функцию использовать, тем более что набор функций для работы со строками в этих языках, включая 1С, практически совпадает. В 1С еще нет функции Reverse, но на практике она в общем-то не нужна (в учебных задачах по программированию используется довольно часто).  
     
  Код для функции Split может быть, например, таким:  
     
 
Функция Split(Стр, Разделитель) Экспорт
       м=Новый Массив;
       с=СтрЗаменить(СокрЛП(Стр), Разделитель, Символы.ПС);
       Для к=1 По СтрЧислоСтрок(с) Цикл
              Слово= СокрЛП(СтрПолучитьСтроку(с,к)); //Заодно
               // убрать лишние пробелы
               Если СтрДлина(Слово)>0 Тогда //См. примечание
                      м.Добавить(Слово);
               КонецЕсли;
        КонецЦикла;
        Возврат м;
КонецФункции
 
  Примечание: Эта проверка не нужна, если пустые строки тоже нужно возвращать. Например, такая ситуация может быть при преобразовании данных Excel в текстовый формат (это может понадобиться в том случае, когда на клиенте не установлен Microsoft office, например, при удаленном доступе по RDP). Отметим, что в этом случае в качестве разделителя используется значение Символы.Таб. Напомним, что сохранение книги Excel программным способом на VBA может быть выполнено, например, следующим образом  
     
 
ActiveWorkbook.SaveAs Filename:=ИмяФайла,
FileFormat:=xlText,
CreateBackup:=False
 
  Наиболее частым примером использования функции Split может служить разбор даты.  
     
 
М = Split(СтрокаДаты, «.»);
       Попытка
               Дат = ДАТА(Число(М[2]), Число(М[1]), Число(М[0]));
        Исключение
               Дат = ДАТА (1, 1, 1);
        КонецПопытки;    
 
     
  На практике полезно иметь не одну, а несколько функций Split, в зависимости от задач. Например, для задач типа выделения из строки фамилии, имени и отчества, разделенных одним или несколькими пробелами, можно написать функцию SplitB с пробелом в качестве разделителя. Для этой задачи подойдет функция, код которой приведен выше (только в этом случае не требуется убирать лишние пробелы – они и так будут удалены). Тогда код функции может быть следующим:  
     
 
Функция SplitB(Стр) Экспорт
            м=Новый Массив;
            с=СтрЗаменить(СокрЛП(Стр), « », Символы.ПС);
            Для к=1 По СтрЧислоСтрок(с) Цикл
                        Слово= СтрПолучитьСтроку(с,к);
                        Если СтрДлина(Слово)>0 Тогда
                                   м.Добавить(Слово);
                        КонецЕсли;
            КонецЦикла;
            Возврат м;
КонецФункции 
 
  Нужно сказать, что в языке Java возвращаемый массив будет содержать пустые строки, если в исходной строке подряд встречаются несколько пробелов. Поэтому наличие собственной функции позволяет более гибко настраивать разбор строки на поля  
     
  Еще один вариант функции Split может потребоваться для выделения полей из строки и преобразования их в числовые значения. Вот код соответствующей функции:   
     
 
Функция SplitN(Стр, Разделитель) Экспорт
            м=Новый Массив;
            с=СтрЗаменить(СокрЛП(Стр), Разделитель, Символы.ПС);
            Для к=1 По СтрЧислоСтрок(с) Цикл
                        Слово= СокрЛП(СтрПолучитьСтроку(с,к)); //Заодно
                        // убрать лишние пробелы
                        Если СтрДлина(Слово)>0 Тогда

                              Если ТипЗнч(Слово) = Тип(«Число») Тогда
                                        м.Добавить(Число(Слово));
                              КонецЕсли;  

                        КонецЕсли;
             КонецЦикла;
             Возврат м;

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

 
  Интересным вариантом применения функции SplitN является следующий: допустим, требуется задать начальные значения массива М. Обычно для этого нужно написать, например,
 
 
 
М = Новый Массив(N);
М[0] = 1;
М[1] = 7;
. . . . .
М[N – 1] = 55;
  
 
  С помощью функции SplitN это можно сделать следующим образом  
     
 
С = «1,7,. . . . .,55»;
М = SplitN(С, «,»);
  
 
  Такой вариант задания начальных значений более компактен и напоминает способы, применяемые в упомянутых выше языках, когда начальные значения просто перечисляются через запятую.        
  В примере по заполнению даты мы использовали функцию ДАТА. Заодно покажем способ определения названия месяца по его номеру. Задача не новая, но использование функции ДАТА делает его более компактным и наглядным:    
     
 
НазваниеМесяца = формат(ДАТА(2, НомерМесяца, 1), «ДФ=MMMM»);
 
 
  Год (или день) должен быть отличным от 1, иначе для января получится пустая дата и название месяца будет пустым.

Если есть вопросы по реализации и использованию функции Split в 1С - обращайтесь!  
 
 

Сергей Семенов,
     разработчик 1С ООО «Кодерлайн»

 
 

Задать вопрос автору статьи
Тема вопроса*
Ваше имя*
E-mail или телефон*
Ваш вопрос*
 

0
Guest
replica christian louboutin heels when choosing your wedding shoes.Nicholas Kirkwood shoes the shoes that fit your feet well. Don't buy shoes that makes your feet dance christian louboutin glitter pumpsor shoes that make your feet squeeze. Christian Louboutin for you tomoncler outlet walk down the islegiuseppe zanotti with comfort.Christian Louboutin Asteroid your wedding dress. Avoid shoes that is perfectly unmatched the design of your dress.Buy Marlboro cigarettes online Don't just buy because it is expensive and of good style.christian louboutin studded pumps the right height of heelsmarlboro outlet.Outsmart those around you by beingchristian louboutin stores bold enough to purchase women's valentino outletdesigner foot wear on the christian louboutin replica where prices arevalentino replica less and shipping is Giuseppe Zanotti Sneakers outlet Why wait for promoted sales to go into effect in order to find the fashion designer Giuseppe Zanotti Sneakers shoes that you are searching for?christian louboutin knockoffs by its designer so that you can get the comfortable and exclusive realm. The knowledge of night clubs in fake christian louboutintheir teenage influenced on his design style.Giuseppe Zanotti online He commonly used bright colorsreplica louboutin shoes to appear femininemarlboro cigarettesin red soles. It's no wonder manyGiuseppe Zanotti Sneakers celebritiesGiuseppe Zanotti Boots are readily to dicuss for him ormoncler factory outlet her at noChristian Louboutin Isolde 20ans Specchio Laminato Black cost of charge. christian louboutin glitter heelsThe intelligence will be the sign ofChristian Louboutin Dafsling Glittery Leather Slingback Platform. As a matter of fact,replica christian louboutin the styles of christian louboutin heels are widely for different seasons. It is for winter and you can see many female wear it when you Giuseppe Zanotti Sneakers onlineare walking on the streets, Giuseppe Zanotti Sneakers is prepared forvalentino shoes season.It can't solve serious social problem, and can only be satisfied to accept capital strengthChristian Louboutin Highness 160mm Aurora Colorful Pumps, that American capitalism Giuseppe Zanotti sale society, andchristian louboutin narcissus pumps thinks that the marketgiuseppe zanotti outlet economy can regulate itself, said the government to market economy without intervention, replica christian louboutin pumpsso as to let people, market and society for maximum degree of freedom, but in fact,christian louboutin daffodil pumps the governmentGiuseppe Zanotti Wedge Sneakers and finance consortium but there is avalentino outlet ashamed of moncler outlet store sunshine,Giuseppe Zanotti Boots When the Buy Marlboro cigarettes the government can to call for people to buygiuseppe zanotti to give up the credit,giuseppe zanotti shoes make a review lenders nothing down, interestchristian louboutin spiked heels, thus let Wall Street up flight financial derivatives moncler outlet online, make the financial bubble and false prosperity. replica louboutin pumpsOccupation Wall Street movement ofmoncler replica the protesters might yield, event will calm, all the big Moncler CLEARANCE cities of the square will soon be attributed to calm, but even so, people can also believe, piumini moncler occupation Wall Street protests knocked on the American capitalism ofMoncler doudoune. A minority of themoncler outlet online store system in order to service is nohttp :/ /www.moncleroutletnyc.com.
Имя Цитировать 0
Добавить комментарий
Текст сообщения*
Защита от автоматических сообщений
 
Теги
# абота Риелторского Агентства # Управление торговлей 11 #Работа Риелторского Агентства # 1C # CRM-система # Cинтаксис-помощник # Cинхронные методы работы # PDF документами # PowerShell # XML-файл # Бизнес-процесс # Глубина анализа # Графические объекты # Динамический список # Документ заполнен # Документ Отбор (размещение) товаров # Документ Отгрузка товаров ИС МП # Документ Приобретение товаров и услуг # Документ УПД # Доступ на ТСД # ДтКт # ЕАЭС # Закладка Администрирование # Зарплата и кадры # Имя таблицы # ИТС # Кабель NYM(Севкабель) 3x5.5 # Книга учета доходов и расходов # Курс валюты # Лицо с правом подписи # Лицо, имеющее право подписи документов # Маркировка цифровыми кодами # Минимальные цены продажи в 1С # Настройка НСИ и разделов # Настройка ценообразования # НДФЛ # Нематериальные активы # Обмен электронными документами # Оплата через банк # Основное ответственное лицо организации # Перемещение ТС и оборудования # Проведение инструктажа # Продажи или Закупки # Прочие доходы # Пункт Подключить обработки # Пункт Сервис # ПФР и ФФОМС # Работа ТС # Расчет налога УСН # Расчетные счета # Система «Честный знак» # Система GS1 # Списание на расходы # Справка-расчет налога УСН # Страховые взносы # Таблица формы # Таблица формы «Сотрудники» # Товары # Установка цен на товары # Формат Цифровой Маркировки # Функция Дата # Функция ДеньГода # Функция ДеньНедели # Центральный Банк России # Цены номенклатуры 2.5 # Элементы #1.6-НДФЛ #1С Бухгалтерия #1С: CRM #1С: ERP #1С: ERP Управление строительной организацией #1С: ERP. Управление буровой компанией #1С: WMS Управление складом #1С: Аренда и управление недвижимостью #1С: БУХ #1С: Договорчики #1С: Документооборот #1С: ЗУП #1С: Интеграция #1С: КА #1С: Колледж #1С: Конвертация данных #1С: Модули #1С: Платформа #1С: Предприятие #1С: Розница #1С: Сценарное тестирование #1С: ТОИР #1С: УАТ #1С: УКФ #1С: Университет #1С: УНФ #1С: УПП #1С: Управление строительной организацией #1С: УТ #1С: УХ #1С:ERP #1С:БГУ #1С:БП #1С:Риелтор #1С:Управление холдингом #1С.6-НДФЛ #ADO #APACHE #API #canonical #com-объекты #Cправочник БИК #Excel #Excel в 1С #GoogleDrive #Googleаккаунт #HTTP #ITIL #Koderline: Управление медиа-холдингом #Koderline: Управление проектами строительства скважин #LINUX #MS SQL Server #PDF #WEB #WEB-сервисы 1С #Word #WS-ссылки #XDTO-объект #XML #XML-обмен #Администрирование 1С #Адрес URL описания #акты в 1С #Банковские счета #Безопасность сервера #Бесшовная интеграция #БИТ.Финанc #Битрикс24 #Блокировки в 1С #БСП #БУ #Бурение скважин #Бухгалтерская отчётность в МСФО #Бюджетирование #Вид Характеристики #Вкладка Документы #Внедрение #Внедрение ERP #Внешний вид формы #Выбор каталога #Выбранные файлы #Документ Отпуск #Документ1 #Журналы #Загрузить Значения #Загрузка цен в 1С #Задача для 1С #Закладка Торговля #Закрытие месяца #Заменить #Запись регистра сведений #Запросы 1С #Интеграция 1С #Интервал dpi #История пользователя #Кадровые документы #КАК ОТРАЖАЮТСЯ ТОВАРЫ В ПУТИ 1С #Как сделать в 1С #Карточка Объекта недвижимости #Классификаторы и курсы валют #Клиент-серверная схема #Код ЦМТ #Конвертация данных #Контроль документов #Конфигурация 1С #Конфигурация 1С ЗУП 3.1 #Копирование настроек пользователей #Корпоративное сопровождение #Лизинг #Лицензии 1С #Лицензионный договор #Личные документы #Массив Номенклатур #Массовая регистрация отгулов #Меню Отчет #Механизм Анализа Данных в 1С #Моделирование #Модуль Диадок #МРОТ #МСФО #Налоги #Начисления Арендной платы #Новый Массив #Обмен между базами #Обновления #Общие ознакомительные рассылки #Операции в 1С #Оптимизация #Организация #Отпуск #Отчетность #Отчеты в 1С #Оформление перевода работника #Оценка задач #Параметр «Количество» #Партнер #Передача неисключительных прав #Перенос данных #Перенос цен из Excel в 1С #Периодичность ДЕНЬ #Периодичность МЕСЯЦ #Печатная форма документа #Планирование #Поле Ввода Значение Субконто #Полезные обработки #Пользовательский режим #Правила обмена #предопределенные элементы справочников #Прием на работу #Принцип работы 1С #Проводки 1С #Программа 1С #Программирование в 1С #Программные права #Продажа ТМЦ #Продажи #Продление #Производство #Просмотр #Путь к файлу #Работа с объектами в 1С #Раздел Справочники #Расторжение #Расчет зарплаты #Расчетные документы #Расширение конфигурации #Регламентированная отчетность #Режим РИБ #Результаты поиска #Реквизит «СпЗнч» #РСБУ #С # #Сдельный заработок #Сервис-деск #СЗВ-СТАЖ #СКД #Служба ИТ #Служба НСИ #Соединение COM в 1С платформе #Соединение СОМ в 1С платформе #Сравнение конфигураций #Счет-фактура #Текущая Строка #Территориальная привязка #Территориальные рамки #Тестирование 1С #Техническое задание #Типы данных ссылки #Торговое оборудование #Транспортная логистика #Управление проектами #Установка цен номенклатуры #Финансовый учет #Формат MicrosoftExcel #Функционал МРМ #Х-точка #Характеристики Товаров #Хранилище настроек #Хранить историю изменений #Ценообразование #Чтение #Экзамен 1С #электронные подписи #Яндекс-диск или Google-диск #Яндекс.Касса 1С под Linux 1С:УНФ Email или телефон Работа с объектами в 1С Функциональные опции в 1С
Услуги программиста 1С
Получите специалиста  
для решения всех задач
в области 1С
Программы 1С
Цены и подробное описание программ 1С:Предприятие 8.