8.х Итератор для значения не определен

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем kot488, 26 июл 2011.

  1. TopicStarter Overlay
    kot488
    Offline

    kot488 Опытный в 1С

    Регистрация:
    9 мар 2011
    Сообщения:
    393
    Симпатии:
    0
    Баллы:
    26
    Скачал обработку внешнюю которая делает обмен данными с интернет магазином, вроде норм но при запуске обмена вот такая ошибка

    {ВнешняяОбработка.ОбемДаннымиСИнтернетМагазином.МодульОбъекта(2810)}: Ітератор для значення не визначено
    Для каждого ТекФото Из СпФотоНовые Цикл


    вот в этом коде

    Процедура ПереместитьВыгруженныеФотографии(СпФотоНовые) Экспорт
    Для каждого ТекФото Из СпФотоНовые Цикл
    ПереместитьФайл(КаталогМодуля + "foto_upload\" + Прав(СокрЛП(ТекФото.Представление), 1) + "\" + ПолучитьИмяФото(ТекФото.Значение), КаталогМодуля + "foto\" + СокрЛП(ТекФото.Представление) + "\" + ПолучитьИмяФото(ТекФото.Значение));
    КонецЦикла;
    КонецПроцедуры



    Конфига УТП Украины 1.0.8.4
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    "СпФотоНовые" не есть коллекция. Разбираться нужно выше кода вызывающего процедуру "ПереместитьВыгруженныеФотографии"
  3. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    пошагово посмотреть что передается в процедуру в СпФотоНовые
  4. TopicStarter Overlay
    kot488
    Offline

    kot488 Опытный в 1С

    Регистрация:
    9 мар 2011
    Сообщения:
    393
    Симпатии:
    0
    Баллы:
    26
    вроде как то разобрался но очередной баг :angry:

    {ВнешняяОбработка.ОбемДаннымиСИнтернетМагазином.МодульОбъекта(1089)}: Помилка при встановленні значення атрибуту контексту (Текст)
    Построитель.Текст = ТекстЗапроса;



    Код:
    Процедура УстановитьНастройкиПостроителя(СтрокаИМ)
    Перем ПравилаВыгрузки;
    ПравилаВыгрузки = СокрЛП(СтрокаИМ.Настройка.Получить("ПравилаВыгрузки"));
    Если ПравилаВыгрузки = "" Тогда
    Возврат;
    КонецЕсли;
    Фильтры = Новый ТаблицаЗначений;
    Колонки = Фильтры.Колонки;
    Колонки.Добавить("ИспользоватьОтбор");
    Колонки.Добавить("НастройкиПостроителя");
    Колонки.Добавить("ИмяОбъектаДляЗапроса");
    Колонки.Добавить("ТипОбъектаДляЗапроса");
    Колонки.Добавить("ИмяПоля");
    Колонки.Добавить("ИмяВТаблице");
    
    ТекФайлПравил = КаталогМодуля + "Правила_обмена\" + ПравилаВыгрузки;
    Рез = Новый Соответствие;
    Настройка = Новый ЧтениеXML;
    Настройка.ОткрытьФайл(ТекФайлПравил);
    Пока Настройка.Прочитать() Цикл
    Если Настройка.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
    ИмяУзла = Настройка.Имя;
    Если ИмяУзла = "Фильтр" Тогда
    НоваяСтрокаФильтра = Фильтры.Добавить();
    НоваяСтрокаФильтра.ИспользоватьОтбор = Ложь;
    НоваяСтрокаФильтра.ИмяОбъектаДляЗапроса = СокрЛП(Настройка.ПолучитьАтрибут("ОбъектФильтра"));
    НоваяСтрокаФильтра.ТипОбъектаДляЗапроса = СокрЛП(Настройка.ПолучитьАтрибут("Тип"));
    НоваяСтрокаФильтра.ИмяПоля = СокрЛП(Настройка.ПолучитьАтрибут("Поле"));
    НоваяСтрокаФильтра.ИмяВТаблице = СокрЛП(Настройка.ПолучитьАтрибут("Название"));
    КонецЕсли;
    ИначеЕсли Настройка.ТипУзла = ТипУзлаXML.Текст Тогда
    
    ИначеЕсли Настройка.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
    
    КонецЕсли;
    КонецЦикла;
    ТекстЗапроса = "ВЫБРАТЬ ";
    ТекстЗапроса1 = " ИЗ ";
    ТекстЗапроса2 = " {ГДЕ ";
    СтавитьЗапятую = Ложь;
    Для каждого ТекФильтр Из Фильтры Цикл
    Если СтавитьЗапятую Тогда
    ТекстЗапроса = ТекстЗапроса + ", ";
    ТекстЗапроса1 = ТекстЗапроса1 + ", ";
    ТекстЗапроса2 = ТекстЗапроса2 + ", ";
    КонецЕсли;
    ТекстЗапроса = ТекстЗапроса + СокрЛП(ТекФильтр.ИмяОбъектаДляЗапроса) + ".Ссылка КАК " + СокрЛП(ТекФильтр.ИмяПоля);
    ТекстЗапроса1 = ТекстЗапроса1 + СокрЛП(ТекФильтр.ТипОбъектаДляЗапроса) + "." + СокрЛП(ТекФильтр.ИмяОбъектаДляЗапроса) + " КАК " + СокрЛП(ТекФильтр.ИмяОбъектаДляЗапроса);
    ТекстЗапроса2 = ТекстЗапроса2 + СокрЛП(ТекФильтр.ИмяОбъектаДляЗапроса) + ".Ссылка.* КАК " + СокрЛП(ТекФильтр.ИмяПоля);
    СтавитьЗапятую = Истина;
    КонецЦикла;
    ТекстЗапроса = ТекстЗапроса + ТекстЗапроса1 + ТекстЗапроса2 + "}";
    Построитель.Текст = ТекстЗапроса;
    Построитель.Отбор.Сбросить();
    Если СтрокаИМ.Фильтр <> Неопределено Тогда
    Построитель.УстановитьНастройки(СтрокаИМ.Фильтр);
    Иначе
    Построитель.ЗаполнитьНастройки();
    Для каждого ТекФильтр Из Фильтры Цикл
    Если Построитель.Отбор.Найти(СокрЛП(ТекФильтр.ИмяПоля)) = Неопределено Тогда
    Построитель.Отбор.Добавить(СокрЛП(ТекФильтр.ИмяПоля));
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    КонецПроцедуры
    
    
  5. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а можно по русски? и текст кода проще смотреть в теге CODE
  6. TopicStarter Overlay
    kot488
    Offline

    kot488 Опытный в 1С

    Регистрация:
    9 мар 2011
    Сообщения:
    393
    Симпатии:
    0
    Баллы:
    26
    извини

    {ВнешняяОбработка.ОбемДаннымиСИнтернетМагазином.МодульОбъекта(1089)}: Ошибка при установке значения атребута контекста (Текст)
    Построитель.Текст = ТекстЗапроса;
  7. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а зачем перед "Где" в текст запроса добавлять "{"?

    думаю, опять же в отладчике надо проверить чему равна переменная ТекстЗапроса
  8. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    Может вместо Построитель.Текст ПостроительЗапроса.Текст?
  9. TopicStarter Overlay
    kot488
    Offline

    kot488 Опытный в 1С

    Регистрация:
    9 мар 2011
    Сообщения:
    393
    Симпатии:
    0
    Баллы:
    26
    убрал скобу поменял на то что предложили теперь бьет на оператора :angry:

    {ВнешняяОбработка.ОбемДаннымиСИнтернетМагазином.МодульОбъекта(1089,26)}: Неопознаний оператор
    ПостроительЗапроса.Текст<<?>>;
  10. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    я всего лишь предположила, так как в справке и с-п нашла такое, а что есть Построитель в вашей обработке?
  11. TopicStarter Overlay
    kot488
    Offline

    kot488 Опытный в 1С

    Регистрация:
    9 мар 2011
    Сообщения:
    393
    Симпатии:
    0
    Баллы:
    26

    знаете видя 1С раз 20 в глаза мне тяжело на это ответить :angry:
  12. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    попробуйте в модуле обработки поиском, можно выложить ее всю (прикрепить файлик)

    я конечно, тоже не спец, но что-то остальные молчат пока
  13. TopicStarter Overlay
    kot488
    Offline

    kot488 Опытный в 1С

    Регистрация:
    9 мар 2011
    Сообщения:
    393
    Симпатии:
    0
    Баллы:
    26

    Вложения:

  14. TopicStarter Overlay
    kot488
    Offline

    kot488 Опытный в 1С

    Регистрация:
    9 мар 2011
    Сообщения:
    393
    Симпатии:
    0
    Баллы:
    26
    вот до чего доколупался

    {ВнешняяОбработка.ОбемДаннымиСИнтернетМагазином.МодульОбъекта(1089)}: Ошибка при установке значения атребута контекста контекста (Текст)
    Построитель.Текст = ТекстЗапроса;
    через:

    через:
    {(1, 10)}: Синтаксическая ошибка "ИЗ"
    ВЫБРАТЬ <<?>>ИЗ ГДЕ }
  15. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    беру свои слова обратно

    судя по файлику, Построитель - это реквизит типа ПостроительОтчета, про него есть в с-п



    Думаю, что текст запроса не создается, посмотрите в отладчике значения переменных ТекстЗапроса, ТекстЗапроса1, ТекстЗапроса2
  16. TopicStarter Overlay
    kot488
    Offline

    kot488 Опытный в 1С

    Регистрация:
    9 мар 2011
    Сообщения:
    393
    Симпатии:
    0
    Баллы:
    26
    Извинясь за нубство, это зхапустить отладчик и открыть обработку?
  17. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    Перед опеределением переменных в конфигураторе установите точку останова, запустите вашу обработку, при выполнении вас автоматически перебросит в конфигуратор в момент достижения точки останова. Далее идти пошагово внутри вашей процедуры и смотреть,что происходит с вашими переменными ТекстЗапроса 1,2,3 до момента возникновения ошибки
  18. TopicStarter Overlay
    kot488
    Offline

    kot488 Опытный в 1С

    Регистрация:
    9 мар 2011
    Сообщения:
    393
    Симпатии:
    0
    Баллы:
    26

    Перекинуло в конфигуратор там шибку выкинуло

    Ошибка времени исполнения:
    {Внешняя обработка.ОбменДаннымиСИнтернетМагазином.МодульОбьекта(1089)}: Ошибка при установлении(присвоении) значения атрибута контекста (Текста) в модуле ВнешняяОбработка.ОбменДаннымиСИнтернетМагазином.МодульОбьекта рядок 1089
  19. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    Думаю, можно еще вот так попробовать посмотреть чему равны переменные, после цикла с их определением поставить Сообщить() для каждой переменной. Попробуйте так
  20. TopicStarter Overlay
    kot488
    Offline

    kot488 Опытный в 1С

    Регистрация:
    9 мар 2011
    Сообщения:
    393
    Симпатии:
    0
    Баллы:
    26

    извините а как это поставить :angry:

Поделиться этой страницей