Доброго времени суток.
Есть обработка, которая должна выводить данные в .yml, запрос выдает правильные данные, забил его в процедуру
Но вот на этом этапе не видит почему-то "Строка"
ТЗКатегории = ВыборкаТоваров.Скопировать();
ТЗКатегории.Свернуть("НоменклатураРодитель");
ЗаписьХМL.ЗаписатьНачалоЭлемента("categories");
Для каждого Строка Из ТЗКатегории Цикл
ЗаписьХМL.ЗаписатьНачалоЭлемента("category");
ЗаписьХМL.ЗаписатьАтрибут("id",Прав(Строка.НоменклатураРодитель.Код,7 ));
ЗаписьХМL.ЗаписатьТекст(Строка(Строка.НоменклатураРодитель.Наименование));
ЗаписьХМL.ЗаписатьКонецЭлемента();
КонецЦикла;
ЗаписьХМL.ЗаписатьКонецЭлемента();
Измените имя переменной цикла на другое уникальное(Вместо Строка напишите СтрокаПеребора). У вас может быть реквизит формы/документа с совпадающим именем.
pablo @ Сегодня, 10:49
,
ТАкая вот ошибка
{ВнешняяОбработка.ВыгрузкаДанныхПоНоменклатуре.МодульОбъекта(113)}: Метод объекта не обнаружен (Следующий)
Пока ВыборкаТоваров.Следующий() Цикл
ЗаписьХМL.ЗаписатьНачалоЭлемента("categories");
Для каждого СтрокаПеребора Из ТЗКатегории Цикл
ЗаписьХМL.ЗаписатьНачалоЭлемента("category");
ЗаписьХМL.ЗаписатьАтрибут("id",Прав(СтрокаПеребора.НоменклатураРодитель.Код,7 ));
ЗаписьХМL.ЗаписатьТекст(Строка(СтрокаПеребора.НоменклатураРодитель.Наименование));
ЗаписьХМL.ЗаписатьКонецЭлемента();
КонецЦикла;
ЗаписьХМL.ЗаписатьКонецЭлемента();
Пока ВыборкаТоваров.Следующий() Цикл
ЗаписьХМL.ЗаписатьНачалоЭлемента("offer");
Все штатные телепаты в отпуске (с)
Очевидно только то, что ошибка кроется в коде, который Вы не показываете...
pablo @ Сегодня, 11:00
,
Прошу прощения.
Вот эта процедура:
Процедура СохранитьВКаталог(ВыборкаТоваров) Экспорт
// Проверим существование папки для записи изображений
Если ЛокальнаяВыгрузка = Ложь Тогда
Каталог = "C:\1C";
КонецЕсли;
ПутьКИзображениям =Каталог + "\Picture\";
КоличествоВыгруженныхТоваров = 0;
ПапкаКатолога = Новый Файл(Каталог);
Если Не ПапкаКатолога.Существует() Тогда
СоздатьКаталог(ПутьКИзображениям);
КонецЕсли;
ПапкаХранилища = Новый Файл(ПутьКИзображениям);
// Очищаем каталог перд загрзузкой новых файлов
Если Не ПапкаХранилища.Существует() Тогда
СоздатьКаталог(ПутьКИзображениям);
Иначе
Попытка
УдалитьФайлы(ПутьКИзображениям,"*.*");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
ЗаписьХМL = Новый ЗаписьXML;
ЗаписьХМL.ОткрытьФайл(Каталог + "\" + Организация + ".xml");
// Записать директиву
ЗаписьХМL.ЗаписатьОбъявлениеXML();
//ЗаписьХМL.ЗаписатьНачалоЭлемента(Строка("OCTYPE xml_catalog SYSTEM" +" " + "hops.dtd"));
ЗаписьХМL.ЗаписатьНачалоЭлемента("yml_catalog");
ЗаписьХМL.ЗаписатьАтрибут("date",Строка(Формат(КонецДня(ТекущаяДата()) - 3539, "ДФ=yyyy-MM-dd")+" "+Формат(КонецДня(ТекущаяДата()) - 3539, "ДФ=ЧЧ")+":"+Формат(КонецДня(ТекущаяДата()) - 3539, "ДФ=мм")));
ЗаписьХМL.ЗаписатьНачалоЭлемента("shop");
// начинаем обход результата запроса
ЗаписьХМL.ЗаписатьНачалоЭлемента("name");
ЗаписьХМL.ЗаписатьТекст (Строка("HBH"));
//Operation name;
ЗаписьХМL.ЗаписатьКонецЭлемента();
//ВыборкаНоменклатура = ВыборкаНоменклатураРодитель.Выбрать();
//Пока ВыборкаНоменклатура.Следующий() Цикл
ЗаписьХМL.ЗаписатьНачалоЭлемента("company");
ЗаписьХМL.ЗаписатьТекст (Строка("Berkut"));
//company name;
ЗаписьХМL.ЗаписатьКонецЭлемента();
ЗаписьХМL.ЗаписатьНачалоЭлемента("url");
//url;
ЗаписьХМL.ЗаписатьКонецЭлемента();
ЗаписьХМL.ЗаписатьНачалоЭлемента("currencies");
ЗаписьХМL.ЗаписатьТекст (Строка("UAH"));
ЗаписьХМL.ЗаписатьКонецЭлемента();
//ОбходПоГруппирокам = ОбходРезультатаЗапроса.ПоГруппировкам;
ТЗКатегории = ВыборкаТоваров.Скопировать();
ТЗКатегории.Свернуть("НоменклатураРодитель");
//ВыборкаНоменклатураРодитель = ТЗКатегории;
ЗаписьХМL.ЗаписатьНачалоЭлемента("categories");
Для каждого СтрокаПеребора Из ТЗКатегории Цикл
ЗаписьХМL.ЗаписатьНачалоЭлемента("category");
ЗаписьХМL.ЗаписатьАтрибут("id",Прав(СтрокаПеребора.НоменклатураРодитель.Код,7 ));
ЗаписьХМL.ЗаписатьТекст(Строка(СтрокаПеребора.НоменклатураРодитель.Наименование));
ЗаписьХМL.ЗаписатьКонецЭлемента();
КонецЦикла;
ЗаписьХМL.ЗаписатьКонецЭлемента();
ЗаписьХМL.ЗаписатьНачалоЭлемента("offers");
Пока ВыборкаТоваров.Следующий() Цикл
ЗаписьХМL.ЗаписатьНачалоЭлемента("offer");
Если ЗначениеЗаполнено(ВыборкаТоваров.Код) Тогда
КоличествоВыгруженныхТоваров = КоличествоВыгруженныхТоваров + 1;
ЗаписьХМL.ЗаписатьАтрибут("id",Прав(ВыборкаТоваров.Код,7 ));
Если ВыборкаТоваров.Остаток > 0 И НЕ ВыборкаТоваров.НоменклатураСсылка.шЗаказная Тогда
ЗаписьХМL.ЗаписатьАтрибут("available",Строка("в наличии"));
ИначеЕсли ВыборкаТоваров.Остаток >= 0 И ВыборкаТоваров.НоменклатураСсылка.шЗаказная Тогда
ЗаписьХМL.ЗаписатьАтрибут("available",Строка("под заказ"));
Иначе
ЗаписьХМL.ЗаписатьАтрибут("available",Строка("наличие уточняйте"));
КонецЕсли;
ЗаписьХМL.ЗаписатьНачалоЭлемента("url");
///
ЗаписьХМL.ЗаписатьКонецЭлемента();
ЗаписьХМL.ЗаписатьНачалоЭлемента("price");
Если ЗначениеЗаполнено(ВыборкаТоваров.Цена) Тогда
ЗаписьХМL.ЗаписатьТекст(СтрЗаменить(Строка(ВыборкаТоваров.Цена),",","."));
КонецЕсли;
ЗаписьХМL.ЗаписатьКонецЭлемента();
ЗаписьХМL.ЗаписатьНачалоЭлемента("currencyId");
ЗаписьХМL.ЗаписатьТекст (Строка("UAH"));
ЗаписьХМL.ЗаписатьКонецЭлемента();
ЗаписьХМL.ЗаписатьНачалоЭлемента("measure");
ЗаписьХМL.ЗаписатьТекст (Строка(ВыборкаТоваров.ЕдиницаИзмерения));
ЗаписьХМL.ЗаписатьКонецЭлемента();
ЗаписьХМL.ЗаписатьНачалоЭлемента("categoryId");
ЗаписьХМL.ЗаписатьТекст("id",Прав(ВыборкаТоваров.НоменклатураРодитель.Код,7 ));
ЗаписьХМL.ЗаписатьКонецЭлемента();
ЗаписьХМL.ЗаписатьНачалоЭлемента("picture");
//ЗаписьХМL.ЗаписатьТекст (ВыборкаТоваров.НаименованиеПолное);
ЗаписьХМL.ЗаписатьКонецЭлемента();
// ЗДЕСЬ ДОЛЖЕН БЫТЬ <vendor>Польша</vendor>
// <vendorCode></vendorCode>
ЗаписьХМL.ЗаписатьНачалоЭлемента("model");
ЗаписьХМL.ЗаписатьТекст(ВыборкаТоваров.Наименование);
ЗаписьХМL.ЗаписатьКонецЭлемента();
ЗаписьХМL.ЗаписатьНачалоЭлемента("description");
ЗаписьХМL.ЗаписатьТекст (ВыборкаТоваров.Описание);
ЗаписьХМL.ЗаписатьКонецЭлемента();
КонецЕСли;
ЗаписьХМL. ЗаписатьКонецЭлемента(); //Относится к "offer"
КонецЦикла;
ЗаписьХМL.ЗаписатьКонецЭлемента(); //Относится к "offers"
ЗаписьХМL.ЗаписатьКонецЭлемента(); //Относится к элементу "shop"
ЗаписьХМL.ЗаписатьКонецЭлемента(); //Относится к элементу "yml_catalog"
ЗаписьХМL.Закрыть();
Если ЛокальнаяВыгрузка = Ложь Тогда
ОтправитьФайлНаСервер(КоличествоВыгруженныхТоваров);
Иначе
Сообщить("Выгрузка успешно завершилась. Выгружено " + КоличествоВыгруженныхТоваров + " товаров");
КонецЕсли;
КонецПроцедуры
Процедура ИнициализацияПостроителяОтчета() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Номенклатура
|ПОМЕСТИТЬ ВТНоменклатура
|{ВЫБРАТЬ
| Номенклатура.* КАК Номенклатура}
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТНоменклатура.Номенклатура.Код КАК Код,
| ВТНоменклатура.Номенклатура.Наименование КАК Наименование,
| ВТНоменклатура.Номенклатура.Артикул КАК Артикул,
| ВТНоменклатура.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВТНоменклатура.Номенклатура.Комментарий КАК Комментарий,
| ВТНоменклатура.Номенклатура.НаименованиеПолное КАК НаименованиеПолное,
| ВТНоменклатура.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК Описание,
| ЦеныНоменклатурыСрезПоследних.Цена,
| ВТНоменклатура.Номенклатура.Родитель КАК НоменклатураРодитель,
| ВТНоменклатура.Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| ТоварыНаСкладахОстатки.Склад,
| ЦеныНоменклатурыСрезПоследних.ТипЦен,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток,
| ВТНоменклатура.Номенклатура.ОсновноеИзображение.Хранилище КАК Хранилище,
| ВТНоменклатура.Номенклатура.ОсновноеИзображение.Объект.Код КАК КодИзображения,
| ВТНоменклатура.Номенклатура.Ссылка КАК НоменклатураСсылка
|{ВЫБРАТЬ
| НоменклатураСсылка.* КАК Номенклатура,
| ТипЦен.* КАК ТипЦен,
| Склад.* КАК Склад}
|ИЗ
| ВТНоменклатура КАК ВТНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, {(Номенклатура).* КАК Номенклатура, (Склад).* КАК Склад}) КАК ТоварыНаСкладахОстатки
| ПО ВТНоменклатура.Номенклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(Номенклатура).* КАК Номенклатура, (ТипЦен).* КАК ТипЦен}) КАК ЦеныНоменклатурыСрезПоследних
| ПО ВТНоменклатура.Номенклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
|ГДЕ
| ТоварыНаСкладахОстатки.Склад.ТипЦенРозничнойТорговли = ЦеныНоменклатурыСрезПоследних.ТипЦен
|{ГДЕ
| ВТНоменклатура.Номенклатура.Ссылка.* КАК Номенклатура,
| ЦеныНоменклатурыСрезПоследних.ТипЦен.* КАК ТипЦен,
| ТоварыНаСкладахОстатки.Склад.* КАК Склад}
|
|УПОРЯДОЧИТЬ ПО
| НоменклатураСсылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|УНИЧТОЖИТЬ ВТНоменклатура";
ПостроительОтчета.Текст = ТекстЗапроса;
ПараметрыПостроителя = ПостроительОтчета.Параметры;
//ПараметрыПостроителя.Вставить("ТипЦен", ТипЦен);
ПараметрыПостроителя.Вставить("ВидДанных", Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение);
КонецПроцедуры
ВыборкаТоваров - это что? Где Вы ее взяли ?
Пардон.
Посмотрите, что Вы передаете в процедуру.
Уже лучше, но нужной информации пока нет.
Какого типа ВыборкаТоваров? Видно, что Вы ее в процедуру передаете, а что в ней хранится - см. предыдущий пост.
Пока могу предположить, что тип у нее ТаблицаЗначений, соответственно, метода Следующий у нее нет и тогда Вам нужно изменить цикл
Пока ВыборкаТоваров.Следующий() цикл
Для каждого НоваяПеременнаяЦикла из ВыборкаТоваров цикл
sava1 @ Сегодня, 11:15
,
У меня только внутри этой процедуры используется
Процедура СохранитьВКаталог(ВыборкаТоваров)
//Пока ВыборкаТоваров.Следующий() Цикл
Для каждого НоваяПеременнаяЦикла из ВыборкаТоваров цикл
ЗаписьХМL.ЗаписатьНачалоЭлемента("offer");
Если ЗначениеЗаполнено(ВыборкаТоваров.Код) Тогда
КоличествоВыгруженныхТоваров = КоличествоВыгруженныхТоваров + 1;
ЗаписьХМL.ЗаписатьАтрибут("id",Прав(ВыборкаТоваров.Код,7 ));
Если ВыборкаТоваров.Остаток > 0 И НЕ ВыборкаТоваров.НоменклатураСсылка.шЗаказная Тогда
ЗаписьХМL.ЗаписатьАтрибут("available",Строка("в наличии"));
ИначеЕсли ВыборкаТоваров.Остаток >= 0 И ВыборкаТоваров.НоменклатураСсылка.шЗаказная Тогда
ЗаписьХМL.ЗаписатьАтрибут("available",Строка("под заказ"));
Иначе
ЗаписьХМL.ЗаписатьАтрибут("available",Строка("наличие уточняйте"));
КонецЕсли;
ЗаписьХМL.ЗаписатьНачалоЭлемента("url");
///
ЗаписьХМL.ЗаписатьКонецЭлемента();
Murano @ Сегодня, 10:29
,
Заменить ВыборкаТоваров на НоваяПеременнаяЦикла
В каждой следующей строчке внутри цикла
Проблема в том что:
Процедура ВыгрузитьНаСайт()
СохранитьДанные = Ложь;
Если ТекущаяКонфигурация = "УправлениеТорговлей" или ТекущаяКонфигурация = "КомплекснаяАвтоматизация" или
ТекущаяКонфигурация = "УправлениеПроизводственнымПредприятием" или
ТекущаяКонфигурация = "УправлениеТорговымПредприятиемДляУкраины" или ТекущаяКонфигурация = "Розница" Тогда
ПостроительОтчета.Выполнить();
РезультатЗапроса = ПостроительОтчета.Результат;
//ТаблицаТоваров = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
ТаблицаТоваров = РезультатЗапроса;
СохранитьДанные = Истина;
Иначе
Предупреждение("Текущая обработка не предназначена для вашей конфигурации, работа обработки будет завершена");
СохранитьДанные = Ложь;
Возврат;
КонецЕсли;
Если СохранитьДанные Тогда
СохранитьВКаталог(ТаблицаТоваров);
КонецЕсли;
КонецПроцедуры;
ТЗКатегории = ВыборкаТоваров.Скопировать();
ТЗКатегории.Свернуть("НоменклатураРодитель");
pablo @ Сегодня, 11:35
,
То есть, так?
Для каждого НоваяПеременнаяЦикла из ВыборкаТоваров цикл
ЗаписьХМL.ЗаписатьНачалоЭлемента("offer");
Если ЗначениеЗаполнено(НоваяПеременнаяЦикла.Код) Тогда
КоличествоВыгруженныхТоваров = КоличествоВыгруженныхТоваров + 1;
ЗаписьХМL.ЗаписатьАтрибут("id",Прав(НоваяПеременнаяЦикла.Код,7 ));
Если ВыборкаТоваров.Остаток > 0 И НЕ НоваяПеременнаяЦикла.НоменклатураСсылка.шЗаказная Тогда
ЗаписьХМL.ЗаписатьАтрибут("available",Строка("в наличии"));
ИначеЕсли НоваяПеременнаяЦикла.Остаток >= 0 И НоваяПеременнаяЦикла.НоменклатураСсылка.шЗаказная Тогда
ЗаписьХМL.ЗаписатьАтрибут("available",Строка("под заказ"));
Иначе
ЗаписьХМL.ЗаписатьАтрибут("available",Строка("наличие уточняйте"));
КонецЕсли;
{ВнешняяОбработка.ВыгрузкаДанныхПоНоменклатуре.МодульОбъекта(102)}: Метод объекта не обнаружен (Выгрузить)
ТЗКатегории = ВыборкаТоваров.Выгрузить();
Что-то мне это напоминает...
Я вам каждый раз пишу, как вам исправить Ваш код, чтобы он стал работать и каждый раз вы мне показываете новую ошибку, причем зачастую эта ошибка из другой области кода.
Поэтому тему я закрою
! | http://pro1c.org.ua/index.php?act=announce&id=2: п.6 |
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua