Перейти к содержимому


УТ 11, Письма с вложенными файлами, где есть недопустимые символы не принимаются


  • Вы не можете ответить в тему
Сообщений в теме: 13

#1 sammas

    Частый гость


  • 65 сообщений

Отправлено 15 февраля 2012 - 06:10

1С:Предприятие 8.2 (8.2.15.294)
Управление торговлей, редакция 11.0 (11.0.7.13)

Не принимается письмо где есть недопустимые символы... в журнале регистрации пишет следующее

"При получении письма Re:запросы на 01.02.12 от 05.02.2012 18:56:41, отправленное c адреса ivan@vostokbg.ru произошла ошибка
{ОбщийМодуль.ОбщегоНазначенияКлиентСервер.Модуль(749)}: Поле объекта недоступно для записи (ИмяФайла)
ИмяФайла = СтрЗаменить(ИмяФайла,НедопустимыйСимвол,НаЧтоМенять);"

Отладчик показывает, что "ИмяФайла" это Строка... и не пойму почему оно недоступно для записи.

Подскажите пожалуйста это ошибка релиза? и можно ли исправить

#2 sammas

    Частый гость


  • 65 сообщений

Отправлено 15 февраля 2012 - 10:50

При этом недопустимые символы в файле ddkwyvs[2].xls, это скобки...

#3 uza

    1С, VBA (EXCEL), VB (.NET + WEB)


  • 1 349 сообщений

Отправлено 15 февраля 2012 - 14:44

А что есть ИмяФайла? Это входной параметр процедуры/ф-ии, это глобальная переменная (если да, то где она объявлена?)
А если вместо вашего

ИмяФайла = СтрЗаменить(ИмяФайла,НедопустимыйСимвол,НаЧтоМенять);

написать код

ИмяФайла_Зам = СтрЗаменить(ИмяФайла,НедопустимыйСимвол,НаЧтоМенять);
ИмяФайла = ИмяФайла_Зам;

- то что на это скажет программа?

Если же ИмяФайла - параметр, то как он передается в эту процедуру/ф-ию? Уж не как Чётатам(СпрСсылка.ИмяФайла) ?

Сообщение отредактировал uza: 15 февраля 2012 - 14:47

Не все полезно - что в БД залезло

#4 mialord

    "Свадебный генерал"


  • 3 537 сообщений

Отправлено 15 февраля 2012 - 19:08

Функция ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайла,НаЧтоМенять = " ") Экспорт
МассивНайденныхНедопустимыхСимволов = НайтиНедопустимыеСимволыВИмениФайла(ИмяФайла);
Если МассивНайденныхНедопустимыхСимволов.Количество() > 0 Тогда
  Для каждого НедопустимыйСимвол Из МассивНайденныхНедопустимыхСимволов Цикл
   ИмяФайла = СтрЗаменить(ИмяФайла,НедопустимыйСимвол,НаЧтоМенять);
  КонецЦикла;
КонецЕсли;

Возврат ИмяФайла;
КонецФункции


Поставьте точку останова на отладке посмотрите какой тип имеет переменная ИмяФайла, вряд ли там строка

#5 sammas

    Частый гость


  • 65 сообщений

Отправлено 16 февраля 2012 - 09:30

Смотрел переменную ИмяФайла явлается строкой... пока не стал заморачиваться удалил эти письма с сервера... до следующего такого письма...

#6 uza

    1С, VBA (EXCEL), VB (.NET + WEB)


  • 1 349 сообщений

Отправлено 16 февраля 2012 - 10:24

А я же не зря просил посмотреть Место вызова этой самой ф-ии, после которого она падает.

Во пример того, как это могло быть


СпрКтр = Справочник.Контрагенты.НайтиПоКоду("0000000001"); //получаем ссылку на справочник. Все реквизиты ссылка НЕ ДОСТУПНЫ для записи ведь!!!
ЗаменитьНедопустимыеСимволыВИмениФайла(СпрКтр.ИмяФайлаКонтрагента,""); //передаем реквизит ссылки на справочник, который как мы помним, для записи не допустим!
//далее в самой функции замены символов происходит попытка изменения реквизита СпрКтр.ИмяФайлаКонтрагента, от чего и ловим ошибку.
//а почему ловим ошибку? Правильно, потому что выше я два раза сказал что реквизит ССЫЛКИ справочника для записи не доступны.
//передвать нужно либо реквизит объекта, либо так:

//ИмяФайлаКонтрагента_стр = СпрКтр.ИмяФайлаКонтрагента;
//ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайлаКонтрагента_стр,""); //передаем уже не реквизит, но строку - которую хоть в хвост, хоть в ан..гриву можем менять
//Если ИмяФайлаКонтрагента_стр <> СпрКтр.ИмяФайлаКонтрагента Тогда
//	... решаем чего делать, или НЕ делать.
//КонецЕсли;



Сообщение отредактировал uza: 16 февраля 2012 - 10:26

Не все полезно - что в БД залезло

#7 mialord

    "Свадебный генерал"


  • 3 537 сообщений

Отправлено 16 февраля 2012 - 13:23

Открытие Америки :)

#8 uza

    1С, VBA (EXCEL), VB (.NET + WEB)


  • 1 349 сообщений

Отправлено 16 февраля 2012 - 15:51

Зовите меня просто - Элвис Пресли, поэт-песенник.

Для Вас mialord и для меня, это ,возможно и очевидная вещь (хотя за себя - я сомневаюсь. Просто F5, F10/F11 нажимать было бы не лень, и вопросов бы не задавал). Но для некоторых, даже и опытных - это может быть сильно не очевидно.

По реализации же ф-ии есть у меня притенении.
Ну блин, или принимайте ИмяФала по значению, или не меняйте его внутри ф-ии.
Используйте промежуточную переменную


Функция ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайла,НаЧтоМенять = " ") Экспорт
   Результат = ИмяФайла;
   МассивНайденныхНедопустимыхСимволов = НайтиНедопустимыеСимволыВИмениФайла(Результат);
   Если МассивНайденныхНедопустимыхСимволов.Количество() > 0 Тогда
      Для каждого НедопустимыйСимвол Из МассивНайденныхНедопустимыхСимволов Цикл
         Результат = СтрЗаменить(Результат,НедопустимыйСимвол,НаЧтоМенять);
      КонецЦикла;
   КонецЕсли;
Возврат Результат;
КонецФункции


Вот, например.

Сообщение отредактировал uza: 16 февраля 2012 - 15:54

Не все полезно - что в БД залезло

#9 mialord

    "Свадебный генерал"


  • 3 537 сообщений

Отправлено 16 февраля 2012 - 17:28

Может начнем всех прямым контекстом посылать ... :P на курсы Гилева :D
Ээээх, ну почему люди поиском не пользуются, все сотни раз описывалось


#10 uza

    1С, VBA (EXCEL), VB (.NET + WEB)


  • 1 349 сообщений

Отправлено 17 февраля 2012 - 09:28

Ну на курсы Гилева - это сильно.
Хотя, если автор догадался запостить свой вопрос в ветку "Конфигурирование", то я вот отчего то думаю что человек хоть немного "в теме" - но видимо ошибаюсь.

А по поводу поиска:
Если спич про ГуглоТындексы - то это да, а если спич про поиск на этом сайте - то...
Ну как то вот побовал я писком тут попользоваться - что то то как то "не впечатлило".
Да и в связи с обильной генерацией тем "я навичок, не пинайте", и развитием сиих тем, то поиск вываливает либо "нишиша" либо "кучи кучные"

Сообщение отредактировал uza: 17 февраля 2012 - 09:29

Не все полезно - что в БД залезло

#11 BabySG

    Любитель программирования


  • 12 221 сообщений

Отправлено 17 февраля 2012 - 11:06


Поиск по сайту на новом движке - стал намного лучше. Но постараюсь еще и яндекс прикрутить к нему (как на старом)
За названием тем должны следить модераторы - если название кривое: стоит использовать жалобу на сообщение с указанием причины.

Ничто так сильно не укрепляет веру в человека, как ПРЕДОПЛАТА!

#12 sammas

    Частый гость


  • 65 сообщений

Отправлено 21 февраля 2012 - 07:14

Друзья, я чуть чуть разбираюсь в программировании... МНЕ снова пришло письмо с файлом, который имеет недопустимое название...

Та функция о которой я говорю, она же типовая и мне не хотелось ее переписывать... но видимо придется так как не работает тот код... буду пробовать.

#13 sammas

    Частый гость


  • 65 сообщений

Отправлено 21 февраля 2012 - 11:29

Коллеги, что то я уже больше полдня сижу и думаю как переписать код, чтобы все заработало в типовой УТ 11, но не знаю как... потому, что эта функция вызывается из другой функции, а та из еще и т.д.
а письма идут постоянно с такими файлами, ребята что делать...

это же ошибка в типовом релизе

Кстати UZA был изначально прав, что параметр передается "Уж не как Чётатам(СпрСсылка.ИмяФайла) ? "

#14 uza

    1С, VBA (EXCEL), VB (.NET + WEB)


  • 1 349 сообщений

Отправлено 22 февраля 2012 - 09:37

Ну так найти инициализирующее место вызова, и поправить там до выхода лечения (если оно еще не вышло).

Например можно сделать так.
Временно комментим код в месте где вылетает спотычка
ИмяФайла = СтрЗаменить(ИмяФайла,НедопустимыйСимвол,НаЧтоМенять);

И заменяем его на кусок
//ИмяФайла = СтрЗаменить(ИмяФайла,НедопустимыйСимвол,НаЧтоМенять);
БылаОшибка = 0;
Попытка
    ИмяФайла = СтрЗаменить(ИмяФайла,НедопустимыйСимвол,НаЧтоМенять);
Исключение
    БылаОшибка = 1;
КонецПопытки;
СтопМашина = Ложь;

Далее ставим условную точку останова на СтопМашина. С условием что БылаОшибка = 1

Ну и далее плавно по F10 проходим все возвраты управления до того места, где эта зараза была вызвана исходно. Ну а там уже и думаем чего и как поправить.
Не все полезно - что в БД залезло





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных