Имя: Пароль:
1C
1С v8
Вызвать интерактивное изменение поля в ТЧ дока
0 Krolik Bezobraznik
 
06.11.14
10:30
Есть обработка в которой я получаю некий список документов.
Задача вызвать процедуру интерактивного изменения поля, для того чтобы отработался код, который там записан. Не УФ.

Я решил получить объект. Затем получаю форму дока и пытаюсь вызвать процедуру интерактивного  изменения

    Пока РезЗапроса.Следующий() Цикл
        ОбъектДока = РезЗапроса.Ссылка.ПолучитьОбъект();
        ФормаДока = ОбъектДока.ПолучитьФорму("ФормаДокумента");
        ТЧФормы = ОбъектДока.ПолучитьФорму("ФормаДокумента").Материалы;
        Для каждого СтрокаТЧ ИЗ ТЧФормы Цикл
            ФормаДока.ЭтотОбъект.МатериалыСтатьяЗатратПриИзменении(Неопределено);
        КонецЦикла;
    КонецЦикла;

Ругается на то что нет процедуры МатериалыСтатьяЗатратПриИзменении.

Как ее вызвать?
1 Looser-1c
 
06.11.14
10:32
Анафейхоа там .ЭтотОбъект?
2 Krolik Bezobraznik
 
06.11.14
10:36
(1) Тестировал, думал может так удасться вызвать =)
3 folo
 
06.11.14
10:37
ФормаДока.МатериалыСтатьяЗатратПриИзменении(строкаТЧ.материал);
может вместо неопределено туда ссылку на материал передать?
Что сейчас в команде в параметре - элемент ?
4 Krolik Bezobraznik
 
06.11.14
10:38
(3) Да. Он в процедуре не используется. В процедуре интерактивного изменения есть такой код в начале
СтрокаТабличнойЧасти = ЭлементыФормы.Материалы.ТекущиеДанные;

Следовательно надо еще двигать курсор по ТЧ
5 butterbean
 
06.11.14
10:40
(4) просто сделай другую процедуру, скопируй в нее код
6 Ник второй
 
06.11.14
10:41
(0) Опиши полностью задачу, нафуя этот геморой
7 Krolik Bezobraznik
 
06.11.14
10:41
(5) Думал над этим, но там есть определенные сложности. Могу скинуть код из процедуры интерактивного изменения. Может подскажете

Процедура МатериалыСтатьяЗатратПриИзменении(Элемент)
    
    СтрокаТабличнойЧасти = ЭлементыФормы.Материалы.ТекущиеДанные;
    
    ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл(СтрокаТабличнойЧасти, "Материалы", ОтражатьВБухгалтерскомУчете, ОтражатьВНалоговомУчете);
    
    СтрокаТабличнойЧасти.СтатьяЗатратНДС = СтрокаТабличнойЧасти.СтатьяЗатрат;
    
    УстановитьДоступностьСубконто(СтрокаТабличнойЧасти);
    
    РаботаСДиалогами.ПриВыбореСчетаВТабличномПоле(СтрокаТабличнойЧасти.СчетЗатрат,
        СтрокаТабличнойЧасти.Субконто1, мКолонкиМатериалы.Субконто1,
        СтрокаТабличнойЧасти.Субконто2, мКолонкиМатериалы.Субконто2,
        СтрокаТабличнойЧасти.Субконто3, мКолонкиМатериалы.Субконто3);
        
    РаботаСДиалогами.ПриВыбореСчетаВТабличномПоле(СтрокаТабличнойЧасти.СчетЗатратНУ,
        СтрокаТабличнойЧасти.СубконтоНУ1, мКолонкиМатериалы.СубконтоНУ1,
        СтрокаТабличнойЧасти.СубконтоНУ2, мКолонкиМатериалы.СубконтоНУ2,
        СтрокаТабличнойЧасти.СубконтоНУ3, мКолонкиМатериалы.СубконтоНУ3);    
        
    Если мУказаниеПроектовВТабличнойЧастиДокументов Тогда
        УправлениеПроектами.УстановитьПроектПоУмолчанию(Подразделение, СтрокаТабличнойЧасти.СтатьяЗатрат, СтрокаТабличнойЧасти.Проект);
    КонецЕсли;
    
КонецПроцедуры // МатериалыСтатьяЗатратПриИзменении()
8 butterbean
 
06.11.14
10:43
(7) какие сложности? замени ЭлементыФормы.Материалы.ТекущиеДанные на свою СтрокаТЧ и остальные реквизиты документа правильно передай
9 Krolik Bezobraznik
 
06.11.14
10:44
(6) Я ж говорю есть перечень доков в которых надо перезаполнить колонки ТЧ. Счет затрат и Счет затрат НУ. Можно конечно тупо им присвоить необходимые значения НО меня смущает то, что есть процедура интерактивного изменения и она помимо изменения этих колонок меняет еще много чего. Вот потому я считаю что было бы корректным вызвать эту процедуру интерактивного изменения.
10 Krolik Bezobraznik
 
06.11.14
10:46
(8) Да вот не хочется менять то, что уже работает.
11 butterbean
 
06.11.14
10:47
(10) это работает в форме документа и в контексте этой формы, из какой-то левой обработки это не заработает и не должно — переноси код в свою обработку
12 Krolik Bezobraznik
 
06.11.14
10:48
(11) ОКЕ надеялся обойтись без этого. но =)) СПС
13 folo
 
06.11.14
10:50
можно сделать процедуру, куда передавать либо текущие данные, либо СтрокуТЧ.
код начиная с ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл...
И в ней уже все обрабатывать.
14 hhhh
 
06.11.14
10:51
(12) во-первых вот это вам на фиг не нужно

    УстановитьДоступностьСубконто(СтрокаТабличнойЧасти);
    
    РаботаСДиалогами.ПриВыбореСчетаВТабличномПоле(СтрокаТабличнойЧасти.СчетЗатрат,
        СтрокаТабличнойЧасти.Субконто1, мКолонкиМатериалы.Субконто1,
        СтрокаТабличнойЧасти.Субконто2, мКолонкиМатериалы.Субконто2,
        СтрокаТабличнойЧасти.Субконто3, мКолонкиМатериалы.Субконто3);
        
    РаботаСДиалогами.ПриВыбореСчетаВТабличномПоле(СтрокаТабличнойЧасти.СчетЗатратНУ,
        СтрокаТабличнойЧасти.СубконтоНУ1, мКолонкиМатериалы.СубконтоНУ1,
        СтрокаТабличнойЧасти.СубконтоНУ2, мКолонкиМатериалы.СубконтоНУ2,
        СтрокаТабличнойЧасти.СубконтоНУ3, мКолонкиМатериалы.СубконтоНУ3);  

это устанавливает доступность и видимость колонок на форме.
15 Krolik Bezobraznik
 
06.11.14
11:08
(14) Спс, дельное замечание, я на это внимания не обратил
16 Krolik Bezobraznik
 
06.11.14
11:14
Всем спс, не так много кода пришлось переносить. Но все же до последнего надеялся, что можно вызывать процедуру интерактивного изменения поля формы из внешней обработки =(
Независимо от того, куда вы едете — это в гору и против ветра!