Имя: Пароль:
1C
1С v8
Внешняя обработка 1с 8.3
, , , , , , , , , ,
0 mishgun1990
 
01.06.15
12:51
Добрый день.
Проблема в следующим: Почему то из запроса не берутся данные, параметры в макете не заполняются.
Можете взглянуть на код, что в нем не так?
Буду очень благодарен, заранее спасибо!!!

Функция СформироватьТабДокументОбразца(СсылкаНаОбъект, ОбъектПечати)
    табДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("СчетНаОплатуВнешний");
    
    ОбластьЛого = Макет.ПолучитьОбласть("Лого");
    ОбластьШапки = Макет.ПолучитьОбласть("Шапка");
    ОбластьТела = Макет.ПолучитьОбласть("Тело");
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект.Ссылка);
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Контрагенты.ИНН,
        |    Контрагенты.КПП,
        |    Контрагенты.НаименованиеПолное,
        |    Контрагенты.КонтактнаяИнформация.(
        |        Страна,
        |        Город,
        |        НомерТелефона
        |    )
        |ИЗ
        |    Документ.КоммерческоеПредложениеКлиенту КАК КоммерческоеПредложениеКлиенту
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
        |        ПО КоммерческоеПредложениеКлиенту.Партнер.Ссылка = Контрагенты.Партнер.Ссылка
        |ГДЕ
        |    КоммерческоеПредложениеКлиенту.Ссылка = &Ссылка";
    
    
    Выборка = Запрос.Выполнить().Выбрать();
    //Выборка.Следующий();
    
    ЗаполнитьЗначенияСвойств(ОбластьТела.Параметры, Выборка);
    
    табДок.Вывести(ОбластьЛого);
    табДок.Вывести(ОбластьШапки);
    табДок.Вывести(ОбластьТела);
    
    Возврат табДок;
    КонецФункции
1 ДенисЧ
 
01.06.15
12:52
Комментарий убери
2 Chikko
 
01.06.15
12:53
//Выборка.Следующий();
раскоменть
3 Рэйв
 
01.06.15
12:53
и ЗаполнитьЗначенияСвойств- это хитрая зараза та еще... Имена должны точно совпадать.
4 mishgun1990
 
01.06.15
12:56
Раскомментировал, но проблема не ушла, также не выгружает.
я ссылаюсь на то, что в параметре запроса он не видит значение, но как поправить, чтоб увидел, в этом нужна помощь(
5 Я сказал
 
01.06.15
13:00
Если в отладчике посмотреть Запрос.Выполнить().Выгрузить(), то там пустая таблица?
6 mishgun1990
 
01.06.15
13:01
А как внешнюю обработку через отладчик пропустить?))
7 Рэйв
 
01.06.15
13:02
(6)Элементарно - ставь точку останова и наслаждайся.
8 Cube
 
01.06.15
13:02
Делай так:

    Выборка = Запрос.Выполнить().Выбрать();
        Если Выборка.Следующий() Тогда
        ЗаполнитьЗначенияСвойств(ОбластьТела.Параметры, Выборка);
        табДок.Вывести(ОбластьЛого);
        табДок.Вывести(ОбластьШапки);
        табДок.Вывести(ОбластьТела);
        Сообщить("Всё пучком");
    Иначе
        Сообщить("Я протупил");
    КонецЕсли;
    
    Возврат табДок;
9 Я сказал
 
01.06.15
13:03
Да так же, как и не внешнюю. открыл в конфигураторе, открыл в предприятии, точку поставил, запустил
10 mishgun1990
 
01.06.15
13:03
Дак я ставлю, а он на ней не останавливается, а сразу выдает форму для печати
11 Рэйв
 
01.06.15
13:03
(10)Значит не доходит до твоей точки.
12 Я сказал
 
01.06.15
13:05
База файловая?
13 mishgun1990
 
01.06.15
13:09
Серверная
14 mishgun1990
 
01.06.15
13:10
Cube прав, не выполняет он запрос((
Блин, в чем проблема то тогда?(
15 Рэйв
 
01.06.15
13:10
(14)Ну , судя по всему, в запросе:-)
16 Я сказал
 
01.06.15
13:10
И функция эта где находится? В модуле объекта обработки? Предприятие запущено в режиме отладки? В конфигураторе и в предприятии открыты одинаковые версии внешней обработки?
17 Я сказал
 
01.06.15
13:11
(14) Пустой результат запроса?
18 mishgun1990
 
01.06.15
13:12
обработка открывается, когда из документа выполняешь печать.
Да, пустой
19 mishgun1990
 
01.06.15
13:13
А как тогда взять ссылку на документ, который на печать выводить?
20 Рэйв
 
01.06.15
13:14
(19)Если в нем находишься, то ЭтотОбъект
21 Рэйв
 
01.06.15
13:14
причем не факт что он записан:-) Поэтому .Ссылка может и не спасти
22 Я сказал
 
01.06.15
13:15
Проверь, что у тебя в параметре СсылкаНаОбъект.Ссылка
23 ЧеловекДуши
 
01.06.15
13:15
(0)Покажи код вызова обработки.
+ Покажи код обработки, "ПриОткрытии" "ПриСозданииНаСервере"
24 mishgun1990
 
01.06.15
13:20
Обработка добавилась средствами 1с, Дополнительные отчеты и обработки.
25 Я сказал
 
01.06.15
13:22
Посмотри в отладчике, что у тебя в СсылкаНаОбъект.Ссылка. Подозреваю, что там пусто
26 mishgun1990
 
01.06.15
13:23
Да, там пусто. В том и проблема, как указать ссылку на документ, из которого печатаю
27 Я сказал
 
01.06.15
13:29
(26) А откуда у тебя функция вызывается? Откуда приходит параметр СсылкаНаОбъект
28 Я сказал
 
01.06.15
13:29
?
29 mishgun1990
 
01.06.15
13:33
Функция в модуле внешней обработки, СсылкаНаОбъект её реквизит. Вызывается эта обработка из документа, в меню Печати.
Как обратится конкретно к документу, который открыл, не знаю(
30 Я сказал
 
01.06.15
13:36
(29) Ты из документа обращаешься к обработке так:
Обработка = ТвояОбработка.СоздатьОбъект();
?
Если да, то тут же и заполняй реквизит:
Обработка.СсылкаНаОбъект = Ссылка;
31 Я сказал
 
01.06.15
13:37
Покажи код, как вызывается обработка
32 Я сказал
 
01.06.15
13:38
(31) ...и из какого модуля она вызывается
33 Рэйв
 
01.06.15
13:39
>>Обработка = ТвояОбработка.СоздатьОбъект();

Блин, вроде понедельник, а не пятница..
:-)
34 mishgun1990
 
01.06.15
13:39
Я из документа обращаюсь к обработке при выборе из выпадающего списка кнопки печать в Документе.
35 Я сказал
 
01.06.15
13:46
(33) ага, ошибка.
(34) можешь код написать, который выполняется при нажатии того, что ты нажимаешь в выпадающем списке кнопки Печать?
36 mishgun1990
 
01.06.15
13:48
Функция ПолучитьНазначениеОбработки()
    Массив = Новый Массив;
    Массив.Добавить("Документ.КоммерческоеПредложениеКлиенту");
    
    Возврат  Массив;
КонецФункции
37 mishgun1990
 
01.06.15
13:49
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = ложь, Модификатор = "")
    
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = Представление;
    НоваяКоманда.Идентификатор = Идентификатор;
    НоваяКоманда.Использование = Использование;
    НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
    НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры
38 mishgun1990
 
01.06.15
13:50
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетНаОплатуВнешний") Тогда
  УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
     "СчетНаОплатуВнешний", "СчетНаОплатуВнешний",
     СформироватьТабДокументОбразца(СсылкаНаОбъект, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры
39 mishgun1990
 
01.06.15
13:50
Ещё две не могу почему то добавить, не отправляется на форум
40 mishgun1990
 
01.06.15
13:51
""Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = ложь, Модификатор = "")
    
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = Представление;
    НоваяКоманда.Идентификатор = Идентификатор;
    НоваяКоманда.Использование = Использование;
    НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
    НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры""
41 mishgun1990
 
01.06.15
13:52
В общем там стандартный код добавления внешней печатной формы
42 mishgun1990
 
01.06.15
14:05
Никто не знает?(
43 Я сказал
 
01.06.15
15:39
Из того, что ты прислал, нигде не видно вызова твоей внешней обработки, куда ты хочешь передать ссылку на документ.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn