Имя: Пароль:
1C
 
Заполнение табличной части (((
0 lamme
 
04.03.20
10:37
БУХ 8,3 3.0
Внешняя обработка по заполнению табл части.
Цель - в документ Х открыть выбор другого типа документа У и по нему заполнить табличну. часть исходного документа.
Вроде просто.


У обработки - реквизит обработки - ОбъектНазначения - это документ объект типа ДокументОбъект.ОтчетОРозничныхПродажах

Из документа ОтчетОРозничныхПродажах открываю заполнение табл частей - выбирается документ тот что мне нужен



&НаКлиенте
Процедура ВыбратьЭлементДокументаКонец(Значение, ДопПараметры) Экспорт
    Если Значение = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    
       ВыполнитьЗаполнениеНаСервере(Значение);
    
    //КопироватьДанныеФормы(ИсхДокумент, ВладелецФормы.Объект);

КонецПроцедуры


&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
        
    ПараметрыФормы  = Новый Структура("РежимВыбора, ЗакрыватьПриВыборе", Истина, Истина);
    ОбработкаВыбора = Новый ОписаниеОповещения("ВыбратьЭлементДокументаКонец", ЭтаФорма,
        Новый Структура("Исхдокумент", ОбъектыНазначенияМассив[0]));
        
    ЭтотОбъект.ОбъектНазначения     = ОбъектыНазначенияМассив[0];
    
    
    ОткрытьФорму("Документ.ОтчетОРозничныхПродажах.ФормаВыбора", ПараметрыФормы,
        ЭтаФорма, , , , ОбработкаВыбора);
    
    
    
КонецПроцедуры



и вот тут вот какой то прикол

&НаСервере
Функция ВыполнитьЗаполнениеНаСервере(ВыбранныйДокумент)
    ЭтотОбъект.ОбъектНазначения.Продукция.Очистить(); - Объект недоступен для изменения
//    Возврат ОбъектЗаполнения;
КонецФункции

предполагаю = что там ссылка на объект

проверяю

&НаСервере
Функция ВыполнитьЗаполнениеНаСервере(ВыбранныйДокумент)

Если ТипЗнч(ЭтотОбъект.ОбъектНазначения) = тип("ДокументСсылка.ОтчетПроизводстваЗаСмену") тогда
        сообщить ("1");
    иначе    
        сообщить ("2");
    конецесли;    

конецфункции


Возвращает 1 - т.е. это всяко ссылка.
а где прошло преобразование из документобъект в ссылку ?
1 Cyberhawk
 
04.03.20
10:46
Меняй не объекты БД в памяти, а данные формы
2 lamme
 
04.03.20
10:46
пытаюсь ..
и заблудился ..
3 Cyberhawk
 
04.03.20
10:47
В документации по нужной подсистеме БСП есть примеры
4 d4rkmesa
 
04.03.20
10:52
ЭтотОбъект.ОбъектНазначения.Продукция.Очистить()
поменяй на
Объект.ОбъектНазначения.Продукция.Очистить()
5 D_E_S_131
 
04.03.20
10:57
(4) У ссылки ТЧ очищать?
6 lamme
 
04.03.20
10:58
а тогда вопрос

обработка начинает свою жизнь из процедуры формы
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт


и где тут -в этих параметрах - данныеформы ?
7 D_E_S_131
 
04.03.20
11:00
&НаСервере
Функция ВыполнитьЗаполнениеНаСервере(ВыбранныйДокумент)

    ДокОбъект = РеквизитФормыВЗначение("Объект");

    ДокОбъект.Продукция.Очистить();

КонецФункции
8 D_E_S_131
 
04.03.20
11:01
...и после всех очисток/заполнений в конце:

ЗначениеВРеквизитФормы(ДокОбъект, "Объект");
9 Cyberhawk
 
04.03.20
11:30
(7) (8) Такое можно рекомендовать только от безысходности