15.10.201913.05.2023Ошибки
Данная ошибка возникает при попытке использования новой строковой функции СтрНайти() на версии платформы 1С:Предприятие 8.3.5 и ниже (либо в аналогичном режиме совместимости конфигурации)
Чтобы избавиться от этой проблемы выполните следующие действия:
- Проверьте режим совместимости конфигурации (Конфигурация Свойства Режим совместимости).
- Если режим совместимости установлен в значение «не использовать», обновите релиз платформы до версии 8.3.6 или более новый (если в вашей организации используется сервер 1С:Предприятия 8, следует установить тот же релиз на сервере);
- Если режим совместимости установлен в значение 8.3.5 и ниже, рекомендую поступить проще: заменить использование функции СтрНайти() аналогичной, но устаревшей функцией Найти(). Не следует повышать режим совместимости на «авось» без предварительного изучения конфигурации на момент несоответствия требованиям новой версии платформы (а это происходит с незавидной регулярностью) и обязательного тестирования основных механизмов.
Поделиться страницей в соц.сетях
СтрНайти, что ему не нравится? |
Я |
13.11.19 — 11:34
Во внешней обработке
код
НомерВхождения=0;
СтрНайти(СокрЛП(СтрокаТЗОтчетПроизводстваЗаСмену.Комментрарий),»#»,,,НомерВхождения);
Если НомерВхождения > 0 Тогда
ОтчетКоммент = СокрЛП(Сред(СтрокаТЗОтчетПроизводстваЗаСмену.Комментрарий,НомерВхождения));
Если ОтчетКоммент = РеализацияКомментарий Тогда
СтрРеалицации.СформированОтчет = «Сформирован»;
КонецЕсли;
КонецЕсли;
Ошибка
{ВнешняяОбработка.ФормированиеОтчетовЗаСменуНаОснованииРеализации.Форма.Форма.Форма(7565,5)}: Процедура или функция с указанным именем не определена (СтрНайти)
<<?>>СтрНайти(СокрЛП(СтрокаТЗОтчетПроизводстваЗаСмену.Комментрарий),»#»,,,НомерВхождения); (Проверка: Толстый клиент (обычное приложение))
что ему не нравится?
1 — 13.11.19 — 11:36
Релиз платформы проверь или режим совместимости у конфигурации. Древний поди…
2 — 13.11.19 — 11:42
(1) 8.3.12.1790
3 — 13.11.19 — 11:43
вообще то это функция
4 — 13.11.19 — 11:43
(2) совместимость конфы?
5 — 13.11.19 — 11:43
Режим совместимости?
6 — 13.11.19 — 11:44
(0) на сервере это делаешь или на клиенте?
7 — 13.11.19 — 11:45
+(6) первый символ проверь названия функции , м.б. «C» латиница
8 — 13.11.19 — 11:45
(5) Режим совместимости = да
(6) ОФ — толстый клиент
вообще
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер), интеграция.
9 — 13.11.19 — 11:46
(8) не да , а номер режима
10 — 13.11.19 — 11:50
(7) Выделение ctrl+f1 слызу вываливаемся в справку — куда надо(с проверял на латиницу, это первое что сделал)
(9) Версия 8.2.16
11 — 13.11.19 — 11:51
(10) СтрНайти с 8.3.6 работает
12 — 13.11.19 — 11:52
Это в справке кстати написано
13 — 13.11.19 — 11:53
(3) И что?
Мне не надо проверять, есть вхождение или нет, мне нужен номер вхождения, если он есть то идем дальше, если нет, то нет
14 — 13.11.19 — 11:53
Может так сработает?
Вместо
СтрНайти(СокрЛП(СтрокаТЗОтчетПроизводстваЗаСмену.Комментрарий),»#»,,,НомерВхождения);
вот так
НомерВхождения = СтрНайти(СокрЛП(СтрокаТЗОтчетПроизводстваЗаСмену.Комментрарий),»#»);
15 — 13.11.19 — 11:54
(10) Версия 8.3.6 как минимум
16 — 13.11.19 — 11:54
(10) Тогда используй Найти()
17 — 13.11.19 — 11:55
(16) Синтакс-помошник, так не рекомендует.
18 — 13.11.19 — 11:55
(13) так разве стрнайти ищет номер вхождения?
вроде нет
19 — 13.11.19 — 11:55
(12) Да даже
{ВнешняяОбработка.ФормированиеОтчетовЗаСменуНаОснованииРеализации.Форма.Форма.Форма(7565,10)}: Процедура или функция с указанным именем не определена (СтрНайти)
Если <<?>>СтрНайти(СокрЛП(СтрокаТЗОтчетПроизводстваЗаСмену.Комментрарий),»#»,,,НомерВхождения)> 0 Тогда (Проверка: Толстый клиент (обычное приложение))
20 — 13.11.19 — 11:56
(14) {ВнешняяОбработка.ФормированиеОтчетовЗаСменуНаОснованииРеализации.Форма.Форма.Форма(7565,22)}: Процедура или функция с указанным именем не определена (СтрНайти)
НомерВхождения = <<?>>СтрНайти(СокрЛП(СтрокаТЗОтчетПроизводстваЗаСмену.Комментрарий),»#»); (Проверка: Толстый клиент (обычное приложение))
21 — 13.11.19 — 11:56
(20) тебе уже сказали что не будет ибо режим
22 — 13.11.19 — 11:57
(18) Читаем СП
СтрНайти (StrFind)
Синтаксис:
СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>)
Параметры:
<Строка> (обязательный)
Тип: Строка.
Исходная строка.
<ПодстрокаПоиска> (обязательный)
Тип: Строка.
Искомая подстрока.
<НаправлениеПоиска> (необязательный)
Тип: НаправлениеПоиска.
Указывает направление поиска подстроки в строке.
Значение по умолчанию: СНачала.
<НачальнаяПозиция> (необязательный)
Тип: Число.
Указывает позицию в строке, с которой начинается поиск.
Если параметр не задан и в параметре НаправлениеПоиска указано значение СНачала, то значение по умолчанию равно 1.
Если параметр не задан и в параметре НаправлениеПоиска указано значение СКонца, то значение по умолчанию равно длине строки.
Допускаются значения от 1 до количества символов в строке, в которой выполняется поиск. Если указано значение, не входящее в диапазон, генерируется ошибка «Неверное значение параметра».
<НомерВхождения> (необязательный)
Тип: Число.
Указывает номер вхождения искомой подстроки в исходной строке.
Значение по умолчанию: 1.
Возвращаемое значение:
Тип: Число.
Позиция первого знака найденной подстроки. Нумерация символов в строке начинается с 1. Если строка не содержит указанной подстроки, то возвращается 0.
Описание:
Находит первое вхождение искомой строки как подстроки в исходной строке.
Сравнение выполняется с учетом регистра.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер), интеграция.
Примечание:
Если параметр <ПодстрокаПоиска> пустая строка, то возвращает 1.
Если оба параметра пустые строки, то возвращает 1.
Пример:
Если СтрНайти(Сотрудник.Имя, «Сергей») > 0 Тогда
Сообщить(Сотрудник.Имя + » таб. №» + Сотрудник.Код);
КонецЕсли;
См. также:
Глобальный контекст, метод СтрНачинаетсяС
Глобальный контекст, метод СтрЗаканчиваетсяНа
———————————————————————————
Методическая информация
23 — 13.11.19 — 11:57
(22) про режим не скопировал почемуто
24 — 13.11.19 — 11:58
(21) кто сказал , где?
(23) Скопировал вс что есть
25 — 13.11.19 — 11:58
(22) Смотри (21) и (10).
(23) В некоторых версиях СП не написано на совместимость Уже натыкался на это.
26 — 13.11.19 — 11:59
(23) Это что получается элементарная функция не будет работать в режиме совместимости? Что за бредятина?
27 — 13.11.19 — 11:59
В режиме совместимости 8.3.5 и ниже возникает ошибка
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(1,10)}: Процедура или функция с указанным именем не определена (СтрНайти)
28 — 13.11.19 — 11:59
(12) (23) В свежих релизах этого уже нет
29 — 13.11.19 — 11:59
(26) добро пожалоать в чудный мир 1с
30 — 13.11.19 — 11:59
(26) Да-да, жизнь она такая.
31 — 13.11.19 — 12:00
(28) в 15 релизе есть
32 — 13.11.19 — 12:00
Тебе весь пост пытаются объяснить, что у тебя функция в принципе работать не будет, т.к режим совместимости 8.2.16. Что не понятно ? Пока не изменишь режим совместимости минимум на 8.3.6 — работать не будет.
33 — 13.11.19 — 12:02
(32) Никто это не написал, чем это может грозить для БП 2.0 в принципе?
34 — 13.11.19 — 12:03
(33) отчеты перестанут работать
35 — 13.11.19 — 12:03
(34) Давайте посерьезней
36 — 13.11.19 — 12:04
А вот режим совместимости у старых конфигураций лучше не трогать. Используй Найти()
37 — 13.11.19 — 12:04
если тебе нужно второе вхождение то делай как раньше,
нашел первое, обрезал нашел второе
(35) серьезно, там пытаются какие то несереализуемые данные сохранять сломалось с 8.2.14
38 — 13.11.19 — 12:04
(31) Значит наоборот ) В свежих добавили графу «Использование в версии»
39 — 13.11.19 — 12:05
Знаю я 1С, элементное действие, без объявления войны может привести к всеобщему пиздетсу
40 — 13.11.19 — 12:06
(37) Второго не надо, только и первое
41 — 13.11.19 — 12:06
(26) Абсолютно логично. Конфа должна запускать и работать на всех платформах подходящих по режиму совместимости.
42 — 13.11.19 — 12:07
(38) Предупреждали же, читайте иногда отличия в новых ветках платформы
43 — 13.11.19 — 12:07
Во уже на копии понеслось
(41) Вы сами себе противоречите
44 — 13.11.19 — 12:08
(42) Какие отличия и где читать, ты о чем?
45 — 13.11.19 — 12:08
Конфа ушла в аут с какой то кучей ошибок
46 — 13.11.19 — 12:09
(43) в чем противоречие?
У тебя совместимость 8.2 — значит запускаться должно и на 8.2. А там таких функций нет.
47 — 13.11.19 — 12:11
Я так понимаю, придется каждую строку посимвольно перебирать?
Ога говорили они, переходи к нам, на темную сторону снеговиков, все просто окуенно, ББббггггг, Злоп если ты это читаешь, не верь им
48 — 13.11.19 — 12:12
(46) Режим совместимости подрузумевает под собой, функционал старого и фишки нового не?
а что в 8.2 СтрНайти не было, как тогда выкручивались, посимвольно перебирали?
49 — 13.11.19 — 12:13
Встроенный язык.
Реализованы функции работы со строками:
СтрШаблон() — выполняет замену маркеров подстановки (вида %1) в шаблонной строке на реальные значения;
СтрСравнить() — выполняет лексикографическое сравнение строк без учета регистра;
СтрНачинаетсяС() — проверяет, что строка начинается на подстроку;
СтрЗаканчиваетсяНа() — проверяет, что строка оканчивается подстрокой;
СтрНайти() — выполняет поиск подстроки в различных направлениях и не только с начала строки;
СтрРазделить() — разделяет строку на части по указанному разделителю;
СтрСоединить() — соединяет строки из массива подстрок.
Реализовано системное перечисление НаправлениеПоиска.
Функция Найти() является устаревшей и поддерживается для совместимости.
В режиме совместимости с версией 8.3.5 поведение не изменилось.
Данная возможность не предоставлялась.
Возможности новых функций можно было реализовать с помощью встроенного языка.
Упростилась реализация некоторых типовых алгоритмов работы со с
Источник: https://dl03.1c.ru/content/Platform/8_3_16_1030/1cv8upd_8_3_16_1030.htm#df1a5bfb-00fe-11e4-98ab-e61f135f174b
50 — 13.11.19 — 12:14
Режим совместимости подразумевает, что должно без ошибок работать на 8.2.16
51 — 13.11.19 — 12:17
(48) Была кажется экспортная функция в общих модулях.
52 — 13.11.19 — 12:20
(48)Использовали просто Найти, хотя она конечно медленней работает.
53 — 13.11.19 — 12:23
(52) Вот как было и как стало.
Найти(<Строка>, <ПодстрокаПоиска>)
СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>)
54 — 13.11.19 — 12:31
(17) да пофиг, у него режим совместимости 8.2.16
Так что только Найти()
55 — 13.11.19 — 12:34
Я бы посоветовал автору переходить на 3.0, когда нибудь придется всё равно, только «лавочку» переходного релиза закроют и будет «ай-ай-ай».
Ну или сидеть на какой либо старой платформе.
56 — 13.11.19 — 12:36
(47) в 77 тоже было найти как и 8
57 — 13.11.19 — 12:38
А казалось бы тема на пару постов…..
58 — 13.11.19 — 12:39
«Режим совместимости подрузумевает под собой, функционал старого и фишки нового не?» — ага, и еще кое-что на пробу из неизданных релизов платформы xD
59 — 13.11.19 — 13:11
(47) у меня режим 8.3.8. Работает. Только не сразу перескакивай, а поэтапно. Сначала на 8.3.3, потом на 8.3.4 и т.д. и так дойдешь до 8.3.8.
60 — 13.11.19 — 13:13
(56) В 77 СрнНайти Прекрасно работала, не надо тут, это вам не там
(59) не у меня уже тестовая свалилилась, гружу новую
(58) вы не в 1с работаете? очень умозаключения в их стиле
попробую сча через «найти»
61 — 13.11.19 — 13:16
(60) так ты сразу небось на 8.3.16 небось жахнул, не глядя. Так не делается, надо потихоньку, и обязательно кеши чистить и полный ТИИ запускать после каждого перехода.
62 — 13.11.19 — 13:20
(61) сразу на 8.3.6, не пока работает не буду трогать, пока что задачи по этой БД заканчиваются, это последний затык, если через найти сработает, пусть так и остается, а то как то мне тут к УПП еще с этой проблем не хватало
63 — 13.11.19 — 13:22
(60) В 7.7 нет функции СтрНайти.
64 — 13.11.19 — 13:26
СтрНайти в 7.7? Я вас умоляю.
65 — 13.11.19 — 13:26
(63) А , ну да, с СтрЗаменить спутал, ну и ладно, у меня сча смешалось пока, кони клюшки снеговики, да и пох
66 — 13.11.19 — 13:27
(60) Режим совместимости с версией означает только одно — будет работать только тот функционал, который был в указанной версии и раньше. Если нужно «новое», то совместимость наоборот убирают. Такая «логика у 1С».
ptiz
67 — 13.11.19 — 13:59
(48) УТ 10
/////////////////////////////////////////////////////////////////////////////////////////
//
// Функции обратной совместимости для эмуляции новых возможностей платформы
// Удалить лишние при необходимости
//
/////////////////////////////////////////////////////////////////////////////////////////
Функция СтрНайти(Строка,
ПодстрокаПоиска,
НаправлениеПоиска = Неопределено,
НачальнаяПозиция = 1,
НомерВхождения = 1) Экспорт
Если НаправлениеПоиска = «СКонца» Тогда
ВызватьИсключение НСтр(«ru = ‘Требуется доработать функцию «»СтрНайти»» в общем модуле «»ИнтеграцияЕГАИСКлиентСерверГлобальный»»:
|Не поддерживается поиск с конца'»);
КонецЕсли;
Если ПодстрокаПоиска = «» Тогда
Возврат 1;
КонецЕсли;
Если НачальнаяПозиция > 1 Тогда
Возврат НачальнаяПозиция — 1 + СтрНайти(Сред(Строка, НачальнаяПозиция), ПодстрокаПоиска, НаправлениеПоиска,,НомерВхождения);
КонецЕсли;
Если НомерВхождения > 1 Тогда
Вхождение1 = Найти(Строка, ПодстрокаПоиска);
Если Вхождение1 > 0 Тогда
Возврат Вхождение1 + СтрНайти(Сред(Строка,Вхождение1 +1),ПодстрокаПоиска,НаправлениеПоиска,,НомерВхождения — 1);
КонецЕсли;
КонецЕсли;
Возврат Найти(Строка, ПодстрокаПоиска);
КонецФункции
Функция СтрНачинаетсяС(Строка, ПодстрокаПоиска) Экспорт
Возврат (Найти(Строка, ПодстрокаПоиска)=1);
КонецФункции
Функция СтрЗаканчиваетсяНа(Строка, ПодстрокаПоиска) Экспорт
Возврат Прав(Строка, СтрДлина(ПодстрокаПоиска)) = ПодстрокаПоиска;
КонецФункции
Функция СтрСоединить(МассивСтрок, Разделитель = «») Экспорт
Возврат СтроковыеФункцииКлиентСервер.ПолучитьСтрокуИзМассиваПодстрок(МассивСтрок, Разделитель);
КонецФункции
Функция СтрРазделить(Строка, Разделитель, ВключатьПустые = Ложь) Экспорт
Возврат СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Строка, Разделитель, ВключатьПустые);
КонецФункции // СтрРазделить()
Функция СтрШаблон(Знач СтрокаПодстановки,
Параметр1, Параметр2 = Неопределено, Параметр3 = Неопределено,
Параметр4 = Неопределено, Параметр5 = Неопределено, Параметр6 = Неопределено,
Параметр7 = Неопределено, Параметр8 = Неопределено, Параметр9 = Неопределено) Экспорт
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаПодстановки,
Параметр1, Параметр2, Параметр3, Параметр4, Параметр5, Параметр6, Параметр7, Параметр8, Параметр9);
КонецФункции
Функция ФорматированнаяСтрока(Содержимое,
Шрифт = Неопределено,
ЦветТекста = Неопределено,
ЦветФона = Неопределено,
Ссылка = Неопределено) Экспорт
Описание = ИнтеграцияЕГАИСУТКлиентСервер.ОписаниеФорматированнойСтроки();
Описание.Заголовок = Содержимое;
Описание.Шрифт = Шрифт;
Описание.ЦветТекста = ЦветТекста;
Описание.ЦветФона = ЦветФона;
Описание.Ссылка = Ссылка;
Возврат Описание;
КонецФункции // ФорматированнаяСтрока()
Содержание
- Функция СтрНайти()
- Синтаксис
- Параметры
- Возвращаемое значение
- Описание
- Доступность
- Пример использования
- СтрНайти, что ему не нравится?
- Заметки из Зазеркалья
- Функция форматирования СтрШаблон()
- Функция работы со строками СтрСравнить()
- Функции работы со строками СтрНачинаетсяС(), СтрЗаканчиваетсяНа()
- Функции работы со строками СтрРазделить(), СтрСоединить()
- Функция работы со строками СтрНайти()
- Не срабатывает функция СтрЗаменить
- Не работает консоль запросов в собственной конфигурации 1С 8.3
Функция СтрНайти()
Возвращает первое или очередное вхождение подстроки в исходную строку.
Синтаксис
Функция СтрНайти() имеет следующий синтаксис:
А также альтернативный англоязычный синтаксис:
Параметры
Описание параметров функции СтрНайти() :
Имя параметра | Тип | Описание | ||||
---|---|---|---|---|---|---|
ИсходнаяСтрока | Строка | Исходная строка. | ||||
ПодстрокаПоиска | Строка | Искомая подстрока. | ||||
НаправлениеПоиска (необязательный) | НаправлениеПоиска | Указывает направление поиска подстроки в строке. Возможные значения:
Значение по умолчанию: НаправлениеПоиска.СНачала |
||||
НачальнаяПозиция (необязательный) | Число | Указывает позицию в строке, с которой начинается поиск. Если параметр не задан и в параметре НаправлениеПоиска указано значение СНачала, то значение по умолчанию равно 1. | ||||
НомерВхождения (необязательный) | Число | Указывает порядковый номер вхождения подстроки в исходной строке. Значение по умолчанию: 1 (ищется первое вхождение) | ||||
Жирным шрифтом выделены обязательные параметры |
Возвращаемое значение
Число
Позиция первого символа найденной подстроки.
Описание
Функция СтрНайти() находит требуемое вхождение подстроки поиска с начала или с конца исходной строки. Нумерация символов в строке начинается с 1. Если строка не содержит указанной подстроки, то возвращается 0. Если параметр ПодстрокаПоиска является пустой строкой, то возвращается 1. Если оба обязательных параметра являются пустыми строками, возвращается 1.
Доступность
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер), интеграция.
Пример использования
Пример кода с использованием функции СтрНайти() :
Источник
СтрНайти, что ему не нравится?
Во внешней обработке
код
НомерВхождения=0;
СтрНайти(СокрЛП(СтрокаТЗОтчетПроизводстваЗаСмену.Комментрарий),»#». НомерВхождения);
Если НомерВхождения > 0 Тогда
ОтчетКоммент = СокрЛП(Сред(СтрокаТЗОтчетПроизводстваЗаСмену.Комментрарий,НомерВхождения));
Если ОтчетКоммент = РеализацияКомментарий Тогда
СтрРеалицации.СформированОтчет = «Сформирован»;
КонецЕсли;
КонецЕсли;
Ошибка
<ВнешняяОбработка.ФормированиеОтчетовЗаСменуНаОснованииРеализации.Форма.Форма.Форма(7565,5)>: Процедура или функция с указанным именем не определена (СтрНайти)
>СтрНайти(СокрЛП(СтрокаТЗОтчетПроизводстваЗаСмену.Комментрарий),»#». НомерВхождения); (Проверка: Толстый клиент (обычное приложение))
что ему не нравится?
(5) Режим совместимости = да
(6) ОФ — толстый клиент
вообще
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер), интеграция.
Может так сработает?
СтрНайти (StrFind)
Синтаксис:
Тип: Строка.
Указывает направление поиска подстроки в строке.
Указывает позицию в строке, с которой начинается поиск.
Если параметр не задан и в параметре НаправлениеПоиска указано значение СНачала, то значение по умолчанию равно 1.
Если параметр не задан и в параметре НаправлениеПоиска указано значение СКонца, то значение по умолчанию равно длине строки.
Допускаются значения от 1 до количества символов в строке, в которой выполняется поиск. Если указано значение, не входящее в диапазон, генерируется ошибка «Неверное значение параметра».
Тип: Число.
Указывает номер вхождения искомой подстроки в исходной строке.
Значение по умолчанию: 1.
Возвращаемое значение:
Тип: Число.
Позиция первого знака найденной подстроки. Нумерация символов в строке начинается с 1. Если строка не содержит указанной подстроки, то возвращается 0.
Описание:
Находит первое вхождение искомой строки как подстроки в исходной строке.
Сравнение выполняется с учетом регистра.
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер), интеграция.
Примечание:
Если параметр пустая строка, то возвращает 1.
Если оба параметра пустые строки, то возвращает 1.
Пример:
Источник
Заметки из Зазеркалья
Реализовано в версии 8.3.6.1977.
Мы расширили набор функций, предназначенных для работы со строками. Мы это сделали для того, чтобы дать вам более развитые инструменты для разбора строковых данных. Новые функции будут удобны и полезны в технологических задачах анализа текста. В задачах, связанных с разбором текста, который содержит данные в форматированном виде. Это может быть анализ каких-то файлов, полученных от оборудования, или, например, анализ технологического журнала.
Все действия, которые выполняют новые функции, вы могли выполнять и раньше. С помощью более или менее сложных алгоритмов, написанных на встроенном языке. Поэтому новые функции не дают вам каких-то принципиально новых возможностей. Однако они позволяют сократить количество кода, сделать код более простым и понятным. А кроме этого они позволяют ускорить выполнение действий. Потому что функции, реализованные в платформе, работают, конечно же, быстрее, чем аналогичный алгоритм, написанный на встроенном языке.
Функция форматирования СтрШаблон()
Эта функция подставляет параметры в строку. Потребность в таком преобразовании часто возникает, например, при выводе предупреждающих сообщений. Синтаксис этой функции выглядит следующим образом:
— это строка, в которую нужно подставить представления параметров.
, . — это параметры (максимально — десять), представления которых нужно подставить в строку.
Чтобы указать конкретное место в шаблоне, в которое нужно выполнить подстановку, нужно использовать маркеры вида %1, . %10. Количество маркеров, задействованных в шаблоне, и количество параметров, содержащих значения, должны совпадать.
Например, результатом выполнения такого оператора:
Ошибка в данных в строке 2 (требуется тип Дата)
Функция работы со строками СтрСравнить()
Эта функция сравнивает две строки без учёта регистра. Например, так:
Это же действие вы могли выполнить и раньше с помощью объекта СравнениеЗначений:
Однако использование новой функции выглядит более простым. А кроме этого функция, в отличие от объекта СравнениеЗначений, работает и в тонком клиенте, и в веб-клиенте.
Функции работы со строками СтрНачинаетсяС(), СтрЗаканчиваетсяНа()
Эти функции определяют, начинается ли строка с указанной подстроки, заканчивается ли строка указанной подстрокой. Алгоритм этих функций несложно реализовать на встроенном языке, но их наличие позволяет писать более чистый и понимаемый код. И работают они быстрее.
Например, их удобно использовать в операторе Если:
Функции работы со строками СтрРазделить(), СтрСоединить()
Эти функции разделяют строку на части по указанному разделителю. Или наоборот, соединяют несколько строк в одну, вставляя между ними выбранный разделитель. Они удобны для создания или анализа логов, технологического журнала. Например, запись технологического журнала вы можете легко разобрать на части, пригодные для дальнейшего анализа:
Функция работы со строками СтрНайти()
Вместо старой функции Найти() мы реализовали новую функцию, которая имеет дополнительные возможности:
- Поиск в разных направлениях (с начала, с конца);
- Поиск с указанной позиции;
- Поиск вхождения с указанным номером (второе, третье и т.д.).
Фактически она дублирует возможности старой функции. Так сделано для того, чтобы сохранить совместимость с модулями, скомпилированными в старых версиях. Старую функцию Найти() рекомендуется больше не использовать.
Ниже приведён пример, использующий новые возможности поиска. Поиск в обратном направлении удобен тогда, когда вам нужен последний фрагмент формализованной строки, например, полное имя файла в URL. А поиск с указанной позиции помогает в тех случаях, когда нужно искать в известном фрагменте, а не во всей строке.
Источник
Не срабатывает функция СтрЗаменить
Нужно убрать пробелы из числовых полей
Почему не убирается пробел?
(5) Увы, я в своё время тоже выплясывал чечетку вокруг этих пробелов. Там просто не могу понять, что циферка, это число, представление циферки, это текст, а мне надо оперировать с переводом из числа в текст.
Автор, ерундой не майся и просто используй Формат. Только первым параметром передай число, а не текст
(10) Самое прикольное что даже разрабы в больших фирмах об этом хитром дефолтном преобразовании чисел в строки забывают.
И можно встретить глюки когда «все работало а потом перестало».
Ну да сначала у вас была нумерация «Объект_1», «Объект_2» и т.д.
А потом наступил «Объект_1 001» и словили глюк потому что например пробелы в этих наименованиях недопустимы.
(7)Ну ты же не хочешь сначала почитать, а потом писать. Вот и люди не хотят.
(4)В запросе тебе это не надо.
у меня на днях был запар. представьте PHP в нем есть массив, массивы бывают ассоциативные (аналог структуры ы 1с), числовые (к ним надо обращатся по ЧИСЛОВОМУ индексу, и каждый новый элемент получает инкрементный от последнего индекс).
так вот в коде есть запрос в базу и от туда получается числовой массив (в базе он хранится в виде серилизованной строки), я получаю массив и вижу там 3 элемента, при этом в коде обращение идет примерно так «а = массив[20]», где 20 это числовой индекс, я стал искать где это я потерял 17 записей массива, ну нету их и все.
оказалось, что нумерация массива с числовым индексом может идти с пробелами, в моем массиве было 3 элемента с индексами 4,10,20 я себе весь мозг взорвал 🙂 а вы говорите «неразрывный пробел» 🙂
Источник
Не работает консоль запросов в собственной конфигурации 1С 8.3
Здравствуйте. В собственной конфигурации для разных лелей — сделать выборку, новый отчет и т.д. активно пользовался консолью запросов. Текущая версия платформы — 8.3.15.1565. В текущей версии платформы запускаю ИБ, открываю консоль и пытаюсь запустить Конструктор запроса и получаю ошибку:
ошибка инициализации модуля: ВнешняяОбработка.QueryWizard.Форма.QueryWizard.Форма
по причине:
<ВнешняяОбработка.QueryWizard.Форма.QueryWizard.Форма(12791, 19)>: Процедура или функция с указанным именем не определена (StrFind)
PointPosition = >StrFind(Type.Value, «.»);
проверил на типовой конфе -есть доступ к Документообороту, все открывается, запрос создается. Что не так с собственной конфой? как решить проблему? помогите пожалуйста.
Добавлено через 10 минут
открыл консоль в конфигураторе , запустил отладку и ме вывалились ошибки:
ВнешняяОбработка.КонсольЗапросов.Форма.Форма.Форма(1260,22)> : Процедура или функция с указанным именем не определена (СтрНайти)
ПозицияОкончание = >СтрНайти(ТекстИнформацияОМестеОшибки, «)>»); (Проверка: Тонкий клиент)
<ВнешняяОбработка.КонсольЗапросов.Форма.Форма.Форма(1241,16) >: Процедура или функция с указанным именем не определена (СтрРазделить)
НаборВерсий = >СтрРазделить(СистемнаяИнформация.ВерсияПриложения, «.»); (Проверка: Тонкий клиент)
<ВнешняяОбработка.КонсольЗапросов.Форма.Форма.Форма(1265,25) >: Процедура или функция с указанным именем не определена (СтрРазделить)
НомерКолонкиИСтроки = >СтрРазделить(Сред(ТекстИнформацияОМестеОшибки, 1, ПозицияОкончание — 1), «,»); (Проверка: Тонкий клиент)
<ВнешняяОбработка.КонсольЗапросов.Форма.Форма.Форма(1243,48) >: Процедура или функция с указанным именем не определена (СтрСоединить)
ВерсияПриложения = ТипЧисло.ПривестиЗначение( >СтрСоединить(НаборВерсий)); (Проверка: Тонкий клиент)
<ВнешняяОбработка.КонсольЗапросов.Форма.Форма.Форма(2120,17) >: Процедура или функция с указанным именем не определена (СтрНайти)
ПозицияТочка = >СтрНайти(ВРег(ТекстЗапроса), Точка); (Проверка: Тонкий клиент)
В языке 1с не нашел таких функций. что делать?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
РИБ на собственной конфигурации
Здравствуйте. Встала задача организации распределенной базы схемы — одноуровневая звезда.
Печатная форма обработки собственной конфигурации
Здравствуйте. В собственной конфигурации есть обработка с реквизитами: Началопериода,КонецПериода.
Создание собственной конфигурации по расчету зарплаты
Итак. Доброго времени суток всем пользователям этого раздела! Столкнулся я с такими проблемами.
Ошибка RLS для документа в собственной конфигурации 1с8.3
Здравствуйте. Делаю конфу на 1с 8.3. Добавил справочник Сотрудники со стандартными реквизитами и.
Источник
Содержание:
1. Функция поиска подстроки в платформе программы 1С
2. Ошибка для функции «СтрНайти()» в конфигурации системы 1С
1. Функция поиска подстроки в платформе программы 1С
В статье будет рассказано о том, при помощи какой функции можно искать подстроки, а также о том, какие ещё опции есть у этой функции. Отдельно будет описана ошибка о неопределённости данной функции и способы её устранения, так как, если такой случай возник, то не будет возможности и подстроку найти.
Чтобы в 1С найти подстроку – нужно задействовать функцию «СтрНайти()», которая будет возвращать первичный, либо n-ный вход искомой подстроки в основную строку.
Синтаксис нашей функции – «СтрНайти()» довольно прост, он демонстрируется далее:
Число СтрНайти
Также, на всякий случай, вот альтернативный вариант данного синтаксиса, на английском языке:
Number StrFind
Как можно увидеть, у функции «СтрНайти()» есть параметры, рассмотрим их:
· Параметр «ИсходнаяСтрока» всегда имеет в 1С тип строки и в нём содержится первичная строка, та, в которой мы будем искать подстроку;
· Параметр «ПодстрокаПоиска» — тоже всегда имеет в 1С тип строки и является тем искомым элементом в исходной строке;
· Параметр «НаправлениеПоиска» отвечает за то, с какой стороны программа будет искать в 1С подстроку в строке. У данного параметра могут быть следующие вариации:
— «СКонца» — направление поиска начинается с конечной точки строки и идёт к её началу»;
— «СНачала» — направление поиска стартует в начале строки и идёт до её конца. Данная вариация установлена стандартными настройками системы 1С и будет выбрана по умолчанию.
· Параметр «НачальнаяПозиция» — он не является обязательным, числового типа данных бд, и отвечает за место в исходном номере строки, с которого стартует поиск подстроки. В случае, когда данный параметр не задавался, а у параметра «НаправлениеПоиска» стоит значение «СНачала», то здесь будет стоять значение «1».
· Параметр «НомерВхождения» имеет числовой тип данных бд и отвечает за номер по порядку того, как подстрока располагается в первоначальной строке. Согласно стандартным настройкам 1С, его значение – «1», это значит, что будет находится первое расположение подстроки внутри строки, ведь, их может быть и несколько.
Функция «СтрНайти()» вернёт нам число, это будет порядковый номер символа, с которого начинается наша в 1С подстрока в строке.
Получается, что, при помощи функции «СтрНайти()» мы ищем нужное расположение подстроки или с конца, или с начала нашей первичной строки. Первый порядковый номер внутри строки – это один. Если же, внутри исходной строки нет искомой строки, тогда вернётся значение ноль. В случае, когда, хотя бы, один из обязательных параметров пуст – вернётся значение единицы.
Замечание: для данной функции регистр данных имеет значение и учитывается при функции поиска подстроки.
Данная функция в свободном доступе для таких категорий:
· Веб-клиент;
· Сервер;
· Внешнее соединение 1С;
· Мобильное приложение на сервере;
· Мобильное приложение на клиенте;
· Тонкий клиент;
· Толстый клиент;
· Мобильный клиент;
· Интеграция.
Ниже демонстрируется скриншот с примером кода того, как можно использовать функцию «СтрНайти()»:
ИсходнаяСтрока
2. Ошибка для функции «СтрНайти()» в конфигурации системы 1С
Иногда, при использовании функции «СтрНайти()», появляется ошибка о том, что данная функция не была определена. Это означает, что версия платформы программы 1С устарела («1С:Предприятие 8.3.5» или старше), так как, эта функция считается новой.
Чтобы устранить ошибку, — необходимо проверить совместимость функции с системой: открываем конфигурацию системы 1С, переходим в панель «Свойства» и кликаем на «Режим совместимости», если он находится на значении «не использовать», то нужно или обновить платформу, или заменить на схожую, но устаревшую функцию – «Найти()»
В статье было рассказано о том, как внутри системы программы 1С можно найти подстроку при помощи специальной функции, подробно описана эта функция поиска подстроки и ошибка, которая может возникать внутри системы, связанная с ней.
Специалист компании «Кодерлайн»
Айдар Фархутдинов
Процедура или функция с указанным именем не определена
Ошибка в управляемой форме списка в контексте выполняемой на сервере процедуры (Проверка: Сервер).
Вот полный текст ошибки:
{Документ.ЗатратыПоСтраховомуПокрытию.Форма.ФормаСписка.Форма(92,30)}: Процедура или функция с указанным именем не определена (СписокЗатратПоКарте)
СписокЗн.ЗагрузитьЗначения(<<?>>СписокЗатратПоКарте(СтраховаяКарта)); (Проверка: Сервер)
Вот фрагмент кода:
&НаСерверБезКонтекста Функция СписокЗатратПоКарте(СтраховаяКарта) Если СтраховаяКарта = Неопределено Или СтраховаяКарта = Справочники.СтраховыеКарты.ПустаяСсылка() Тогда Возврат Новый Массив; КонецЕсли; КонецФункции
Решение:
- поскольку из «серверной» процедуры вполне можно вызывать вне контекстную функцию/процедуру этого же модуля проверяем ее имя, количество параметров ( в данном случае всё было верно)
- если же модуль общий проверяем в его свойствах установленные флажки «Вызов сервера», «Клиент (управляемое приложение»
- проверяем ее название, не должны совпадать с уже существующими системными функциями. Например, СтрНайти(), СтрШаблон(), СтрСравнить(), СтрНачинаетсяС(), СтрЗаканчиваетсяНа(), СтрРазделить(),СтрСоединить().
- Проверяем директиву компиляции: оказалось пропущена буква «е» -> &НаСервереБезКонтекста. Редактор подсвечивает директиву, не выдает ошибок, но при исполнении и вызове выходит указанное сообщение
Реклама — это техника запудривания мозгов. Старайтесь не забывать об этом: с рекламой шутки плохи.