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

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

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

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


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

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

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

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

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


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

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


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

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


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

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

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

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

А после ЭтаФорма.Прочитать ();
либо ОбновитьОтображениеДанных()
5. glek 112 23.11.21 07:18 Сейчас в теме
(1) Если открытый документ, в котором кнопка, то непонятно, что такое "ОбъектДок"...
3. user1671936 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].Сотрудник

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

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

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

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

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству