Добрый день! Столкнулся с проблемой, которую не могу сходу решить. Имеется внешняя печатная форма, вот код её формирования:
При попытке прицепить эту внешнюю обработку в режиме Предприятия, оно начинает ругаться на то, что "Итератор для значения не определен".
Я только начинаю постигать азы доработки типовых конфигураций (моя первая задача:)) и понятия не имею, что я сделал не так. Как решить этот момент?
UPD. Делал по видео-уроку от самих 1С. :)
Функция СформироватьПечатнуюФорму (СсылкаНаОбъект, ОбъектыПечати)
ТабличныйДокумент = Новый ТабличныйДокумент;
МакетПечФормы = ПолучитьМакет("ПФ_MXL_МБ8");
ОбластьШапки = МакетПечФормы.ПолучитьОбласть("Шапка");
ОбластьШапки.Параметры.ПредставлениеОрганизации = СсылкаНаОбъект.Организация;
ОбластьШапки.Параметры.Заголовок = "АКТ на списание материалов";
ТабличныйДокумент.Вывести(ОбластьШапки);
ОбластьСтроки = МакетПечФормы.ПолучитьОбласть("Строка");
Для Каждого ТекущаяСтрока из СсылкаНаОбъект.ПеремещениеТоваров Цикл
ОбластьСтроки.Параметры.Счёт = ТекущаяСтрока.СчётУчёта;
ОбластьСтроки.Параметры.МатериалНаименование = ТекущаяСтрока.Номенклатура;
ОбластьСтроки.Параметры.Номенклатура = ТекущаяСтрока.КодСтроки;
ОбластьСтроки.Параметры.ЕдиницаИзмерения = ТекущаяСтрока.Упаковка;
ОбластьСтроки.Параметры.Количество = ТекущаяСтрока.КоличествоУпаковок;
ТабличныйДокумент.Вывести(ОбластьСтроки);
КонецЦикла;
Возврат ТабличныйДокумент;
КонецФункции
ПоказатьПри попытке прицепить эту внешнюю обработку в режиме Предприятия, оно начинает ругаться на то, что "Итератор для значения не определен".
Я только начинаю постигать азы доработки типовых конфигураций (моя первая задача:)) и понятия не имею, что я сделал не так. Как решить этот момент?
UPD. Делал по видео-уроку от самих 1С. :)
По теме из базы знаний
- Внешняя печатная форма. Формирование квитанции ПД-4 по оплате родительской платы со штрих-кодом и контрольным символом
- Справка о месте работы с возможностью добавления дополнительной произвольной информации. Внешняя печатная форма. ЗУП 2.5
- Печать расчета среднего заработка сотрудника. Внешняя печатная форма. ЗУП 3.1
- Алгоритм вывода подписантов из дополнительных сведений во внешнюю печатную форму акта ОС-1
- Методика разработки внешних печатных форм с возможностью отладки интерактивных команд печати
Найденные решения
Вот все пишут, что ошибка в коде твоей функции. НО! Вы пишите, что ошибка при попытке прицепить печатную форму. Так вот скорее всего ошибка не в этой функции, а в функции регистрации обработки. Ошибку лучше искать через отладку. Отладкой пользоваться умеете? Или помочь по отладке?
И, кстати, есть хорошая универсальная печатная форма, оттуда много полезных фишек можно перенять
И, кстати, есть хорошая универсальная печатная форма, оттуда много полезных фишек можно перенять
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
меня вот этот участок смущает, сомневаюсь, что у параметра и/или колонки ТекущаяСтрока в наименовании присутствует буква "ё".
Чтобы проверить: отладка/точка останова/остановка по ошибке и посмотреть через табло или вычислить значение, что кроется в ТекущаяСтрока, а так же на макете в области "Строка" удостоверится в наличие параметра "Счёт".
(1)
И ещё, проверьте так же "СсылкаНаОбъект.ПеремещениеТоваров", из-за наличия этой ошибки тоже в нём нет уверенности. Может это и не таблица и её нельзя в цикле перебирать, вот и ошибка.
Всё равно поможет только отладка.
ОбластьСтроки.Параметры.Счёт = ТекущаяСтрока.СчётУчёта;
меня вот этот участок смущает, сомневаюсь, что у параметра и/или колонки ТекущаяСтрока в наименовании присутствует буква "ё".
Чтобы проверить: отладка/точка останова/остановка по ошибке и посмотреть через табло или вычислить значение, что кроется в ТекущаяСтрока, а так же на макете в области "Строка" удостоверится в наличие параметра "Счёт".
(1)
Итератор для значения не определен
И ещё, проверьте так же "СсылкаНаОбъект.ПеремещениеТоваров", из-за наличия этой ошибки тоже в нём нет уверенности. Может это и не таблица и её нельзя в цикле перебирать, вот и ошибка.
Всё равно поможет только отладка.
(1)
Проблема в СсылкаНаОбъект.ПеремещениеТоваров
Причины и решение ошибки
Возникновение окна с ошибкой о неопределенном итераторе чаще всего проявляется в двух случаях:
Неудачное обновление конфигурации;
Обращение через итератор к элементам объектов, не являющихся коллекциями – массивам, таблицам значений и другим.
Возникновение окна с ошибкой о неопределенном итераторе чаще всего проявляется в двух случаях:
Неудачное обновление конфигурации;
Обращение через итератор к элементам объектов, не являющихся коллекциями – массивам, таблицам значений и другим.
Проблема в СсылкаНаОбъект.ПеремещениеТоваров
(1) (10)
У вас точно СсылкаНаОбъект.ПеремещениеТоваров, то есть у вас есть у объекта СсылкаНаОбъект, табличная часть ПеремещениеТоваров или вы название документа "ПеремещениеТоваров" случайно бухнули в свойства СсылкаНаОбъект, как табличную часть?
Обращение через итератор к элементам объектов, не являющихся коллекциями – массивам, таблицам значений и другим.
Проблема в СсылкаНаОбъект.ПеремещениеТоваров
Проблема в СсылкаНаОбъект.ПеремещениеТоваров
У вас точно СсылкаНаОбъект.ПеремещениеТоваров, то есть у вас есть у объекта СсылкаНаОбъект, табличная часть ПеремещениеТоваров или вы название документа "ПеремещениеТоваров" случайно бухнули в свойства СсылкаНаОбъект, как табличную часть?
Если у вас внешняя печатная форма, то для её отладки нужно создать форму в обработке печатной формы, ну и вызвать функцию печати с каким-либо документом
Обычно ещё в сообщении об ошибке указывается сам код, вызывающий оишбку, и номер строки в модуле.
Но ошибка "Итератор для значения не определен" указывает на перебор коллекции.
Здесь я вижу только
А точно у СсылкаНаОбъект есть табличная часть ПеремещениеТоваров?
Больше похоже, что СсылкаНаОбъект и есть ссылка на документ ПеремещениеТоваров, а в цикле нужно перебирать табличную часть "Товары".
Хотя это тоже не правильно, лучше всего запросом получить данные табличной части и потом их выводить.
Но ошибка "Итератор для значения не определен" указывает на перебор коллекции.
Здесь я вижу только
Для Каждого ТекущаяСтрока из СсылкаНаОбъект.ПеремещениеТоваров ЦиклА точно у СсылкаНаОбъект есть табличная часть ПеремещениеТоваров?
Больше похоже, что СсылкаНаОбъект и есть ссылка на документ ПеремещениеТоваров, а в цикле нужно перебирать табличную часть "Товары".
Для Каждого ТекущаяСтрока из СсылкаНаОбъект.Товары ЦиклХотя это тоже не правильно, лучше всего запросом получить данные табличной части и потом их выводить.
(3) Да, вы правы, тут я допустил серьёзную ошибку. Но при замене "ПеремещениеТоваров" на имя табличной части этого документа, ошибка никуда не делась. Мне кажется, дело в том, что "СсылкаНаОбъект" в моём случае не определена, но я ума не приложу, как к этой ссылке подвязать нужный мне документ...
(7) для этого достаточно найти пример реализации внешней печатной формы, чтобы разобраться, как всё работает.
Если разработка ведется для какой-то типовой конфигурации на платформе 8.2 (обычные формы, не управляемые) , то внешняя печатная форма должна содержать реквизит обработки (не формы) с именем "СсылкаНаОбъект" и нужным типом. При вызове такой ВПФ конфигурация сама передает в неё ссылку на документ и вызывает экспортную функцию "Печать" из модуля объекта обработки. Дальше уже всё на совести разработчика.
Самый простой способ отладки - добавить в обработку свою форму, установив её в качестве основной, вывести на форму реквизит СсылкаНаОбъект и в обработчике нажатия кнопки "Выполнить" вызывать функцию "Печать".
Если разработка ведется для какой-то типовой конфигурации на платформе 8.2 (обычные формы, не управляемые) , то внешняя печатная форма должна содержать реквизит обработки (не формы) с именем "СсылкаНаОбъект" и нужным типом. При вызове такой ВПФ конфигурация сама передает в неё ссылку на документ и вызывает экспортную функцию "Печать" из модуля объекта обработки. Дальше уже всё на совести разработчика.
Самый простой способ отладки - добавить в обработку свою форму, установив её в качестве основной, вывести на форму реквизит СсылкаНаОбъект и в обработчике нажатия кнопки "Выполнить" вызывать функцию "Печать".
Есть обработки типо такой (только посвежее) через которые можно в большинстве случаев делать отладку печатных форм. Must have наряду с консолью запросов. Если стукнешься в личку могу поделиться.
Вот все пишут, что ошибка в коде твоей функции. НО! Вы пишите, что ошибка при попытке прицепить печатную форму. Так вот скорее всего ошибка не в этой функции, а в функции регистрации обработки. Ошибку лучше искать через отладку. Отладкой пользоваться умеете? Или помочь по отладке?
И, кстати, есть хорошая универсальная печатная форма, оттуда много полезных фишек можно перенять
И, кстати, есть хорошая универсальная печатная форма, оттуда много полезных фишек можно перенять
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
