Имя: Пароль:
1C
1С v8
v8: Создание внешней печатной формы
0 Анастасия77721
 
26.03.14
08:23
Подскажите пожалуйста!В программирование 1С совсем новичок. Создала новую печатную форму на основание документа Приходный кассовый ордер код далее
Процедура КнопкаВыполнитьНажатие(Кнопка)
Перем ПодразделениеОтветственныхЛиц;

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


    РасшифровкаПлатежа = СсылкаНаОбъект.РасшифровкаПлатежа;
    ВидОперации = СсылкаНаОбъект.ВидОперации;
    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();

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

    // Выводим шапку ПКО

    СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента);

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

    ОбластьМакета.Параметры.Заполнить(Шапка);
    //ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,");
    
        
    ОбластьМакета.Параметры.АдресКонтрагента =  ШАпка.АдресКонтрагента;
    ОбластьМакета.Параметры.ДатаДокумента     = Шапка.ДатаДокумента;
    ОбластьМакета.Параметры.НомерДокумента    = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка);

        ОтветственныеЛица = ОбщегоНазначения.ОтветственныеЛица(Шапка.Организация, Шапка.ДатаДокумента, ПодразделениеОтветственныхЛиц);
    ОбластьМакета.Параметры.ПринятоОт  = Шапка.ПринятоОт;
        
    ТабДокумент.Вывести(ОбластьМакета);
    
    ТабДокумент.Показать();
    
КонецПроцедуры

Функция РубКоп(Сумма)
    
    Руб=Цел(Сумма);
    Коп=ОКР(100*(Сумма-Руб),0,1);
    СуммаРубКоп=""+Руб+" руб. "+Цел(Коп/10)+(Коп-10*Цел(Коп/10))+" коп.";
    Возврат СуммаРубКоп;
    
КонецФункции

Теперь в этот макет нужно добавить адрес Контрагента а в Документе Приходный кассовый ордер такой переменной нет она есть в Справочнике контрагенты подскажите пожалуйста как это прописать чтоб выводился адрес контрагента ?
1 shuhard
 
26.03.14
08:26
(0) в разных конфах контактная информацию живет в разных местах
2 France
 
26.03.14
08:37
+1 и если будет фото, то народ смилостливится, и задаст вопрос "а конца какая"
3 Kupogun
 
26.03.14
08:39
достать адрес из табличной части справочника, либо из регистра
4 Анастасия77721
 
27.03.14
07:39
(3) Конфигурация БУХ ПРОФ 2.0.55.7.А подскажите пожалуйста как это сделать?
5 xReason
 
27.03.14
07:41
(0) Спроси у Мисти, она тепееь все знает
6 Godofsin
 
27.03.14
07:41
(2) Конца та еще ))))
7 Godofsin
 
27.03.14
07:43
УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Объект, ТипАдреса = "")
8 el7cartel
 
27.03.14
08:02
(0) нумс собственно запросик и все ок)))
9 Анастасия77721
 
27.03.14
08:06
(7) Говорит теперь не определена переменная Объект , ТипАдреса
10 Анастасия77721
 
27.03.14
08:08
(8) Подскажите как его сделать?
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                |   Организация.Ссылка,
            |   Организация.Адрес Как Ссылка,
            |ИЗ
                |   Справочник.Организация КАК Организация
                |ГДЕ
                |   Организация.Адрес = &Адрес";

               Результат=Запрос.Выполнить();
               Выборка=Результат.Выбрать();
11 Любопытная
 
27.03.14
08:38
(10) что это?
12 Wobland
 
27.03.14
08:41
(11) это - запрос. видишь ли, запрос - хорошее средство для получения данных из БД, привыкни к ним ;)
13 Wobland
 
27.03.14
08:42
+(12) на кой ляд тут это нужно, знает только ТС. ТС без фотки, смею заметить ;)
14 el7cartel
 
27.03.14
08:43
(9) открываешь кавычки, щелкаешь правой кнопкой между кавычками "конструктор запроса" и выбираешь что тебе нужно!
15 el7cartel
 
27.03.14
08:43
(13) ах да, пользы без фото никакой)))
16 Любопытная
 
27.03.14
08:46
(12) с возвращением :)
17 Wobland
 
27.03.14
08:53
(16) возвращением с. у меня аська почему-то не работает на передачу, но это делов минут на пять..
а Анастасия77721 может в неё постучаться и быстро решить свою проблему. я всё равно тут весь скучаю
18 el7cartel
 
27.03.14
09:08
(17) работай, друг, работай!
19 Wobland
 
27.03.14
09:15
(18) а работы нет. страдаю прям как Шелдон в отпуске ;)
20 1dvd
 
27.03.14
09:21
(19) не бывает такого "работы нет", это миф. Иногда бывает "срочной работы нет", но очень редко
21 Любопытная
 
27.03.14
09:39
(20) бывает.
(19) А можно я к тебе попристаю с запросами?
22 Wobland
 
27.03.14
09:48
(21) всякий психически здоровый мужчина был бы рад оказать пользу такой милой девушке
23 Люблю 1с
 
27.03.14
09:58
мда... и пятничные ветки не нужны...
24 1dvd
 
27.03.14
10:02
(22) молодец! и себя похвалил, и даму :)
25 Godofsin
 
27.03.14
13:51
(9) ох... Объект ээто ссылка на справочник, Тип адреса - строковое предсталение типа адреса. Пример:

Контрагент = Справочники.НайтиПоНаименованию("ООО Анастасия77721");

ХочуФактическийАдрес = УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Контрагент, "фактический");
26 Godofsin
 
27.03.14
13:52
Тьфу... Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("ООО Анастасия77721");
27 Godofsin
 
27.03.14
13:54
В твоем случае Шапка.Контрагент или СсылкаНаобъект.Контрагент
28 Wobland
 
27.03.14
14:04
дядька Godofsin, знал бы, что ты - красноярец, угостил бы тебя кружечкой. а так - привет Красноярску ;)
29 Wobland
 
27.03.14
14:06
+(28) второго дня уехал из этого города
30 Анастасия77721
 
28.03.14
13:05
Спасибо большое всем! Подскажите ещё пожалуйста как теперь вывести Адрес в нужную ячейку печатной формы в макете она называктся "Адрес Контрагента"

ХочуФактическийАдрес = УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Контрагент, "фактический");
        
    ОбластьМакета.Параметры.АдресКонтрагента =  Шапка.ХочуФактическийАдрес;
Пишу вот так он ругается говорит " Поле объекта не обнаружено (ХочуФактическийАдрес)
    ОбластьМакета.Параметры.АдресКонтрагента =  Шапка.ХочуФактическийАдрес;
"
31 Любопытная
 
28.03.14
13:08
(30) Пиши без Шапка. просто
ОбластьМакета.Параметры.АдресКонтрагента =  ХочуФактическийАдрес;
32 salvator
 
28.03.14
13:08
(30) Фото добавить надо обязательно. +100 в карму сразу.
33 Godofsin
 
28.03.14
13:21
(28) Вот это ты неаккуратненько как то....
34 Анастасия77721
 
28.03.14
13:28
(31) Спасибо написала ошибки не выдаёт но и в ячейку не отображается.
35 Любопытная
 
28.03.14
13:29
(34)ну так в ХочуФактическийАдрес что вернулось? А то мож там строка пустая и все
36 el7cartel
 
28.03.14
13:29
(34) может надо вот так ТабДок.ВывестиОбласть(ТвояОбласть)
37 Godofsin
 
28.03.14
13:37
(35) +1. Адрес то наверное и не заполнен.
38 Анастасия77721
 
28.03.14
13:44
вот весь код помогите пожалуйста найти ошибку

Перем ПодразделениеОтветственныхЛиц;

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


    РасшифровкаПлатежа = СсылкаНаОбъект.РасшифровкаПлатежа;
    ВидОперации = СсылкаНаОбъект.ВидОперации;
    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();

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

    // Выводим шапку ПКО


    СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента);

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

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

    ОбластьМакета.Параметры.АдресКонтрагента =  ХочуФактическийАдрес;
    ОбластьМакета.Параметры.ДатаДокумента     = Шапка.ДатаДокумента;
    ОбластьМакета.Параметры.НомерДокумента    = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка);

        ОтветственныеЛица = ОбщегоНазначения.ОтветственныеЛица(Шапка.Организация, Шапка.ДатаДокумента, ПодразделениеОтветственныхЛиц);
    ОбластьМакета.Параметры.ПринятоОт  = Шапка.ПринятоОт;
        
    ТабДокумент.Вывести(ОбластьМакета);
    
    ТабДокумент.Показать();
39 Анастасия77721
 
28.03.14
13:48
(13)(32) Фото добавила.
40 Timon1405
 
28.03.14
13:55
Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("Шапка.Контрагент");
Исправить на
Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Шапка.Контрагент);
41 Godofsin
 
28.03.14
14:00
(40) Искать по наименованию, используя ссылку? Класс!
42 Godofsin
 
28.03.14
14:00
эту строчку удалить
Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("Шапка.Контрагент");
43 Godofsin
 
28.03.14
14:01
эту поправить на эту:
ХочуФактическийАдрес = УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Шапка.Контрагент, "Фактический");
44 Анастасия77721
 
28.03.14
14:21
Всё равно адрес не выводится  мож дело в самом макете ?
45 Анастасия77721
 
28.03.14
14:24
(А как проверить?)
46 Анастасия77721
 
28.03.14
14:24
(35) А как проверить?
47 Timon1405
 
28.03.14
14:25
(41) Виноват, увидел кавычки неправильные, дальше думать перестал)
(44) Напишите после ХочуФактическийАдрес  = ...
Строчку
Сообщить(ХочуФактическийАдрес);
раз отладчик вам противен.
если выдаст адрес, значит дело в макете
48 salvator
 
28.03.14
14:29
(46) Отладчиком.
49 Анастасия77721
 
28.03.14
15:07
(47)А где должен выдать Адрес
50 Анастасия77721
 
28.03.14
15:10
(47)Не выдаёт адрес.
51 salvator
 
28.03.14
15:19
(50) Адрес указан вообще?
52 Анастасия77721
 
28.03.14
15:22
(51)ДА у Контрагента в контактных данные есть Адрес
53 salvator
 
28.03.14
15:24
(52) Именно фактический?
54 Анастасия77721
 
28.03.14
15:26
(53)Оба адреса есть.
55 salvator
 
28.03.14
15:37
Давай еще раз полностью код, который сейчас.
56 Анастасия77721
 
28.03.14
15:37
Здесь картинку макета никак не вставить?
57 Анастасия77721
 
28.03.14
15:38
Функция Печать(тип = "МойМакет") Экспорт
    
    Перем ПодразделениеОтветственныхЛиц;

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


    РасшифровкаПлатежа = СсылкаНаОбъект.РасшифровкаПлатежа;
    ВидОперации = СсылкаНаОбъект.ВидОперации;
    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();

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

    // Выводим шапку ПКО


    СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента);

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

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

       Сообщить(ХочуФактическийАдрес);
        

    ОбластьМакета.Параметры.АдресКонтрагента =  ХочуФактическийАдрес;
    ОбластьМакета.Параметры.ДатаДокумента     = Шапка.ДатаДокумента;
    ОбластьМакета.Параметры.НомерДокумента    = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка);

        ОтветственныеЛица = ОбщегоНазначения.ОтветственныеЛица(Шапка.Организация, Шапка.ДатаДокумента, ПодразделениеОтветственныхЛиц);
    ОбластьМакета.Параметры.ПринятоОт  = Шапка.ПринятоОт;
        
    ТабДокумент.Вывести(ОбластьМакета);
    
    //ТабДокумент.Показать();
    


    Возврат ТабДокумент;

КонецФункции // ПечатьПКО()
58 salvator
 
28.03.14
15:42
|    ПриходныйКассовыйОрдер.Контрагент.Представление КАК Контрагент,

замени на

|    ПриходныйКассовыйОрдер.Контрагент.Представление КАК КонтрагентПредставление,

у тебя переменная Контрагент должна быть ссылочного типа, а не строкового
59 Анастасия77721
 
28.03.14
15:50
(58)Всё равно не выводит. Помогите пожалуйста уже не знаю что делать!
60 salvator
 
28.03.14
15:58
Сообщить(ХочуФактическийАдрес);

что-нибудь выводит?
61 Анастасия77721
 
28.03.14
15:59
не не выводит.
62 Анастасия77721
 
28.03.14
16:04
пишет ошибку {ОбщийМодуль.УправлениеКонтактнойИнформацией.Модуль(2398)}: Поле объекта не обнаружено (ФактАдрес)
    ВидАдреса = Справочники.ВидыКонтактнойИнформации[Начало+"Адрес"+Окончание];
63 salvator
 
28.03.14
16:09
В Шапка.Контрагент что получается? Какое значение? И какой тип?
64 Анастасия77721
 
28.03.14
16:24
А как проверить?
65 Любопытная
 
28.03.14
16:26
(64) да воткни просто в код Сообщить(Шапка.Контрагент) и посмотри, что в сообщении выдаст.
66 Анастасия77721
 
28.03.14
16:28
Выдаёт Фамилию что написана в приходнике!
67 Анастасия77721
 
28.03.14
16:29
Иванов Иван Иванович
68 salvator
 
28.03.14
16:30
Еще сделай Сообщить(ТипЗнч(Шапка.Контрагент))
69 Анастасия77721
 
28.03.14
16:31
Он мне вывел в низу Фамилию а в форме вывел адрес.
70 Анастасия77721
 
28.03.14
16:34
Иванов Иван Иванович
Контрагенты
71 Любопытная
 
28.03.14
16:34
(69)т.е. адрес вывел?
72 Анастасия77721
 
28.03.14
16:37
да когда написала Сообщить(Шапка.Контрагент) и он мне адрес выводит в печать?
73 salvator
 
28.03.14
16:38
(72) У тебя в печатной форме адрес появился или нет?
74 Любопытная
 
28.03.14
16:41
(72) убирай теперь это сообщение. Все и без него работать будет
75 salvator
 
28.03.14
16:43
(74) У нее из-за этих "Сообщить" ошибка в (62) никуда не денется.. )
76 Анастасия77721
 
28.03.14
16:49
(75)Этой ошибки уже не выдаётся.
77 salvator
 
28.03.14
16:50
(76) Видимо это выдавалось до сообщения (58).
78 Анастасия77721
 
28.03.14
16:50
Всем большое большое при большое спасибо всё работает. Очень помогли.Даже незнаю как выразить Свою благодарность!
79 salvator
 
28.03.14
16:50
(78) Учись пользоваться отладчиком. Поможет в будущем не один раз.
80 Любопытная
 
28.03.14
16:57
+(79) А еще Синтаксис-помощник изучай :)