7.7 Передача параметра и контекста из формы в форму

Тема в разделе "Обмен данными в "1С:Предприятие 7.7"", создана пользователем raven30, 14 июл 2011.

  1. TopicStarter Overlay
    raven30
    Offline

    raven30

    Регистрация:
    29 янв 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Всем добрый день.
    Помогите разобраться с передачей контекста и параметра.
    Из формы расходной накладной вызываю новую форму ТНН

    Код:
    //**********************************************************
    Процедура ПечатьТоварнаяНакладная()
    Параметр = СоздатьОбъект("СписокЗначений");
    Параметр.ДобавитьЗначение(Фирма,"Фирма");
    Параметр.Установить("Устройство",0);
    Параметр.Установить("КоличествоКопий",1);
    Параметр.Установить("Контекст",глВзятьКонтекст(Контекст));
    ОткрытьФорму("Отчет",Параметр,КаталогИБ()+"\tables\ТоварнаяНакладная.ert");
    
    КонецПроцедуры//ПечатьТоварнаяНакладная
    
    //***********************************************************
    
    В открывшейся форме вызываю

    Код:
    Процедура СчитатьДокумент(Конт)
    //
    
    Фирма = Конт.Фирма;
    
    Организация = ""; 
    ТекОргНаим  = "";
    ТекОргАдрес = "";
    ТекОргИП    = "";
    
    
    Если ПустоеЗначение(Фирма) = 0 Тогда
    Организация      = Конт.Фирма;
    КонецЕсли;
    
    СобратьДанныеОрганизации(Организация, ТекОргИП, ТекОргНаим, ТекОргАдрес);
    
    Если ТекОргИП = 0 Тогда
    ГрузоотпрЮрЛицо  = ПоказатьДанныеОрганизации(ТекОргНаим, ТекОргАдрес);
    ГрузоотпрФизЛицо = "";
    Иначе
    ГрузоотпрФизЛицо = ПоказатьДанныеОрганизации(ТекОргНаим, ТекОргАдрес);
    ГрузоотпрЮрЛицо  = "";
    КонецЕсли;
    
    Контрагент = Конт.Клиент;
    
    
    
    КонтрВид      = "";
    КонтрНаим     = "";
    КонтрАдрес    = "";
    КонтрТелефоны = "";
    КонтрИП       = 2;
    
    СобратьДанныеКонтрагента(Контрагент, КонтрИП, КонтрНаим, КонтрАдрес, КонтрТелефоны); 
    
    Если КонтрИП = 0 Тогда
    ГрузополЮрЛицо  = ПоказатьДанныеКонтрагента(КонтрНаим, КонтрАдрес, КонтрТелефоны);
    ГрузополФизЛицо = "";
    Иначе
    ГрузополФизЛицо = ПоказатьДанныеКонтрагента(КонтрНаим, КонтрАдрес, КонтрТелефоны);
    ГрузополЮрЛицо  = "";
    КонецЕсли;
    
    
    НаклДата = Конт.ДатаДок;
    НаклНомер = Конт.НомерДок;
    
    
    
    Конт.ВыгрузитьТабличнуюЧасть(ТабличнаяЧасть);
    
    ОбщКолво   = ТабличнаяЧасть.Итог("Количество");
    НаимГрузаКолвоМаркировка = СокрЛП(ОбщКолво) + "кор";
    
    
    КонецПроцедуры // СчитатьДокумент()
    
    //******************************************************************************
    // Предопределенная процедура
    //
    Процедура ПриОткрытии()
    
    // Определение закладок формы
    Форма.ИспользоватьЗакладки(1);
    Форма.Закладки.ДобавитьЗначение(1, "Разделы 1-4"); 
    Форма.Закладки.ДобавитьЗначение(2, "Разделы 5-7"); 
    Форма.Закладки.ДобавитьЗначение(3, "Разделы 8-9");
    Форма.Закладки.ДобавитьЗначение(4, "Об.сторона. Разделы 10-13");
    Форма.Закладки.ДобавитьЗначение(5, "Об.сторона. Разделы 14-17");	
    Форма.ИспользоватьСлой("Основной, Разделы1_2_3_4, Кнопки", 2); 
    
    ЭкзНомер = 1; 
    
    Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначения" Тогда
    
    Конт = Форма.Параметр.Получить("Контекст");
    
    
    КонецЕсли;
    
    
    СчитатьДокумент(Конт);
    
    КонецПроцедуры // ПриОткрытии()
    
    ДатаДок и ДатНомер передаются, а Фирма и клиент нет.
    Не могу разобраться почему.
  2. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    с виду фсё верно
    отладчиком пройдись
    или сюда внеш.форму выложи
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Смущает
    Код:
    Если ПустоеЗначение(Фирма) = 0 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда	</span>    
    Организация      = Конт.Фирма;	
    КонецЕсли;
    
    
    Проверяйте....
  4. TopicStarter Overlay
    raven30
    Offline

    raven30

    Регистрация:
    29 янв 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Скорее всего

    Код:
    Если ПустоеЗначение(Фирма)=0 Тогда
    Организация = Конт.Клиент;
    КонецЕсли;
    
    А вот форма
    Посмотреть вложение 7959

    Вложения:

  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Может стоит Фирма = Конт.Фирма.ТекущийЭлемент(); попробовать
  6. TopicStarter Overlay
    raven30
    Offline

    raven30

    Регистрация:
    29 янв 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    А еще при проверке
    Код:
    Сообщить(ТипЗначенияСтр(Конт));
    Сообщить(ТипЗначения(Конт));
    
    Фирма = Конт.Фирма;
    
    Выдает сообщение

    0
    Фирма = Конт.Фирма.ТекущийЭлемент();
    {J:\BASES_ANPO\FARMACEFT\TABLES\ТОВАРНАЯНАКЛАДНАЯ.ERT(498)}: Значение не представляет агрегатный объект (Фирма)
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Внешне не вижу ошибки.. Но попробуйте передать параметр так:

    Код:
    Процедура ПечатьТоварнаяНакладная()
    ....
    Параметры.ДобавитьЗначение(?((Модифицированность()=0) и (ПустоеЗначение(ТекущийДокумент())=0), ТекущийДокумент(), глВзятьКонтекст(Контекст)), "Контекст");
    .....
    
    
  8. TopicStarter Overlay
    raven30
    Offline

    raven30

    Регистрация:
    29 янв 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Все равно ругается как было написано выше.
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Гляньте отладчиком - получаете ли контекст при открытии формы.
    Чудес не бывает
  10. TopicStarter Overlay
    raven30
    Offline

    raven30

    Регистрация:
    29 янв 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Исправил в коде
    Код:
    Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначения" Тогда
    
    на
    Код:
    Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" Тогда
    
    Теперь выдает сообщение

    Документ
    12

    Что это значит?
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Тип параметра в виде строки - документ
    Тип 12 (тоже документ)

    все правильно
  12. TopicStarter Overlay
    raven30
    Offline

    raven30

    Регистрация:
    29 янв 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    а если я в место кода
    Код:
    	//Параметры.ДобавитьЗначение(?((Модифицированность()=0)и(ПустоеЗначение(ТекущийДокумент())=0), ТекущийДокумент(), глВзятьКонтекст(Контекст)), "Контекст");
    
    
    делаю код
    Код:
    	Параметры.Установить("Контекст",глВзятьКонтекст(Контекст));
    
    
    то сообщает
    ГрупповойКонтекст
    100
  13. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    ну да, прос то синтаксическая ощибка была "СписокЗначения"
    теперь-то все должно работать
  14. TopicStarter Overlay
    raven30
    Offline

    raven30

    Регистрация:
    29 янв 2009
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Форма открывается, некоторые данные попадают, а
    основные организация и контрагент нет(.
  15. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Так не бывает... Если попадает через контекст то ВСЕ или НИЧЕГО.

Поделиться этой страницей