ТаблицаЗначений

Новая тема
Показывать по 10 20 40 сообщений
"Здравствуйте!

У меня такая проблема:

Есть две процедуры (для вывода на печать списка картинок из документа) в 1С 7.7

Проблема в том что мне нужно передать из одной процедуры в другую заполненную таблицу значений.
Однако у меня сама таблица передается (через отладчик видно что таблица передалась и заполнена) но при выполнении функции ТЗ.ВыбратьСтроки() (да и любой другой операции с данной ТЗ) выдается ошибка что ТЗ не является агрегатным объектом , например Значение не представляет агрегатный объект (ВыбратьСтроки)
Процедура Сертификат() - вызов печати с кнопки в форме документа
Процедура ЗагрКартинку() - обрабатывает вывод изображения и самой печатной формы (В печатной форме находится объект Изображение с параметрами ЗагрКартинку(Таб.ТекущийОбъект,,)

//******************************************************************************
// ЗагрКартинку
// выводим картинку в таблицу
//
Процедура ЗагрКартинку(Фотография, Таб, СписокСканов)

СписокСканов.Свернуть("Картинка","Серт");
СписокСканов.ВыбратьСтроки();

Пока СписокСканов.ПолучитьСтроку() = 1 Цикл
       КартинкаСертификата = СписокСканов.Картинка;

    Фотография.Загрузить(КартинкаСертификата);

Таб.ВывестиСекцию("Изображение");
Таб.НоваяСтраница();

  КонецЦикла;

КонецПроцедуры // ЗагрКартинку()

//******************************************************************************
// Процедура Сертификат()
// Параметры:
// Нет.
//
// Вызывается из формул элементов диалога:
//  Нет.
//
// Описание:
// Печать качественного удостоверения
//
Процедура Сертификат()

Если Проведен() = 0 Тогда
Предупреждение("Для формирования сертификата необходимо сначала ПРОВЕСТИ документ");
Возврат;
КонецЕсли;                  

Если Модифицированность() = 1 Тогда
Предупреждение("Данные были изменены. Для формирования сертификата необходимо сначала ПРОВЕСТИ документ");
Возврат;
КонецЕсли;                  

СписокСканов = СоздатьОбъект("ТаблицаЗначений");
СписокСканов.НоваяКолонка("Серт");
СписокСканов.НоваяКолонка("Картинка");

Фотография = СоздатьОбъект("картинка");

  Регистры = СоздатьОбъект("Регистры");
РегистрыПоказанияВыпуска = Регистры.ПоказанияВыпуска;

РегистрыПоказанияВыпуска.ВыбратьДвиженияДокумента(ТекущийДокумент());

Пройдено = 0;

Таб = СоздатьОбъект("Таблица");            
Таб.ИсходнаяТаблица("Сертификат");

Пока РегистрыПоказанияВыпуска.ПолучитьДвижение() = 1 Цикл
       
МПЗ = РегистрыПоказанияВыпуска.МПЗ;
ДатаРозлива = РегистрыПоказанияВыпуска.ДатаРозлива;

Если МПЗ.Алкогольный <> Перечисление.Булево.Да  Тогда
Возврат;
КонецЕсли;

Серт = МПЗ.Сертификат.Получить(ДатаРозлива);
               Картинка = Серт.ИмяВыбрФайла;

Если ПустоеЗначение(Картинка) = 1 Тогда
Сообщить("У МПЗ " + МПЗ.Наименование + " отсутствует привязанный скан сертификата");
Продолжить;
КонецЕсли;

СписокСканов.НоваяСтрока();
СписокСканов.Серт = Серт;
СписокСканов.Картинка = Картинка;

КонецЦикла;

ЗагрКартинку(Фотография, Таб, СписокСканов);

Таб.Показать("Сертификат");

КонецПроцедуры // Сертификат()

"
"> (В печатной форме находится объект Изображение с параметрами ЗагрКартинку(Таб.ТекущийОбъект,,)
:))
Интересно, чему будет равен СписокСканов в процедуре ЗагрКартинку при таком вызове?

А вообще, не понятно следующее:
1. Из процедуры Сертификат вы вызываете ЗагрКартинку и в ней сразу же падает на ВыбратьСтроки? Или все случается позже?
2. Откуда еще вызывается процедура ЗагрКартинку?
3. Вы поставили точку прерывания на строке СписокСканов.ВыбратьСтроки(); Смотрите ТипЗначенияСтр(СписокСканов) вам говорит, что это ТаблицаЗначений, а следующий шаг приводит к сообщению "не является агрегатным объектом"?"
Список сканов равен списку имен файлов (с путями к ним) картинок
1. Падает на любой функции которая обращается к СпискуСканов именно КАК к ТаблицеЗначений
2. обрабатывает вывод изображения и самой печатной формы (В печатной форме находится объект Изображение с параметрами ЗагрКартинку(Таб.ТекущийОбъект,,)
3. Поставил. Смотрите ниже


http://pic.ipicture.ru/uploads/091111/c7aZ4Uz141.jpg

На
скриншоте видно что таблица значений передалась в ЗагрКартинку() - данные скрины сделаны в точке прерывания именно в данной процедуре

Не понятно одно - почему объект, являющийся ТЗ, не обрабатывается функциями для данного типа ?
Проблему нашел. Всем спасибо ))
Что, выборка уже была открыта? :)
Проблема была в рисунке печатной формы с параметрами ЗагрКартинку(Таб.ТекущийОбъект,,) в ",,"
А подскажите плз. как динамически подставлять картинку в печатную форму????
Я нашел, что объект "картинка" работает только в форме...
На печатной форме можно вставить картинку, указав жестко к ней путь...
или можно как-то подставлять какую картинку хотим распечатать(к примеру под каждый товар свою копию jpg Или bmp сертификата)???
Вам надо сохранить картинку или путь к ней в реквизите номенклатуры. Кинуть в табличную часть объект картинка и при выводе таблицы загрузить туда картинку.
При вставке картинки в печатную таблицу (mxl) требует выбрать файл , и нет идентификатора, с которым можно работать... или все-таки где-то есть???
> При вставке картинки в печатную таблицу (mxl) требует выбрать файл , и нет идентификатора, с которым можно работать... или все-таки где-то есть???
>
Отказываетесь от выбора файла, в таблицу объект все-равно будет вставлен. А в свойствах (в поле Текст) надо указать процедуру с параметрами, которая сделает загрузку.
Читают тему
(гостей: 1)

Быстрый переход