Имя: Пароль:
1C
1С v8
Обработка для изменения Договора в документе
0 ogion83
 
15.01.24
09:31
День добрый.
Появилась необходимость у некоторых документов "Списание с расчетного счета" поменять Договора. Создал внешнюю обработку. Она почему то не работает, в отладчике смотрю, меняет на нужный, а результат не сохраняется.
Пока ВыборкаДокументов.Следующий() Цикл
		 Док = ВыборкаДокументов.Ссылка.ПолучитьОбъект();
		 Если ВыборкаДокументов.Ссылка.ПолучитьОбъект().Контрагент <>
неопределено Тогда
		 Если ВыборкаДокументов.Ссылка.ПолучитьОбъект().Контрагент.Код =
"000006393" Тогда
			 Док.Записать(РежимЗаписиДокумента.ОтменаПроведения);
		 //	Док.Контрагент =
Справочники.Контрагенты.НайтиПоКоду("000006393");
			 Док.ЭтотОбъект.ДоговорКонтрагента =
Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000008267");
			 Док.Записать(РежимЗаписиДокумента.Проведение);
		 КонецЕсли;
		 КонецЕсли;
	 КонецЦикла;

Подобной обработкой в этих же документах менял Контрагентов, все работало, а вот с договорами почему то не выходит.
1 Волшебник
 
15.01.24
09:15
Док.ДоговорКонтрагента =
Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000008267");
2 2S
 
15.01.24
09:24
"ВыборкаДокументов.Ссылка.ПолучитьОбъект().Контрагент"
расстрелять н.уй
3 ogion83
 
15.01.24
09:29
(1) Что тут?
4 Волшебник
 
15.01.24
09:31
(3) зачем столько объектов получаете?
5 mikecool
 
15.01.24
09:31
(0) воспользуйся существующими обработками(с ИТС, интернета) , рано тебе лолматить бабушку писать код
6 ogion83
 
15.01.24
09:33
Пока ВыборкаДокументов.Следующий() Цикл
         Док = ВыборкаДокументов.Ссылка.ПолучитьОбъект();
         Если Док.Контрагент <>
Неопределено Тогда
         Если Док.Контрагент.Код =
"000006393" Тогда
             Док.Записать(РежимЗаписиДокумента.ОтменаПроведения);
         //    Док.Контрагент =
Справочники.Контрагенты.НайтиПоКоду("000006393");
             Док.ЭтотОбъект.ДоговорКонтрагента =
Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000008267");
             Док.Записать(РежимЗаписиДокумента.Проведение);
         КонецЕсли;
         КонецЕсли;
     КонецЦикла;
7 Волшебник
 
15.01.24
09:34
я же сказал в (1):
Док.ДоговорКонтрагента =
Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000008267");
8 ogion83
 
15.01.24
09:46
(5) Нашел обработку "Групповое изменение реквизитов". Документы нужные нашлись, но после обработки почему то Договоры все равно не поменялись.
9 ogion83
 
15.01.24
09:47
(7) У меня так и было, это я уже в попытках найти решение так сделал.
10 Мимохожий Однако
 
15.01.24
09:49
Отладчиком встань перед записью документа и посмотри, что там до и после твоих манипуляций
11 Мимохожий Однако
 
15.01.24
09:51
(0) Обрати внимание на договор, который подставляешь. Возможно, у него владелец другой или вид договора не подходящий
12 shuhard
 
15.01.24
09:52
(9)   Док.ЭтотОбъект.ДоговорКонтрагента =
это херня к чему ?

Док.ДоговорКонтрагента = ...
13 ogion83
 
15.01.24
09:54
Договор меняется автоматически если выбрать нужного Контрагента вручную. Через обработки так не происходит. Надо наверное чтобы при этом ещё срабатывала Процедура "При Изменении"?
14 ogion83
 
15.01.24
09:55
(12) я написал (9)
15 RVN
 
15.01.24
10:29
(8)
1. Проверь правильно ли у тебя обор настроен на нужные документы.
2. Поставь в обработке режим разработчика.
3. Убедись, что обработка отрапортовала о завершении без ошибок.
4. закрой документ и открой заново (если он был открыт)

З.Ы. делай сначала на копии базы, чтобы потом не было мучительно больно.
16 Волшебник
 
15.01.24
10:35
(9) Было нормально. Верните как было
17 Михаил Козлов
 
15.01.24
21:30
Договор в ТЧ РасшифровкаПлатежа.
18 ogion83
 
08.02.24
10:39
(5) Благодарю за подсказку. Помогла универсальная обработка "Групповое изменение реквизитов". Она показала, что в том документе несколько реквизитов "Договор", я в своей не тот указывал.
19 Волшебник
 
08.02.24
10:40
(18) Так не бывает. Имя реквизита должно быть уникально.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.