Имя: Пароль:
1C
1С v8
Фактический адрес контрагента 1С 8.2 УТ 10.3
0 Godunov
 
10.03.16
13:40
Приветствую всех гуру 1С.
Есть задача, необходимо в печатной форме отобразить фактический адрес контрагента, который показан на рисунке.
http://savepic.su/7112847.png
Кучу статей в инете перерыл, много кода испробовал, но не один не отображает сам фактический адрес...

На данный момент такой код:

ОбластьМакета = Макет.ПолучитьОбласть("Поставка");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ОбластьМакета.Параметры.Контрагент = СсылкаНаОбъект.Контрагент.НаименованиеПолное;
   ОбластьМакета.Параметры.ФактАдрес = УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Контрагент, "Фактический");
   ТабДокумент.Вывести(ОбластьМакета);

нажимаю кнопку Печать с выбором нужной формы, пишет такую ошибку:
Не удалось сформировать внешнюю печатную форму!
Поле объекта не обнаружено (ФактАдрес)

Специалисты, подскажите\помогите новичку с кодом... Заранее благодарю...
1 Amra
 
10.03.16
13:42
Адрес то ты получаешь повидимому, но проблема в том, что в макете нет параметра "Фактадрес"
2 Godunov
 
10.03.16
13:51
В макете у меня прописан параметр <ФактАдрес>
http://savepic.su/7085199.png
Или надо ещё что-то...?
3 FIXXXL
 
10.03.16
13:52
(2) он точно Параметр?
4 FIXXXL
 
10.03.16
13:53
и в области нужной находится?
5 Godunov
 
10.03.16
13:56
Да параметр и в нужной области находится, остальные позиции мне отображаются как надо, вот только затык возник с фактическим адресом...
6 hhhh
 
10.03.16
15:33
(5) отладчиком посмотри тогда
7 Timon1405
 
10.03.16
15:38
что-нибудь не пересохранил и отлаживаешь старую форму?
8 Godunov
 
10.03.16
16:24
На коде:
   ОбластьМакета.Параметры.ФактАдрес = УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Контрагент, "Фактический");
Поставил точку останова, запустил отладчик, нажимаю кнопку печать, выбираю форма и снова ошибка возникает:
Не удалось сформировать внешнюю печатную форму!
Поле объекта не обнаружено (ФактАдрес)
(7) Сохранил, всё актуальное...
9 torgm
 
10.03.16
16:29
У фактадрес в макете случайно пробелов нет?
Точно параметр а не шаблон?
10 Fish
 
10.03.16
16:29
(8) Значит, ОбластьМакета не та.
11 Godunov
 
10.03.16
16:38
(9) Пробелов нет, точно параметр, во втором моём посте рисунок есть, там показан параметр.
(10) Ради проверки сменил имя в области макета с ФактАдрес на ФактАдресКонтрагента в коде прописал:

ОбластьМакета.Параметры.ФактАдресКонтрагента = УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Контрагент, "Фактический");

Ошибка та же - Поле объекта не обнаружено (ФактАдрес)
12 Amra
 
10.03.16
16:55
(11) Значит в справочнике ВидыКонтактнойИнформации нет такого предопределенного элемента. Скорее всего переименовали, а в коде не сменили
13 Godunov
 
10.03.16
17:09
(12) Да, его там нет, конфа обычная (в моём случае тестовая для обкатки задач).
http://savepic.su/7099525.png
Данный код:

УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Контрагент, "Фактический");

Нашёл в инете, людям помогало решение, в моём же случае ошибка выводится...
14 hhhh
 
10.03.16
17:17
(13) вставь там

Сообщить("" + УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Контрагент, "Фактический"));
15 hhhh
 
10.03.16
17:20
(13) проверь еще на английские буквы ФактАдресКонтрагента. Лучше для верности скопипасть это слово из макета в программу.
16 Chameleon1980
 
10.03.16
17:21
а бы тут точку поставил останова

Функция ПолучитьАдресИзКонтактнойИнформации(Объект, ТипАдреса = "") Экспорт
17 Chameleon1980
 
10.03.16
17:22
хотя нет

из за этой функции ошибку бы не писало
18 Chameleon1980
 
10.03.16
17:23
там полюбому что то возращается
19 Godunov
 
10.03.16
17:23
(15) ОбластьМакета = Макет.ПолучитьОбласть("Поставка");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ОбластьМакета.Параметры.Контрагент = СсылкаНаОбъект.Контрагент.НаименованиеПолное;
   ОбластьМакета.Параметры.ФактАдрес = УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Контрагент, "Фактический");
Сообщить("" + УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Контрагент, "Фактический"));
   ТабДокумент.Вывести(ОбластьМакета);

Копипастил...

Всё равно та же ошибка...
20 Godunov
 
10.03.16
17:25
Немного не тот кусок кода скопировал, не ФактАдрес, а ФактАдресКонтрагента
21 Godunov
 
10.03.16
17:26
ОбластьМакета = Макет.ПолучитьОбласть("Поставка");
    ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
    ОбластьМакета.Параметры.Контрагент = СсылкаНаОбъект.Контрагент.НаименованиеПолное;
    ОбластьМакета.Параметры.ФактАдресКонтрагента = УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Контрагент, "Фактический");
    Сообщить("" + УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Контрагент, "Фактический"));
    ТабДокумент.Вывести(ОбластьМакета);

Вот так щас с ошибкой.
22 hhhh
 
10.03.16
17:30
(21) ну так  

ФактАдресКонтрагента = Новый Структура("ФактАдресКонтрагента", УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Контрагент, "Фактический"));
ОбластьМакета.Параметры.Заполнить(ФактАдресКонтрагента);
23 Godunov
 
10.03.16
17:34
(22) ОбластьМакета = Макет.ПолучитьОбласть("Поставка");
    ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
    ОбластьМакета.Параметры.Контрагент = СсылкаНаОбъект.Контрагент.НаименованиеПолное;
    ФактАдресКонтрагента = Новый Структура("ФактАдресКонтрагента", УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Контрагент, "Фактический"));
    ОбластьМакета.Параметры.Заполнить(ФактАдресКонтрагента);
    ТабДокумент.Вывести(ОбластьМакета);

И всё равно ошибка...
Поле объекта не обнаружено (ФактАдрес)
24 rt2000
 
10.03.16
17:38
(23) В отладчик зайди, и посмотри какие параметры доступны в:
ОбластьМакета.Параметры
25 hhhh
 
10.03.16
17:46
(23) эту печатную форму где взял? из базы выгрузил?
26 SadrArt
 
10.03.16
17:49
Да причем здесь параметр...
Он уже переименовал его.
А ругается по прежнему на "ФактАдрес"

В ошибке (или по кнопке подробнее), нет адреса модуля и строки в которой возникает ошибка. Думается проблема внутри метода УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации()
27 SadrArt
 
10.03.16
17:50
(26) В ошибке (или по кнопке подробнее), нет адреса модуля и строки в которой возникает ошибка?
28 Chameleon1980
 
10.03.16
17:52
я смотрел одну из типовых 10.3

тоже ринулся туда - думал помогу

дык там просто все:

Функция ПолучитьАдресИзКонтактнойИнформации(Объект, ТипАдреса = "") Экспорт

    Если НЕ ЗначениеЗаполнено(ТипАдреса) Тогда
        Возврат "";
    КонецЕсли;

    Если ТипАдреса="Фактический" Тогда
        Начало = "Факт";
    ИначеЕсли ТипАдреса="Регистрации"
          ИЛИ ТипАдреса="Юридический" Тогда
        Начало = "Юр";
    Иначе
        Возврат "";
    КонецЕсли;
    
    Если ТипЗнч(Объект) = Тип("СправочникСсылка.Организации") Тогда
        Окончание = "Организации";
    ИначеЕсли ТипЗнч(Объект) = Тип("СправочникСсылка.Контрагенты") Тогда
        Окончание = "Контрагента";
    КонецЕсли;
    
    ВидАдреса = Справочники.ВидыКонтактнойИнформации[Начало+"Адрес"+Окончание].ПолучитьОбъект().Ссылка;

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

КонецФункции // ПолучитьАдресИзКонтактнойИнформации()
29 Godunov
 
10.03.16
18:09
Позже буду, позже всё проверю и отвечу...
30 Godunov
 
10.03.16
19:17
(25) Есть внешняя печатная форма "счёт на оплату покупателю", её взял и переделывал под свою задачу, что-то убрал, что-то добавил.
(26) Да, весь затык в методе УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации()

Окна с ошибкой нет с кнопкой подробнее, ошибка отображается так, как показано в ссылке.
http://savepic.su/7138456.png
31 Godunov
 
10.03.16
19:21
(28) Я тоже туда залез проверить (Общий модуль УправлениеКонтактнойИнформацией), всё правильно в коде, а ошибка в моём случае возникает...
32 ВРедная
 
10.03.16
19:25
(31) Ответь на (26)
А также напиши, как ты этот внешний отчет запускаешь.
33 ВРедная
 
10.03.16
19:26
Отлаживай его через файл-открыть, а не прикрепляй каждый раз в справочник внешних обработок. Тогда будет возможность увидеть в какой строке ошибка.
34 Chameleon1980
 
10.03.16
19:29
(33) это если правильно сделана ВПФ (с полем и кнопкой).

а так можно понатыкать
сообщить("тут 1");
сообщить("тут 1");
35 Chameleon1980
 
10.03.16
19:30
автор или кинул бы уже куда впф эту (если разработка не секретная)
36 Godunov
 
10.03.16
19:32
Лишнее уберу в ВПФ и скину ссылку на неё...
37 Godunov
 
10.03.16
19:47
(32) Загружаю через Сервис - внешние печатные формы и обработки - внешние печ. формы - там создаю новую форму и подгружаю файл.
(35) https://cloud.mail.ru/public/MYch/eDnrdTkV2
Строка 629
Проверьте...
38 Godunov
 
10.03.16
19:51
(33) Делаю файл - открыть - выбираю файл - и тишина, ничего не открывается и никаких ошибок нет...
39 Chameleon1980
 
10.03.16
19:54
создать форму

вынести на форму СсылкаНаОбъект

по кнопке Сформировать выхвать Печать()
40 Chameleon1980
 
10.03.16
19:56
у меня счас на другое ругается на реквизит "СрокПоставки" в документе.

у меня нет в документах для это впф такого реквизита.

счас или добавлю или запрос переделаю

чтобы докопаться до изначальной ошибки
41 Chameleon1980
 
10.03.16
20:00
(39) для (38)
42 Мимохожий Однако
 
10.03.16
20:03
Наверняка в ячейке с "ФактАдрес" свойство не параметр. Но при хаотичном подходе ТС это обнаружится не ранее 100 поста.ИМХО
43 Godunov
 
10.03.16
20:05
(42) Повторюсь, во втором моём посте есть ссылка на рисунок в котором показано, что свойство - параметр, также недавно скинул ВПФ, можете сами проверить в макете, что стоит параметр...
44 Chameleon1980
 
10.03.16
20:06
пля - реквизит СрокПоставки это реквизит ТЧ
45 Chameleon1980
 
10.03.16
20:09
подтвержу - там параметр
46 Godunov
 
10.03.16
20:10
(39) Так как новичок, много вопросов возникает  с работой 1С.
http://savepic.su/7083162.png
"вынести на форму СсылкаНаОбъект

по кнопке Сформировать выхвать Печать()"

Как это сделать?
Простите за глупый вопрос, если что, сильно не ругайте...))
47 Chameleon1980
 
10.03.16
20:15
вот скачай

https://drive.google.com/drive/folders/0B01xNOomgP9XMVJTNTM3Qk1iYlk

открой через файл

выбери в поле документ
жмакни Сформировать

и полный текст ошибки потом пришли сюда
48 Chameleon1980
 
10.03.16
20:16
а то у меня теперь ругается на твой (личный похоже) справочник Справочник.НаименованияНоменклатурыДляКонтрагентов
49 Мимохожий Однако
 
10.03.16
20:17
У тебя в функции Печать() не Возврат. Есть некоторая кучка ошибок в запросе. Поэтому добраться до твоей первоначальной ошибки пока не добраться. Переписывать код для продирания через заросли недоделок неохота.
50 Мимохожий Однако
 
10.03.16
20:18
*не Возврат. = Нет Возврат
51 SadrArt
 
10.03.16
20:18
(28) Как и предполагал разгадка кроется внутри метода...
Скорее всего вот в этой строчке

  ВидАдреса = Справочники.ВидыКонтактнойИнформации[Начало+"Адрес"+Окончание].ПолучитьОбъект().Ссылка;

Потому как похоже в конфигурации нет предопределенного ВидаКонтактнойИнформации "ФактАдрес", на который идет ссылка
52 Godunov
 
10.03.16
20:20
(47) Не открывается по ссылке, вот такое пишется...
http://savepic.su/7109789.png
53 Chameleon1980
 
10.03.16
20:23
54 Godunov
 
10.03.16
20:24
(51) Да, нету там предопределенного ВидаКонтактнойИнформации "ФактАдрес".
http://savepic.su/7099525.png
55 Chameleon1980
 
10.03.16
20:24
в пвх там это вроде лежит а не в спр
56 SadrArt
 
10.03.16
20:24
(54) По скрину этого не видно
57 Chameleon1980
 
10.03.16
20:26
(54) правой кнопкой по справочнику ВидыКонтактнойИнформации
Открыть предопределеннные данные

(56) думаю при этом ругалось бы на запрос
58 Chameleon1980
 
10.03.16
20:28
Автор качай уже обработку подправленную через запуск через  файл октрыть и пиши ошибку
59 Chameleon1980
 
10.03.16
20:28
я уже и справочник добавил он мне теперь

ооо. я вроде дошел до ошибки

{ОбщийМодуль.УправлениеКонтактнойИнформацией.Модуль(1989)}: Поле объекта не обнаружено (ФактАдрес)
    ВидАдреса = Справочники.ВидыКонтактнойИнформации[Начало+"Адрес"+Окончание].ПолучитьОбъект().Ссылка;
60 Godunov
 
10.03.16
20:29
(47) Вот текст...
{ОбщийМодуль.УправлениеКонтактнойИнформацией.Модуль(1989)}: Поле объекта не обнаружено (ФактАдрес)
    ВидАдреса = Справочники.ВидыКонтактнойИнформации[Начало+"Адрес"+Окончание].ПолучитьОбъект().Ссылка;
61 Godunov
 
10.03.16
20:30
(59) Инет на компе отвалился, не сразу ответил...
62 Chameleon1980
 
10.03.16
20:30
(51) прав
63 Chameleon1980
 
10.03.16
20:35
хотя стоп

тут вроде другая непонятка
64 Chameleon1980
 
10.03.16
20:38
там жеж уже все в структуре получено
счас
65 Мимохожий Однако
 
10.03.16
20:41
(51)Прикольно..Берем ссылку, получаем объект, берем ссылку
66 SadrArt
 
10.03.16
20:41
(57) > думаю при этом ругалось бы на запрос
С чего это? До запроса дело не доходит.
67 Chameleon1980
 
10.03.16
20:43
пардон - верно
68 SadrArt
 
10.03.16
20:43
(65) При этом, как я понял, это типовой механизм.
Правда сам конфигурацию не открывал не смотрел.
69 Chameleon1980
 
10.03.16
20:43
(65) тоже чет удивило
70 Godunov
 
10.03.16
20:44
1С:Предприятие 8.2 (8.2.19.130)
"Управление торговлей", редакция 10.3 (10.3.18.3)
71 SadrArt
 
10.03.16
20:48
Для решения надо сделать (54) и добавить новый предопределенный элемент - ФактАдрес
Но это только избавит от текущей ошибки. Но не выведет текущие "фактические" адреса на печатную форму, потому как очевидно Вид у них другой. Кстати, какой?
72 Chameleon1980
 
10.03.16
20:49
я нашел кажись
73 Chameleon1980
 
10.03.16
20:51
сюда ПолучитьАдресИзКонтактнойИнформации приходит неопределено

и вот тут

перед     ВидАдреса = Справочники.ВидыКонтактнойИнформации[Начало+"Адрес"+Окончание].ПолучитьОбъект().Ссылка;


идет
    Если ТипЗнч(Объект) = Тип("СправочникСсылка.Организации") Тогда
        Окончание = "Организации";
    ИначеЕсли ТипЗнч(Объект) = Тип("СправочникСсылка.Контрагенты") Тогда
        Окончание = "Контрагента";
    КонецЕсли;
74 Chameleon1980
 
10.03.16
20:52
искать нужно почему в впф в параметры для получения конт информации уходит неопределено а не контрагент
75 Chameleon1980
 
10.03.16
20:55
счас вышлю рабочую
76 Chameleon1980
 
10.03.16
20:55
или заменить просто

    // Изменить
    // ОбластьМакета.Параметры.ФактАдресКонтрагента = УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Контрагент, "Фактический"); //Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента; //Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Фактический адрес контрагента");
    
    ОбластьМакета.Параметры.ФактАдресКонтрагента = УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(СсылкаНаОбъект.Контрагент, "Фактический");
77 Chameleon1980
 
10.03.16
20:56
не контрагента передавать, а СсылкаНаОбъект.Контрагент
78 Chameleon1980
 
10.03.16
20:57
скрин пока

http://pastenow.ru/KO02
79 Godunov
 
10.03.16
20:57
Проверю...
80 Chameleon1980
 
10.03.16
20:59
81 Godunov
 
10.03.16
21:00
(78) АЛЛИЛУЯ!!! От души благодарю, затык был всего навсего в "СсылкаНаОбъект"...)))
Плюс к 100 к карме к каждому кто помогал, в особенности Chameleon1980)))
82 Chameleon1980
 
10.03.16
21:01
аааа.

в модуле

Перем Контрагент экспорт;


и потом в функцию для получения адреса отправляется этот контрагент. а где присвоение то этой переменной чего?
83 Godunov
 
10.03.16
21:05
(82) эту переменную надо удалить, она не нужна.
Закон Брукера: Даже маленькая практика стоит большой теории.