Как сохранить пометки в табличной части обработки

1. sergqwert15 3 07.09.21 20:28 Сейчас в теме
Есть 2 таблицы: таблица по документу-основанию и таблица по товарным позициям. Я выбираю документ и смотрю товарные позиции по нему. Отмечаю галочками некоторые позиции по товарам и перехожу к другому документу. В первом документе почему-то остаются не отмеченными позиции по документу-основанию. Как их сохранить? Конфигурация УТ 10.3.

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


Процедура КнопкаВыполнитьНажатие(Кнопка)
	
		Для каждого СтрТов из СписокТоваров Цикл   
			Если СтрТов.Отметка = Истина  Тогда        

				  	
	Запрос = Новый Запрос;      
	
	Запрос.УстановитьПараметр("МассивНоменклатур", СписокТоваров.Выгрузить().Скопировать(Новый Структура("Отметка",Истина)).ВыгрузитьКолонку("Номенклатура"));
	Запрос.УстановитьПараметр("ДатаНач", ЭлементыФормы.НачДата.Значение);
	Запрос.УстановитьПараметр("ДатаКон", ЭлементыФормы.КонДата.Значение);

	Запрос.Текст = "ВЫБРАТЬ
	               |	ПоступлениеТоваровУслуг.Дата КАК Дата,
	               |	ПоступлениеТоваровУслуг.Ссылка КАК Ссылка,
	               |	ПоступлениеТоваровУслуг.Организация,
	               |	ПоступлениеТоваровУслуг.Контрагент,
	               |	ПоступлениеТоваровУслуг.СуммаДокумента КАК СуммаДокумента,
	               |	ПоступлениеТоваровУслуг.ДоговорКонтрагента,
	               |	ПоступлениеТоваровУслугТовары.ЕдиницаИзмерения,
	               |	ПоступлениеТоваровУслугТовары.Количество,
	               |	ПоступлениеТоваровУслугТовары.Коэффициент,
	               |	ПоступлениеТоваровУслугТовары.Номенклатура,
	               |	ПоступлениеТоваровУслугТовары.СтавкаНДС,
	               |	ПоступлениеТоваровУслугТовары.Сумма КАК Сумма,
	               |	ПоступлениеТоваровУслугТовары.СуммаНДС КАК СуммаНДС,
	               |	ПоступлениеТоваровУслугТовары.Цена КАК Цена,
	               |	ПоступлениеТоваровУслугТовары.Склад,
	               |	ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры,
	               |	ПоступлениеТоваровУслуг.СкладОрдер,
	               |	ПоступлениеТоваровУслугТовары.НомерСтроки,
	               |	ПоступлениеТоваровУслугТовары.Номенклатура.Производитель,
	               |	ПоступлениеТоваровУслугТовары.СерияНоменклатуры
	               |ИЗ
	               |	Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
	               |		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
	               |		ПО ПоступлениеТоваровУслуг.Ссылка = ПоступлениеТоваровУслугТовары.Ссылка
	               |ГДЕ
	               |	ПоступлениеТоваровУслугТовары.Номенклатура В(&МассивНоменклатур)
	               |	И ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон";
				   
	РезультатЗапроса = Запрос.Выполнить();
	тз = Новый("ТаблицаЗначений");
	тз = Запрос.Выполнить().Выгрузить();
	ДокРеализация = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
		ДокРеализация.Дата = ТекущаяДата();
		Для Каждого Строка из тз Цикл
			ДокРеализация.Организация = Строка.Организация;
			ДокРеализация.Склад = Строка.СкладОрдер;
			ДокРеализация.Контрагент = Строка.Контрагент;           
			ДокРеализация.ДоговорКонтрагента = Строка.ДоговорКонтрагента;
		КонецЦикла;

		ДокРеализация.Товары.Очистить();
		
		ДокРеализация.Товары.Загрузить(тз);
				
					
		ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ДокРеализация, "Продажа", Неопределено);
				
		ДокРеализация.Записать();
		 ДокРеализация.ПолучитьФорму().Открыть();
		 
		 	КонецЕсли;
	КонецЦикла;
КонецПроцедуры
Показать
Прикрепленные файлы:
СозданиеРТУНаОснованииПТУ.epf
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 08.09.21 06:53 Сейчас в теме
(1)создать реквизит формы типа ТЗ, и сохранять отметки в ней.При активизации другой строки читать имеющиеся отметки и проставлять. При отметке сохранять в ТЗ
4. 603692 3 08.09.21 11:57 Сейчас в теме
(1)вы это делаете при активизации строки, в этом и проблема
"СписокТоваров.Очистить();" - тут вы потеряли ваши отметки.
Добавьте в ТЧ СписокТоваров реквизит Документ. По нему делайте связь с верхней таблицей и не очищайте ее.
3. user925427 126 08.09.21 09:44 Сейчас в теме
А какой смысл в этой конструкции:
СокрЛП(Строка(ТекущаяСтрока.Отметка));
?
Почему не используете тип Булево для колонки Отметка?
Оставьте свое сообщение

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