Количество символов в строке 1С

Разберем основные вопросы преобразования типов в 1С 8.3: из строки в число, из числа в строку, из даты в число и прочие варианты. В этой статье мы рассмотрим функции преобразования значений, и я соберу в едино все варианты преобразования примитивных типов.

Строка в число в 1С

Узнаем, как в 1С 8.3 преобразовать строку в число.

Пусть, у нас есть числа в таком виде.

СтрокаЧ1 = "120";СтрокаЧ2 = "12.24";СтрокаЧ3 = "12,24";СтрокаЧ4 = "0,24";СтрокаЧ5 = "0000001";

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

Ч1 = Число(СтрокаЧ1);Ч2 = Число(СтрокаЧ2);Ч3 = Число(СтрокаЧ3);Ч4 = Число(СтрокаЧ4);Ч5 = Число(СтрокаЧ5);

Обратите внимание, что разделять дробную часть можно в строке как при помощи символа точка «.», так и при помощи символа запятая «,». Если перед каким-то числом в строке стоят нули, то они отсекаются. У нас будет следующий результат.

Строка в число в 1С

Число в строку в 1С

Рассмотрим обратную задачу, когда в 1С 8.3 нужно преобразовать число в строку. Самый простой вариант использовать метод Строка, который преобразует собственный параметр в строку.

Например:

Ч1 = 120;Ч2 = 12.24;Ч3 = 10000000000;СтрокаЧ1 = Строка(Ч1);СтрокаЧ2 = Строка(Ч2);СтрокаЧ3 = Строка(Ч3);Сообщить(СтрокаЧ1);Сообщить(СтрокаЧ2);Сообщить(СтрокаЧ3);

И какой результат возвращает этот код:

Число в строку в 1С

У этого способа имеется недостаток: он ставит пробелы между разрядами у длинных чисел. Для того, чтобы в 1С преобразовать число в строку без пробелов нужно воспользоваться функцией Формат. Данная функция имеет два параметра: преобразуемое значение и форматную строку. Если нам нужно указать, что число преобразуется в строку без пробелов в разряде, то необходимо указать в форматной строке, что порядок разделения группировки разрядов числа или равен 0, или пустой.

Ч1 = 10000000000;СтрокаЧ1 = Формат(Ч1,"ЧГ=");Сообщить(СтрокаЧ1);

Результат будет без разрядов:

число в строку без пробелов 1C

Строка в дату 1С

Узнаем, как преобразовать в 1С 8.3 строку в дату. Для этого необходимо использовать метод Дата, который преобразует параметр (в том числе строку ) в дату . Причем, замечу, что строка должна быть задана в таком формате «ГГГГММДДЧЧММСС».

Подробнее о форматах дат читайте в этой статье: даты в 1С.

Рассмотрим пример:

СтрокаД1 = "20120910";СтрокаД2 = "20120910121559";СтрокаД3 = "00010101121559";Дата1 = Дата(СтрокаД1);Дата2 = Дата(СтрокаД2);Дата3 = Дата(СтрокаД3);

И результат:

Строка в дату в 1С

Если мы зададим дату в не верном формате, то преобразование не произойдет и возникнет ошибка «Преобразование значения к типу Дата не может быть выполнено».

Например, этот код:

СтрокаД1 = "121559";Дата1 = Дата(СтрокаД1)

Приведет к ошибке:

Преобразование значения к типу Дата не может быть выполнено

Дата в строку в 1С

Преобразовать дату в строку можно несколькими способами. Первый способ: воспользоваться уже знакомым нам методом Строка.

Дата1 = Дата(2012,10,12);СтрокаД = Строка(Дата1);Сообщить(СтрокаД);

В этом случае у нас выйдет строка в обычном «полном» формате даты.

Дата в строку в 1С

А чтобы получить дату в том формате, в каком нам нужно, необходимо воспользоваться методом Формат.

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

Мы изменим предыдущий код, написав вместо метода Строка метод Формат, а в качестве второго параметра у метода Формат напишем просто две кавычки.

Дата1 = Дата(2012,10,12);СтрокаД = Формат(Дата1,"");Сообщить(СтрокаД);

После нужно между кавычками поставить курсор, вызвать контекстное меню, и применить в нем команду Конструктор форматной строки.

Конструктор форматной строки

В этом конструкторе на закладке Дата вы можете выбрать удобный вам формат даты.

Конструктор форматной строки

И после нажатия кнопки ОК этого конструктора, нужный формат появится в виде строки.

Дата1 = Дата(2012,10,12);СтрокаД = Формат(Дата1,"ДФ=dd/MM/yy");Сообщить(СтрокаД);

В результате метода Формат, дата будет преобразована в строку в том виде, в каком нам необходимо.

Дата в строку в 1С

Строка в булево в 1С

При помощи метода Булево мы можем некоторые строковые представления (Да, Нет, Истина, Ложь) преобразовывать в значения Истина или Ложь.

Например, следующие переменные:

стр_Да = Булево("Да");стр_Нет = Булево("Нет");стр_Истина = Булево("Истина");стр_Ложь = Булево("Ложь");

Будут иметь такие значения:

Строка в булево

Булево в строку в 1С

Разберем, как в 1С можно выразить тип булево строкой. Булево значение можно преобразовать в строку несколькими способами. Во-первых, можно просто воспользоваться методом Строка.

Например, как здесь:

б_Истина = Истина;б_Ложь = Ложь;СтрИстина = Строка(б_Истина);СтрЛожь = Строка(б_Ложь);Сообщить(СтрИстина);Сообщить(СтрЛожь);

У нас будет выходить следующий результат:

Булево в строку

В этом случае, булево в строку преобразовалось согласно региональным установкам информационной базы.

Если мы, как-то по-другому хотим преобразовать булево в строку, то можно воспользоваться уже знакомым нам методом Формат.

Переделаем, предыдущий код:

б_Истина = Истина;б_Ложь = Ложь;СтрИстина = Формат(б_Истина,"");СтрЛожь = Формат(б_Ложь,"");

Знакомым способом вызовем конструктор форматной строки, где на закладке Булево введем преставление значений Истина и Ложь.

Конструктор форматной строки Булево

После нажатия кнопки ОК конструктора, второй параметр метода Формат заполнится:

б_Истина = Истина;б_Ложь = Ложь;СтрИстина = Формат(б_Истина,"БЛ='Ни как нет'; БИ=Конечно");СтрЛожь = Формат(б_Ложь,"БЛ='Ни как нет'; БИ=Конечно");Сообщить(СтрИстина);Сообщить(СтрЛожь);

И будет следующий результат:

Булево в строку

Число в булево в 1С

В 1С 8.3. мы можем преобразовать любое число в булево по следующему правилу: 0 будет преобразован в Ложь, все остальные значения в Истина.

У этого кода:

б_Ложь = Булево(0);б_Истина = Булево(100000);

Будет следующий результат:

Число в булево в 1С

Булево в число в 1С

Можно сделать и обратное преобразование. Булево значение в число.

Для этого нужно воспользоваться методом Число, где в качестве параметра указать булево значение. Тогда Истина будет преобразована в 1С, а Ложь – в 0.

Например, как в этом коде:

б_Истина = Истина;б_Ложь = Ложь;ч_Истина = Число(б_Истина);ч_Ложь = Число(б_Ложь);

С таким результатом:

Булево в число

Статьи о примитивных типах в 1С:

Примитивный тип Строка

Примитивный тип Булево

Примитивный тип Дата

Примитивный тип Число

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси
  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog

Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.

можно оплатить вручную:

Строки в 1С 8.3 во встроенном языке 1с представляют собой значения примитивного типа Строка. Значения данного типа содержат строку в формате Unicode произвольной длины. Переменные строкового типа являются набором символов заключенных в кавычки.

Пример 1. Создадим строковую переменную с текстом.

СтроковаяПеременная = "Привет мир!";

Функции работы со строками в 1с 8.3

В данном разделе будут приведены основные функции, позволяющие изменять строки в 1с, либо анализировать информацию содержащуюся в них.

СтрДлина

СтрДлина(<Строка>). Возвращает количество символов содержащихся в строке, переданной в параметре.

Пример 2. Посчитаем количество символов в строке «Привет мир!».

Строка = "Привет мир!";КоличествоСимволов = СтрДлина(Строка);Сообщить(КоличествоСимволов);

Итогом выполнения данного кода будет вывод на экран количества символов строки: 11.

СокрЛ

СокрЛ(<Строка>). Отсекает незначащие символы, стоящие слева от первого значащего символа в строке.
Незначащие символы:

  • пробел;
  • неразрывный пробел;
  • табуляция;
  • возврат каретки;
  • перевод строки;
  • перевод формы (страницы).

Пример 3. Убрать все пробелы с левой стороны строки » мир!» и присоединить к ней строку «Привет «.

Строка = СокрЛ(" мир!");Строка = "Привет "+Строка;Сообщить(Строка);

Итогом выполнения данного кода будет вывод на экран строки «Привет мир!».

СокрП

СокрП(<Строка>). Отсекает незначащие символы, стоящие справа от первого значащего символа в строке.

Пример 4. Сформировать из строк «Привет » и » мир!» фразу «Привет мир!»

Строка = СокрП("Привет ") + " " + СокрЛ(" мир!");Сообщить(Строка);

СокрЛП

СокрЛП(<Строка>). Отсекает незначащие символы, стоящие справа от первого значащего символа в строке, также отсекает незначащие символы, стоящие слева от первого значащего символа в строке. Данная функция используется чаще предыдущих двух, так как она более универсальна.

Пример 5. Убрать незначащие символы стоящие слева и справа в наименовании контрагента.

Строки в 1С. До использования функции СокрЛП

Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "0777121211");КонтрагентОбъект = Контрагент.ПолучитьОбъект();КонтрагентОбъект.Наименование = СокрЛП(КонтрагентОбъект.Наименование);КонтрагентОбъект.Записать();

Строки в 1С. После использования функции СокрЛП

Лев

Лев(<Строка>, <ЧислоСимволов>). Получает первые символы строки, число символов указывается в параметре ЧислоСимволов. Если указанное количество символов превышает длину строки, то возвращается вся строка.

Пример 6. Пусть в структуре Сотрудник содержаться имя, фамилия и отчество сотрудника. Получить строку с фамилией и инициалами.

ИнициалИмени = Лев(Сотрудник.Имя, 1);ИнициалОтчества = Лев(Сотрудник.Отчество, 1);ПолноеИмя = Сотрудник.Фамилия + " " + ИнициалИмени + "." + ИнициалОтчества + ".";

Прав

Прав(<Строка>, <ЧислоСимволов>). Получает последние символы строки, число символов указывается в параметре ЧислоСимволов. Если указанное количество символов превышает длину строки, то возвращается вся строка.

Пример 7. Пусть в конце строковой переменной записана дата в формате «ггггммдд», получить строку с датой и преобразовать ее к типу Дата.

Строка = "Текущая дата: 20170910";СтрокаДата = Прав(Строка, 8);Дата = Дата(СтрокаДата);

Сред

Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>). Получает подстроку из строки переданной в параметре Строка, начиная с символа номер которого указан в параметре НачальныйНомер и длиной переданной в параметр ЧислоСимволов. Нумерация символов в строке начинается с 1. Если в параметре НачальныйНомер указано значение, меньшее или равное нулю, то параметр принимает значение 1. Если параметр ЧислоСимволов не указан, то выбираются символы до конца строки.

Пример 8. Пусть в строковой переменной начиная с девятой позиции содержится код региона, следует получить его и записать в отдельную строку.

Строка = "Регион: 99 г. Москва";Регион = Сред(Строка, 9, 2);

СтрНайти

СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>). Осуществляет поиск указанной подстроки в строке, возвращает номер позиции первого символа найденной подстроки. Рассмотрим параметры данной функции:

  • Строка. Исходная строка;
  • ПодстрокаПоиска. Искомая подстрока;
  • НаправлениеПоиска. Указывает направление поиска подстроки в строке. Может принимать значения:
    • НаправлениеПоиска.СНачала;
    • НаправлениеПоиска.СКонца;
  • НачальнаяПозиция. Указывает позицию в строке, с которой начинается поиск;
  • НомерВхождения. Указывает номер вхождения искомой подстроки в исходной строке.

Пример 9. В строке «Привет мир!» определить позицию последнего вхождения символа «и».

НомерПозиции = СтрНайти("Привет мир!", "и", НаправлениеПоиска.СКонца);Сообщить(НомерПозиции);

Итогом выполнения данного кода будет вывод на экран номера последнего вхождения символа «и»: 9.

ВРег

ВРег(<Строка>). Преобразует все символы указанной строки в 1с 8 к верхнему регистру.

Пример 10. Преобразовать строку «привет мир!» к верхнему регистру.

СтрокаВрег = ВРег("привет мир!");Сообщить(СтрокаВрег);

Итогом выполнения данного кода будет вывод на экран строки «ПРИВЕТ МИР!»

