Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 сен 2024, 06:23

УправлениеКонтактнойИнформацией

Автор SkyNetYar, 03 фев 2015, 11:04

0 Пользователей и 1 гость просматривают эту тему.

SkyNetYar

Пытаюсь вывести во внешнюю печатную форму телефон контрагента но получаю Метод объекта не обнаружен (Метаданные)

Контрагент = Справочники.Контрагенты;
ОбластьШапки.Параметры.Телефон= УправлениеКонтактнойИнформацией.ПолучитьКонтактнуюИнформацияОбъекта(Контрагент,Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента);


Розница 2.1.4.9




Kironten

Цитата: SkyNetYar от 03 фев 2015, 11:04
Пытаюсь вывести во внешнюю печатную форму телефон контрагента но получаю Метод объекта не обнаружен (Метаданные)

Контрагент = Справочники.Контрагенты;
ОбластьШапки.Параметры.Телефон= УправлениеКонтактнойИнформацией.ПолучитьКонтактнуюИнформацияОбъекта(Контрагент,Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента);


Розница 2.1.4.9
Навскидку:
У Вас в переменной контрагент находится СправочникМенеджер, а в процедуру наверняка ссылку на элемент передавать надо.

SkyNetYar

Делаю так
Контрагент = СсылкаНаОбъект.Контрагент;
Печатная форма выводится без ошибок но данных нет..
Может надо как то указать ссылку на справочник контрагенты? только как =\

Kironten

Ну смотрите, отладчиком в процедуре.
Возможно, на выходе не значение, а структура.
Возможно, отбор входящий параметром не корректен.
Кроме Вида, насколько я помню, в контактнойинформации есть еще и измерение Тип.
В общем - отладчик в руки. Вы же наименование конфигурации не указали, поэтому только догадки можно строить.

SkyNetYar

Указывал Розница 2.1

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

Если ТипЗнч(МассивОбъектов) = Тип("Массив") И МассивОбъектов.Количество() > 0 Тогда
Ссылка = МассивОбъектов.Получить(0);
Иначе
ВызватьИсключение НСтр("ru = 'Неверное значение для массива владельцев контактной информации.'");
КонецЕсли;

Запрос = Новый Запрос("
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КонтактнаяИнформация.Ссылка КАК Объект,
| КонтактнаяИнформация.Вид КАК Вид,
| КонтактнаяИнформация.Тип КАК Тип,
| КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей,
| КонтактнаяИнформация.Представление КАК Представление
|ПОМЕСТИТЬ ВТКонтактнаяИнформация
|ИЗ
| " + Ссылка.Метаданные().ПолноеИмя() + ".КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Ссылка В (&МассивОбъектов)
| " + ?(ТипыКИ = Неопределено, "", "И КонтактнаяИнформация.Тип В (&ТипыКИ)") + "
| " + ?(ВидыКИ = Неопределено, "", "И КонтактнаяИнформация.Вид В (&ВидыКИ)") + "
|");

Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;

Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ТипыКИ", ТипыКИ);
Запрос.УстановитьПараметр("ВидыКИ", ВидыКИ);

Запрос.Выполнить();
КонецПроцедуры


На ней он вспотыкатся когда ошибку метаданных выдает..

Kironten

Цитата: SkyNetYar от 03 фев 2015, 12:27
Указывал Розница 2.1

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

Если ТипЗнч(МассивОбъектов) = Тип("Массив") И МассивОбъектов.Количество() > 0 Тогда
Ссылка = МассивОбъектов.Получить(0);
Иначе
ВызватьИсключение НСтр("ru = 'Неверное значение для массива владельцев контактной информации.'");
КонецЕсли;

Запрос = Новый Запрос("
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КонтактнаяИнформация.Ссылка КАК Объект,
| КонтактнаяИнформация.Вид КАК Вид,
| КонтактнаяИнформация.Тип КАК Тип,
| КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей,
| КонтактнаяИнформация.Представление КАК Представление
|ПОМЕСТИТЬ ВТКонтактнаяИнформация
|ИЗ
| " + Ссылка.Метаданные().ПолноеИмя() + ".КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Ссылка В (&МассивОбъектов)
| " + ?(ТипыКИ = Неопределено, "", "И КонтактнаяИнформация.Тип В (&ТипыКИ)") + "
| " + ?(ВидыКИ = Неопределено, "", "И КонтактнаяИнформация.Вид В (&ВидыКИ)") + "
|");

Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;

Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ТипыКИ", ТипыКИ);
Запрос.УстановитьПараметр("ВидыКИ", ВидыКИ);

Запрос.Выполнить();
КонецПроцедуры


На ней он вспотыкатся когда ошибку метаданных выдает..

Да, действительно указывали конфигурацию, не увидел. Прошу прощения.

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

SkyNetYar

В чем тогда может быть проблема ? :(

Вот весь текст
ПолучитьРезультатПечати(МассивОбъектов, ОбъектыПечати, ПараметрыВывода)

ТабличныйДокумент  = Новый ТабличныйДокумент;
КолонкаКодов       = ФормированиеПечатныхФормСервер.ИмяДополнительнойКолонки();
ВыводитьКоды       = НЕ ПустаяСтрока(КолонкаКодов);
РеквизитыДокумента = Новый Структура("Номер,Дата,Префикс");
СинонимДокумента   = НСтр("ru='Прием в ремонт'");
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПриемВРемонт_Накладная";

ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Документ.Ссылка КАК Ссылка,
| Документ.Номер КАК Номер,
| Документ.Дата КАК Дата,
| Документ.ВидОперации,
| Документ.Организация КАК Организация,
| Документ.Магазин КАК Магазин,
| Документ.Склад КАК Склад,
| Документ.Контрагент,
| Документ.Организация.Префикс КАК Префикс,
| ПРЕДСТАВЛЕНИЕ(Документ.Организация) КАК ОрганизацияПредставление,
| ПРЕДСТАВЛЕНИЕ(Документ.Склад) КАК СкладПредставление,
| ПРЕДСТАВЛЕНИЕ(Документ.Контрагент) КАК КонтрагентПредставление,
| Документ.Номенклатура КАК Номенклатура,
| Документ.Характеристика КАК Характеристика,
| Документ.Номенклатура.НаименованиеПолное КАК НоменклатураПредставление,
| ПРЕДСТАВЛЕНИЕ(Документ.Характеристика) КАК ХарактеристикаПредставление,
| ПРЕДСТАВЛЕНИЕ(Документ.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
| Документ.Серия КАК СерийныйНомер,
| ПРЕДСТАВЛЕНИЕ(Документ.Серия) КАК СерийныйНомерПредставление,
| Документ.ДатаОкончания,
| Документ.Описание,
| Документ.Комплектация,
| Документ.МеханическиеПовреждения,
| Документ.РезультатВыполнения,
| ПРЕДСТАВЛЕНИЕ(Документ.РезультатВыполнения) КАК РезультатВыполненияПредставление,
| Документ.Ответственный КАК Ответственный,
| ПРЕДСТАВЛЕНИЕ(Документ.Ответственный) КАК ОтветственныйПредставление
|ИЗ
| Документ.ор_ПриемВРемонт КАК Документ
|ГДЕ
| Документ.Ссылка В(&МассивОбъектов)
| И Документ.Проведен
|
|УПОРЯДОЧИТЬ ПО
| Дата,
| Ссылка
|ИТОГИ ПО
| Ссылка";

Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Результаты = Запрос.Выполнить();

Макет = ПолучитьМакет("Макет");


ОбластьШапки  = Макет.ПолучитьОбласть("Шапка");

ВыборкаПоДокументам      = Результаты.Выбрать();
ВыборкаПоТабличнымЧастям = Результаты.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

ПервыйДокумент = Истина;

ВыборкаПоДокументам.Следующий();

Если НЕ ВыборкаПоТабличнымЧастям.НайтиСледующий(Новый Структура("Ссылка",ВыборкаПоДокументам.Ссылка)) Тогда

КонецЕсли;

ВыборкаПоСтрокамТЧ = ВыборкаПоТабличнымЧастям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Если НЕ ПервыйДокумент Тогда

ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();

КонецЕсли;

ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
Контрагент = СсылкаНаОбъект.Контрагент;
//ЗАГОЛОВОК
ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ВыборкаПоДокументам);
ОбластьШапки.Параметры.Заполнить(ВыборкаПоДокументам);
ОбластьШапки.Параметры.ТекстЗаголовка = ФормированиеПечатныхФормСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, СинонимДокумента);
ОбластьШапки.Параметры.Телефон = УправлениеКонтактнойИнформацией.ПолучитьКонтактнуюИнформацияОбъекта(Контрагент,Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента);
ОбластьШапки.Параметры.Адрес = УправлениеКонтактнойИнформацией.ПолучитьКонтактнуюИнформацияОбъекта(Контрагент,Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента);
// КОНТРАГЕНТ
Если ВыборкаПоДокументам.ВидОперации=Перечисления.ор_ВидыОперацийДокументаПриемВРемонт.ТоварКлиента Тогда
ОбластьШапки.Параметры.Заполнить(ВыборкаПоДокументам);
КонецЕсли;

//СТРОКИ ТЧ
ВыборкаПоСтрокамТЧ.Следующий();
//ТОВАР
ОбластьШапки.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ОбластьШапки.Параметры.Товар = ФормированиеПечатныхФормСервер.ПолучитьПредставлениеНоменклатурыДляПечати(ВыборкаПоСтрокамТЧ.НоменклатураПредставление, ВыборкаПоСтрокамТЧ.ХарактеристикаПредставление);

//СЕРИЙНЫЙ НОМЕР
Если ЗначениеЗаполнено(ВыборкаПоСтрокамТЧ.СерийныйНомер) Тогда
ОбластьШапки.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
КонецЕсли;

//ДАТА ОКОНЧАНИЯ
Если ЗначениеЗаполнено(ВыборкаПоСтрокамТЧ.ДатаОкончания) Тогда
ОбластьШапки.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
КонецЕсли;

//ОПИСАНИЕ
Если ЗначениеЗаполнено(ВыборкаПоСтрокамТЧ.Описание) Тогда
ОбластьШапки.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
КонецЕсли;

//КОМПЛЕКТАЦИЯ
Если ЗначениеЗаполнено(ВыборкаПоСтрокамТЧ.Комплектация) Тогда
ОбластьШапки.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
КонецЕсли;

//ПОВРЕЖДЕНИЯ
Если ЗначениеЗаполнено(ВыборкаПоСтрокамТЧ.МеханическиеПовреждения) Тогда
ОбластьШапки.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
КонецЕсли;


//ПОДПИСИ
ОбластьШапки.Параметры.Заполнить(ВыборкаПоДокументам);
ТабличныйДокумент.Вывести(ОбластьШапки);

УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка);

ТабличныйДокумент.АвтоМасштаб = ИСТИНА;

Возврат ТабличныйДокумент;
КонецФункции


Kironten

Давно бы уже отладчиком пробежались, и нашли в чем проблема.
Вообще довольно странно у вас реализовано заполнение.
Зачем то 9 раз происходит заполнение одной и той же области.
А вывод в табличный документ - один.

SkyNetYar

Цитата: Kironten от 03 фев 2015, 14:05
Давно бы уже отладчиком пробежались, и нашли в чем проблема.
Вообще довольно странно у вас реализовано заполнение.
Зачем то 9 раз происходит заполнение одной и той же области.
А вывод в табличный документ - один.
Так получилось что я из внутреннего документа делаюю внешнюю печатную форму обработкой, не стал заморачиватся..
Может дело в ОбластьШапки.Параметры.Заполнить(?)
Вы знаете я отладчиком умею отдаленно пользоваться :(

Kironten

http://howknow1c.ru/programmirovanie-1c/metod-otladki-1s.html
Если же у Вас внешняя форма, тогда запускайте через внешниие обработки отладки ВПФ. Благо в инете для управляемых форм их достаточно.

Теги:
Рейтинг@Mail.ru

Поиск