KoderLine
Обслуживание
и внедрение
+7 (495) 374 55 29 Обратный звонок

Статьи экспертов

Полезная информация

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

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

1
1392
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С ООО «Кодерлайн»

 
 


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
Добавить комментарий
Текст сообщения*
Защита от автоматических сообщений
 
Теги
#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С: УХ #ADO #APACHE #API #com-объекты #Excel #GoogleDrive #HTTP #Koderline: Управление медиа-холдингом #Koderline: Управление проектами строительства скважин #LINUX #MS SQL Server #WEB #WEB-сервисы 1С #Word #XML #Администрирование 1С #Безопасность сервера #Бесшовная интеграция #БИТ.Финанc #Битрикс24 #Блокировки в 1С #БСП #БУ #Бурение скважин #Бюджетирование #Внедрение #Внедрение ERP #Закрытие месяца #Запросы 1С #Интеграция 1С #Как сделать в 1С #Конвертация данных #Корпоративное сопровождение #Лизинг #Лицензии 1С #Моделирование #МСФО #Налоги #Обмен между базами #Обновления #Оптимизация #Отпуск #Отчетность #Отчеты в 1С #Оценка задач #Перенос данных #Планирование #Полезные обработки #Правила обмена #Проводки 1С #Программирование в 1С #Программные права #Продажи #Производство #Расширение конфигурации #РСБУ #СКД #Сравнение конфигураций #Тестирование 1С #Техническое задание #Торговое оборудование #Транспортная логистика #Управление проектами #Финансовый учет #Ценообразование #Экзамен 1С #Яндекс.Касса
Услуги программиста 1С
Получите специалиста  
для решения всех задач
в области 1С
Программы 1С
Цены и подробное описание программ 1С:Предприятие 8.
Яндекс.Метрика