Имя: Пароль:
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
Из того, что ты прислал, нигде не видно вызова твоей внешней обработки, куда ты хочешь передать ссылку на документ.
Основная теорема систематики: Новые системы плодят новые проблемы.