1. slava9119 16.05.18 19:58 Сейчас в теме

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

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

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

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


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

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

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

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

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

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

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

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


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

        КонецЦикла ;


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

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


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


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

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы интеграций (1С)
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы сервисов FRM на 1С
Москва
зарплата от 150 000 руб.
Полный день

Консультант-аналитик 1С (ЗУП)
Санкт-Петербург
Полный день