НРег

НРег(<Строка>). Преобразует все символы указанной строки в 1с 8 к нижнему регистру.

Пример 11. Преобразовать строку «ПРИВЕТ МИР!» к нижнему регистру.

СтрокаНрег = НРег("ПРИВЕТ МИР!");Сообщить(СтрокаВрег);

Итогом выполнения данного кода будет вывод на экран строки «привет мир!»

ТРег

ТРег(<Строка>). Преобразует строку следующим образом: первый символ каждого слова переводится в верхний регистр, остальные символы слова переводятся в нижний регистр.

Пример 12. Сделать заглавными первые буквы слов в строке «привет мир!».

СтрокаТрег = ТРег("привет мир!");Сообщить(СтрокаТрег);

Итогом выполнения данного кода будет вывод на экран строки «Привет Мир!»

Символ

Символ(<КодСимвола>). Получает символ по его коду в кодировке Unicod.

Пример 13. Добавим слева и справа в строку «Привет Мир!» символ ★

СимволЗвезда = Символ("9733");СтрокаСоЗвездами = СимволЗвезда + "Привет Мир!" + СимволЗвезда;Сообщить(СтрокаСоЗвездами);

Итогом выполнения данного кода будет вывод на экран строки «★Привет Мир!★»

КодСимвола

КодСимвола(<Строка>, <НомерСимвола>). Получает код символа в кодировке Unicode из строки указанной в первом параметре, расположенного в позиции указанной во втором параметре.

Пример 14. Узнать код последнего символа в строке «Привет Мир!».

Строка = "Привет Мир!";КодСимвола = КодСимвола(Строка, СтрДлина(Строка));Сообщить(КодСимвола);

Итогом выполнения данного кода будет вывод на экран кода символа «!» — 33.

ПустаяСтрока

ПустаяСтрока(<Строка>). Проверяет состоит ли строка только из незначащих символов, то есть является ли она пустой.

Пример 15. Проверить является ли пустой строка состоящая из трех пробелов.

Пустая = ПустаяСтрока(" ");Сообщить(Пустая);

Итогом выполнения данного кода будет вывод на экран слова «Да» (строковое выражение логического значения Истина).

СтрЗаменить

СтрЗаменить(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>). Находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.

Пример 16. В строке «Привет Мир!» заменить слово «Мир» на слово «Друзья».

Строка = СтрЗаменить("Привет Мир!", "Мир", "Друзья");Сообщить(Строка);

Итогом выполнения данного кода будет вывод на экран строки «Привет Друзья!»

СтрЧислоСтрок

СтрЧислоСтрок(<Строка>). Позволяет посчитать количество строк в многострочной строке. Для перехода на новую строку в 1с 8 используется символ ПС (символ перевода строки).

Пример 17. Определить число строк в тексте:
«Первая строка
Вторая строка
Третья строка»

Число = СтрЧислоСтрок("Первая строка |Вторая строка |Третья строка");Сообщить(Число);

Итогом выполнения данного кода будет вывод на экран количества строк в тексте: 3

СтрПолучитьСтроку

СтрПолучитьСтроку(<Строка>, <НомерСтроки>). Получает строку в многострочной строке по ее номеру. Нумерация строк начинается с 1.

Пример 18. Получить последнюю строку в тексте:
«Первая строка
Вторая строка
Третья строка»

Текст = "Первая строка |Вторая строка |Третья строка"; ПоследняяСтрока = СтрПолучитьСтроку(Текст, СтрЧислоСтрок(Текст)); Сообщить(ПоследняяСтрока);

Итогом выполнения данного кода будет вывод на экран строки «Третья строка».

СтрЧислоВхождений

СтрЧислоВхождений(<Строка>, <ПодстрокаПоиска>). Возвращает число вхождений указанной подстроки в строку. Функция чувствительна к регистру.

Пример 19. Определить сколько раз входит в строку «Строки в 1с 8.3 и 8.2» буква «с», вне зависимости от ее регистра.

Строка = "Строки в 1с 8.3 и 8.2"; ЧислоВхождений = СтрЧислоВхождений(Врег(Строка), "С");Сообщить(ЧислоВхождений);

Итогом выполнения данного кода будет вывод на экран числа вхождений: 2.

СтрНачинаетсяС

СтрНачинаетсяС(<Строка>, <СтрокаПоиска>). Проверяет начинается ли строка переданная в первом параметре, со строки во втором параметре.

Пример 20. Определить начинается ли ИНН выбранного контрагента с цифры 1. Пусть в переменной Контрагент хранится ссылка на элемент справочника Контрагенты.

ИНН = Контрагент.ИНН;НачинаетсяСЕдиницы = СтрНачинаетсяС(ИНН, "1");Если НачинаетсяСЕдиницы Тогда //Ваш кодКонецЕсли;

СтрЗаканчиваетсяНа

СтрЗаканчиваетсяНа(<Строка>, <СтрокаПоиска>). Проверяет заканчивается ли строка переданная в первом параметре, на строку во втором параметре.

Пример 21. Определить заканчивается ли ИНН выбранного контрагента на цифру 2. Пусть в переменной Контрагент хранится ссылка на элемент справочника Контрагенты.

ИНН = Контрагент.ИНН;ЗаканчиваетсяНаДвойку = СтрЗаканчиваетсяНа(ИНН, "2");Если ЗаканчиваетсяНаДвойку Тогда //Ваш кодКонецЕсли;

СтрРазделить

СтрРазделить(<Строка>, <Разделитель>, <ВключатьПустые>). Разделяет строку на части по указанным символам-разделителям и записывает полученные строки в массив. В первом параметре хранится исходная строка, во втором строка содержащая разделитель, в третьем указывается, нужно ли записывать в массив пустые строки (по умолчанию Истина).

Пример 22. Пусть у нас есть строка содержащая числа разделенные символом «;», получить из строки массив чисел.

Строка = "1; 2; 3";Массив = СтрРазделить(Строка, ";");Для Сч = 0 По Массив.Количество() - 1 Цикл ПопыткаМассив = Число(СокрЛП(Массив)); ИсключениеМассив = 0; КонецПопытки;КонецЦикла;

В результате выполнения будет получен массив с числами от 1 до 3-х.

СтрСоединить

СтрСоединить(<Строки>, <Разделитель>). Преобразует массив строк из первого параметра в строку, содержащую все элементы массива через разделитель, указанный во втором параметре.

Пример 23. Используя массив чисел из предыдущего примера, получить исходную строку.

Для Сч = 0 По Массив.Количество() - 1 Цикл Массив = Строка(Массив);КонецЦикла;Строка = СтрСоединить(Массив, "; ");

Также прочитать про строковые функции появившиеся в 8.3 можно на официальном сайте 1С: v8.1c.ru

Прочитайте статью про работу с числами: Число в 1С 8.3 — функции работы с числами

&НаКлиентеПроцедура ВыполнитьКод(Команда) /// Как найти длину строки в 1с 8.3, 8.2 Сообщить(СтрДлина("123456789")); // 9 /// Как взять часть строки в 1с 8.3, 8.2 // как взять N символов слева Строка = "Иван Грозный"; Сообщить(Лев(Строка, 4)); // Иван // как взять N символов справа Строка = "Иван Грозный"; Сообщить(Прав(Строка, 7)); // Грозный // как взять строку из середины Строка = "Мама, папа, я."; // возьмём начиная с 7 индекса 4 символа Сообщить(Сред(Строка, 7, 4)); // папа /// Как найти подстроку в 1с 8.3, 8.2 Строка = "Привет, мир!"; Индекс = СтрНайти(Строка, "Привет"); // 1, строки индексируются с единицы /// Как узнать число вхождений подстроки в строку в 1с 8.3, 8.2 Сообщить(СтрЧислоВхождений("я, я и ещё раз я.", "я")); // 3 /// Как заменить подстроку в строке в 1с 8.3, 8.2 Сообщить(СтрЗаменить("Идёт сильный дождь.", "дождь", "снег")); /// Как проверить на пустую строку в 1с 8.3, 8.2 Если ПустаяСтрока(" ") Тогда Сообщить("Строка пустая, то есть не содержит значащих символов."); КонецЕсли; /// Как удалить незначащие символы из строки в 1с 8.3, 8.2 // слева Сообщить(СокрЛ(" из лесу ёлочку ")); // "из лесу ёлочку " // справа Сообщить(СокрП(" из лесу ёлочку ")); // " из лесу ёлочку" // с двух сторон Сообщить(СокрЛП(" из лесу ёлочку ")); // "из лесу ёлочку" /// Как вставить в строку перенос в 1с 8.3, 8.2 Строка = "Первая строка" + Символы.ПС + "Вторая строка" + Символы.ПС + "Третья строка"; /// Как работать с многострочными строками (нумерация с /// единицы) в 1с 8.3, 8.2 Сообщить(СтрЧислоСтрок(Строка)); // 3 Сообщить(СтрПолучитьСтроку(Строка, 2)); // "Вторая строка" /// Верхний, нижний и титульный регистры в 1с 8.3, 8.2 Сообщить(ВРег("россия - родина моя!")); // РОССИЯ - РОДИНА МОЯ! Сообщить(НРег("МИР, ТРУД, МАЙ!")); // мир, труд, май Сообщить(ТРег("мама мыла раму")); // Мама Мыла Раму /// Как получить код символа строки в 1с 8.3, 8.2 // код отдельного символа: // туда Сообщить(КодСимвола("A")); // 65 // и обратно Сообщить(Символ(65)); // "A" // код третьего символа в строке Сообщить(КодСимвола("ABC", 3)); //67 // код первого символа в строке КодПервогоСимволаФамилии = КодСимвола("Грозный"); Сообщить(КодПервогоСимволаФамилии); // 1043, потому что Unicode. /// Как преобразовать строку в число в 1с 8.3, 8.2 Сообщить(Число("125.36")); // 125,36 Сообщить(Число("125,36")); // 125,36 /// Как преобразовать число в строку в 1с 8.3, 8.2 Сообщить(25 + "10"); // 35 // если же нужно сложить число и строку как строки Сообщить(Строка(25) + "10"); // 2510 /// Как разбить строку с разделителями в 1с 8.3, 8.2 Разделитель = ","; Строки = СтрЗаменить("январь, февраль, март", Разделитель, Символы.ПС); Для Индекс = 1 По СтрЧислоСтрок(Строки) Цикл Сообщить(СтрПолучитьСтроку(Строки, Индекс)); КонецЦикла; КонецПроцедуры &НаСервереБезКонтекстаПроцедура ВыполнитьКодНаСервере() /// Как сериализовать значение в строку в 1с 8.3, 8.2 Массив = Новый Массив(3); Массив = 1; Массив = "Земля"; Массив = 3.14; Стр = ЗначениеВСтрокуВнутр(Массив); Сообщить(Стр); //{"#",51e7a0d2-530b-11d4-b98a-008048da3034, // {3, // {"N",1}, // {"S","Земля"}, // {"N",3.14} // } //} /// Как десериализовать значение из строки в 1с 8.3, 8.2 МассивКопия = ЗначениеИзСтрокиВнутр(Стр); Элемент = МассивКопия; Сообщить(Элемент); // Земля КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере

Поводом для заметки послужила проблема импорта приходной накладной из файла Excel, где связь между номенклатурой осуществлялась по некоему «коду поставщика», представляющему собой заданное количество цифр (в данном случае 6). Оказалось, что при импорте ведущие нули отбрасываются и код форматируется в стандартный числовой формат, включая разделитель тысяч (например «12 345»). А в реквизите, разумеется, код хранится как положено — 012345, в итоге номенклатура не сопоставлялась.

Несмотря на то, что вроде как можно было бы в коде (программном) просто использовать известную нам длину (6), я решил все же сделать более универсально и эту самую длину получать из метаданных — дело в том, что ранее, например, использовался 5-тизначный код. Так что нет гарантий, что через некоторое время он не станет, например, 7-значным. Итак, для того, чтобы узнать максимальную длину реквизита КодПоставщика справочника Номенклатура необходимо воспользоваться такой достаточно громоздкой конструкцией:

КодПоставщикаРеквизит = Метаданные.Справочники.Номенклатура.Реквизиты.КодПоставщика;ДлинаКодаПоставщика = КодПоставщикаРеквизит.Тип.КвалификаторыСтроки.Длина;

Дальше остается переформатировать код поставщика, полученный из Excel:

КПExcel = Число(СокрЛП(Лист.Cells(НомерСтроки, НомерСтолбца).Value));КодПоставщика = Формат(КПExcel, "ЧЦ=" + ДлинаКодаПоставщика + "; ЧВН=; ЧГ=0");

Форматная строка говорит нам о том, что длина у нас равна длине реквизита, будем использовать ведущие нули, а разделитель групп отсутствует. Переменная Лист — OLE-объект текущего листа Excel.

Вот такие немного вычурные и не вполне очевидные конструкции.

Добавить комментарий