По теме из базы знаний
- Выгрузка-загрузка любых данных из 1С (и измененных) в XML между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2/3.0
- 1С Характеристики номенклатуры. Переход на учёт по характеристикам для УТ, УНФ, Розница, КА
- Распознавание и загрузка сканов в 1С "одним нажатием". УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.
- Выгрузка УПД из 1С УТ, БП, УНФ, КА и ERP для OZON и Яндекс Маркет
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Код |
---|
Перем лНедопустимыеСимволы;
Функция фНормализоватьСтроку(Инпут)
дл = СтрДлина(лНедопустимыеСимволы);
для сч = 1 по дл цикл
инпут = СтрЗаменить(Инпут,Сред(лНедопустимыеСимволы,сч,1),"");
конеццикла;
возврат Инпут;
КонецФункции
Процедура ПриЗаписи()
МояКакаяТоСтрока = фНормализоватьСтроку(МояКакаяТоСтрока);
КонецПроцедуры
лНедопустимыеСимволы = Симв(7)+Симв(10)+Симв(13); Показать полностью |
Сhe Burashka Написал:
-------------------------------------------------------
> Перем лНедопустимыеСимволы;
>
> Функция фНормализоватьСтроку(Инпут)
> дл = СтрДлина(лНедопустимыеСимволы);
> для сч = 1 по дл цикл
> инпут =
> СтрЗаменить(Инпут,Сред(лНедопустимыеСимволы,сч,1),
> "");
> конеццикла;
> возврат Инпут;
> КонецФункции
>
> Процедура ПриЗаписи()
> МояКакаяТоСтрока =
> фНормализоватьСтроку(МояКакаяТоСтрока);
> КонецПроцедуры
>
> лНедопустимыеСимволы = Симв(7)+Симв(10)+Симв(13);
>
>
>
Работает. Куда плюсики нести?
-------------------------------------------------------
> Перем лНедопустимыеСимволы;
>
> Функция фНормализоватьСтроку(Инпут)
> дл = СтрДлина(лНедопустимыеСимволы);
> для сч = 1 по дл цикл
> инпут =
> СтрЗаменить(Инпут,Сред(лНедопустимыеСимволы,сч,1),
> "");
> конеццикла;
> возврат Инпут;
> КонецФункции
>
> Процедура ПриЗаписи()
> МояКакаяТоСтрока =
> фНормализоватьСтроку(МояКакаяТоСтрока);
> КонецПроцедуры
>
> лНедопустимыеСимволы = Симв(7)+Симв(10)+Симв(13);
>
>
>
Работает. Куда плюсики нести?
плюсики куда складывать - указано в моем профиле личном - там есть кубышка для вспомоществований ;-)
..
- ясен пень, что сюда надо много чего добавить, у мну например для нормализации строк для имен файлов (в качестве имени файла м.б. использован заголовк формы, номердокумента и прочее...) определен список символов другой...
...ну если развивать то так:
//
а быстрее всего будет работать вариант примерно такой:
определяем массив размером от 1 до 255
элемент массива с номером N содержит Симв(N) - если символ разрешенный, и пустую строку в противном случае и адресоваться п элементам массивов в качестве смещения юзая код текущего символа...
..
Код |
---|
лНедопустимыеСимволы = Симв(7)+Симв(10)+Симв(13) Показать полностью |
...ну если развивать то так:
Код |
---|
Функция фНормализоватьСтроку(Инпут,лНедопустимыеСимволыНабор,Еприсадка)
дл = СтрДлина(лНедопустимыеСимволы);
для сч = 1 по дл цикл
инпут = СтрЗаменить(Инпут,Сред(лНедопустимыеСимволыНабор,сч,СтрДлина(Еприсадка)),Еприсадка);
конеццикла;
возврат Инпут;
КонецФункции Показать полностью |
//
а быстрее всего будет работать вариант примерно такой:
определяем массив размером от 1 до 255
элемент массива с номером N содержит Симв(N) - если символ разрешенный, и пустую строку в противном случае и адресоваться п элементам массивов в качестве смещения юзая код текущего символа...
Сhe Burashka Написал:
-------------------------------------------------------
> универсальная процедура обхода и выборки всех
> объектов метаданных на проверку вхождения в
> строковые реквизиты недопустимых смволов по
> перечню - работы на совсем немного...
Наверно я нечетко выразился. Я имел ввиду, функцию на вход которой подается строка, а функция возвращает эту строку без служебных символов. Чтоб ее можно было вставить в предопределенную процедуру "ПриЗаписи", скажем в справочниках "Номенклатура", "Контрагенты" для проверки наименования.
-------------------------------------------------------
> универсальная процедура обхода и выборки всех
> объектов метаданных на проверку вхождения в
> строковые реквизиты недопустимых смволов по
> перечню - работы на совсем немного...
Наверно я нечетко выразился. Я имел ввиду, функцию на вход которой подается строка, а функция возвращает эту строку без служебных символов. Чтоб ее можно было вставить в предопределенную процедуру "ПриЗаписи", скажем в справочниках "Номенклатура", "Контрагенты" для проверки наименования.
O-Planet Написал:
-------------------------------------------------------
> лНедопустимыеСимволы + Симв(9) еще
>
> А вообще лучше получить код символа и проверять,
> чтобы он четко входил в определенные интервалы.
> Просто таблицу кодов глянь, там все четко...
Может написать так?
-------------------------------------------------------
> лНедопустимыеСимволы + Симв(9) еще
>
> А вообще лучше получить код символа и проверять,
> чтобы он четко входил в определенные интервалы.
> Просто таблицу кодов глянь, там все четко...
Может написать так?
Код |
---|
лНедопустимыеСимволы = Симв(255);
Для ии = 0 по 31 Цикл
лНедопустимыеСимволы = лНедопустимыеСимволы + Симв(ии);
КонецЦикла;
Показать полностью |
Посмотрел внимательнее на код Чебура... Ниасилил :) надо вот как:
Функцию ЭтоНедопустимыйСимвол - пишешь, как я и сказал, чтобы проверяла код символа. ПриОкончанииРедактированияПоля вставляешь в формулу строковых полей, которые можно редактировать. На вход подяешь их значение. Например ПриОкончанииРедактированияПоля(Наименование)
Код |
---|
Процедура ПриОкончанииРедактированияПоля(Стр)
ВозврСтр="";
Дл=СтрДлина(Стр);
Для К=1 По Дл Цикл
С=Сред(Стр,К,1);
Если ЭтоНедопустимыйСимвол(С) Тогда
ВозврСтр=ВозврСтр+" ";
Иначе
ВозврСтр=ВозврСтр+С;
КонецЕсли;
КонецЦикла;
Стр=ВозврСтр;
КонецПроцедуры
Показать полностью |
Функцию ЭтоНедопустимыйСимвол - пишешь, как я и сказал, чтобы проверяла код символа. ПриОкончанииРедактированияПоля вставляешь в формулу строковых полей, которые можно редактировать. На вход подяешь их значение. Например ПриОкончанииРедактированияПоля(Наименование)
О-планет -
ЭтоНедопустимыйСимвол(С)
Недопустимый символ - это КодСимв(Символ)<32,
Допустимый символ - это КодСимв(Символ)>31 и все.
ВозврСтр=ВозврСтр+" "; надо пустую строку, не пробел.
Для 1С недопустимые символы - это символы с кодами от 0 по 31.
Я просто написал небольшую программку и проверил это.
Кому интересно могу ознакомить.
ЭтоНедопустимыйСимвол(С)
Недопустимый символ - это КодСимв(Символ)<32,
Допустимый символ - это КодСимв(Символ)>31 и все.
ВозврСтр=ВозврСтр+" "; надо пустую строку, не пробел.
Для 1С недопустимые символы - это символы с кодами от 0 по 31.
Я просто написал небольшую программку и проверил это.
Кому интересно могу ознакомить.
maloi_a Написал:
-------------------------------------------------------
> Для символьных реквизитов 1С 7.7 Код
> символа<32,
> для 8.0 ограничений нет.
Немного не понял. 1С 7.7 прекрасно живет с символами с кодом <32 в текстовых реквизитах. Проблемы возникают при обработке XML файлов.
Мне казалось это не проблема 1С платформы - это проблема ограничений на формат xml.
Вы хотите сказать, что 8.0 не имеет проблем когда обрабатывает xml файлы содержащие в текстовых данных служебные символы?
-------------------------------------------------------
> Для символьных реквизитов 1С 7.7 Код
> символа<32,
> для 8.0 ограничений нет.
Немного не понял. 1С 7.7 прекрасно живет с символами с кодом <32 в текстовых реквизитах. Проблемы возникают при обработке XML файлов.
Мне казалось это не проблема 1С платформы - это проблема ограничений на формат xml.
Вы хотите сказать, что 8.0 не имеет проблем когда обрабатывает xml файлы содержащие в текстовых данных служебные символы?
1С не прекрасно ведет себя с символами с кодом <32.
Запустие тестирование и исправление и Вы увидите как ведёт себя 1С 7.7.
А именно - очищает значение реквизита. 8.0 так не делает.
Это всё, что я хотел сказать.
Кроме XML проблемы возникают при обмене между разделёнными базами.
И где-то может быть ещё. С этим надо очень осторожно.
Запустие тестирование и исправление и Вы увидите как ведёт себя 1С 7.7.
А именно - очищает значение реквизита. 8.0 так не делает.
Это всё, что я хотел сказать.
Кроме XML проблемы возникают при обмене между разделёнными базами.
И где-то может быть ещё. С этим надо очень осторожно.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот