ЗУП 3.1 загрузка реквизита документа из шапки документа в табличную часть

1. Вячеслав Остробрюхов (slava9119) 16.05.18 19:58 Сейчас в теме
Здравствуйте, помогите пожалуйста решить вопрос, конфигурация ЗУП КОРП 3.1, в документе Назначение планового начисления, нужно дату из реквизита Дата Окончания, при нажатии на кнопку выгрузить в табличную часть. Сделал это как внешнюю обработку через кнопку на форме :

&НаКлиенте
Процедура Заполнить(Команда)
    ЗаполнитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    НазначениеПлановогоНачисления.Ссылка КАК Ссылка,
    |    НазначениеПлановогоНачисления.ДатаОкончания КАК ДатаОкончания
    |ИЗ
    |    Документ.НазначениеПлановогоНачисления КАК НазначениеПлановогоНачисления
    |ГДЕ
    |    НазначениеПлановогоНачисления.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("ссылка", ВыборДок ) ;
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        ДатаОкон =(ВыборкаДетальныеЗаписи.ДатаОкончания) ;
        ОБ = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
        
        Для каждого стр из ОБ.сотрудники цикл
            Стр.ДатаОкончания = ДатаОкон;
            
        КонецЦикла ;
    КонецЦикла;
    
    ОБ.Записать(РежимЗаписиДокумента.Проведение);
    
КонецПроцедуры
Показать


Код работает, но мне нужно сделать как внешнюю обработку через "ЗаполнениеОбъекта", чтобы кнопка появилась на форме в самом документе. Тут возникли сложности, при нажатии на кнопку выдаёт ошибку :

{ВнешняяОбработка.ЗаполнениеТабличнойЧасти.Форма.Форма.Форма(37)}: Значение не является значением объектного типа (Записать)
ОБ.Записать(РежимЗаписиДокумента.Запись);

Спасибо
Ответы
2. Константин Хоров (user705522_constantin_h) 3 16.05.18 22:38 Сейчас в теме
(1)У вас
ОБ = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();

создаётся внутри цикла, а
ОБ.Записать(РежимЗаписиДокумента.Проведение);

за пределами цикла. Если выборка пустая, записывать нечего.
3. Вячеслав Остробрюхов (slava9119) 16.05.18 23:31 Сейчас в теме
Перенес, ошибка пропала, но код всё равно не отрабатывает, посмотрите пожалуйста, может увидите ошибку

&НаКлиенте
Процедура Заполнить(Команда)
	ЗаполнитьНаСервере(ВыборДок);
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьНаСервере(ссылка)
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	НазначениеПлановогоНачисления.Ссылка КАК Ссылка,
	|	НазначениеПлановогоНачисления.ДатаОкончания КАК ДатаОкончания
	|ИЗ
	|	Документ.НазначениеПлановогоНачисления КАК НазначениеПлановогоНачисления
	|ГДЕ
	|	НазначениеПлановогоНачисления.Ссылка = &Ссылка";
	
	Запрос.УстановитьПараметр("Ссылка", ВыборДок ) ;
	
	РезультатЗапроса = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		ДатаОкон =(ВыборкаДетальныеЗаписи.ДатаОкончания) ;
		ОБ = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
		
		Для каждого стр из ОБ.сотрудники цикл
			
			ОБ.ДатаОкончания = ДатаОкон;
			ОБ.Записать(РежимЗаписиДокумента.Запись);

		КонецЦикла ;
	КонецЦикла;	
КонецПроцедуры


&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
	
	ЗаполнитьНаСервере(ОбъектыНазначенияМассив[0]);
	ФормаВладелец = ЭтаФорма.ВладелецФормы;	
	ФормаВладелец.Прочитать();
КонецПроцедуры
Показать
4. maip1 (maip1) 17.05.18 00:59 Сейчас в теме
(3) какую-нибудь ошибку выдает или просто не происходит ожидаемого?
5. Вячеслав Остробрюхов (slava9119) 17.05.18 01:11 Сейчас в теме
(4) По нажатию на кнопку ничего не происходит
Прикрепленные файлы:
ЗаполнениеТЧ INF.epf
6. Mihasya (Mihasya) 15 17.05.18 01:27 Сейчас в теме
а если вместо:
 Для каждого стр из ОБ.сотрудники цикл
            
            ОБ.ДатаОкончания = ДатаОкон;
            ОБ.Записать(РежимЗаписиДокумента.Запись);

        КонецЦикла ;


это:
Для каждого стр из ОБ.сотрудники цикл
            
            ОБ.ДатаОкончания = ДатаОкон;

        КонецЦикла ;
        ОБ.Записать(РежимЗаписиДокумента.Запись);
7. Вячеслав Остробрюхов (slava9119) 17.05.18 01:36 Сейчас в теме
8. Вячеслав Остробрюхов (slava9119) 17.05.18 15:16 Сейчас в теме
вроде понял, в чём проблема
&НаКлиенте
Процедура Заполнить(Команда)
	ЗаполнитьНаСервере(ВыборДок);
КонецПроцедуры


&НаСервере
Процедура ЗаполнитьНаСервере(Ссылка)
	
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	НазначениеПлановогоНачисления.Ссылка КАК Ссылка,
	|	НазначениеПлановогоНачисления.ДатаОкончания КАК ДатаОкончания
	|ИЗ
	|	Документ.НазначениеПлановогоНачисления КАК НазначениеПлановогоНачисления
	|ГДЕ
	|	НазначениеПлановогоНачисления.Ссылка = &Ссылка";
	Запрос.УстановитьПараметр("ссылка", ВыборДок ) ;
	
	РезультатЗапроса = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		ДатаОкон =(ВыборкаДетальныеЗаписи.ДатаОкончания) ;
		ОБ = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
		
		Для каждого стр из ОБ.сотрудники цикл
			
			Стр.ДатаОкончания = ДатаОкон;
			ОБ.Записать(РежимЗаписиДокумента.Запись);
			
			
		КонецЦикла ;
	КонецЦикла;
	
	
КонецПроцедуры


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