заполнение реквизита документа реквизитом другого документа

1. TABEZI1234 14.02.19 07:49 Сейчас в теме
Есть имеющиеся Док1 и Док2, Док1 создается на основании Док2. У них есть общий Реквизит. Если Реквизит у Док1 не заполнен, то должен быть заполнен из Реквизита Док2. док1 затем перезаписывается, а не перепроводится. это будет обработка с командой заполнения.

есть ли какие нибудь похожие наброски кода?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SedovSU@mail.ru 297 14.02.19 08:00 Сейчас в теме
(1) Правильно ли я понимаю что вы хотите чтобы у вас обработка это заполняла/перезаполняла/выполняла?
3. TABEZI1234 14.02.19 08:02 Сейчас в теме
(2)
сначала заполняет незаполненный реквизит Док1, затем этот имеющийся в базе док1 перезаписывается, но не перепроводится
5. SedovSU@mail.ru 297 14.02.19 08:07 Сейчас в теме +0.15 $m
(3) Док1.Записать(РежимЗаписиДокумента.Запись)
TABEZI1234; +1 Ответить
4. SedovSU@mail.ru 297 14.02.19 08:05 Сейчас в теме
ну что бы он просто записывал достаточно воспользовать методом: Документ.Записать(РежимЗаписиДокумента.Запись) И тогда он у вас не будет перепроводиться
TABEZI1234; +1 Ответить
6. SedovSU@mail.ru 297 14.02.19 08:16 Сейчас в теме
У вас только в этом был вопрос?
7. TABEZI1234 14.02.19 08:21 Сейчас в теме
(6)не только. Правильный ли порядок?
в цикле перебор документов док1, Условие - если в док1 не заполнен реквизит , то через связанные документы смотрим реквизит в документе док2, есть там есть , то берем это значение и вставляем в док1 и записываем документ.
8. SedovSU@mail.ru 297 14.02.19 08:25 Сейчас в теме +0.21 $m
(7) Ну да, то есть если вы хотите изменить в Док1. То с него и начинайте.
Берете все документы в цикле. По документы ищете док2. Смотрите заполнен ли реквизит или нет. Далее изменяете если нужно. У вас ведь документы же связаны Док1 и док2 по реквизиту ДокументОснования
9. TABEZI1234 14.02.19 09:20 Сейчас в теме
(8)
Правдоподобно ли?
Процедура СформироватьНаСервере();
[1C-CODE]Процедура СформироватьНаСервере();
 
 ПТУ = Документы.ПоступлениеТоваровУслуг;	
 Проект =Документы.ПоступлениеТоваровУслуг.НайтиПоРеквизиту(Проект);
 
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |	ЗаказПоставщику.Проект
               |ИЗ
               |	Документ.ЗаказПоставщику КАК ЗаказПоставщику";

ТЗ = Запрос.Выполнить().Выбрать();
Для каждого Проект Из ПТУ Цикл	
	
	Если  Не ЗначениеЗаполнено(Проект) Тогда
		
	
	   Для каждого Документ Из ТЗ Цикл
		
	    ЗаполнитьЗначенияСвойств(ТЗ, Документ)	
	   КонецЦикла;
    КонецЕсли;
    ПТУ.Записать(РежимЗаписиДокумента.Запись)
КонецЦикла;
КонецПроцедуры
Показать
10. SedovSU@mail.ru 297 14.02.19 09:37 Сейчас в теме
(9) как то не много запутано, вот тут у вас ошибка Проект =Документы.ПоступлениеТоваровУслуг.НайтиПоРеквизиту(Проект). Нужно как то так
СсылкаНаПроект =Документы.ПоступлениеТоваровУслуг.НайтиПоРеквизиту("ИмяРеквизитаПроект", Проект);


Для каждого Проект Из ПТУ Цикл - вот тут ошибка должна быть.

Сам смысл какой? Берете документы поступление товаров и услуг. (в нем есть поле проект). Далее обходите эти документы. Далее ищете данный проект в заказе поставщика? как то напутано все.

Правльно ли я понимаю вам нужно так. На основании заказа поставщика сделан документ поступление товаров и услуг. Если в постпулении не заполнен проект. то его нужно заполнить из заказа поставщику?
11. TABEZI1234 14.02.19 09:40 Сейчас в теме
(10) Благодарю. Да, задача такая
12. SedovSU@mail.ru 297 14.02.19 09:54 Сейчас в теме
(11) Получается

ДокументыПоступления = Документы.ПоступленияТоваровУслуг.Выбрать();
Пока ДокументыПоступления.Следующий Цикл

 // находим заказ поставщика - либо по связному реквизиту либо запроса. Как вам удобнее.
// пишу как будто найден заказ
ЗаказПоставщику = КакойЗаказаКоторыйНашлиПоСвзяи;

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

Конеццикла
Показать
TABEZI1234; +1 Ответить
13. TABEZI1234 14.02.19 09:57 Сейчас в теме
(12) Спасибо за участие.Дальше сам
Оставьте свое сообщение

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