Ошибка при вызове конструктора двоичныеданные каталог не обнаружен

Ну совершенно верно так и должно быть у каждого с версией 11.0.7.8. Вообще скажу сразу, что функционал работы с почтой весьма убогий, это поймет каждый кто пройдется F11 от создания письма до его отправки, письмо отправляется долго.. Путём доработки скорость отправки писем можно увеличить в 3-10 раз. Кроме того данный глюк при работе с почтой в данном релизе не единственный. Если используется фоновое задание для получения и отправки почты вы еще натолкнётесь обязательно на конфликт блокировок при выполнении транзакций, ну да ладно вопрос не в этом был.
Относительно вашей проблемы можно происходит следующее

Данные = Новый ДвоичныеДанные(Стр.ИмяФайлаНаКомпьютере);

В данной строчке производится запись двоичных данных в переменную «Данные» из файла на диске, расположенному по пути содержащемся в переменной «Стр.ИмяФайлаНаКомпьютере». Естественно получается ошибка так как вместо пути к файлу в эту переменную запихнули ссылку на файл во временном хранилище. Решить данную проблему можно двумя путями.
1) Дописать модуль формы документа для возможности приёма ссылок на файлы из временного хранилища. Для этого модифицируйте код из модуля таким образом:

	Если ЭтоАдресВременногоХранилища(Стр.ИмяФайлаНаКомпьютере) Тогда
Данные=ПолучитьИзВременногоХранилища(Стр.ИмяФайлаНаКомпьютере);
Иначе
Данные = Новый ДвоичныеДанные(Стр.ИмяФайлаНаКомпьютере);
Стр.ИмяФайлаНаКомпьютере = ПоместитьВоВременноеХранилище(Данные, "");
КонецЕсли;

Тем самым мы определяем что если нам передали ссылку на файл во временном хранилище, то мы просто получаем из временного хранилища, а если это просто путь то тогда уже создаем и помещаем двоичные данные во временное хранилище.
Эта доработка уже позволит отправлять сообщения. Но останется еще одна небольшая проблемка. В письме для вложений не будет показана иконка приложения. Чтобы поправить эту досадную оплошность в строке 97 модуля формы документа «ИсходящееЭлектронноеПисьмо» нужно заменить следующий код:

ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(Вложение.Значение, "", ИмяФайла);

вот таким кодом(пояснять уже не буду. :aua: ):

Если ЭтоАдресВременногоХранилища(Вложение.Значение) Тогда
ИмяФайла=Вложение.Представление;	
Иначе
ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(Вложение.Значение, "", ИмяФайла);
КонецЕсли;

После такой доработки иконки у файлов будут отображаться.
Но внимательно посмотрев на то что получилось замечаем еще один косяк, для таких вложений не отображается размер! :D Придётся и этот глюк побороть. Заменяем предидущий код следующим улучшенным:

				Если ЭтоАдресВременногоХранилища(Вложение.Значение) Тогда
ИмяФайла=Вложение.Представление;	
Данные=ПолучитьИзВременногоХранилища(Вложение.Значение);
Если ТипЗнч(Данные)=Тип("ДвоичныеДанные") Тогда
новСтр.Размер=Данные.Размер();
новСтр.РазмерПредставление = ВзаимодействияКлиентСервер.ПолучитьСтроковоеПредставлениеРазмераФайла(новСтр.Размер);
КонецЕсли;
Иначе
ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(Вложение.Значение, "", ИмяФайла);
Попытка
Данные = Новый Файл(Вложение.Значение);
новСтр.Размер= Данные.Размер();
новСтр.РазмерПредставление = ВзаимодействияКлиентСервер.ПолучитьСтроковоеПредставлениеРазмераФайла(новСтр.Размер);
Исключение
КонецПопытки
КонецЕсли;


Теперь размер будет отображаться, а также мы предусмотрели защиту от передачи в данную функцию некорректных данных о расположении файла.
2) Вторым способом предполагается добраться всё-таки до момента передачи параметров на форму документа и поправить передающуюся ссылку на путь к файлу во временной директории.
Насколько целесообразен данный способ решать каждому в индивидуальном порядке. На мой взгляд и первый и второй способ далеки от совершенства, но сууть не в этом а в том чтобы каждый решил подобную проблему с минимальными правками кода. Тем более что трешеделы из 1С когда-нибудь таки заделают эту дырку…
Чтобы реализовать данный способ лезем в общие формы и находим форму с названием «ПечатьДокументов», открываем модуль формы и заменяем процедуру «ПоместитьТабличныеДокументыВоВременноеХранилище» следующим содержимым:

Процедура ПоместитьТабличныеДокументыВоВременноеХранилище(СписокФайлов, НастройкиСохранения)

ЗаписьZipФайла = Неопределено;
ИмяАрхива = Неопределено;
Если НастройкиСохранения.ЗапаковатьZIP Тогда
ИмяАрхива = ПолучитьИмяВременногоФайла("zip");
ЗаписьZipФайла = Новый ЗаписьZipФайла(ИмяАрхива);
КонецЕсли;

СписокТипов = ПолучитьСписокТиповФайловТабличныхДокументов(НастройкиСохранения);
ДатаПредставление = Формат(ТекущаяДата(), "ДФ='yyyyMMdd HH:mm'");

ИмяВременнойПапки = ПолучитьИмяВременногоФайла();
СоздатьКаталог(ИмяВременнойПапки);

Для Каждого ТабДокумент Из ИменаТабДокументов Цикл
ТабДок = ЭтаФорма["Таб" + ТабДокумент.Значение];

Для Каждого ТипФайла Из СписокТипов Цикл

Если ОбъектыПечати.Количество() > 1 Тогда
ИмяФайла = "[ИмяМакета] ([ДатаПредставление]).[Расширение]";
Иначе
ИмяФайла = "[Документ] ([ИмяМакета] [ДатаПредставление]).[Расширение]";
КонецЕсли;

ИмяФайла = СтрЗаменить(ИмяФайла, "[Документ]",			Строка(ОбъектыПечати[0].Значение));
ИмяФайла = СтрЗаменить(ИмяФайла, "[ИмяМакета]",			ТабДокумент.Представление);
ИмяФайла = СтрЗаменить(ИмяФайла, "[ДатаПредставление]",	ДатаПредставление);
ИмяФайла = СтрЗаменить(ИмяФайла, "[Расширение]",		ТипФайла.Представление);

ИмяФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайла);

ИмяВременногоФайла = ИмяВременнойПапки + "" + ИмяФайла;
ТабДок.Записать(ИмяВременногоФайла, ТипФайла.Значение);

Если ТипФайла.Значение = ТипФайлаТабличногоДокумента.HTML Тогда
ВставитьКартинкиВHTML(ИмяВременногоФайла);
КонецЕсли;			

Если ЗаписьZipФайла <> Неопределено Тогда 
ЗаписьZipФайла.Добавить(ИмяВременногоФайла);
Иначе
//ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла);
//ПутьВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтаФорма.УникальныйИдентификатор);
СписокФайлов.Добавить(ИмяВременногоФайла, ИмяФайла);
//	УдалитьФайлы(ИмяВременногоФайла);
КонецЕсли;
КонецЦикла;
КонецЦикла;

Если ЗаписьZipФайла <> Неопределено Тогда 
ЗаписьZipФайла.Записать();
ФайлАрхива = Новый Файл(ИмяАрхива);
//ДвоичныеДанные = Новый ДвоичныеДанные(ИмяАрхива);
//ПутьВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтаФорма.УникальныйИдентификатор);
СписокФайлов.Добавить(ИмяАрхива, ФайлАрхива.Имя);
КонецЕсли;

//УдалитьФайлы(ИмяВременнойПапки);

КонецПроцедуры

Кратко о том, что у нас изменилось. Мы убрали запихивание файла во временное хранилище, заменив на выходе ссылку во временное хранилище на путь к временному файлу. Чтобы в последующем воспользоваться созданными временными файлами было убрано удаление файлов, то есть удалять файлы нам придётся в дальнейшем после вложения в сообщение и записи. Для этого заново открываем модуль документа «ИсходящееЭлектронноеПисьмо» и модифицируем процедуру «ПередЗаписью» следующим образом:

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

ОчиститьСообщения();

Если Не ВыполняетсяОтправка Тогда

Отказ = ПроверитьЗаполнениеСписковАдресатов();

Если Отказ = Истина Тогда
Возврат;
КонецЕсли;

КонецЕсли;


#Если Не ВебКлиент Тогда
МассивКаталоговДляУдаления=Новый Массив();
//Перебираем вложения и после помещения во временное хранилище удаляем их
Для Каждого Стр Из Вложения Цикл
Если Стр.Расположение = 2 Тогда
Если ЭтоАдресВременногоХранилища(Стр.ИмяФайлаНаКомпьютере) Тогда
Данные=ПолучитьИзВременногоХранилища(Стр.ИмяФайлаНаКомпьютере);
Иначе
Данные = Новый ДвоичныеДанные(Стр.ИмяФайлаНаКомпьютере);
КаталогДляУдаления="";
ФайлДляУдаления="";
ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(Стр.ИмяФайлаНаКомпьютере, КаталогДляУдаления, ФайлДляУдаления);
Стр.ИмяФайлаНаКомпьютере = ПоместитьВоВременноеХранилище(Данные, "");
МассивКаталоговДляУдаления.Добавить(КаталогДляУдаления);
УдалитьФайлы(Стр.ИмяФайлаНаКомпьютере);
КонецЕсли;
Стр.Расположение = 4;
КонецЕсли;
КонецЦикла;
//Удаляем папки оставшиеся от временных файлов
Для Каждого ФайлДляУдаления из МассивКаталоговДляУдаления Цикл
ТекущийФайл=Новый Файл(ФайлДляУдаления);
Если ТекущийФайл.Существует() Тогда
УдалитьФайлы(ФайлДляУдаления);
КонецЕсли;
КонецЦикла;
#КонецЕсли

Объект.ЕстьВложения = (Вложения.Количество() <> 0);

КонецПроцедуры

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

Сразу скажу что на этом список ваших проблем с почтой в УТ 11 только начинается. :D Думаю кому нибудь моя микростатейка поможет… Пока не забыл, если кто будет лазить по коду рекомендую обратить внимание на процедуру фонового задания для получения и отправки почты, там тоже имеются косяки… :angry:

Отправка письма со вложенным файлом

Автор Funt432286, 12 мая 2020, 16:07

0 Пользователей и 1 гость просматривают эту тему.

antoneus,

ЦитироватьСтрокаСоединенияСБД = СтрокаСоединенияИнформационнойБазы();
ПутьКБД = Сред(СтрокаСоединенияСБД, 6, СтрДлина(СтрокаСоединенияСБД) — 6);

а если это клиент-серверный вариант?
какой это путь к файлу? ПутьКБД- ?
там имя сервера  и имя СКЛ/ПГ Базы
получение файла с Сервера на Клиент — это же уже давно обкатанный велосипед! что вы его изобретаете?

если помогло нажмите: Спасибо!



э-э-э, а-а-а
ну тогда… :dfbbdrfb:

если помогло нажмите: Спасибо!


Цитата: antoneus от 15 мая 2020, 15:11
Что ж я сразу-то не спросил — серверный вариант или файловый) Тогда вся эта возня с вызовом серверной процедуры не нужна, путь к папке с базой вытаскивайте из функции СтрокаСоединенияИнформационнойБазы(), к нему прилепляйте путь до файла штампа и получите свое вложение.&НаКлиенте
Процедура ОтправитьПисьмо(Команда)

    СтрокаСоединенияСБД = СтрокаСоединенияИнформационнойБазы();
    ПутьКБД = Сред(СтрокаСоединенияСБД, 6, СтрДлина(СтрокаСоединенияСБД) - 6);
    ПутьКФайлу = ПутьКБД + "ShtampKroySh_150.pdf";
    Вложение = Новый ДвоичныеДанные(ПутьКФайлу);

    ИПП = Новый ИнтернетПочтовыйПрофиль;
    ....
    и т.д.

Видимо сегодня не мой день. Выдает такую ошибку при попытки отправить:

{ОбщаяФорма.ОтправкаПочты.Форма(10)}: Ошибка при вызове конструктора (ДвоичныеДанные)
    Вложение = Новый ДвоичныеДанные(ПутьКФайлу);
по причине:
Недопустимое значение параметра (параметр номер '1')

Добавлено: 15 мая 2020, 18:22


Цитата: Funt432286 от 15 мая 2020, 17:59

Цитата: antoneus от 15 мая 2020, 15:11
Что ж я сразу-то не спросил — серверный вариант или файловый) Тогда вся эта возня с вызовом серверной процедуры не нужна, путь к папке с базой вытаскивайте из функции СтрокаСоединенияИнформационнойБазы(), к нему прилепляйте путь до файла штампа и получите свое вложение.&НаКлиенте
Процедура ОтправитьПисьмо(Команда)

    СтрокаСоединенияСБД = СтрокаСоединенияИнформационнойБазы();
    ПутьКБД = Сред(СтрокаСоединенияСБД, 6, СтрДлина(СтрокаСоединенияСБД) - 6);
    ПутьКФайлу = ПутьКБД + "ShtampKroySh_150.pdf";
    Вложение = Новый ДвоичныеДанные(ПутьКФайлу);

    ИПП = Новый ИнтернетПочтовыйПрофиль;
    ....
    и т.д.

Видимо сегодня не мой день. Выдает такую ошибку при попытки отправить:
{ОбщаяФорма.ОтправкаПочты.Форма(10)}: Ошибка при вызове конструктора (ДвоичныеДанные)
    Вложение = Новый ДвоичныеДанные(ПутьКФайлу);
по причине:
Недопустимое значение параметра (параметр номер '1')

И еще маленький вопросик, не получается сделать запрос из справочника (не хочу из-за этой мелочи тему создавать)
из справочника Бумага необходимо вернуть значение Валюта по Наименованию (Ссылка).


&НаСервере
Функция ПолучитьВалютуБумага(Ссылка)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦифраМатериал.Наименование,
| ЦифраМатериал.Валюта КАК Валюта
|ИЗ
| Справочник.ЦифраМатериал КАК ЦифраМатериал
|ГДЕ
| ЦифраМатериал.Наименование = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

РезультатЗапроса = Запрос.Выполнить().Выгрузить();

Возврат РезультатЗапроса [0].Валюта;
КонецФункции

в поцедуре наКлиенте
БумагаВалюта = ПолучитьВалютуБумага(стрБумага);
Сообщить(БумагаВалюта);

Выводит пустое сообщение (просто какой-то тупняк жуткий)


Путь к файлу валидный? Если его вставить в адресную строку проводника — файл откроется?

UPD: Если бы вы вручную захотели этот файл прикрепить к письму — где и как бы вы его взяли?


Цитата: antoneus от 15 мая 2020, 18:24
Путь к файлу валидный? Если его вставить в адресную строку проводника — файл откроется?

UPD: Если бы вы вручную захотели этот файл прикрепить к письму — где и как бы вы его взяли?

Да файл открывается, если в ручную то файл лежит E:1Cпринт_1СShtampKroy


Вставьте Сообщить(ПутьКФайлу) перед созданием двоичных данных — что выведет?

По запросу —

ГДЕ
|    ЦифраМатериал.Ссылка= &Ссылка


Цитата: antoneus от 15 мая 2020, 18:43
Вставьте Сообщить(ПутьКФайлу) перед созданием двоичных данных — что выведет?

«E:1Cпринт_1С»ShtampKroySh_150.pdf — вот что он выводит. Получается он начало пути выводит в кавычки и тем самым разбивает весь путь на две части


Funt432286,

ЦитироватьВидимо сегодня не мой день.

на прочь забыли как отладчик запускать?
ну небольшая ошибочка же была, хоть какие-то описки в советах могли бы сами поправить!!!
что же все только сильно пережованное хаваете?

Вообще странно что в каталоге базы еще какие-то подкаталоги

посмотрите как у вас путь к файлу формируется?
добавьте
ПутьКФайлу = ПутьКБД + «ShtampKroySh_150.pdf»;
Сообщить(ПутьКФайлу);//тестовая печать

возьмите его значение и вставьте в проводник, посмотрите открывается ли у вас данная папка? и есть ли там нужный файл?

жуем задачу дальше
в вашем примере не правильно путь выделяется, попробуйте так


&НаКлиенте
Процедура ОтправитьПисьмо(Команда)

    СтрокаСоединенияСБД = СтрокаСоединенияИнформационнойБазы();
//    ПутьКБД = Сред(СтрокаСоединенияСБД, 6, СтрДлина(СтрокаСоединенияСБД) - 6);
    ПутьКБД = Сред(СтрокаСоединенияСБД, 7, СтрДлина(СтрокаСоединенияСБД) - 8);//учет выреза кавычек - на них ругается
    ПутьКФайлу = ПутьКБД + "ShtampKroySh_150.pdf";
Сообщить(ПутьКФайлу);//тестовая печать
    Вложение = Новый ДвоичныеДанные(ПутьКФайлу);

    ИПП = Новый ИнтернетПочтовыйПрофиль;
    ....
    и т.д.


или все заработает
или ругаться по другому будет, типа Каталог не обнаружен
{(7)}: Ошибка при вызове конструктора (ДвоичныеДанные): Каталог не обнаружен ‘E:!1CТестОтчетыTest11ПредложениеТур.txt’

если помогло нажмите: Спасибо!


1. Ругаться он перестал, письмо отправил и даже путь правильно указал. Только вот письмо пришло без файла, но с текстом

2. а по запросу выдает такую ошибку:


{Документ.РасчетЦифра.Форма.ФормаДокумента.Форма(546)}: Индекс находится за границами массива
Возврат РезультатЗапроса [0].Валюта;


 

Пользователь 103705

Постоянный посетитель

Сообщений: 145
Баллов: 23
Регистрация: 07.10.2011

#1876

31.05.2021 23:07:28

Цитата
ЕКАТЕРИНА ЧИРИКОВА написал:
Доброго времени суток.
Очень хотелось бы услышать совета вот по какому вопросу: есть ИМ на битрикс с 56000 SKU, большая часть товаров имеет вариации. есть 1С УТ 11.4 с последней версией модуля обмена. на сервере стоит 16 Gb оперативной памяти и 2.9Ghz i5-9400F
когда запускается импорт каталога из битрикса в 1с, то 1 этап проходит примерно за 40-45 минут. затем начинается загрузка товаров в базу и она может длиться до 3 суток
есть ли какие-либо способы ускорить импорт каталога и нормальные ли это сроки импорта?

Судя по тому что 56к ску в битрикс — предположу что это виртуальный товар, которого нет на складе у Вас, тогда в таком случае я бы грузил только то, что заказывают, в противном случае в 1с будет тяжело работать с номенклатурой, с точки зрения производительности, любой поиск по номенклатуре это висяк   :(
Сами мучаемся, у нас около 30тыс в 1с

 

Пользователь 3551394

Заглянувший

Сообщений: 20
Баллов: 1
Регистрация: 17.09.2019

#1877

01.06.2021 09:01:29

Цитата
Дмитрий Агапкин написал:

Цитата
ЕКАТЕРИНА ЧИРИКОВА написал:
Доброго времени суток.
Очень хотелось бы услышать совета вот по какому вопросу: есть ИМ на битрикс с 56000 SKU, большая часть товаров имеет вариации. есть 1С УТ 11.4 с последней версией модуля обмена. на сервере стоит 16 Gb оперативной памяти и 2.9Ghz i5-9400F
когда запускается импорт каталога из битрикса в 1с, то 1 этап проходит примерно за 40-45 минут. затем начинается загрузка товаров в базу и она может длиться до 3 суток
есть ли какие-либо способы ускорить импорт каталога и нормальные ли это сроки импорта?

Судя по тому что 56к ску в битрикс — предположу что это виртуальный товар, которого нет на складе у Вас, тогда в таком случае я бы грузил только то, что заказывают, в противном случае в 1с будет тяжело работать с номенклатурой, с точки зрения производительности, любой поиск по номенклатуре это висяк    
Сами мучаемся, у нас около 30тыс в 1с

это вина и прочий алкоголь. там почти все позиции есть на складе. пусть и по 2-3 штуки 8((  

 

#1878

01.06.2021 09:13:11

Не загружайте картинки — будет полегче идти.
Проверьте загрузку свойств/реквизитов — скорее всего они загружаются на общими для всей номенклатуры а индивидуальными — это огромное количество лишней информации.

 

Пользователь 3551394

Заглянувший

Сообщений: 20
Баллов: 1
Регистрация: 17.09.2019

#1879

07.06.2021 16:30:24

Цитата
Kler написал:
Не загружайте картинки — будет полегче идти.
Проверьте загрузку свойств/реквизитов — скорее всего они загружаются на общими для всей номенклатуры а индивидуальными — это огромное количество лишней информации.

свойства — общие. картинки не грузятся. очень странно выглядит загрузка системы: то 60% процессора и половина памяти, а потом 3-5% процессора и 450 Мб памяти.
хрень какая-то

 

#1880

19.07.2021 16:57:59

День добрый.
Кривые руки пользователя сломали обмен
В итоге он сейчас прекращается на следующей строчке

19.07.2021 16:40:12—Выгрузка данных о товарах.

19.07.2021 16:40:12—Выгрузка товаров в XML.

19.07.2021 16:40:12—{ОбщийМодуль.Б_ОбменССайтомСерверВыгрузкаДанных.Модуль(5524)}: Ошибка при вызове конструктора (ДвоичныеДанные): Каталог не обнаружен ‘\\Server-1c\все\20210106\3b967bb6399df113fccabf240c0dcf3a_x.jpg’ Выгрузка файла объекта: Линейка 30 см металлическая

и вываливается с ошибкой

{ОбщийМодуль.Б_ОбменССайтомСерверВыгрузкаДанных.Модуль(5524)}: Ошибка при установке значения атрибута контекста (Наименование): Несоответствие типов XDTO: Ошибка проверки данных XDTO:

Значение: ‘

Пользователь уволился и не признается что он там сделал.

Экспорт настроек из бекапа в котором выгрузка работает и импорт на рабочую базу так же не дали успеха.

Где можно еще посмотреть и сравнить настройки?

1С:Предприятие 8.3 (8.3.19.1150). Управление нашей фирмой, редакция 1.6 (1.6.25.139). Версия модуля 7,0,1,30

 

Александр Денисюк

Администратор

Сообщений: 5322
Баллов: 477
Регистрация: 16.10.2013

#1881

19.07.2021 18:23:17

Цитата
Павел Аверин написал:
Линейка 30 см металлическая

Смотрите товар » Линейка 30 см металлическая». Что то с картинками у него не то. По всей видимости несуществующий адрес до файлов(картинок).

 

Пользователь 5230103

Заглянувший

Сообщений: 15
Баллов: 1
Регистрация: 20.05.2021

#1882

21.07.2021 09:08:05

Цитата
Александр Денисюк написал:

Цитата
Павел Аверин написал:
Линейка 30 см металлическая

Смотрите товар » Линейка 30 см металлическая». Что то с картинками у него не то. По всей видимости несуществующий адрес до файлов(картинок).

Там вообще нет картинки. Нажатие на кнопку «удалить» и подгрузка картинки тоже результатов не дает. положил по тому пути заглушку. посмотрим как это отработает.

UPDATE
заглушка не помогла
завершилось с ошибкой с таким текстом:

Завершение выгрузки пакета 36 каталога: Каталог товаров
Начало выгрузки пакета 37 каталога: Каталог товаров
Выгрузка данных о товарах.
Выгрузка товаров в XML.

 

#1883

21.07.2021 09:18:57

Может из какого другого свойства или реквизита подтягивает в коде путь до картинки…Тут остается только гадать. Нужна отладка процесса обмена.

Всем несогласным — мыло и веревка!

 

Пользователь 5230103

Заглянувший

Сообщений: 15
Баллов: 1
Регистрация: 20.05.2021

#1884

21.07.2021 10:00:13

Цитата
Алексей Сипаев написал:
Может из какого другого свойства или реквизита подтягивает в коде путь до картинки…Тут остается только гадать. Нужна отладка процесса обмена.

Как это можно реализовать?

В техническом журнале есть несколько записей:

{ОбщийМодуль.ОбщегоНазначения.Модуль(5262)}: Выполнить ИмяМетода + «(» + ПараметрыСтрока + «)»;
{ОбщийМодуль.ДлительныеОперации.Модуль(1067)}: ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1057)}: ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);
f08d92f8-9eb2-4e19-9dd9-977d907cec2d
5372caa7-07b9-4767-9776-53b510236d93: Несоответствие типов XDTO
5372caa7-07b9-4767-9776-53b510236d93: Ошибка проверки данных XDTO:
Значение: »

Затем куча пустого места и потом запись

Ремень клиновой XРA — 1600» не соответствует простому типу: {urn:1C.ru:commerceml_3}НаименованиеТип
Несоответствие фасету MaxLength = »250»’

Внешне в той номенклатуре все нормально.
Поставил ее на удаление и попытался сделать выгрузку — все равно ошибка

 

#1885

21.07.2021 11:38:42

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

В номенклатуре возможно все хорошо, а вот схема xdto ругается при проверке входных данных. Пригласите специалиста для анализа проблемы или при наличии собственных сил и знаний отлаживайте код.

==========

У вас как-то странно выгружается данное наименование товара. Что это? Краткое, полное, описание, комментарий, доп. свойство, где есть текст

Значение: «<куча пустого места, пробелы или переносы строк> Ремень клиновой XРA — 1600»

Как раз ругается на длину в 250 символов. Либо код криво написан на выгрузку какого-то наименования, либо забито неверно информация в реквизите/доп.реквизите или свойстве…

Всем несогласным — мыло и веревка!

 

Пользователь 5230103

Заглянувший

Сообщений: 15
Баллов: 1
Регистрация: 20.05.2021

#1886

21.07.2021 14:55:45

Цитата
Алексей Сипаев написал:
У вас как-то странно выгружается данное наименование товара. Что это? Краткое, полное, описание, комментарий, доп. свойство, где есть текстЗначение: »  Ремень клиновой XРA — 1600»Как раз ругается на длину в 250 символов. Либо код криво написан на выгрузку какого-то наименования, либо забито неверно информация в реквизите/доп.реквизите или свойстве…

Разобрались с этой номенклатурой.
Выгрузка на диск с тестовой базы прошла успешно. запускаю на боевой.

В общем, в данной номенклатуре было в поле «наименование для печати» проставлено 470 пустых строк, а затем наименование.

Когда открываешь эту номенклатуру, то соответственно данное поле  кажется пустым, поэтому и не вызывала подозрений долгое время, пока не  начали уже во все поля тыкать

PS: почему в модуле обмена так плохо организовано логирование? Ведь будь вывод в лог, что в данной номенклатуре поле не соответствует длине, все было бы проще. И подозреваю, что первоначально линейка вовсе не причем — просто она последняя отображалась в логе. А из-за этого был потерян не один день времени

 

#1887

23.07.2021 16:47:27

Еще вопрос…
Если в номенклатуре, в разделе «сайт» будет поставлена галочка «не выгружать», будет ли в таком случае данный товар выгружен на сайт?

 

#1888

30.07.2021 17:37:52

Подскажите, кто знает почему при обмене с 1С все время перезаписывается поле Сортировка свойств инфоблока? Что нужно сделать чтобы это прекратилось? Конкретно речь об этом

https://skr.sh/s9I1NFAWBXt

свойстве — по факту это картинки из 1С

 

Пользователь 3668772

Заглянувший

Сообщений: 23
Баллов: 2
Регистрация: 01.12.2019

#1889

01.08.2021 05:09:10

Цитата
ЕКАТЕРИНА ЧИРИКОВА написал:

Цитата
Kler написал:
Не загружайте картинки — будет полегче идти.
Проверьте загрузку свойств/реквизитов — скорее всего они загружаются на общими для всей номенклатуры а индивидуальными — это огромное количество лишней информации.

свойства — общие. картинки не грузятся. очень странно выглядит загрузка системы: то 60% процессора и половина памяти, а потом 3-5% процессора и 450 Мб памяти.
хрень какая-то

На сколько знаю, обмен в старых модулях реализован полный т.е. грузятся не изменённые данные по товару, а абсолютно все передаваемые по товару данные.
На сколько понял новый модуль Бэкофис 2.0 может передавать только изменённые значения. Жаль что Ваш запрос техподдержка игнорирует.

 

#1890

03.08.2021 15:52:09

полная выгрузка оказывается не совсем полная.
была номенклатура, у которой было указано куча розничных цен под разные характеристики, но галочка «использовать характеристики не стояла»
удалил ненужные цены и оставил только одну.
при полной выгрузке изменения не выгрузились, и выводятся изменения сделанные когда делали за несколько дней до этого принудительную выгрузку картинок.
это было видно в редактирование товара — торговые предложения — дата изменения

как провести абсолютно полную выгрузку?

 

Пользователь 3668772

Заглянувший

Сообщений: 23
Баллов: 2
Регистрация: 01.12.2019

#1891

04.08.2021 10:20:28

Цитата
Отдел ИТ написал:
полная выгрузка оказывается не совсем полная.
была номенклатура, у которой было указано куча розничных цен под разные характеристики, но галочка «использовать характеристики не стояла»
удалил ненужные цены и оставил только одну.
при полной выгрузке изменения не выгрузились, и выводятся изменения сделанные когда делали за несколько дней до этого принудительную выгрузку картинок.
это было видно в редактирование товара — торговые предложения — дата изменения

как провести абсолютно полную выгрузку?

Под полной выгрузкой имеется в виду не выгрузка всего и вся, а выгрузка всех документов и значений которые подпадают под установленные Вами фильтры. Если Вы выгружаете определённые цены и определённую номенклатуру и её характеристики, то именно они будут иметься в полной выгрузке. Не при полной выгрузке, выгружаются только изменённые сущности.
Поправьте меня если я ошибаюсь.

 

#1892

09.08.2021 15:36:55

Добрый день.
Подскажите как настроить выгрузку на сайт информацию о количестве товаров поставщика который находится на складе поставщика?
Т.е. товара на моем складе нет, поставщик присылает мне данные о количестве товара на своем складе в файле Excel.
Загружаю данные о количестве в раздел «Номенклатура поставщика» в карточке Контрагента.
Номенклатура поставщика сопоставлена с нашей номенклатурой.
Нужно выгружать данные о количестве товара на складе поставщика на наш сайт.

Сайт   1С-Битрикс24: Интернет-магазин + CRM
Расширение Аспро: Максимум — интернет-магазин (aspro.max)

Версия платформы 1С: 8.3.18.1334 Тип базы 1С: Файловая
Прикладное решение 1С: Управление нашей фирмой, редакция 1.6
Локализация прикладного решения 1Сru_RU
Релиз прикладного решения 1С: 1.6.25.166
Название модуля для 1С: Интернет-магазин + «1С»
Версия модуля для 1С: 7.0.1.30
Модуль разрабатывался для конфигурации : UNF 1.6
Локализация модуля для 1С: RUS

 

#1893

18.08.2021 09:25:39

Добрый день, не можем разобраться с логикой работы (конфигурация УТ 11.4)
1. При отмене всех строк заказа на стороне 1С после обмена с сайтом очищается состав заказ на сайте и ставится как выполнен а не отменён.
2. Работаем без выгрузки отгрузки в 1с, в 1С меняем количество товара, если по телефону клиент захотел добавить еще позицию. При следующем обмене количество товара меняется на сайте, но очищается стоимость доставки, хотя в 1С строчку с доставкой не трогали.

 

Александр Денисюк

Администратор

Сообщений: 5322
Баллов: 477
Регистрация: 16.10.2013

#1894

18.08.2021 11:30:04

Цитата
Александр Давыденко написал:
Добрый день, не можем разобраться с логикой работы (конфигурация УТ 11.4)
1. При отмене всех строк заказа на стороне 1С после обмена с сайтом очищается состав заказ на сайте и ставится как выполнен а не отменён.
2. Работаем без выгрузки отгрузки в 1с, в 1С меняем количество товара, если по телефону клиент захотел добавить еще позицию. При следующем обмене количество товара меняется на сайте, но очищается стоимость доставки, хотя в 1С строчку с доставкой не трогали.

может не установили маппинг служб доставки? И еще, может удаляться, если из 1С не выгружается отгрузка, т.к. в ней хранится стоимость доставки.

 

#1895

25.08.2021 09:39:36

День добрый.
Обратил внимание на такую ситуацию.
Полная выгрузка работала как надо — товары выгружались в нужные категории.
Но потом переделали пару разделов, убрали из них все товары и добавили те которые нужны.
В результате после нескольких полных выгрузок, в тех категориях было всего по 2-3 товара, вместо 10-20.
Остальные появились только после того, как была сделана принудительная выгрузка картинок.

Так и должно быть?

 

#1896

16.09.2021 11:47:09

Добрый день!

Подскажите пожалуйста, не появилась в модуле возможность выгружать из 1с индивидуальные соглашения по условиям продаж?

 

Александр Денисюк

Администратор

Сообщений: 5322
Баллов: 477
Регистрация: 16.10.2013

#1897

16.09.2021 18:11:38

Цитата
Илья Иванов написал:
Добрый день!

Подскажите пожалуйста, не появилась в модуле возможность выгружать из 1с индивидуальные соглашения по условиям продаж?

Не появилось

 

#1898

17.09.2021 12:32:34

Есть ли какие-нибудь новости по переходу на обмен через rest товарами а не xml файлами? Года 3 назад помню еще писали, что в работе. И планируется ли что-то делать с 2 каталогами в продукте интернет-магазин + CRM, хотелось бы работать без костылей и иметь красивую связь товаров + заказов.

 

Александр Денисюк

Администратор

Сообщений: 5322
Баллов: 477
Регистрация: 16.10.2013

#1899

17.09.2021 14:58:33

Цитата
Александр Исупов написал:
Есть ли какие-нибудь новости по переходу на обмен через rest товарами а не xml файлами? Года 3 назад помню еще писали, что в работе. И планируется ли что-то делать с 2 каталогами в продукте интернет-магазин + CRM, хотелось бы работать без костылей и иметь красивую связь товаров + заказов.

Больная тема… Реализация реста товаров  все переносится и переносится..

 

Пользователь 4104036

Заглянувший

Сообщений: 9
Регистрация: 14.04.2020

#1900

29.03.2023 20:22:38

Добрый день.
Конфигурация КА2.5, бэкофис 3.1.0.1.
При синхронизации товаров с вариациями не выгружаются цены и остатки.
В 1С должен быть заведен определенный вид цен? И остатки откуда выгружаются?
Благодарю.

Ermak27

4 / 4 / 0

Регистрация: 16.01.2013

Сообщений: 1,228

1

1C 8.x

Ошибка при вызове конструктора (ДвоичныеДанные)

28.10.2013, 10:26. Показов 19333. Ответов 3

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Почему ошибка выдает
Ошибка при вызове конструктора (ДвоичныеДанные)
НовоеВложение.Хранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(Каталог), Новый СжатиеДанных());
по причине:
Ошибка совместного доступа к файлу ‘C:\Users\ermakov\AppData\Local\Temp\price.xls’

1C
1
2
3
4
5
6
7
8
9
10
    
    НовоеВложение = Справочники.ВложенияЭлектронныхПисем.СоздатьЭлемент();
    НовоеВложение.Объект = Письмо.Ссылка;
    НовоеВложение.ИмяФайла = "price.xls";
    НовоеВложение.Хранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(Каталог), Новый СжатиеДанных());
    Попытка
        НовоеВложение.Записать();
    Исключение
        Отказ = Истина;
    КонецПопытки;



0



Модератор

Эксперт 1С

3744 / 2932 / 581

Регистрация: 10.03.2011

Сообщений: 11,539

Записей в блоге: 1

28.10.2013, 11:19

2

Нужно закрывать файл перед помещением его в хранилищеЗначений



1



4 / 4 / 0

Регистрация: 16.01.2013

Сообщений: 1,228

28.10.2013, 11:20

 [ТС]

3

Dethmontt, Подскажите на примере пожалуйста



0



Модератор

Эксперт 1С

3744 / 2932 / 581

Регистрация: 10.03.2011

Сообщений: 11,539

Записей в блоге: 1

28.10.2013, 11:26

4

На каком примере? У тебя тупо открыт этот файл — ‘C:\Users\ermakov\AppData\Local\Temp\price.xls’ либо висит в процессах

Добавлено через 4 минуты
Возможно ты его открываешь в коде…



0



Бухгалтерия предприятия ред 3.0, релиз 3.0.43.155. Две базы, центральная и периферийная. Внесены изменения для работы со сканером штрихкодов: добавлен регистр сведений, несколько общих модулей, внесены некоторые изменения в стандартные объекты (делал не я). Начал обновлять на 3.0.43.206 (на копии). Аккуратно перетащил все изменения, проверил этот дополнительный функционал — все работает. Делаю выгрузку в подчиненную базу. Там сообщение обмена читается, предлагает запустить конфигуратор — запускаю, обновляю конфигурацию базы данных, запускаю предприятие — и тут вылезает ошибка: «Ошибка загрузки приоритетных данных из сообщения обмена. Подробности см. в журнале регистрации». В журнале вижу 2 сообщения об ошибках: {ОбщийМодуль.ОбменДаннымиСервер.Модуль(5091)}: Ошибка при вызове конструктора (ДвоичныеДанные)             НовоеСообщение = Новый ДвоичныеДанные(СообщениеОбмена); по причине: Каталог не обнаружен » {ОбщийМодуль.ОбменДаннымиСервер.Модуль(1254)}: Ошибка загрузки приоритетных данных из сообщения обмена. См. подробности в журнале регистрации.             НСтр(«ru = ‘Ошибка загрузки приоритетных данных из сообщения обмена. Не пойму, какой каталог не обнаружен? Что посоветуете?

«какой каталог» — путь к сообщению обмена

А где его надо прописать? Изначально же сообщение прочитано, изменения из него загрузились, конфигурация базы данных обновилась…

посмотри в ОбщийМодуль.ОбменДаннымиСервер.Модуль(5091)} откуда берется СообщениеОбмена

База, в которой ошибка — файловая или серверная?

Не на линуксе каком-нибудь или через http?

Все утро угробил на эксперимент, чтобы понять, проблема в изменениях конфигурации или это очередной подарочек от 1С… Вернул конфигурацию на поддержку (рел. 3.0.43.155). Выгрузил данные в подчиненную базу. Все в порядке. Обновил конфигурацию на 3.0.43.206. Выгрузил в подчиненную базу. В результате — та же ошибка. Получается, заморочка в обновлении от 1С? Никто с подобным не сталкивался?

Насколько я Вас понял правильно, то это не совсем «заморочка 1С», это программа не может записать временный файл в каталог пользователя ОС для временных файлов.

Т.е. до обновления она записать может, а после обновления на рел. 206 — уже нет?

так у вас 4 базы по факту. И какие с какими обменялись? Что-то вы чудите.

Ты после обнолвления в режиме предприятия в базу заходил?Для запуска обработки обновления данных.

Есть одна мысль: попробуй ещё раз выгрузить сообщение обмена из ЦУ и принять в подчиненном узле. Не откатывай конфигурацию, а именно повторно, уже после того, как изменения конфигурации были получены и приняты в подчиненном узле, не используя архивирование.

«Ты после обнолвления в режиме предприятия в базу заходил?Для запуска обработки обновления данных.» Разумеется. В главной базе все отработало нормально. Проблема в подчиненной при первом входе в режиме предприятия после обновления.

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Ну совершенно верно так и должно быть у каждого с версией 11.0.7.8. Вообще скажу сразу, что функционал работы с почтой весьма убогий, это поймет каждый кто пройдется F11 от создания письма до его отправки, письмо отправляется долго.. Путём доработки скорость отправки писем можно увеличить в 3-10 раз. Кроме того данный глюк при работе с почтой в данном релизе не единственный. Если используется фоновое задание для получения и отправки почты вы еще натолкнётесь обязательно на конфликт блокировок при выполнении транзакций, ну да ладно вопрос не в этом был.
Относительно вашей проблемы можно происходит следующее

Данные = Новый ДвоичныеДанные(Стр.ИмяФайлаНаКомпьютере);

В данной строчке производится запись двоичных данных в переменную «Данные» из файла на диске, расположенному по пути содержащемся в переменной «Стр.ИмяФайлаНаКомпьютере». Естественно получается ошибка так как вместо пути к файлу в эту переменную запихнули ссылку на файл во временном хранилище. Решить данную проблему можно двумя путями.
1) Дописать модуль формы документа для возможности приёма ссылок на файлы из временного хранилища. Для этого модифицируйте код из модуля таким образом:

	Если ЭтоАдресВременногоХранилища(Стр.ИмяФайлаНаКомпьютере) Тогда
Данные=ПолучитьИзВременногоХранилища(Стр.ИмяФайлаНаКомпьютере);
Иначе
Данные = Новый ДвоичныеДанные(Стр.ИмяФайлаНаКомпьютере);
Стр.ИмяФайлаНаКомпьютере = ПоместитьВоВременноеХранилище(Данные, "");
КонецЕсли;

Тем самым мы определяем что если нам передали ссылку на файл во временном хранилище, то мы просто получаем из временного хранилища, а если это просто путь то тогда уже создаем и помещаем двоичные данные во временное хранилище.
Эта доработка уже позволит отправлять сообщения. Но останется еще одна небольшая проблемка. В письме для вложений не будет показана иконка приложения. Чтобы поправить эту досадную оплошность в строке 97 модуля формы документа «ИсходящееЭлектронноеПисьмо» нужно заменить следующий код:

ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(Вложение.Значение, "", ИмяФайла);

вот таким кодом(пояснять уже не буду. :aua: ):

Если ЭтоАдресВременногоХранилища(Вложение.Значение) Тогда
ИмяФайла=Вложение.Представление;	
Иначе
ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(Вложение.Значение, "", ИмяФайла);
КонецЕсли;

После такой доработки иконки у файлов будут отображаться.
Но внимательно посмотрев на то что получилось замечаем еще один косяк, для таких вложений не отображается размер! :D Придётся и этот глюк побороть. Заменяем предидущий код следующим улучшенным:

				Если ЭтоАдресВременногоХранилища(Вложение.Значение) Тогда
ИмяФайла=Вложение.Представление;	
Данные=ПолучитьИзВременногоХранилища(Вложение.Значение);
Если ТипЗнч(Данные)=Тип("ДвоичныеДанные") Тогда
новСтр.Размер=Данные.Размер();
новСтр.РазмерПредставление = ВзаимодействияКлиентСервер.ПолучитьСтроковоеПредставлениеРазмераФайла(новСтр.Размер);
КонецЕсли;
Иначе
ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(Вложение.Значение, "", ИмяФайла);
Попытка
Данные = Новый Файл(Вложение.Значение);
новСтр.Размер= Данные.Размер();
новСтр.РазмерПредставление = ВзаимодействияКлиентСервер.ПолучитьСтроковоеПредставлениеРазмераФайла(новСтр.Размер);
Исключение
КонецПопытки
КонецЕсли;


Теперь размер будет отображаться, а также мы предусмотрели защиту от передачи в данную функцию некорректных данных о расположении файла.
2) Вторым способом предполагается добраться всё-таки до момента передачи параметров на форму документа и поправить передающуюся ссылку на путь к файлу во временной директории.
Насколько целесообразен данный способ решать каждому в индивидуальном порядке. На мой взгляд и первый и второй способ далеки от совершенства, но сууть не в этом а в том чтобы каждый решил подобную проблему с минимальными правками кода. Тем более что трешеделы из 1С когда-нибудь таки заделают эту дырку…
Чтобы реализовать данный способ лезем в общие формы и находим форму с названием «ПечатьДокументов», открываем модуль формы и заменяем процедуру «ПоместитьТабличныеДокументыВоВременноеХранилище» следующим содержимым:

Процедура ПоместитьТабличныеДокументыВоВременноеХранилище(СписокФайлов, НастройкиСохранения)

ЗаписьZipФайла = Неопределено;
ИмяАрхива = Неопределено;
Если НастройкиСохранения.ЗапаковатьZIP Тогда
ИмяАрхива = ПолучитьИмяВременногоФайла("zip");
ЗаписьZipФайла = Новый ЗаписьZipФайла(ИмяАрхива);
КонецЕсли;

СписокТипов = ПолучитьСписокТиповФайловТабличныхДокументов(НастройкиСохранения);
ДатаПредставление = Формат(ТекущаяДата(), "ДФ='yyyyMMdd HH:mm'");

ИмяВременнойПапки = ПолучитьИмяВременногоФайла();
СоздатьКаталог(ИмяВременнойПапки);

Для Каждого ТабДокумент Из ИменаТабДокументов Цикл
ТабДок = ЭтаФорма["Таб" + ТабДокумент.Значение];

Для Каждого ТипФайла Из СписокТипов Цикл

Если ОбъектыПечати.Количество() > 1 Тогда
ИмяФайла = "[ИмяМакета] ([ДатаПредставление]).[Расширение]";
Иначе
ИмяФайла = "[Документ] ([ИмяМакета] [ДатаПредставление]).[Расширение]";
КонецЕсли;

ИмяФайла = СтрЗаменить(ИмяФайла, "[Документ]",			Строка(ОбъектыПечати[0].Значение));
ИмяФайла = СтрЗаменить(ИмяФайла, "[ИмяМакета]",			ТабДокумент.Представление);
ИмяФайла = СтрЗаменить(ИмяФайла, "[ДатаПредставление]",	ДатаПредставление);
ИмяФайла = СтрЗаменить(ИмяФайла, "[Расширение]",		ТипФайла.Представление);

ИмяФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайла);

ИмяВременногоФайла = ИмяВременнойПапки + "" + ИмяФайла;
ТабДок.Записать(ИмяВременногоФайла, ТипФайла.Значение);

Если ТипФайла.Значение = ТипФайлаТабличногоДокумента.HTML Тогда
ВставитьКартинкиВHTML(ИмяВременногоФайла);
КонецЕсли;			

Если ЗаписьZipФайла <> Неопределено Тогда 
ЗаписьZipФайла.Добавить(ИмяВременногоФайла);
Иначе
//ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла);
//ПутьВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтаФорма.УникальныйИдентификатор);
СписокФайлов.Добавить(ИмяВременногоФайла, ИмяФайла);
//	УдалитьФайлы(ИмяВременногоФайла);
КонецЕсли;
КонецЦикла;
КонецЦикла;

Если ЗаписьZipФайла <> Неопределено Тогда 
ЗаписьZipФайла.Записать();
ФайлАрхива = Новый Файл(ИмяАрхива);
//ДвоичныеДанные = Новый ДвоичныеДанные(ИмяАрхива);
//ПутьВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтаФорма.УникальныйИдентификатор);
СписокФайлов.Добавить(ИмяАрхива, ФайлАрхива.Имя);
КонецЕсли;

//УдалитьФайлы(ИмяВременнойПапки);

КонецПроцедуры

Кратко о том, что у нас изменилось. Мы убрали запихивание файла во временное хранилище, заменив на выходе ссылку во временное хранилище на путь к временному файлу. Чтобы в последующем воспользоваться созданными временными файлами было убрано удаление файлов, то есть удалять файлы нам придётся в дальнейшем после вложения в сообщение и записи. Для этого заново открываем модуль документа «ИсходящееЭлектронноеПисьмо» и модифицируем процедуру «ПередЗаписью» следующим образом:

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

ОчиститьСообщения();

Если Не ВыполняетсяОтправка Тогда

Отказ = ПроверитьЗаполнениеСписковАдресатов();

Если Отказ = Истина Тогда
Возврат;
КонецЕсли;

КонецЕсли;


#Если Не ВебКлиент Тогда
МассивКаталоговДляУдаления=Новый Массив();
//Перебираем вложения и после помещения во временное хранилище удаляем их
Для Каждого Стр Из Вложения Цикл
Если Стр.Расположение = 2 Тогда
Если ЭтоАдресВременногоХранилища(Стр.ИмяФайлаНаКомпьютере) Тогда
Данные=ПолучитьИзВременногоХранилища(Стр.ИмяФайлаНаКомпьютере);
Иначе
Данные = Новый ДвоичныеДанные(Стр.ИмяФайлаНаКомпьютере);
КаталогДляУдаления="";
ФайлДляУдаления="";
ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(Стр.ИмяФайлаНаКомпьютере, КаталогДляУдаления, ФайлДляУдаления);
Стр.ИмяФайлаНаКомпьютере = ПоместитьВоВременноеХранилище(Данные, "");
МассивКаталоговДляУдаления.Добавить(КаталогДляУдаления);
УдалитьФайлы(Стр.ИмяФайлаНаКомпьютере);
КонецЕсли;
Стр.Расположение = 4;
КонецЕсли;
КонецЦикла;
//Удаляем папки оставшиеся от временных файлов
Для Каждого ФайлДляУдаления из МассивКаталоговДляУдаления Цикл
ТекущийФайл=Новый Файл(ФайлДляУдаления);
Если ТекущийФайл.Существует() Тогда
УдалитьФайлы(ФайлДляУдаления);
КонецЕсли;
КонецЦикла;
#КонецЕсли

Объект.ЕстьВложения = (Вложения.Количество() <> 0);

КонецПроцедуры

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

Сразу скажу что на этом список ваших проблем с почтой в УТ 11 только начинается. :D Думаю кому нибудь моя микростатейка поможет… Пока не забыл, если кто будет лазить по коду рекомендую обратить внимание на процедуру фонового задания для получения и отправки почты, там тоже имеются косяки… :angry:

Понравилась статья? Поделить с друзьями:
  • Ошибка при запуске 0xc0000022 windows 10 как исправить
  • Ошибка при загрузке списка серверов вайм ворлд
  • Ошибка при вызове конструктора xbase
  • Ошибка при запуске 0xc0000004
  • Ошибка при загрузке сохранения сталкер тень чернобыля