Имя: Пароль:
1C
1С v8
Как из внешней обработки передать на форму строку
0 Ctyd
 
29.12.14
13:00
Есть бухгалтерия у которой ведется учет по документам расчета. но они вечно забывают заполнять списком документ. Не хочу открывать документ на редактирование. и сделал подключаемой обработкой авто заполнение списком.

СтрокаПлатеж=Объект.РасшифровкаПлатежа[0];
    
    
    СтруктураПараметровАвто=Новый Структура;
    
    СтруктураПараметровАвто.Вставить("УчитыватьФактическиеЗадолженности",Истина);
    СтруктураПараметровАвто.Вставить("УчитыватьОперативныеЗадолженности",Ложь);
    СтруктураПараметровАвто.Вставить("ПодбиратьСумму",Истина);
    СтруктураПараметровАвто.Вставить("СпособЗаполнения","ФИФО");
    СтруктураПараметровАвто.Вставить("СуммаДляПодбора",Объект.СуммаДокумента);
    СтруктураПараметровАвто.Вставить("ПоЗаявкам",Ложь);
    СтруктураПараметровАвто.Вставить("ПодбиратьПланируемыеДвижения",Ложь);
    СтруктураПараметровАвто.Вставить("НеПревышатьЗапланированныхЗначений",Ложь);
    СтруктураПараметровАвто.Вставить("ВключенныеВПлатежныйКалендарь",Ложь);
    СтруктураПараметровАвто.Вставить("ПодборПоСуммеПлатежа",Ложь);            
    
    Если истина Тогда // от тут или статья ддс или же отмена заполняет как хочет
        Зап=Новый Запрос();
        ЗАп.УстановитьПараметр("Владелец",Объект.Контрагент);
        Зап.Текст=
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    ДоговорыКонтрагентов.ссылка как статья
        |ИЗ
        |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        |ГДЕ
        |    ДоговорыКонтрагентов.Владелец = &Владелец
        |    И ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем)
        |    И не ДоговорыКонтрагентов.ПометкаУдаления ";
        тбСтатьи=Зап.Выполнить().Выгрузить();
        тбСтатьи.Свернуть("статья");
        статья=Неопределено;
        ЕСли тбстатьи.Количество()=1 Тогда
            статья=тбСтатьи.получить(0).статья;
        Иначе
            статьяСтр = тбСтатьи.ВыбратьСтроку("Выберите по какому договору заполняем оплату.");
            Если статьяСтр <> Неопределено Тогда
                статья=статьяСтр.статья;
            КонецЕсли;
        КонецЕсли;
        Если статья = неопределено Тогда
        иначе
            от=новый ПостроительОтчета;
            от.Текст =
            "ВЫБРАТЬ
            |    ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента,
            |    ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток,
            |    ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток
            |ИЗ
            |    РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(, Контрагент = &Контрагент {ДоговорКонтрагента.*}) КАК ВзаиморасчетыСКонтрагентамиОстатки";
            отбор=от.Отбор;
            Если Отбор.Найти("ДоговорКонтрагента") = Неопределено Тогда
                Отбор.Добавить("ДоговорКонтрагента");
            КонецЕсли;
            стр=отбор.получить(0);
            стр.ВидСравнения=ВидСравнения.Равно;
            стр.Использование=Истина;
            стр.Значение=статья;
            найстройки=от.ПолучитьНастройки(Истина);
            СтруктураПараметровАвто.Вставить("ОтборПоДоговорам",найстройки);
            от="";
        КонецЕсли;
    КонецЕсли;
    
    СтруктураПараметров=Новый Структура;
    
    СтруктураПараметров.Вставить("Организация"                    ,Объект.Организация);
    СтруктураПараметров.Вставить("Контрагент"                    ,Объект.Контрагент);
    СтруктураПараметров.Вставить("ВалютаДокумента"                ,Объект.ВалютаДокумента);
    СтруктураПараметров.Вставить("СуммаДокумента"                ,Объект.СуммаДокумента);
    СтруктураПараметров.Вставить("ДатаДок"                        ,Объект.Дата);
    СтруктураПараметров.Вставить("ВидОперацииДок"                ,Объект.ВидОперации);
    СтруктураПараметров.Вставить("РасшифровкаПлатежа"            ,Объект.РасшифровкаПлатежа);
    СтруктураПараметров.Вставить("КурсДокумента"                ,Объект.КурсДокумента);
    СтруктураПараметров.Вставить("КратностьДокумента"            ,Объект.КратностьДокумента);
    СтруктураПараметров.Вставить("ТипЗадолженности"                ,">0");
    СтруктураПараметров.Вставить("Интерактивно"                    ,Ложь);
    СтруктураПараметров.Вставить("ПлатежПоСуммеВзаиморасчетов"    ,Истина);
    СтруктураПараметров.Вставить("СтруктураПараметровАвто"        ,СтруктураПараметровАвто);
    СтруктураПараметров.Вставить("ФормаОплаты"                    ,Перечисления.ВидыДенежныхСредств.Наличные);
    СтруктураПараметров.Вставить("ВидОперацииПлан"                ,УправлениеДенежнымиСредствами.ОпределитьВидОперацииПлан(Объект.ВидОперации));
    СтруктураПараметров.Вставить("ИмяРегистраПлан"                ,"ПланируемыеПоступленияДенежныхСредств");
    СтруктураПараметров.Вставить("БанковскийСчетКасса"            ,Объект.СчетОрганизации);
    СтруктураПараметров.Вставить("СсылкаНаДокумент"                ,?(Объект.Проведен, Объект.Ссылка, Объект.ЭтотОбъект));
    СтруктураПараметров.Вставить("ОтражатьВБухгалтерскомУчете"    ,Объект.ОтражатьВБухгалтерскомУчете);
    
    Объект.РасшифровкаПлатежа.Очистить();
    
    УправлениеДенежнымиСредствами.ЗаполнитьРасшифровкуПлатежей(СтруктураПараметров);
    
    Если Объект.РасшифровкаПлатежа.Количество()=0 Тогда
        НоваяСтрока=Объект.РасшифровкаПлатежа.Добавить();
    КонецЕсли;
    
    СуммаДокумента=Объект.РасшифровкаПлатежа.Итог("СуммаПлатежа");
    //
    //Объект.ЭлементыФормы.РасшифровкаПлатежа.ТекущаяСтрока=РасшифровкаПлатежа[0];
    //СтрокаПлатеж=Объект.ЭлементыФормы.РасшифровкаПлатежа.ТекущиеДанные;

заполняет оно в результате правильно но выскакивает ошибка

{Документ.ПлатежноеПоручениеВходящее.Форма.ФормаДокумента.Форма(1008)}: Ошибка при получении значения атрибута контекста (ДоговорКонтрагента)
    ВалютаВзаиморасчетовПоДоговору = СтрокаПлатеж.ДоговорКонтрагента.ВалютаВзаиморасчетов;
по причине:
Исполнение операции невозможно поскольку строка была удалена.
1 Ctyd
 
29.12.14
13:01
Как правильно передать на форму последние закоментированные строки??
2 Serg_1960
 
29.12.14
13:54
Ничего не понял, но попробую угадать :)

ФормаДокумента = Объект.ПолучитьФорму("ФормаДокумента");
ФормаДокумента.Обновить();
ФормаДокумента = Неопределено;
3 Serg_1960
 
29.12.14
14:20
Но твоя ошибка, кстати, не связана с твоим вопросом.

Ты используешь типовой алгоритм, который корректно работает в только в модуле формы. Там далее по тексту требуется установить текущую строку (что возможно) и присвоить текущие данные переменной "СтрокаПлатеж" - а она не экспортная и "из вне" недоступна. Она должна быть экспортной.
4 Ctyd
 
30.12.14
16:00
Другими словами: из подключаемой обработки ТЧ, я не смогу сделать это.