Метод половинного деления в CommerceML

У клиента перестали выгружаться данные на сайт, т.к. объем выгрузки товаров стал слишком большим. Разработчики сайта подтвердили проблему и стали ее решать. Но решают они ее долго, а выгружать надо сейчас.

Поэтому решил сделать клиенту деление выгрузки на две части.

Создаю две дополнительные кнопки — «Выгрузить 1» и «Выгрузить 2»:

Разделил список товаров на две части следующим кодом:

	ТЗТовары = З.Выполнить().Выгрузить();
	//Важно - должна идти сначала основная модификация, обязательно все товары вместе идут группами
	ТЗТовары.Сортировать("_ОсновнаяМодификация УБЫВ, Ссылка");
	
	Всего = ТЗТовары.Количество();
	Последний = Цел(Всего/2);
	
	//Смотрим, чтобы разбитие не делило одну позицию номенклатуры
	Пока Последний < Всего Цикл
		Если ТЗТовары[Последний-1].Ссылка <> ТЗТовары[Последний].Ссылка Тогда
			Прервать;
		КонецЕсли;
		Последний = Последний + 1;
	КонецЦикла;
	
	Если Режим = "1" Тогда
		Сообщить("Удаляем позиции с: " + (Последний + 1) + " по: " + Всего);
		//Удаляем первую строку
		Для Инд = Последний +1 По Всего Цикл
			ТЗТовары.Удалить(ТЗТовары.Количество() - 1); //Удаляем всегда последнюю строку
		КонецЦикла;
	ИначеЕсли Режим = "2" Тогда
		Сообщить("Удаляем позиции с: 1 по: " + Последний);
		//Удаляем первую строку
		Для Инд = 1 По Последний Цикл
			ТЗТовары.Удалить(0);
		КонецЦикла;
	КонецЕсли;

	
	Сообщить("Список к выгрузке:");
	Для Каждого СтрокаТовара ИЗ ТЗТовары Цикл
		Сообщить(Символы.ТАБ + СтрокаТовара.Артикул + Символы.ТАБ + СтрокаТовара.Наименование); 
	КонецЦикла;
	
	Результат.Вставить("XMLТовары", СформироватьВыгрузкуТоваров(ТЗТовары));
	Результат.Вставить("XMLПредложения", СформироватьВыгрузкуПредложений(ТЗТовары));

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

По нажатию кнопки «Выгрузить 1» выводится:

По нажатию кнопки «Выгрузить 2» выводится:

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

Среда: Розница 2.2.11.2 для Беларуси Объем: 1 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *