БП 3.0.169.18 Как перечитать документ после заполнения программно?

1. pentanom 30 20.02.25 12:51 Сейчас в теме
Сделал внешнюю обработку заполнения документа. Документ заполняется, но для того, чтобы увидеть результат, нужно его перечитать. Как это сделать программно? Конфигурация типовая "на замке". Вносить какие-то изменения в конфигурацию не хочется.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 81 20.02.25 12:58 Сейчас в теме
(1) о том, как именно вы выполняете заполнение документа, мы должны догадаться?
5. pentanom 30 20.02.25 14:40 Сейчас в теме
(2)
(1) о том, как именно вы выполняете заполнение документа, мы должны догадаться?
Вот такая обработка
&НаСервере
Процедура ЗаполнитьРасшифровкуНаСервере()
	
    ТЗ = Док.Товары.Выгрузить();
	Для Каждого СтрРез Из ТЗ Цикл
		СтрРез.Сумма = СтрРез.Сумма*Процент/100;
	КонецЦикла;

	ЗаполнитьТЧ(Док,ТЗ)
	
КонецПроцедуры 

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
	Док = Параметры.ОбъектыНазначения[0];

КонецПроцедуры
Показать
7. nomad_irk 81 20.02.25 14:53 Сейчас в теме
(5) Я правильно понимаю, что на форме нужного документа есть кнопка, по которой открывается форма внешней обработки, выполняется её код:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

и открывается форма внешней обработки заполнения, в которой есть кнопка, вызывающая
&НаКлиенте
Процедура ЗаполнитьРасшифровку(Команда)

?
8. pentanom 30 20.02.25 14:58 Сейчас в теме
10. nomad_irk 81 20.02.25 15:06 Сейчас в теме
(8) Чтобы можно было перечитать документ после заполнения, нужно передать форму документа в виде владельца для открываемой формы, через один из параметров открытия формы.

Далее, сделать так:

&НаКлиенте
Процедура ЗаполнитьРасшифровку(Команда)
    ЗаполнитьРасшифровкуНаСервере();
//    Владелец.Обновить(); - вся форма целиком
//ИЛИ
//Владелец.ОбновитьОтображениеДанных(Владелец.Элементы.<ИмяТабличнойЧастиНаФорме>);
    Закрыть();
КонецПроцедуры 
11. pentanom 30 20.02.25 15:22 Сейчас в теме
(10)
(8) Чтобы можно было перечитать документ после заполнения, нужно передать форму документа в виде владельца для открываемой формы, через один из параметров открытия формы.
Где и как это сделать?
12. nomad_irk 81 20.02.25 15:31 Сейчас в теме
(11) там, где происходит открытие формы обработки, выполняющей заполнение документа
14. pentanom 30 20.02.25 15:41 Сейчас в теме
(12)
(11) там, где происходит открытие формы обработки, выполняющей заполнение документа
А можно вас попросить указать место прямо в тексте обработки, который я привел выше?
15. nomad_irk 81 20.02.25 15:56 Сейчас в теме
(14) Ваша обработка со сведениями о себе, значит ничего дополнительно делать не нужно, владелец формы задан.

Не нужно заполнять через ссылку, достаточно сделать:

&НаКлиенте
Процедура ЗаполнитьРасшифровку(Команда)
     ДокОбъект = ВладелецФормы.Объект;
     Для Каждого СтрРез Из ДокОбъект.Товары Цикл
           СтрРез.Сумма = СтрРез.Сумма * Процент / 100;
     КонецЦикла;
     Закрыть();
КонецПроцедуры
Прикрепленные файлы:
Пример_Заполнение.epf
pentanom; +1 Ответить
16. pentanom 30 20.02.25 16:43 Сейчас в теме
(15) Спасибо! Ваш вариант обработки работает, а мой (рабочий) пока нет :(
Но это, скорее всего, потому, что просто я не могу все делать НаКлиенте. Я использую таблицу значений для загрузки в табличную часть документа.
Буду ковыряться дальше.
19. antz 20.02.25 20:12 Сейчас в теме
(16) Чтобы в цикле по строкам пересчитать сумму - не нужно тч выгружать в таблицу значений, все прекрасно считается на клиенте.
20. pentanom 30 20.02.25 21:59 Сейчас в теме
(19)
(16) Чтобы в цикле по строкам пересчитать сумму - не нужно тч выгружать в таблицу значений, все прекрасно считается на клиенте.
Оказывается упрощенную обработку показывать нельзя:(
Вообще-то мне нужно сделать обработку для документа "Поступление на расчетный счет".
3. ico 20.02.25 13:15 Сейчас в теме
Чтобы считать документ, надо его записать. Записали, по ссылке открыли и считали записанное. Сравнили.
4. smirnova_a 20.02.25 14:34 Сейчас в теме
ОбновитьОтображениеДанных пробовали?
6. pentanom 30 20.02.25 14:40 Сейчас в теме
(4)
ОбновитьОтображениеДанных пробовали?
А куда это вставить?
9. smirnova_a 20.02.25 15:05 Сейчас в теме
если конфигурация на поддержке, то лучше через заполнение табличной части сделать, вот пример: https://infostart.ru/1c/articles/825702/
13. pentanom 30 20.02.25 15:39 Сейчас в теме
(9)
если конфигурация на поддержке, то лучше через заполнение табличной части сделать, вот пример: https://infostart.ru/1c/articles/825702/
Я просто написал пример обработки. Настоящая обработка гораздо сложнее.
17. karamazoff 124 20.02.25 19:26 Сейчас в теме
мать, ну тут что реально никого не осталось? ОповеститьОбИзменении
18. user2107191 20.02.25 19:29 Сейчас в теме
(17) Ты тут не умничай! А просто скажи куда вставить!!!
user1936660; +1 1 Ответить
21. pentanom 30 20.02.25 22:00 Сейчас в теме
(18)
(17) Ты тут не умничай! А просто скажи куда вставить!!!
Что так поздно? Тема уже почти закрыта.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот