Скопировать строку из табличной части и вставить

1. Lllypuk 25.10.21 16:03 Сейчас в теме
Всем привет. Подскажите, как добавить еще одну ячейку к копированию строки из табличной части документа и вставить ее стандартными средствами. Есть две кнопки, на них две процедуры:
1.
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
	
	Если ПоЗапросу Тогда
		Возврат;
	КонецЕсли;
	
	Если Элементы.Товары.ВыделенныеСтроки.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	СкопироватьСтрокиНаСервере();
	ПоказатьОповещениеПользователя(НСтр("ru = 'Копирование в буфер обмена'"), Окно.ПолучитьНавигационнуюСсылку(), 
		СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Скопировано строк: %1'"), Элементы.Товары.ВыделенныеСтроки.Количество()));
	Оповестить("ДанныеСкопированыВБуферОбмена", Новый Структура("ИсточникКопирования", "Товары"), Объект.Ссылка);
	
КонецПроцедуры
Показать

2.
&НаКлиенте
Процедура ВставитьСтроки(Команда)
	
	Если ПоЗапросу Тогда
		Возврат;
	КонецЕсли;
	
	Количество = РезультатВставкиСтрок();
	Если Количество > 0 Тогда
		ПоказатьОповещениеПользователя(НСтр("ru = 'Вставка из буфера обмена'"), Окно.ПолучитьНавигационнуюСсылку(), 
			СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Вставлено строк: %1'"), Количество));
	КонецЕсли;
	
КонецПроцедуры
Показать

Оно вставляет стандартные данные, есть столбец который добавили и его не копирует, как сделать чтобы его тоже копировал и вставлял?
За ранее спасибо
По теме из базы знаний
Найденные решения
6. Lllypuk 09.11.21 11:28 Сейчас в теме
Сделал. Может кому пригодиться. Все происходит в "Общем модуле" - КопированиеСтрокСервер. На подобии поля "Цена" покажу.

В этой функции необходимо добавить наше поле которое нужно для копирования в запрос.
Функция ПолучитьСтрокиИзБуфераОбмена(ПараметрыОтбора = Неопределено) Экспорт
    Запрос = Новый Запрос(
		"ВЫБРАТЬ
    |	ТЗ.Цена
    Запрос.УстановитьПараметр("ТЗ", СтрокиДляВставки);
	ТекстУсловияОтбор = "";
КонецФункции 
Показать


Далее необходимо в функции иницилизировать наше поле которое собираемся копировать и вставлять
Функция ИнициализироватьТаблицуБуфераОбмена()
   ТаблицаСтрок.Колонки.Добавить("Цена", ОписаниеТиповДенежногоПоля);
КонецФункции 


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

			
			Для Каждого Колонка Из НоваяСтрока Цикл
        		Сообщить(Колонка);
    		КонецЦикла; 

Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Оберон 17 25.10.21 16:14 Сейчас в теме
(1) покажи что в СкопироватьСтрокиНаСервере() и РезультатВставкиСтрок()
3. Lllypuk 25.10.21 17:02 Сейчас в теме
(2)
&НаСервере
Процедура СкопироватьСтрокиНаСервере()
	
	СтандартнаяОбработка = Истина;
	
	КоммерческиеПредложенияДокументыПереопределяемый.ПриКопированииСтрокВБуферОбмена(ЭтотОбъект,
	                                                                                 Объект.Товары,
	                                                                                 Элементы.Товары.ВыделенныеСтроки, 
	                                                                                 "Товары",
	                                                                                 СтандартнаяОбработка);
	
	Если СтандартнаяОбработка Тогда
		
		ОбщегоНазначения.СкопироватьСтрокиВБуферОбмена(Объект.Товары, Элементы.Товары.ВыделенныеСтроки, "Товары");
		
	КонецЕсли;
	
КонецПроцедуры

Показать


&НаСервере
Функция РезультатВставкиСтрок()
	
	СтандартнаяОбработка = Истина;
	КоличествоСтрок      = 0;
	
	КоммерческиеПредложенияДокументыПереопределяемый.ПриВставкеСтрокИзБуфераОбмена(ЭтотОбъект, КоличествоСтрок, СтандартнаяОбработка);

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

Показать
4. Оберон 17 25.10.21 17:19 Сейчас в теме
(3)
вот тут копируется каждая строка, смотрите глубже по тексту в ОбщегоНазначения.СтрокиИзБуфераОбмена();

        Для Каждого СтрокаТаблицы Из ДанныеИзБуфераОбмена.Данные Цикл
            ЗаполнитьЗначенияСвойств(Объект.Товары.Добавить(), СтрокаТаблицы);
        КонецЦикла;
5. Lllypuk 25.10.21 18:00 Сейчас в теме
(4)Откладкой прошелся, при копировании и вставке туда даже не зашло отладкой
Функция СтрокиИзБуфераОбмена() Экспорт
	
	Результат = Новый Структура;
	Результат.Вставить("Источник", Неопределено);
	Результат.Вставить("Данные", Неопределено);
	
	Если ПустойБуферОбмена() Тогда
		Возврат Результат;
	КонецЕсли;
	
	ТекущийБуферОбмена = ПараметрыСеанса.БуферОбмена; // см. СтрокиИзБуфераОбмена
	Результат.Источник = ТекущийБуферОбмена.Источник;
	Результат.Данные = ПолучитьИзВременногоХранилища(ТекущийБуферОбмена.Данные);
	
	Возврат Результат;
КонецФункции

Показать
6. Lllypuk 09.11.21 11:28 Сейчас в теме
Сделал. Может кому пригодиться. Все происходит в "Общем модуле" - КопированиеСтрокСервер. На подобии поля "Цена" покажу.

В этой функции необходимо добавить наше поле которое нужно для копирования в запрос.
Функция ПолучитьСтрокиИзБуфераОбмена(ПараметрыОтбора = Неопределено) Экспорт
    Запрос = Новый Запрос(
		"ВЫБРАТЬ
    |	ТЗ.Цена
    Запрос.УстановитьПараметр("ТЗ", СтрокиДляВставки);
	ТекстУсловияОтбор = "";
КонецФункции 
Показать


Далее необходимо в функции иницилизировать наше поле которое собираемся копировать и вставлять
Функция ИнициализироватьТаблицуБуфераОбмена()
   ТаблицаСтрок.Колонки.Добавить("Цена", ОписаниеТиповДенежногоПоля);
КонецФункции 


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

			
			Для Каждого Колонка Из НоваяСтрока Цикл
        		Сообщить(Колонка);
    		КонецЦикла; 

Показать
Оставьте свое сообщение

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