Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Как решить баг с 1c и большим размером файлов изображений?


Recommended Posts

Добрый день, сделал интеграцию с 1c товароов. Выгрузка идет отлично каждые 2 часа( на стадии разработке) проблема в том что имеется баг ( в самом модуле 1с) что изображения старые не удаляются. Скорее даже вес прибавляется к новым файлам . И вот после 10 дней разработке вес одного изображения достигает по 200мб. Я думаю кто использует модуль 1с сталкивался с такой проблемой. Как можно решить данную задачу?

Надіслати
Поділитися на інших сайтах


Так проблема в 1С или OpenCart? Каким образом происходит интеграция с сайтом? Фото выгружаются с использованием FTP?

Надіслати
Поділитися на інших сайтах

10 минут назад, mario512 сказал:

Так проблема в 1С или OpenCart? Каким образом происходит интеграция с сайтом? Фото выгружаются с использованием FTP?

насколько я думаю с 1с. Интеграция через модуль, фотографии просто растут в размере с каждым днем)

Надіслати
Поділитися на інших сайтах


Вопрос необходимо адресовать разработчику модуля для интеграции 1с. OpenCart тут не виноват)

Надіслати
Поділитися на інших сайтах

На всякий случай мой вариант решения данной задачи.

Я формирую список фотографий для выгрузки в командный файл для встроенного FTP  клиента Windows и передаю ему этот список команд.

Процедура для 1с V7:

Спойлер

Процедура ВыгрузитьФото()
	Если ВыгФото = 1 Тогда
		ЗаписатьФото();
		Если стФото.РазмерСписка() > 0  тогда 
			ТекстВыгрузки = СоздатьОбъект("Текст");
			ТекстВыгрузки.ДобавитьСтроку("open " + ФтпСервер);
			ТекстВыгрузки.ДобавитьСтроку(ФтпЛогин);
			ТекстВыгрузки.ДобавитьСтроку(ФтпПароль);
			ТекстВыгрузки.ДобавитьСтроку("cd "+ФтпКаталог+Прав(ФтпКаталогФото,СтрДлина(ФтпКаталогФото)-1));
			ТекстВыгрузки.ДобавитьСтроку("mkdir "+СокрЛП(АйДи));
			ТекстВыгрузки.ДобавитьСтроку("cd "+ФтпКаталог+Прав(ФтпКаталогФото,СтрДлина(ФтпКаталогФото)-1)+СокрЛП(АйДи)); //логин
			ТекстВыгрузки.ДобавитьСтроку("type binary");
			Для Ном = 1 По стФото.РазмерСписка() Цикл
				ТекстВыгрузки.ДобавитьСтроку("put "+ СтрЗаменить(стФото.ПолучитьЗначение(Ном),"(главное фото)",""));
			КонецЦикла;
			ТекстВыгрузки.ДобавитьСтроку("bye");
			ТекстВыгрузки.Записать(КаталогПользователя() + "ftp.txt");
			ТекстВыгрузки = "";
			КомандаСистемы("ftp -s:" + КаталогПользователя() + "Ftp.txt>> " + (КаталогПользователя() + "report.txt"));
			ФС.УдалитьФайл(КаталогПользователя() + "ftp.txt");
			ТекстВыгрузки = СоздатьОбъект("Текст");
			ТекстВыгрузки.Открыть(КаталогПользователя() + "report.txt");
			КС = ТекстВыгрузки.КоличествоСтрок()-4; 
			Попытка 
				строкаКомплете = ТекстВыгрузки.ПолучитьСтроку(КС);
				Если  Найти(Нрег(строкаКомплете),"226 transfer complete") = 0
				Тогда а=1; а=а/0;
				КонецЕсли;
				ТекстВыгрузки = "";
				ФС.УдалитьФайл(КаталогПользователя() + "report.txt");
				Есть = 1;
			Исключение
				тПротокол = ТекущееВремя()+" ПРОИЗОШЛА ОШИБКА ВО ВРЕМЯ ЗАГРУЗКИ СФОРМИРОВАННОГО ФАЙЛА НА СЕРВЕР ИНЕТРНЕТ-МАГАЗИНА"+РазделительСтрок+тПротокол;
				ТекстВыгрузки.Показать();
				ТекстВыгрузки = "";
			КонецПопытки;
			Если Есть = 1 тогда
				post=Соединение.Execute("UPDATE oc_product SET `image`="""+ПутьКФото(СокрЛП(ГлавноеФотоТовара))+""" WHERE `product_id`="+СокрЛП(АйДи));
				Ном = 0;
				НомСтрок = 0;
				post=Соединение.Execute("DELETE FROM `oc_product_image` WHERE `oc_product_image`.`product_id` ="+СокрЛП(АйДи));
				ПослФотоАйди=Соединение.Execute("SELECT MAX(`product_image_id`) AS `product_image_id` FROM oc_product_image");
				ФотоАйди = Число(ПослФотоАйди.Fields.Item("product_image_id").value);
				Для Ном = 1 По стФото.РазмерСписка() Цикл
					НомСтрок = НомСтрок + 1;
					Если Найти(стФото.ПолучитьЗначение(НомСтрок),"(главное фото)") = 0  тогда 
						ФотоАйди = ФотоАйди+1;
						post=Соединение.Execute("REPLACE INTO `oc_product_image`(`product_image_id`, `product_id`, `image`, `sort_order`) VALUES ("+ФотоАйди+","+СокрЛП(АйДи)+","""+ПутьКФото(СтрЗаменить(стФото.ПолучитьЗначение(НомСтрок),"(главное фото)"," "))+""","+Ном+")");
					КонецЕсли;
				КонецЦикла;
			КонецЕсли;	
		иначе
			post=Соединение.Execute("SELECT `image` FROM `oc_product_image` WHERE `product_id` ="+СокрЛП(АйДи));
			ТекстВыгрузки = СоздатьОбъект("Текст");
			ТекстВыгрузки.ДобавитьСтроку("open " + ФтпСервер);
			ТекстВыгрузки.ДобавитьСтроку(ФтпЛогин);
			ТекстВыгрузки.ДобавитьСтроку(ФтпПароль);
			ТекстВыгрузки.ДобавитьСтроку("delete "+ФтпКаталог+СокрЛП(ПутьКФото(ГлавноеФотоТовара)));
			Пока post.Eof()=0 Цикл
				ТекстВыгрузки.ДобавитьСтроку("delete "+ФтпКаталог+СокрЛП(post.Fields.Item("image").value)); 
				post.MoveNext();
			КонецЦикла;
			ТекстВыгрузки.ДобавитьСтроку("rmdir "+ФтпКаталог+Прав(ФтпКаталогФото,СтрДлина(ФтпКаталогФото)-1)+СокрЛП(АйДи));
			ТекстВыгрузки.ДобавитьСтроку("bye");
			ТекстВыгрузки.Записать(КаталогПользователя() + "ftp.txt");
			ТекстВыгрузки = "";
			КомандаСистемы("ftp -s:" + КаталогПользователя() + "Ftp.txt>> " + (КаталогПользователя() + "report.txt"));
			ФС.УдалитьФайл(КаталогПользователя() + "ftp.txt");
			post=Соединение.Execute("DELETE FROM `oc_product_image` WHERE `oc_product_image`.`product_id` ="+СокрЛП(АйДи));
			post=Соединение.Execute("UPDATE oc_product SET `image`="""" WHERE `product_id`="+СокрЛП(АйДи));
			ГлавноеФотоТовара = " ";
		КонецЕсли;
	иначе
	     ЗаписатьФото();
		Если стФото.РазмерСписка() > 0  тогда
			Ном = 0;
			post=Соединение.Execute("DELETE FROM `oc_product_image` WHERE `oc_product_image`.`product_id` ="+СокрЛП(АйДи));
			Для ы = 1 по стФото.РазмерСписка() Цикл
				Если ы = 1 тогда
					post=Соединение.Execute("UPDATE oc_product SET `image`="""+СокрЛП(стФото.ПолучитьЗначение(ы))+""" WHERE `product_id`="+СокрЛП(АйДи));
				КонецЕсли;	
				Если ы >= 2 тогда    
					Ном = Ном + 1;
					ПослФотоАйди=Соединение.Execute("SELECT MAX(`product_image_id`) AS `product_image_id` FROM oc_product_image");
					ФотоАйди = Число(ПослФотоАйди.Fields.Item("product_image_id").value);
					ФотоАйди = ФотоАйди+1;
					post=Соединение.Execute("REPLACE INTO `oc_product_image`(`product_image_id`, `product_id`, `image`, `sort_order`) VALUES ("+ФотоАйди+","+СокрЛП(АйДи)+","""+стФото.ПолучитьЗначение(ы)+""","+Ном+")");
				КонецЕсли
			КонецЦикла;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

 

 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.