Имя: Пароль:
1C
1С v8
ERP. Заполнение на основании и ДанныеЗаполнения
0 aleks_default
 
25.11.19
14:38
ERP 2.4, все типовое. Документ Счет на оплату. В модуле объекта документа стандартная процедура ОбработкаЗаполнения(ДанныеЗаполнения,СтандартнаяОбработка), внутри нее вызов процедуры ЗаполнитьПоРеализацииТоваров(ДанныеЗаполнения,ДанныеЗаполнения).
Если делаем ввод Счета на оплату на основании документа Реализация товаров, то на входе в обработку заполнения переменная ДанныеЗаполнения имеет тип ДокументСсылка.РеализацияТоваровУслуг, далее в процедуре ЗаполнитьПоРеализацииТоваров переменной ДанныеЗаполнения переприсваивается значение Структура и идет заполнение этой структуры по определенному алгоритму (не суть). Нигде, ни в процедуре ОбработкаЗаполнения ни в вызываемых из нее других процедурах, ни в обработчиках подписок на событие обработки заполнения, я не нашел присвоения значений реквизитам документа (ни в контексте, ни источникам в подписках). Вплоть до выхода из последней подписки на событие реквизиты созданного объекта документа незаполнены.
В процедуре ПриСозданииНаСервере нового документа все реквизиты уже заполнены.
Внимание вопрос! Каким образом происходит заполнение реквизитов нового документа?
Второй вопрос! Почему заполнения реквизитов не происходит при программном вызове процедуры заполнения через ДокументСчетНаОплатуОбъект.Заполнить(ДокументСсылкаНаРеализацию)?
Как работают, черт побери, эти ДанныеЗаполнения
1 FIXXXL
 
25.11.19
14:40
ИнициализироватьДокумент(ДанныеЗаполнения);
2 aleks_default
 
25.11.19
14:43
(1)Там тоже нет. Там заполняется только Организация и Менеджер.
3 aleks_default
 
25.11.19
14:44
Ну и некоторые другие реквизиты, но не все
4 FIXXXL
 
25.11.19
14:48
(3) все - это какие?
да и в типовой Процедура ЗаполнитьПоРеализацииТоваров(Знач Основание, ДанныеЗаполнения) много чего заполняется...
5 aleks_default
 
25.11.19
14:51
(4)Например, Договор.
6 FIXXXL
 
25.11.19
14:53
(5) (4)
Процедура ЗаполнитьПоРеализацииТоваров(Знач Основание, ДанныеЗаполнения) - заполняется
7 Timon1405
 
25.11.19
14:53
(0) см. свойство "Заполнять из данных заполнения" Реквизитов документа Счет
8 aleks_default
 
25.11.19
14:56
(6) Где конкретно? Там заполняется назначение платежа и таб. часть. А данные шапки которые получаются запросом, все записываются обратно в данные заполнения а не в реквизиты документа.
9 aleks_default
 
25.11.19
14:58
(7)Да галка стоит, но почему оно тогда не отрабатывает при вызове через ДокументОбъект.Заполнить()
10 FIXXXL
 
25.11.19
14:58
Синтаксис:

ОбработкаЗаполнения(<ДанныеЗаполнения>, <ТекстЗаполнения>, <СтандартнаяОбработка>)
Параметры:

<ДанныеЗаполнения>

Тип: Произвольный.
Значение, которое используется как основание для заполнения.
Если обработчик вызван при выполнении метода Заполнить, параметр равен параметру <ДанныеЗаполнения> метода Заполнить.
При обработке заполнения во время ввода на основании параметр имеет значение основания.
При интерактивном вводе нового из формы списка параметр является структурой, элементы которой соответствуют тем параметрам отбора формы списка, у которых способ сравнения Равно или ВСписке с единственным элементом списка. Если таких элементов отбор списка не содержит, данный параметр равен Неопределено. Если параметр <СтандартнаяОбработка> по окончании работы обработчика равен Истина (установлен по умолчанию), система автоматически произведет заполнение одноименными элементами структуры.
11 FIXXXL
 
25.11.19
14:59
обрати внимание
Если параметр <СтандартнаяОбработка> по окончании работы обработчика равен Истина (установлен по умолчанию), система автоматически произведет заполнение одноименными элементами структуры.
12 aleks_default
 
25.11.19
15:01
Параметр СтандартнаяОбработка при внешнем вызове через Заполнить() не используется, а значит он там всегда Истина
13 aleks_default
 
25.11.19
15:04
Проверил при внешнем вызове через Заполнить() в конце процедуры ОбработкаЗаполнения стандартнаяОбработка = истина, но нихрена не заполняет
14 FIXXXL
 
25.11.19
15:05
(9) ты точно передаешь в ДанныеЗаполнения
Тип("ДокументСсылка.РеализацияТоваровУслуг") ?
15 aleks_default
 
25.11.19
15:09
Короче смысл в том чтобы при смене Договора в Реализации товаров и услуг обновить договор и в созданном на основании Счете на оплату.
Сделал в форме Счета на оплату кнопку. Внутри такой код

ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.ЭтапыГрафикаОплаты.Очистить();
ДанныеЗаполнения = Объект.ДокументОснование;
ДокументОбъект.Заполнить(ДанныеЗаполнения);
ЗначениеВРеквизитФормы(ДокументОбъект,"Объект");
16 aleks_default
 
25.11.19
15:10
Ну в смысле задача вообще перезаполнить документ, а не только договор. Просто на договоре проверяю.
17 aleks_default
 
25.11.19
15:14
На выходе с этой строки ДокументОбъект.Заполнить(ДанныеЗаполнения), в отладке  - договор старый
18 aleks_default
 
25.11.19
15:24
Вообще непонятно как это работает. Внутри процедуры ОбработкаЗаполнения(до самого конца) ДанныеЗаполнения - это структура, а на выходе из процедуры ДокументОбъект.Заполнить(ДанныеЗаполнения) - ДанныеЗаполнения - это опять ДокументСсылка.РеализацияТоваровУслуг
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс