Ну совершенно верно так и должно быть у каждого с версией 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:
Отправка письма со вложенным файлом
Автор Funt432286, 12 мая 2020, 16:07
0 Пользователей и 1 гость просматривают эту тему.
antoneus,
ЦитироватьСтрокаСоединенияСБД = СтрокаСоединенияИнформационнойБазы();
ПутьКБД = Сред(СтрокаСоединенияСБД, 6, СтрДлина(СтрокаСоединенияСБД) — 6);
а если это клиент-серверный вариант?
какой это путь к файлу? ПутьКБД- ?
там имя сервера и имя СКЛ/ПГ Базы
получение файла с Сервера на Клиент — это же уже давно обкатанный велосипед! что вы его изобретаете?
если помогло нажмите: Спасибо!
э-э-э, а-а-а
ну тогда…
если помогло нажмите: Спасибо!
Цитата: 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 |
#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\все\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 |
#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) |
|
Александр Денисюк
Администратор Сообщений: 5322 |
#1894 18.08.2021 11:30:04
может не установили маппинг служб доставки? И еще, может удаляться, если из 1С не выгружается отгрузка, т.к. в ней хранится стоимость доставки. |
||
#1895 25.08.2021 09:39:36 День добрый. Так и должно быть? |
|
#1896 16.09.2021 11:47:09 Добрый день! Подскажите пожалуйста, не появилась в модуле возможность выгружать из 1с индивидуальные соглашения по условиям продаж? |
|
Александр Денисюк
Администратор Сообщений: 5322 |
#1897 16.09.2021 18:11:38
Не появилось |
||
#1898 17.09.2021 12:32:34 Есть ли какие-нибудь новости по переходу на обмен через rest товарами а не xml файлами? Года 3 назад помню еще писали, что в работе. И планируется ли что-то делать с 2 каталогами в продукте интернет-магазин + CRM, хотелось бы работать без костылей и иметь красивую связь товаров + заказов. |
|
Александр Денисюк
Администратор Сообщений: 5322 |
#1899 17.09.2021 14:58:33
Больная тема… Реализация реста товаров все переносится и переносится.. |
||
Пользователь 4104036 Заглянувший Сообщений: 9 |
#1900 29.03.2023 20:22:38 Добрый день. |
Ermak27 4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
||||
1 |
||||
1C 8.x Ошибка при вызове конструктора (ДвоичныеДанные)28.10.2013, 10:26. Показов 19333. Ответов 3 Метки нет (Все метки)
Почему ошибка выдает
0 |
Модератор 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 |
Модератор 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: ):
Если ЭтоАдресВременногоХранилища(Вложение.Значение) Тогда ИмяФайла=Вложение.Представление; Иначе ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(Вложение.Значение, "", ИмяФайла); КонецЕсли;После такой доработки иконки у файлов будут отображаться.
Но внимательно посмотрев на то что получилось замечаем еще один косяк, для таких вложений не отображается размер! Придётся и этот глюк побороть. Заменяем предидущий код следующим улучшенным:Если ЭтоАдресВременногоХранилища(Вложение.Значение) Тогда ИмяФайла=Вложение.Представление; Данные=ПолучитьИзВременногоХранилища(Вложение.Значение); Если ТипЗнч(Данные)=Тип("ДвоичныеДанные") Тогда новСтр.Размер=Данные.Размер(); новСтр.РазмерПредставление = ВзаимодействияКлиентСервер.ПолучитьСтроковоеПредставлениеРазмераФайла(новСтр.Размер); КонецЕсли; Иначе ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(Вложение.Значение, "", ИмяФайла); Попытка Данные = Новый Файл(Вложение.Значение); новСтр.Размер= Данные.Размер(); новСтр.РазмерПредставление = ВзаимодействияКлиентСервер.ПолучитьСтроковоеПредставлениеРазмераФайла(новСтр.Размер); Исключение КонецПопытки КонецЕсли;Теперь размер будет отображаться, а также мы предусмотрели защиту от передачи в данную функцию некорректных данных о расположении файла.
2) Вторым способом предполагается добраться всё-таки до момента передачи параметров на форму документа и поправить передающуюся ссылку на путь к файлу во временной директории.
Насколько целесообразен данный способ решать каждому в индивидуальном порядке. На мой взгляд и первый и второй способ далеки от совершенства, но сууть не в этом а в том чтобы каждый решил подобную проблему с минимальными правками кода. Тем более что трешеделы из 1С когда-нибудь таки заделают эту дырку…
Чтобы реализовать данный способ лезем в общие формы и находим форму с названием «ПечатьДокументов», открываем модуль формы и заменяем процедуру «ПоместитьТабличныеДокументыВоВременноеХранилище» следующим содержимым:Процедура ПоместитьТабличныеДокументыВоВременноеХранилище(СписокФайлов, НастройкиСохранения) ЗаписьZipФайла = Неопределено; ИмяАрхива = Неопределено; Если НастройкиСохранения.ЗапаковатьZIP Тогда ИмяАрхива = ПолучитьИмяВременногоФайла("zip"); ЗаписьZipФайла = Новый ЗаписьZipФайла(ИмяАрхива); КонецЕсли; СписокТипов = ПолучитьСписокТиповФайловТабличныхДокументов(НастройкиСохранения); ДатаПредставление = Формат(ТекущаяДата(), "ДФ='yyyyMMdd HH:mm'"); ИмяВременнойПапки = ПолучитьИмяВременногоФайла(); СоздатьКаталог(ИмяВременнойПапки); Для Каждого ТабДокумент Из ИменаТабДокументов Цикл ТабДок = ЭтаФорма["Таб" + ТабДокумент.Значение]; Для Каждого ТипФайла Из СписокТипов Цикл Если ОбъектыПечати.Количество() > 1 Тогда ИмяФайла = "[ИмяМакета] ([ДатаПредставление]).[Расширение]"; Иначе ИмяФайла = "[Документ] ([ИмяМакета] [ДатаПредставление]).[Расширение]"; КонецЕсли; ИмяФайла = СтрЗаменить(ИмяФайла, "[Документ]", Строка(ОбъектыПечати[0].Значение)); ИмяФайла = СтрЗаменить(ИмяФайла, "[ИмяМакета]", ТабДокумент.Представление); ИмяФайла = СтрЗаменить(ИмяФайла, "[ДатаПредставление]", ДатаПредставление); ИмяФайла = СтрЗаменить(ИмяФайла, "[Расширение]", ТипФайла.Представление); ИмяФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайла); ИмяВременногоФайла = ИмяВременнойПапки + "" + ИмяФайла; ТабДок.Записать(ИмяВременногоФайла, ТипФайла.Значение); Если ТипФайла.Значение = ТипФайлаТабличногоДокумента.HTML Тогда ВставитьКартинкиВHTML(ИмяВременногоФайла); КонецЕсли; Если ЗаписьZipФайла <> Неопределено Тогда ЗаписьZipФайла.Добавить(ИмяВременногоФайла); Иначе //ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла); //ПутьВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтаФорма.УникальныйИдентификатор); СписокФайлов.Добавить(ИмяВременногоФайла, ИмяФайла); // УдалитьФайлы(ИмяВременногоФайла); КонецЕсли; КонецЦикла; КонецЦикла; Если ЗаписьZipФайла <> Неопределено Тогда ЗаписьZipФайла.Записать(); ФайлАрхива = Новый Файл(ИмяАрхива); //ДвоичныеДанные = Новый ДвоичныеДанные(ИмяАрхива); //ПутьВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ЭтаФорма.УникальныйИдентификатор); СписокФайлов.Добавить(ИмяАрхива, ФайлАрхива.Имя); КонецЕсли; //УдалитьФайлы(ИмяВременнойПапки); КонецПроцедурыКратко о том, что у нас изменилось. Мы убрали запихивание файла во временное хранилище, заменив на выходе ссылку во временное хранилище на путь к временному файлу. Чтобы в последующем воспользоваться созданными временными файлами было убрано удаление файлов, то есть удалять файлы нам придётся в дальнейшем после вложения в сообщение и записи. Для этого заново открываем модуль документа «ИсходящееЭлектронноеПисьмо» и модифицируем процедуру «ПередЗаписью» следующим образом:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) ОчиститьСообщения(); Если Не ВыполняетсяОтправка Тогда Отказ = ПроверитьЗаполнениеСписковАдресатов(); Если Отказ = Истина Тогда Возврат; КонецЕсли; КонецЕсли; #Если Не ВебКлиент Тогда МассивКаталоговДляУдаления=Новый Массив(); //Перебираем вложения и после помещения во временное хранилище удаляем их Для Каждого Стр Из Вложения Цикл Если Стр.Расположение = 2 Тогда Если ЭтоАдресВременногоХранилища(Стр.ИмяФайлаНаКомпьютере) Тогда Данные=ПолучитьИзВременногоХранилища(Стр.ИмяФайлаНаКомпьютере); Иначе Данные = Новый ДвоичныеДанные(Стр.ИмяФайлаНаКомпьютере); КаталогДляУдаления=""; ФайлДляУдаления=""; ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(Стр.ИмяФайлаНаКомпьютере, КаталогДляУдаления, ФайлДляУдаления); Стр.ИмяФайлаНаКомпьютере = ПоместитьВоВременноеХранилище(Данные, ""); МассивКаталоговДляУдаления.Добавить(КаталогДляУдаления); УдалитьФайлы(Стр.ИмяФайлаНаКомпьютере); КонецЕсли; Стр.Расположение = 4; КонецЕсли; КонецЦикла; //Удаляем папки оставшиеся от временных файлов Для Каждого ФайлДляУдаления из МассивКаталоговДляУдаления Цикл ТекущийФайл=Новый Файл(ФайлДляУдаления); Если ТекущийФайл.Существует() Тогда УдалитьФайлы(ФайлДляУдаления); КонецЕсли; КонецЦикла; #КонецЕсли Объект.ЕстьВложения = (Вложения.Количество() <> 0); КонецПроцедурыЗдесь как видите мы оставляем доработки предложенные в первом варианте и дополняем их функционалом удаления временных файлов.. Далее разжевывать не буду, код и так предельно простой. Для отображения размеров вложений также необходимо применить доработку предложенную в первом варианте..
Сразу скажу что на этом список ваших проблем с почтой в УТ 11 только начинается. Думаю кому нибудь моя микростатейка поможет… Пока не забыл, если кто будет лазить по коду рекомендую обратить внимание на процедуру фонового задания для получения и отправки почты, там тоже имеются косяки… :angry: