Заполнение ТЧ открытого документа

1. aritochka777 22.11.21 13:46 Сейчас в теме
Ребят, срочно, помогите!
Есть открытый документ, в нем есть кнопка, при нажатии на которую должна заполняться табличная часть документа.

В отладчике по коду значения новой строке присваиваются, но когда код отрабатывается, то ТЧ остается пустой

Что нужно сделать, чтобы строки появились в ТЧ?


Для Каждого стр Из ТЗДанные Цикл	 

     СтруктураПоиска = Новый Структура("СотрудникСтрокой", СокрЛП(стр.Сотрудник)); 
       

     МассивНайденныхСтрок = ТЗНачислений.НайтиСтроки(СтруктураПоиска); 
     
    
     Если МассивНайденныхСтрок.Количество() > 0 Тогда 
      

     	НовСтр = ОбъектДок.Удержания.Добавить();
		НовСтр.Сотрудник = стр.Сотрудник;
		НовСтр.Удержание = ПланыВидовРасчета.Удержания.НайтиПоКоду("УВ");
		
		  
     КонецЕсли; 
      
	КонецЦикла;
Показать
По теме из базы знаний
Найденные решения
2. user1671936 1 22.11.21 13:59 Сейчас в теме
Если МассивНайденныхСтрок.Количество() > 0 Тогда

Документ = ОбъектДок.ПолучитьОбъект();
НовСтр = ОбъектДок.Удержания.Добавить();
НовСтр.Сотрудник = стр.Сотрудник;
НовСтр.Удержание = ПланыВидовРасчета.Удержания.НайтиПоКоду("УВ");


Документ.Записать();

КонецЕсли;
Показать
13. starjevschik 23.11.21 11:03 Сейчас в теме
(11) да, нужно обновить форму, в базу изменения записали, а форма показывает старый вариант. Можно это проверить - в форме после выполнения кода нажать "Перечитать" и посмотреть, записалось что надо или нет.


(12) нет, там именно объект-документ заполняется
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. user1671936 1 22.11.21 13:59 Сейчас в теме
Если МассивНайденныхСтрок.Количество() > 0 Тогда

Документ = ОбъектДок.ПолучитьОбъект();
НовСтр = ОбъектДок.Удержания.Добавить();
НовСтр.Сотрудник = стр.Сотрудник;
НовСтр.Удержание = ПланыВидовРасчета.Удержания.НайтиПоКоду("УВ");


Документ.Записать();

КонецЕсли;
Показать
4. grumpi 22.11.21 15:18 Сейчас в теме
(1) Может нужно обновить форму?

Заполнение выполняется в общем модуле?
Если выполняется в модуле формы документа. тогда

НовСтр = Объект.Удержания.Добавить();
НовСтр.Сотрудник = стр.Сотрудник;
НовСтр.Удержание = ПланыВидовРасчета.Удержания.НайтиПоКоду("УВ");

А после ЭтаФорма.Прочитать ();
либо ОбновитьОтображениеДанных()
5. glek 119 23.11.21 07:18 Сейчас в теме
(1) Если открытый документ, в котором кнопка, то непонятно, что такое "ОбъектДок"...
3. user1671936 1 22.11.21 14:02 Сейчас в теме
Либо ,если по кнопке надо создавать новый документ, то :

НовыйДок = Документы.НужныйДокумент.СоздатьДокумент();
6. retr0 23.11.21 07:29 Сейчас в теме
Похоже на то, будто автор заполняет новый экземпляр объекта, а не текущий. Ну и в целом из приведенного отрывка мало понятно происходящее...
7. aritochka777 23.11.21 09:56 Сейчас в теме
Ребят, через расширение добавляю кнопку на форму. Документ уже существует.
При нажатии на кнопку читается файл, и данными заполняется ТЧ документа.
ОбъектДок - Это ДокументОбъект
8. starjevschik 23.11.21 10:10 Сейчас в теме
(7) без кода не понять, похоже. А код секретный. Вывод: задача не решается.
Где-то существует документ, в какой-то форме есть кнопка. Ну секретные программы так и пишутся, наверное, чтобы враг не разобрался никогда.
9. aritochka777 23.11.21 10:21 Сейчас в теме
ВОТ КОД Всей процедуры, выполняется на сервер


текОбъект = Объект.Ссылка;	                            
	Выполнено = Ложь;
	
		
		ИмяФайла = "c:\" + Формат(текОбъект.МесяцНачисления,"ДФ='MMMM yyyy'") + ".txt";
 Если ПустаяСтрока(ИмяФайла) Тогда
  Возврат;
 КонецЕсли;
 
 ФайлТЗ = Новый ТекстовыйДокумент;
 ФайлТЗ.Прочитать(ИмяФайла);
ТЗДанные = ЗагрузитьДанныеТЗ(ФайлТЗ.ПолучитьТекст());                    

ОбъектДок = текОбъект.ПолучитьОбъект();

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

     СтруктураПоиска = Новый Структура("СотрудникСтрокой", СокрЛП(стр.Сотрудник)); 
          

     МассивНайденныхСтрок = ТЗНачислений.НайтиСтроки(СтруктураПоиска); 
     
    
     Если МассивНайденныхСтрок.Количество() > 0 Тогда 
      

     	НовСтр = ОбъектДок.Удержания.Добавить();
		НовСтр.Сотрудник = ТЗНачислений.Сотрудник; //стр.Сотрудник;
		НовСтр.Удержание = ПланыВидовРасчета.Удержания.НайтиПоКоду("УВ");
	ОбъектДок.Записать();	
		  
     КонецЕсли; 
      
	КонецЦикла;	
			
	Если Выполнено Тогда 
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Загрузка завершена";
		Сообщение.Сообщить();
	КонецЕсли;
Показать
10. starjevschik 23.11.21 10:36 Сейчас в теме
(9) а обновление формы где?
И вообще это форма чего?
Объект - это что?
ох уж эти секретные разработки, ничего не поймешь. Так если б они хотя бы работали! А то ни исправить, ничего.
11. aritochka777 23.11.21 10:41 Сейчас в теме
(10) Форма документа
Объект - ДанныеФормыСтруктура.

(10)
а обновление формы где?

ОбновитьОтображениеДанных() - Это выполнить нужно?
12. sssss_aaaaa_2011 23.11.21 10:55 Сейчас в теме
(11)
Объект - ДанныеФормыСтруктура.
То есть ты пытаешься не табличную часть документа заполнить, а некие данные на форме, которые, естественно, данными из пустой табличной части затираются?
13. starjevschik 23.11.21 11:03 Сейчас в теме
(11) да, нужно обновить форму, в базу изменения записали, а форма показывает старый вариант. Можно это проверить - в форме после выполнения кода нажать "Перечитать" и посмотреть, записалось что надо или нет.


(12) нет, там именно объект-документ заполняется
14. aritochka777 23.11.21 11:27 Сейчас в теме
(13) ОбновитьОтображениеДанных() Это не работает.
Программа сама предлагает перечитать данные.
Есть ли какой- либо еще способ перечитать данные программно?
15. starjevschik 23.11.21 11:50 Сейчас в теме
16. aritochka777 23.11.21 13:07 Сейчас в теме
(15)
Форма обновилась, данные появились.
Но только Сотрудник не заполнился

НовСтр.Сотрудник = стр.Сотрудник;

стр.Сотрудник - справочникССылка.Сотрудники.
новСтр.Сотрудник - тоже справочникСсылка.Сотрудники.

При отладке (в конфигураторе) присваивает значение.
После выполнения кода, в форму не выводит значение реквизита.

В чем ошибка? Пжл, подскажите
17. starjevschik 23.11.21 13:33 Сейчас в теме
(16) если там написано буквально так
НовСтр.Сотрудник = ТЗНачислений.Сотрудник;

то это судя по всему ошибка, т.к. ТЗНачислений это похоже на таблицу значений.
Но это уже отладчиком надо внимательно смотреть
18. aritochka777 23.11.21 13:46 Сейчас в теме
НовСтр.Сотрудник = МассивНайденныхСтрок[0].Сотрудник

Вот так выбираю нужную строку,
по типу данные соответствуют - справочникСсылка.Сотрудники

Все равно не записывает в форме этот реквизит
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

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

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

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

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)