Группа: Пользователи
Сообщений: 32
Спасибо сказали: 0 раз
Рейтинг: 0
Доброго времени суток. Есть обработка, которая должна выводить данные в .yml, запрос выдает правильные данные, забил его в процедуру Но вот на этом этапе не видит почему-то "Строка"
ЗаписьХМL.ЗаписатьНачалоЭлемента("categories"); Для каждого Строка Из ТЗКатегории Цикл ЗаписьХМL.ЗаписатьНачалоЭлемента("category"); ЗаписьХМL.ЗаписатьАтрибут("id",Прав(Строка.НоменклатураРодитель.Код,7 )); ЗаписьХМL.ЗаписатьТекст(Строка(Строка.НоменклатураРодитель.Наименование)); ЗаписьХМL.ЗаписатьКонецЭлемента(); КонецЦикла; ЗаписьХМL.ЗаписатьКонецЭлемента();
ДА и во всей обработке не выводит данные, в чем может быть проблема? Я много не знаю и не понимаю, поэтому не один день убил на поиски ответа, поэтому прошу вашей помощи
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0
Измените имя переменной цикла на другое уникальное(Вместо Строка напишите СтрокаПеребора). У вас может быть реквизит формы/документа с совпадающим именем.
Правильно поставленный вопрос содержит до 90% ответа.
Группа: Пользователи
Сообщений: 32
Спасибо сказали: 0 раз
Рейтинг: 0
pablo @ Сегодня, 10:49
, ТАкая вот ошибка
{ВнешняяОбработка.ВыгрузкаДанныхПоНоменклатуре.МодульОбъекта(113)}: Метод объекта не обнаружен (Следующий) Пока ВыборкаТоваров.Следующий() Цикл
Сделал как вы сказали:
ЗаписьХМL.ЗаписатьНачалоЭлемента("categories"); Для каждого СтрокаПеребора Из ТЗКатегории Цикл ЗаписьХМL.ЗаписатьНачалоЭлемента("category"); ЗаписьХМL.ЗаписатьАтрибут("id",Прав(СтрокаПеребора.НоменклатураРодитель.Код,7 )); ЗаписьХМL.ЗаписатьТекст(Строка(СтрокаПеребора.НоменклатураРодитель.Наименование)); ЗаписьХМL.ЗаписатьКонецЭлемента(); КонецЦикла; ЗаписьХМL.ЗаписатьКонецЭлемента();
Ошибка в этой строке:
Пока ВыборкаТоваров.Следующий() Цикл ЗаписьХМL.ЗаписатьНачалоЭлемента("offer");
// Проверим существование папки для записи изображений Если ЛокальнаяВыгрузка = Ложь Тогда Каталог = "C:\1C"; КонецЕсли; ПутьКИзображениям =Каталог + "\Picture\"; КоличествоВыгруженныхТоваров = 0; ПапкаКатолога = Новый Файл(Каталог); Если Не ПапкаКатолога.Существует() Тогда СоздатьКаталог(ПутьКИзображениям); КонецЕсли; ПапкаХранилища = Новый Файл(ПутьКИзображениям); // Очищаем каталог перд загрзузкой новых файлов Если Не ПапкаХранилища.Существует() Тогда СоздатьКаталог(ПутьКИзображениям); Иначе Попытка УдалитьФайлы(ПутьКИзображениям,"*.*"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли;
ЗаписьХМL = Новый ЗаписьXML;
ЗаписьХМL.ОткрытьФайл(Каталог + "\" + Организация + ".xml");
ЗаписьХМ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.ЗаписатьНачалоЭлемента("price"); Если ЗначениеЗаполнено(ВыборкаТоваров.Цена) Тогда ЗаписьХМL.ЗаписатьТекст(СтрЗаменить(Строка(ВыборкаТоваров.Цена),",",".")); КонецЕсли; ЗаписьХМL.ЗаписатьКонецЭлемента();
КонецЕСли; ЗаписьХМL. ЗаписатьКонецЭлемента(); //Относится к "offer" КонецЦикла;
ЗаписьХМL.ЗаписатьКонецЭлемента(); //Относится к "offers" ЗаписьХМL.ЗаписатьКонецЭлемента(); //Относится к элементу "shop" ЗаписьХМL.ЗаписатьКонецЭлемента(); //Относится к элементу "yml_catalog" ЗаписьХМL.Закрыть();
Если ЛокальнаяВыгрузка = Ложь Тогда ОтправитьФайлНаСервер(КоличествоВыгруженныхТоваров); Иначе Сообщить("Выгрузка успешно завершилась. Выгружено " + КоличествоВыгруженныхТоваров + " товаров"); КонецЕсли;
ТекстЗапроса = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Номенклатура |ПОМЕСТИТЬ ВТНоменклатура |{ВЫБРАТЬ | Номенклатура.* КАК Номенклатура} |ИЗ | Справочник.Номенклатура КАК Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТНоменклатура.Номенклатура.Код КАК Код, | ВТНоменклатура.Номенклатура.Наименование КАК Наименование, | ВТНоменклатура.Номенклатура.Артикул КАК Артикул, | ВТНоменклатура.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения, | ВТНоменклатура.Номенклатура.Комментарий КАК Комментарий, | ВТНоменклатура.Номенклатура.НаименованиеПолное КАК НаименованиеПолное, | ВТНоменклатура.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК Описание, | ЦеныНоменклатурыСрезПоследних.Цена, | ВТНоменклатура.Номенклатура.Родитель КАК НоменклатураРодитель, | ВТНоменклатура.Номенклатура.ЭтоГруппа КАК ЭтоГруппа, | ТоварыНаСкладахОстатки.Склад, | ЦеныНоменклатурыСрезПоследних.ТипЦен, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток, | ВТНоменклатура.Номенклатура.ОсновноеИзображение.Хранилище КАК Хранилище, | ВТНоменклатура.Номенклатура.ОсновноеИзображение.Объект.Код КАК КодИзображения, | ВТНоменклатура.Номенклатура.Ссылка КАК НоменклатураСсылка |{ВЫБРАТЬ | НоменклатураСсылка.* КАК Номенклатура, | ТипЦен.* КАК ТипЦен, | Склад.* КАК Склад} |ИЗ | ВТНоменклатура КАК ВТНоменклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, {(Номенклатура).* КАК Номенклатура, (Склад).* КАК Склад}) КАК ТоварыНаСкладахОстатки | ПО ВТНоменклатура.Номенклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(Номенклатура).* КАК Номенклатура, (ТипЦен).* КАК ТипЦен}) КАК ЦеныНоменклатурыСрезПоследних | ПО ВТНоменклатура.Номенклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура |ГДЕ | ТоварыНаСкладахОстатки.Склад.ТипЦенРозничнойТорговли = ЦеныНоменклатурыСрезПоследних.ТипЦен |{ГДЕ | ВТНоменклатура.Номенклатура.Ссылка.* КАК Номенклатура, | ЦеныНоменклатурыСрезПоследних.ТипЦен.* КАК ТипЦен, | ТоварыНаСкладахОстатки.Склад.* КАК Склад} | |УПОРЯДОЧИТЬ ПО | НоменклатураСсылка |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ ВТНоменклатура";
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0
Уже лучше, но нужной информации пока нет. Какого типа ВыборкаТоваров? Видно, что Вы ее в процедуру передаете, а что в ней хранится - см. предыдущий пост. Пока могу предположить, что тип у нее ТаблицаЗначений, соответственно, метода Следующий у нее нет и тогда Вам нужно изменить цикл
Пока ВыборкаТоваров.Следующий() цикл
на
Для каждого НоваяПеременнаяЦикла из ВыборкаТоваров цикл
И переделать весь последующий код под новую переменную цикла.
Правильно поставленный вопрос содержит до 90% ответа.
Группа: Пользователи
Сообщений: 32
Спасибо сказали: 0 раз
Рейтинг: 0
sava1 @ Сегодня, 11:15
, У меня только внутри этой процедуры используется
Процедура СохранитьВКаталог(ВыборкаТоваров)
pablo @ Сегодня, 11:19
, Простите, но не понял что именно заменить в последующем коде...
//Пока ВыборкаТоваров.Следующий() Цикл Для каждого НоваяПеременнаяЦикла из ВыборкаТоваров цикл ЗаписьХМL.ЗаписатьНачалоЭлемента("offer");
Если ЗначениеЗаполнено(ВыборкаТоваров.Код) Тогда КоличествоВыгруженныхТоваров = КоличествоВыгруженныхТоваров + 1;
ЗаписьХМL.ЗаписатьАтрибут("id",Прав(ВыборкаТоваров.Код,7 )); Если ВыборкаТоваров.Остаток > 0 И НЕ ВыборкаТоваров.НоменклатураСсылка.шЗаказная Тогда ЗаписьХМL.ЗаписатьАтрибут("available",Строка("в наличии")); ИначеЕсли ВыборкаТоваров.Остаток >= 0 И ВыборкаТоваров.НоменклатураСсылка.шЗаказная Тогда ЗаписьХМL.ЗаписатьАтрибут("available",Строка("под заказ")); Иначе ЗаписьХМL.ЗаписатьАтрибут("available",Строка("наличие уточняйте")); КонецЕсли;
Процедура ВыгрузитьНаСайт() СохранитьДанные = Ложь; Если ТекущаяКонфигурация = "УправлениеТорговлей" или ТекущаяКонфигурация = "КомплекснаяАвтоматизация" или ТекущаяКонфигурация = "УправлениеПроизводственнымПредприятием" или ТекущаяКонфигурация = "УправлениеТорговымПредприятиемДляУкраины" или ТекущаяКонфигурация = "Розница" Тогда
Иначе Предупреждение("Текущая обработка не предназначена для вашей конфигурации, работа обработки будет завершена"); СохранитьДанные = Ложь; Возврат; КонецЕсли; Если СохранитьДанные Тогда СохранитьВКаталог(ТаблицаТоваров); КонецЕсли; КонецПроцедуры;
Тоесть изначально ТаблицаТоваров а не ВыборкаТоваров. И там не ТЗ а именно выборка.
Группа: Пользователи
Сообщений: 32
Спасибо сказали: 0 раз
Рейтинг: 0
pablo @ Сегодня, 11:35
, То есть, так?
Для каждого НоваяПеременнаяЦикла из ВыборкаТоваров цикл ЗаписьХМL.ЗаписатьНачалоЭлемента("offer");
Если ЗначениеЗаполнено(НоваяПеременнаяЦикла.Код) Тогда КоличествоВыгруженныхТоваров = КоличествоВыгруженныхТоваров + 1;
ЗаписьХМL.ЗаписатьАтрибут("id",Прав(НоваяПеременнаяЦикла.Код,7 )); Если ВыборкаТоваров.Остаток > 0 И НЕ НоваяПеременнаяЦикла.НоменклатураСсылка.шЗаказная Тогда ЗаписьХМL.ЗаписатьАтрибут("available",Строка("в наличии")); ИначеЕсли НоваяПеременнаяЦикла.Остаток >= 0 И НоваяПеременнаяЦикла.НоменклатураСсылка.шЗаказная Тогда ЗаписьХМL.ЗаписатьАтрибут("available",Строка("под заказ")); Иначе ЗаписьХМL.ЗаписатьАтрибут("available",Строка("наличие уточняйте")); КонецЕсли;
Все равно данные не выгружает
salton @ Сегодня, 11:55
,
{ВнешняяОбработка.ВыгрузкаДанныхПоНоменклатуре.МодульОбъекта(102)}: Метод объекта не обнаружен (Выгрузить) ТЗКатегории = ВыборкаТоваров.Выгрузить();
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0
Что-то мне это напоминает... Я вам каждый раз пишу, как вам исправить Ваш код, чтобы он стал работать и каждый раз вы мне показываете новую ошибку, причем зачастую эта ошибка из другой области кода. Поэтому тему я закрою
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!