Ошибка при выгрузке номенклатур

1. nutmeg 27.11.07 15:59 Сейчас в теме
при выгрузке выдаёт ошибку
Элемент.УстановитьАтрибут(ИдАтрибута, ЗнАтрибута);
{\\SRV2003B\1CSQL\EXTFORMS\CDEXPVAR.ERT(506)}: : Ошибка исполнения метода

- раньше проблем не было, если кто знает что исправить, помогите.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. CheBurator 3121 27.11.07 20:38 Сейчас в теме
возможно, в выгружаемых строковых значениях имеются служебные непечатаемые символы...?
3. nutmeg 28.11.07 10:13 Сейчас в теме
ага ! спасибо,кто то номенклатуру завел и символ вбил (наверное из таблицы символов) перед наименованием.
4. Abadonna 3960 28.11.07 11:52 Сейчас в теме
Найди этого "кто-то" и начисть ему рыло
Т.е. посмотреть надо в журнале регистрации
5. Pavlovsky 56 28.11.07 11:58 Сейчас в теме
За что морду бить?! Служебный символ легко заносится через ctrl/C ctrl/V
6. nutmeg 28.11.07 13:43 Сейчас в теме
АГА! а если зделать тестирование и исправление то 1с дружески удаляет эту номенклатуру...воощее ....
интерестно, а что будет если потом перепровести документы ..вагон лобзиков испариться или нет?
7. Pavlovsky 56 30.11.07 09:51 Сейчас в теме
Вопрос по поводу. Может кто пытался писать процедуру проверки на наличие в строке служебных символов?
10. CheBurator 3121 01.12.07 12:59 Сейчас в теме
Код
Перем лНедопустимыеСимволы;

Функция фНормализоватьСтроку(Инпут)
  дл = СтрДлина(лНедопустимыеСимволы);
  для сч = 1 по дл цикл
    инпут = СтрЗаменить(Инпут,Сред(лНедопустимыеСимволы,сч,1),"");
  конеццикла;
  возврат Инпут;
КонецФункции

Процедура ПриЗаписи()
   МояКакаяТоСтрока = фНормализоватьСтроку(МояКакаяТоСтрока);
КонецПроцедуры

лНедопустимыеСимволы = Симв(7)+Симв(10)+Симв(13);
Показать полностью



14. Pavlovsky 56 03.12.07 08:56 Сейчас в теме
Сhe Burashka Написал:
-------------------------------------------------------
> Перем лНедопустимыеСимволы;
>
> Функция фНормализоватьСтроку(Инпут)
> дл = СтрДлина(лНедопустимыеСимволы);
> для сч = 1 по дл цикл
> инпут =
> СтрЗаменить(Инпут,Сред(лНедопустимыеСимволы,сч,1),
> "");
> конеццикла;
> возврат Инпут;
> КонецФункции
>
> Процедура ПриЗаписи()
> МояКакаяТоСтрока =
> фНормализоватьСтроку(МояКакаяТоСтрока);
> КонецПроцедуры
>
> лНедопустимыеСимволы = Симв(7)+Симв(10)+Симв(13);
>
>
>


Работает. Куда плюсики нести?

15. CheBurator 3121 05.12.07 03:39 Сейчас в теме
плюсики куда складывать - указано в моем профиле личном - там есть кубышка для вспомоществований ;-)
..
Код
лНедопустимыеСимволы = Симв(7)+Симв(10)+Симв(13)
Показать полностью
- ясен пень, что сюда надо много чего добавить, у мну например для нормализации строк для имен файлов (в качестве имени файла м.б. использован заголовк формы, номердокумента и прочее...) определен список символов другой...
...ну если развивать то так:
Код
Функция фНормализоватьСтроку(Инпут,лНедопустимыеСимволыНабор,Еприсадка)
  дл = СтрДлина(лНедопустимыеСимволы);
  для сч = 1 по дл цикл
    инпут = СтрЗаменить(Инпут,Сред(лНедопустимыеСимволыНабор,сч,СтрДлина(Еприсадка)),Еприсадка);
  конеццикла;
  возврат Инпут;
КонецФункции
Показать полностью

//
а быстрее всего будет работать вариант примерно такой:
определяем массив размером от 1 до 255
элемент массива с номером N содержит Симв(N) - если символ разрешенный, и пустую строку в противном случае и адресоваться п элементам массивов в качестве смещения юзая код текущего символа...
8. CheBurator 3121 30.11.07 13:23 Сейчас в теме
универсальная процедура обхода и выборки всех объектов метаданных на проверку вхождения в строковые реквизиты недопустимых смволов по перечню - работы на совсем немного...
9. Pavlovsky 56 30.11.07 14:45 Сейчас в теме
Сhe Burashka Написал:
-------------------------------------------------------
> универсальная процедура обхода и выборки всех
> объектов метаданных на проверку вхождения в
> строковые реквизиты недопустимых смволов по
> перечню - работы на совсем немного...

Наверно я нечетко выразился. Я имел ввиду, функцию на вход которой подается строка, а функция возвращает эту строку без служебных символов. Чтоб ее можно было вставить в предопределенную процедуру "ПриЗаписи", скажем в справочниках "Номенклатура", "Контрагенты" для проверки наименования.


11. O-Planet 6432 01.12.07 15:13 Сейчас в теме
лНедопустимыеСимволы + Симв(9) еще

А вообще лучше получить код символа и проверять, чтобы он четко входил в определенные интервалы. Просто таблицу кодов глянь, там все четко...
13. poppy 01.12.07 17:33 Сейчас в теме
O-Planet Написал:
-------------------------------------------------------
> лНедопустимыеСимволы + Симв(9) еще
>
> А вообще лучше получить код символа и проверять,
> чтобы он четко входил в определенные интервалы.
> Просто таблицу кодов глянь, там все четко...

Может написать так?
Код
лНедопустимыеСимволы = Симв(255);
Для ии = 0 по 31 Цикл
    лНедопустимыеСимволы = лНедопустимыеСимволы + Симв(ии);
КонецЦикла;
Показать полностью
12. O-Planet 6432 01.12.07 15:19 Сейчас в теме
Посмотрел внимательнее на код Чебура... Ниасилил :) надо вот как:

Код
Процедура ПриОкончанииРедактированияПоля(Стр)
  ВозврСтр="";
  Дл=СтрДлина(Стр);
  Для К=1 По Дл Цикл
    С=Сред(Стр,К,1);
    Если ЭтоНедопустимыйСимвол(С) Тогда
      ВозврСтр=ВозврСтр+" ";
    Иначе
      ВозврСтр=ВозврСтр+С;
    КонецЕсли;
  КонецЦикла;
  Стр=ВозврСтр;
КонецПроцедуры
Показать полностью


Функцию ЭтоНедопустимыйСимвол - пишешь, как я и сказал, чтобы проверяла код символа. ПриОкончанииРедактированияПоля вставляешь в формулу строковых полей, которые можно редактировать. На вход подяешь их значение. Например ПриОкончанииРедактированияПоля(Наименование)
16. maloi_a 06.12.07 07:42 Сейчас в теме
О-планет -
ЭтоНедопустимыйСимвол(С)
Недопустимый символ - это КодСимв(Символ)<32,
Допустимый символ - это КодСимв(Символ)>31 и все.
ВозврСтр=ВозврСтр+" "; надо пустую строку, не пробел.
Для 1С недопустимые символы - это символы с кодами от 0 по 31.
Я просто написал небольшую программку и проверил это.
Кому интересно могу ознакомить.
17. CheBurator 3121 10.12.07 00:58 Сейчас в теме
смотяр где юзать недопустимые символы.. для имен файлов - надо бы расширить...
18. maloi_a 10.12.07 13:15 Сейчас в теме
Да, для имен файлов, ограничение системы.
Для символьных реквизитов 1С 7.7 Код символа<32,
для 8.0 ограничений нет.
19. Pavlovsky 56 10.12.07 15:39 Сейчас в теме
maloi_a Написал:
-------------------------------------------------------
> Для символьных реквизитов 1С 7.7 Код
> символа<32,
> для 8.0 ограничений нет.

Немного не понял. 1С 7.7 прекрасно живет с символами с кодом <32 в текстовых реквизитах. Проблемы возникают при обработке XML файлов.
Мне казалось это не проблема 1С платформы - это проблема ограничений на формат xml.
Вы хотите сказать, что 8.0 не имеет проблем когда обрабатывает xml файлы содержащие в текстовых данных служебные символы?

20. maloi_a 11.12.07 05:55 Сейчас в теме
1С не прекрасно ведет себя с символами с кодом <32.
Запустие тестирование и исправление и Вы увидите как ведёт себя 1С 7.7.
А именно - очищает значение реквизита. 8.0 так не делает.
Это всё, что я хотел сказать.
Кроме XML проблемы возникают при обмене между разделёнными базами.
И где-то может быть ещё. С этим надо очень осторожно.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот