(0) Вот тебе открытие
&НаКлиенте
Процедура ЗагрузитьДеревоИзФайла(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения(«ОбработатьВыборФайла», ЭтаФорма);
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогОткрытияФайла.Фильтр = «Файлы Дерева (*.tab) |*.tab»;
ДиалогОткрытияФайла.Заголовок = «Укажите имя файла для открытия!»;
ДиалогОткрытияФайла.ПредварительныйПросмотр = Ложь;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Расширение = «tab»;
НачатьПомещениеФайлов(ОписаниеОповещения, , ДиалогОткрытияФайла, Истина, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыборФайла(ПомещенныеФайлы, ДополнительныеПараметры) Экспорт
Если ПомещенныеФайлы = Неопределено Тогда
Возврат;
КонецЕсли;
Для каждого ПереданныйФайл Из ПомещенныеФайлы Цикл
ВосстановитьДеревоНаФорме(ПереданныйФайл.Хранение);
КонецЦикла;
КонецПроцедуры // ()
&НаСервере
Процедура ВосстановитьДеревоНаФорме(КлючФайлаДерево)
Попытка
ИмяВремФайл = ПолучитьИмяВременногоФайла();
ФайлДанные = ПолучитьИзВременногоХранилища(КлючФайлаДерево);
ФайлДанные.Записать(ИмяВремФайл);
тДерево = ЗначениеИзФайла(ИмяВремФайл);
УдалитьФайлы(ИмяВремФайл);
ЗначениеВРеквизитФормы(тДерево, «ДеревоОстатков»);
Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ОписаниеОшибки()); //сообщение пользователю
КонецПопытки;
КонецПроцедуры
Ну совершенно верно так и должно быть у каждого с версией 11.0.7.8. Вообще скажу сразу, что функционал работы с почтой весьма убогий, это поймет каждый кто пройдется F11 от создания письма до его отправки, письмо отправляется долго.. Путём доработки скорость отправки писем можно увеличить в 3-10 раз. Кроме того данный глюк при работе с почтой в данном релизе не единственный. Если используется фоновое задание для получения и отправки почты вы еще натолкнётесь обязательно на конфликт блокировок при выполнении транзакций, ну да ладно вопрос не в этом был.
Относительно вашей проблемы можно происходит следующееДанные = Новый ДвоичныеДанные(Стр.ИмяФайлаНаКомпьютере);В данной строчке производится запись двоичных данных в переменную «Данные» из файла на диске, расположенному по пути содержащемся в переменной «Стр.ИмяФайлаНаКомпьютере». Естественно получается ошибка так как вместо пути к файлу в эту переменную запихнули ссылку на файл во временном хранилище. Решить данную проблему можно двумя путями.
1) Дописать модуль формы документа для возможности приёма ссылок на файлы из временного хранилища. Для этого модифицируйте код из модуля таким образом:Если ЭтоАдресВременногоХранилища(Стр.ИмяФайлаНаКомпьютере) Тогда Данные=ПолучитьИзВременногоХранилища(Стр.ИмяФайлаНаКомпьютере); Иначе Данные = Новый ДвоичныеДанные(Стр.ИмяФайлаНаКомпьютере); Стр.ИмяФайлаНаКомпьютере = ПоместитьВоВременноеХранилище(Данные, ""); КонецЕсли;Тем самым мы определяем что если нам передали ссылку на файл во временном хранилище, то мы просто получаем из временного хранилища, а если это просто путь то тогда уже создаем и помещаем двоичные данные во временное хранилище.
Эта доработка уже позволит отправлять сообщения. Но останется еще одна небольшая проблемка. В письме для вложений не будет показана иконка приложения. Чтобы поправить эту досадную оплошность в строке 97 модуля формы документа «ИсходящееЭлектронноеПисьмо» нужно заменить следующий код:ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(Вложение.Значение, "", ИмяФайла);вот таким кодом(пояснять уже не буду. :aua: ):
Если ЭтоАдресВременногоХранилища(Вложение.Значение) Тогда ИмяФайла=Вложение.Представление; Иначе ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(Вложение.Значение, "", ИмяФайла); КонецЕсли;После такой доработки иконки у файлов будут отображаться.
Но внимательно посмотрев на то что получилось замечаем еще один косяк, для таких вложений не отображается размер!Придётся и этот глюк побороть. Заменяем предидущий код следующим улучшенным:
Если ЭтоАдресВременногоХранилища(Вложение.Значение) Тогда ИмяФайла=Вложение.Представление; Данные=ПолучитьИзВременногоХранилища(Вложение.Значение); Если ТипЗнч(Данные)=Тип("ДвоичныеДанные") Тогда новСтр.Размер=Данные.Размер(); новСтр.РазмерПредставление = ВзаимодействияКлиентСервер.ПолучитьСтроковоеПредставлениеРазмераФайла(новСтр.Размер); КонецЕсли; Иначе ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(Вложение.Значение, "", ИмяФайла); Попытка Данные = Новый Файл(Вложение.Значение); новСтр.Размер= Данные.Размер(); новСтр.РазмерПредставление = ВзаимодействияКлиентСервер.ПолучитьСтроковоеПредставлениеРазмераФайла(новСтр.Размер); Исключение КонецПопытки КонецЕсли;Теперь размер будет отображаться, а также мы предусмотрели защиту от передачи в данную функцию некорректных данных о расположении файла.
2) Вторым способом предполагается добраться всё-таки до момента передачи параметров на форму документа и поправить передающуюся ссылку на путь к файлу во временной директории.
Насколько целесообразен данный способ решать каждому в индивидуальном порядке. На мой взгляд и первый и второй способ далеки от совершенства, но сууть не в этом а в том чтобы каждый решил подобную проблему с минимальными правками кода. Тем более что трешеделы из 1С когда-нибудь таки заделают эту дырку…
Чтобы реализовать данный способ лезем в общие формы и находим форму с названием «ПечатьДокументов», открываем модуль формы и заменяем процедуру «ПоместитьТабличныеДокументыВоВременноеХранилище» следующим содержимым:Процедура ПоместитьТабличныеДокументыВоВременноеХранилище(СписокФайлов, НастройкиСохранения) ЗаписьZipФайла = Неопределено; ИмяАрхива = Неопределено; Если НастройкиСохранения.ЗапаковатьZIP Тогда ИмяАрхива = ПолучитьИмяВременногоФайла("zip"); ЗаписьZipФайла = Новый ЗаписьZipФайла(ИмяАрхива); КонецЕсли; СписокТипов = ПолучитьСписокТиповФайловТабличныхДокументов(НастройкиСохранения); ДатаПредставление = Формат(ТекущаяДата(), "ДФ='yyyyMMdd HH:mm'"); ИмяВременнойПапки = ПолучитьИмяВременногоФайла(); СоздатьКаталог(ИмяВременнойПапки); Для Каждого ТабДокумент Из ИменаТабДокументов Цикл ТабДок = ЭтаФорма["Таб" + ТабДокумент.Значение]; Для Каждого ТипФайла Из СписокТипов Цикл Если ОбъектыПечати.Количество() > 1 Тогда ИмяФайла = "[ИмяМакета] ([ДатаПредставление]).[Расширение]"; Иначе ИмяФайла = "[Документ] ([ИмяМакета] [ДатаПредставление]).[Расширение]"; КонецЕсли; ИмяФайла = СтрЗаменить(ИмяФайла, "[Документ]", Строка(ОбъектыПечати[0].Значение)); ИмяФайла = СтрЗаменить(ИмяФайла, "[ИмяМакета]", ТабДокумент.Представление); ИмяФайла = СтрЗаменить(ИмяФайла, "[ДатаПредставление]", ДатаПредставление); ИмяФайла = СтрЗаменить(ИмяФайла, "[Расширение]", ТипФайла.Представление); ИмяФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайла); ИмяВременногоФайла = ИмяВременнойПапки + "" + ИмяФайла; ТабДок.Записать(ИмяВременногоФайла, ТипФайла.Значение); Если ТипФайла.Значение = ТипФайлаТабличногоДокумента.HTML Тогда ВставитьКартинкиВHTML(ИмяВременногоФайла); КонецЕсли; Если ЗаписьZipФайла <> Неопределено Тогда ЗаписьZipФайла.Добавить(ИмяВременногоФайла); Иначе //ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла); //ПутьВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтаФорма.УникальныйИдентификатор); СписокФайлов.Добавить(ИмяВременногоФайла, ИмяФайла); // УдалитьФайлы(ИмяВременногоФайла); КонецЕсли; КонецЦикла; КонецЦикла; Если ЗаписьZipФайла <> Неопределено Тогда ЗаписьZipФайла.Записать(); ФайлАрхива = Новый Файл(ИмяАрхива); //ДвоичныеДанные = Новый ДвоичныеДанные(ИмяАрхива); //ПутьВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтаФорма.УникальныйИдентификатор); СписокФайлов.Добавить(ИмяАрхива, ФайлАрхива.Имя); КонецЕсли; //УдалитьФайлы(ИмяВременнойПапки); КонецПроцедурыКратко о том, что у нас изменилось. Мы убрали запихивание файла во временное хранилище, заменив на выходе ссылку во временное хранилище на путь к временному файлу. Чтобы в последующем воспользоваться созданными временными файлами было убрано удаление файлов, то есть удалять файлы нам придётся в дальнейшем после вложения в сообщение и записи. Для этого заново открываем модуль документа «ИсходящееЭлектронноеПисьмо» и модифицируем процедуру «ПередЗаписью» следующим образом:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) ОчиститьСообщения(); Если Не ВыполняетсяОтправка Тогда Отказ = ПроверитьЗаполнениеСписковАдресатов(); Если Отказ = Истина Тогда Возврат; КонецЕсли; КонецЕсли; #Если Не ВебКлиент Тогда МассивКаталоговДляУдаления=Новый Массив(); //Перебираем вложения и после помещения во временное хранилище удаляем их Для Каждого Стр Из Вложения Цикл Если Стр.Расположение = 2 Тогда Если ЭтоАдресВременногоХранилища(Стр.ИмяФайлаНаКомпьютере) Тогда Данные=ПолучитьИзВременногоХранилища(Стр.ИмяФайлаНаКомпьютере); Иначе Данные = Новый ДвоичныеДанные(Стр.ИмяФайлаНаКомпьютере); КаталогДляУдаления=""; ФайлДляУдаления=""; ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(Стр.ИмяФайлаНаКомпьютере, КаталогДляУдаления, ФайлДляУдаления); Стр.ИмяФайлаНаКомпьютере = ПоместитьВоВременноеХранилище(Данные, ""); МассивКаталоговДляУдаления.Добавить(КаталогДляУдаления); УдалитьФайлы(Стр.ИмяФайлаНаКомпьютере); КонецЕсли; Стр.Расположение = 4; КонецЕсли; КонецЦикла; //Удаляем папки оставшиеся от временных файлов Для Каждого ФайлДляУдаления из МассивКаталоговДляУдаления Цикл ТекущийФайл=Новый Файл(ФайлДляУдаления); Если ТекущийФайл.Существует() Тогда УдалитьФайлы(ФайлДляУдаления); КонецЕсли; КонецЦикла; #КонецЕсли Объект.ЕстьВложения = (Вложения.Количество() <> 0); КонецПроцедурыЗдесь как видите мы оставляем доработки предложенные в первом варианте и дополняем их функционалом удаления временных файлов.. Далее разжевывать не буду, код и так предельно простой. Для отображения размеров вложений также необходимо применить доработку предложенную в первом варианте..
Сразу скажу что на этом список ваших проблем с почтой в УТ 11 только начинается.
Думаю кому нибудь моя микростатейка поможет… Пока не забыл, если кто будет лазить по коду рекомендую обратить внимание на процедуру фонового задания для получения и отправки почты, там тоже имеются косяки… :angry:
Ermak27 4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
||||
1 |
||||
1C 8.x Ошибка при вызове конструктора (ДвоичныеДанные)28.10.2013, 10:26. Показов 18941. Ответов 3 Метки нет (Все метки)
Почему ошибка выдает
0 |
Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
|
28.10.2013, 11:19 |
2 |
Нужно закрывать файл перед помещением его в хранилищеЗначений
1 |
4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
|
28.10.2013, 11:20 [ТС] |
3 |
Dethmontt, Подскажите на примере пожалуйста
0 |
Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
|
28.10.2013, 11:26 |
4 |
На каком примере? У тебя тупо открыт этот файл — ‘C:UsersermakovAppDataLocalTempprice.xls’ либо висит в процессах Добавлено через 4 минуты
0 |
Описание ошибки:
Обнаружена при разработке обработки для изменения содержимого файла формата XML в серверной базе 1С 8 в режиме управляемого приложения. При тестировании на сервере ошибка не возникала. Проявила себя при работе на рабочем месте пользователя.
Найденные решения:
По факту ошибка возникала при выполнении метода «Прочитать()» для объекта «ТекстовыйДокумент». Как было отмечено, при тестировании работы обработки непосредственно на сервере данной ошибки не возникало. Она проявила себя уже при попытке работы на другом рабочем месте. Обработка разрабатывалась для конфигурации 1С: Комплексная автоматизация 8, ред. 2, которая работает в режиме управляемого приложения — это необходимо отметить. Т.к. это проясняет причины возникновения проблемы.
По привычке разместил операции по чтению содержимого текстового файла и извлечению его содержимого на стороне сервера — см. «&НаСервере» перед процедурой «ОбрабткаНаСервере()». Клиент-серверная архитектура платформы 1С: Предприятие 8.3, казалось бы, к этому обязывала.
В итоге получалось, что платформа на клиентском рабочем месте искала файл по указанному пути на сервере, где развернут сервер 1С: Предприятия 8 исходя из директивы «&НаСервере», а не на рабочем компьютере, где была запущена обработка.
Но, как оказалось позже — конструктор «Новый ТекстовыйДокумент», методы «Прочитать()», «ПолучитьТекст()» — все они доступны не только на стороне сервера, но и на стороне тонкого и толстого клиента. Поэтому замена директивы «&НаСервере» на «&НаКлиенте» решила проблему.
Если по какой-то причине окажется, что я не совсем ясно объяснил суть проблемы, то вот еще обсуждение на форуме mista.ru, где данная пробелма обсуждается несколько другими словами: 1с 8.3 при чтении файла пишет: Файл не обнаружен
Оцените, помогло ли Вам предоставленное описание решения ошибки?
© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
02-11-2020
Журавлев А.С.
(Сайт azhur-c.ru)
Пользователь 103705 Постоянный посетитель Сообщений: 145 |
#1876 31.05.2021 23:07:28
Судя по тому что 56к ску в битрикс — предположу что это виртуальный товар, которого нет на складе у Вас, тогда в таком случае я бы грузил только то, что заказывают, в противном случае в 1с будет тяжело работать с номенклатурой, с точки зрения производительности, любой поиск по номенклатуре это висяк |
||
Пользователь 3551394 Заглянувший Сообщений: 20 |
#1877 01.06.2021 09:01:29
это вина и прочий алкоголь. там почти все позиции есть на складе. пусть и по 2-3 штуки 8(( |
||||
#1878 01.06.2021 09:13:11 Не загружайте картинки — будет полегче идти. |
|
Пользователь 3551394 Заглянувший Сообщений: 20 |
#1879 07.06.2021 16:30:24
свойства — общие. картинки не грузятся. очень странно выглядит загрузка системы: то 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все202101063b967bb6399df113fccabf240c0dcf3a_x.jpg’ Выгрузка файла объекта: Линейка 30 см металлическая и вываливается с ошибкой {ОбщийМодуль.Б_ОбменССайтомСерверВыгрузкаДанных.Модуль(5524)}: Ошибка при установке значения атрибута контекста (Наименование): Несоответствие типов XDTO: Ошибка проверки данных XDTO: Значение: ‘ Пользователь уволился и не признается что он там сделал. Экспорт настроек из бекапа в котором выгрузка работает и импорт на рабочую базу так же не дали успеха. Где можно еще посмотреть и сравнить настройки? 1С:Предприятие 8.3 (8.3.19.1150). Управление нашей фирмой, редакция 1.6 (1.6.25.139). Версия модуля 7,0,1,30 |
|
Александр Денисюк
Администратор Сообщений: 5174 |
#1881 19.07.2021 18:23:17
Смотрите товар » Линейка 30 см металлическая». Что то с картинками у него не то. По всей видимости несуществующий адрес до файлов(картинок). |
||
Пользователь 5230103 Заглянувший Сообщений: 15 |
#1882 21.07.2021 09:08:05
Там вообще нет картинки. Нажатие на кнопку «удалить» и подгрузка картинки тоже результатов не дает. положил по тому пути заглушку. посмотрим как это отработает. UPDATE Завершение выгрузки пакета 36 каталога: Каталог товаров |
||||
#1883 21.07.2021 09:18:57 Может из какого другого свойства или реквизита подтягивает в коде путь до картинки…Тут остается только гадать. Нужна отладка процесса обмена. Всем несогласным — мыло и веревка! |
|
Пользователь 5230103 Заглянувший Сообщений: 15 |
#1884 21.07.2021 10:00:13
Как это можно реализовать? В техническом журнале есть несколько записей: {ОбщийМодуль.ОбщегоНазначения.Модуль(5262)}: Выполнить ИмяМетода + «(» + ПараметрыСтрока + «)»; Затем куча пустого места и потом запись Ремень клиновой XРA — 1600» не соответствует простому типу: {urn:1C.ru:commerceml_3}НаименованиеТип Внешне в той номенклатуре все нормально. |
||
#1885 21.07.2021 11:38:42 Отдел ИТ,под отладкой я имел ввиду пошаговое выполнение код в процессе обмена с сайтом, можно даже в каталог на диске. А вообще перед самой отладкой смотреть, какие изменения были внесены в конфигурацию, чтобы примерно понимать, в каком месте искать проблему. В номенклатуре возможно все хорошо, а вот схема xdto ругается при проверке входных данных. Пригласите специалиста для анализа проблемы или при наличии собственных сил и знаний отлаживайте код. ========== У вас как-то странно выгружается данное наименование товара. Что это? Краткое, полное, описание, комментарий, доп. свойство, где есть текст Значение: «<куча пустого места, пробелы или переносы строк> Ремень клиновой XРA — 1600» Как раз ругается на длину в 250 символов. Либо код криво написан на выгрузку какого-то наименования, либо забито неверно информация в реквизите/доп.реквизите или свойстве… Всем несогласным — мыло и веревка! |
|
Пользователь 5230103 Заглянувший Сообщений: 15 |
#1886 21.07.2021 14:55:45
Разобрались с этой номенклатурой. В общем, в данной номенклатуре было в поле «наименование для печати» проставлено 470 пустых строк, а затем наименование. Когда открываешь эту номенклатуру, то соответственно данное поле кажется пустым, поэтому и не вызывала подозрений долгое время, пока не начали уже во все поля тыкать PS: почему в модуле обмена так плохо организовано логирование? Ведь будь вывод в лог, что в данной номенклатуре поле не соответствует длине, все было бы проще. И подозреваю, что первоначально линейка вовсе не причем — просто она последняя отображалась в логе. А из-за этого был потерян не один день времени |
||
#1887 23.07.2021 16:47:27 Еще вопрос… |
|
#1888 30.07.2021 17:37:52 Подскажите, кто знает почему при обмене с 1С все время перезаписывается поле Сортировка свойств инфоблока? Что нужно сделать чтобы это прекратилось? Конкретно речь об этом https://skr.sh/s9I1NFAWBXt свойстве — по факту это картинки из 1С |
|
Пользователь 3668772 Заглянувший Сообщений: 23 |
#1889 01.08.2021 05:09:10
На сколько знаю, обмен в старых модулях реализован полный т.е. грузятся не изменённые данные по товару, а абсолютно все передаваемые по товару данные. |
||||
#1890 03.08.2021 15:52:09 полная выгрузка оказывается не совсем полная. как провести абсолютно полную выгрузку? |
|
Пользователь 3668772 Заглянувший Сообщений: 23 |
#1891 04.08.2021 10:20:28
Под полной выгрузкой имеется в виду не выгрузка всего и вся, а выгрузка всех документов и значений которые подпадают под установленные Вами фильтры. Если Вы выгружаете определённые цены и определённую номенклатуру и её характеристики, то именно они будут иметься в полной выгрузке. Не при полной выгрузке, выгружаются только изменённые сущности. |
||
#1892 09.08.2021 15:36:55 Добрый день. Сайт 1С-Битрикс24: Интернет-магазин + CRM Версия платформы 1С: 8.3.18.1334 Тип базы 1С: Файловая |
|
#1893 18.08.2021 09:25:39 Добрый день, не можем разобраться с логикой работы (конфигурация УТ 11.4) |
|
Александр Денисюк
Администратор Сообщений: 5174 |
#1894 18.08.2021 11:30:04
может не установили маппинг служб доставки? И еще, может удаляться, если из 1С не выгружается отгрузка, т.к. в ней хранится стоимость доставки. |
||
#1895 25.08.2021 09:39:36 День добрый. Так и должно быть? |
|
#1896 16.09.2021 11:47:09 Добрый день! Подскажите пожалуйста, не появилась в модуле возможность выгружать из 1с индивидуальные соглашения по условиям продаж? |
|
Александр Денисюк
Администратор Сообщений: 5174 |
#1897 16.09.2021 18:11:38
Не появилось |
||
#1898 17.09.2021 12:32:34 Есть ли какие-нибудь новости по переходу на обмен через rest товарами а не xml файлами? Года 3 назад помню еще писали, что в работе. И планируется ли что-то делать с 2 каталогами в продукте интернет-магазин + CRM, хотелось бы работать без костылей и иметь красивую связь товаров + заказов. |
|
Александр Денисюк
Администратор Сообщений: 5174 |
#1899 17.09.2021 14:58:33
Больная тема… Реализация реста товаров все переносится и переносится.. |
||
Пользователь 4104036 Заглянувший Сообщений: 9 |
#1900 29.03.2023 20:22:38 Добрый день. |