Изменения вида операции документа Реализации

1. user1809279 26.08.24 10:12 Сейчас в теме
Здравствуйте, такой вопрос, как можно поменять вид операции документа?

&НаСервере
Процедура ИзменитьРеализациюНаСервере()

ВыборкаДокументы = Документы.РеализацияТоваровУслуг.Выбрать(Объект.НачПериода,Объект.КонПериода);

Пока ВыборкаДокументы.Следующий() Цикл

ДокОбъект = Документы.РеализацияТоваровУслуг.НайтиПоНомеру("10000000078");
ДокОбъект = ВыборкаДокументы.ПолучитьОбъект();
ДокОбъект.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Услуги;
ДокОбъект.Записать();
КонецЦикла;
КонецПроцедуры

По остановке смотрю значение меняется, но при открытии самого документа, вид операции все так же общий остается
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
7. yispepotri 26.08.24 10:47 Сейчас в теме
(6) НайтиПоРеквизиту получает ссылку документа, а не выборку, у ссылки нет метода Следующий. Запросом получите необходимые документы . И по выборке получить объект ссылки документа и записать все что нужно в цикле
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user2033930 26.08.24 10:19 Сейчас в теме
Ну значит не записывает... Можешь для интереса даже версию данных сравнить.
3. yispepotri 26.08.24 10:21 Сейчас в теме
а зачем выборка, а потом поиск по номеру, вы какой из документов хотите изменить по выборке или который найден по номеру?

если по номеру, то

ДокОбъект = Документы.РеализацияТоваровУслуг.НайтиПоНомеру("10000000078");
ДокОбъект = ДокОбъект.ПолучитьОбъект();



вполне возможно, после записи вы просто не в том документе проверяете изменения
4. user1809279 26.08.24 10:24 Сейчас в теме
(3) Для проверки по конкретному документу
5. yispepotri 26.08.24 10:28 Сейчас в теме
(4) в данном случае у вас запись выполняется для всех документов, которые находит по выборке. В отладке в цикле посмотрите какой документ попадает в выборке и после записи проверьте запишется ли значение.
6. user1809279 26.08.24 10:42 Сейчас в теме
(5) Да все верно, выборка выбирала только те что с видом операции услуги, немного код изменила

Процедура ИзменитьРеализациюНаСервере()
	
	ВыборкаДокументы = Документы.РеализацияТоваровУслуг.НайтиПоРеквизиту("ВидОперации", Перечисления.ВидыОперацийРеализацияТоваров.ПродажаКомиссия);
    
    Пока ВыборкаДокументы.Следующий() Цикл
			
		ДокОбъект = ВыборкаДокументы.ПолучитьОбъект();
        ДокОбъект.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Услуги;
        ДокОбъект.Записать();
		
		Сообщить(ДокОбъект.ВерсияДанных); 
		
    КонецЦикла;
Показать

Но теперь метод цикла не видит


Метод объекта не обнаружен (Следующий)
{ВнешняяОбработка.СоздатьДокументыАВРнаОснованииРеализации.Форма.Форма.Форма(229)}: Пока ВыборкаДокументы.Следующий() Цикл
{ВнешняяОбработка.СоздатьДокументыАВРнаОснованииРеализации.Форма.Форма.Форма(243)}: ИзменитьРеализациюНаСервере();
7. yispepotri 26.08.24 10:47 Сейчас в теме
(6) НайтиПоРеквизиту получает ссылку документа, а не выборку, у ссылки нет метода Следующий. Запросом получите необходимые документы . И по выборке получить объект ссылки документа и записать все что нужно в цикле
8. user1809279 26.08.24 11:05 Сейчас в теме
(7) Хорошо, попробую, можете подсказать как правильно будет его сформулировать?
Потому что пока не особо понимаю

Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РеализацияТоваровУслуг.ВидОперации КАК ВидОперации,
		|	РеализацияТоваровУслуг.Ссылка КАК Ссылка
		|ИЗ
		|	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		|ГДЕ
		|	РеализацияТоваровУслуг.ВидОперации = &ВидОперации
		|	И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслуг.Ссылка";
	
	Запрос.УстановитьПараметр("ВидОперации", Перечисления.ВидыОперацийРеализацияТоваров.ПродажаКомиссия);
	Запрос.УстановитьПараметр("Ссылка", Документы.РеализацияТоваровУслуг);
		
	ВыборкаДокументы = Запрос.Выполнить().Выбрать();
	
    Пока ВыборкаДокументы.Следующий() Цикл
			
		ДокОбъект = ВыборкаДокументы.ПолучитьОбъект();
        ДокОбъект.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Услуги;
        ДокОбъект.Записать();
		
		 
		
    КонецЦикла;
Показать
9. yispepotri 26.08.24 11:07 Сейчас в теме
(8) в целом вы все правильно записали

это строка лишняя, если вы не хотите делать отбор по конкретному документу
И РеализацияТоваровУслуг.Ссылка = РеализацияТоваровУслуг.Ссылка



также если необходимо можно добавить условия на период
И РеализацияТоваровУслуг.Дата Между &ПериодНачало и &ПериодОкончания
10. user1809279 26.08.24 11:09 Сейчас в теме
(9) Да все верно, но добавила это условие, потому что появляется такая ошибка

Метод объекта не обнаружен (ПолучитьОбъект)
{ВнешняяОбработка.СоздатьДокументыАВРнаОснованииРеализации.Форма.Форма.Форма(244)}: ДокОбъект = ВыборкаДокументы.ПолучитьОбъект();
{ВнешняяОбработка.СоздатьДокументыАВРнаОснованииРеализации.Форма.Форма.Форма(255)}: ИзменитьРеализациюНаСервере();
11. yispepotri 26.08.24 11:11 Сейчас в теме
(10) просто нужно так обращаться к ссылке в цикле выборки

ВыборкаДокументы.Ссылка.ПолучитьОбъект(); 



Ссылка в данном случае будет иметь имя то, которое вы дадите в запросе, советую почитать различную документацию по составлению запросов, упростит работу в будущем
12. user1809279 26.08.24 11:16 Сейчас в теме
(11)
ВыборкаДокументы.Ссылка.ПолучитьОбъект();
а далее как правильно будет задать и записать новое значение?
13. yispepotri 26.08.24 11:19 Сейчас в теме
(12)
ваш вариант верный, вы получаете объект документа, меняете те значения которые необходимы и записываете документ
ДокОбъект = ВыборкаДокументы.Ссылка.ПолучитьОбъект();
ДокОбъект.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Услуги;
ДокОбъект.Записать();
14. user1809279 26.08.24 11:23 Сейчас в теме
(13)
ВыборкаДокументы.Ссылка.ПолучитьОбъект();
ДокОбъект.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Услуги;
ДокОбъект.Записать();

Вот тут нужно промежуточное написать, потому что ДокОбъект он не понимает?
15. yispepotri 26.08.24 11:26 Сейчас в теме
(14)
да конечно, присвоить значение и дальше уже с ним работать
ДокОбъект = ВыборкаДокументы.Ссылка.ПолучитьОбъект();
electr1chka; +1 Ответить
16. user1809279 26.08.24 11:35 Сейчас в теме
(15)
ДокОбъект = ВыборкаДокументы.Ссылка.ПолучитьОбъект();
Хорошо, спасибо, разобралась!
yispepotri; +1 Ответить
Оставьте свое сообщение

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