Копирование элемента справочника "Номенклатура" с данными вкладок "Единицы" и "Свойства"

10.07.13

Разработка - Универсальные функции

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

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

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

См. также

Вставляем картинку из буфера обмена (платформа 1С 8.3.24)

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    2670    0    John_d    8    

54

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    4608    atdonya    22    

45

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    3961    ke.92@mail.ru    16    

61

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8822    YA_418728146    6    

141

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2071    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16144    133    sapervodichka    112    

129

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7243    quazare    8    

109
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. xbic 16 10.07.13 09:39 Сейчас в теме
Значение поля "КОД" не уникально... Может конечно я что-то не так сделал
2. GH0STexe 12 10.07.13 10:12 Сейчас в теме
(1) xbic, Код должен сам добавляться. Его не нужно присваивать наряду с весом, наименованием и прочим.
3. xbic 16 10.07.13 10:33 Сейчас в теме
(2)

Вроде разобрался, у меня 2 единицы измерения, ругался на код ед.изм...
4. GH0STexe 12 10.07.13 11:25 Сейчас в теме
5. koladen 17 11.07.13 11:24 Сейчас в теме
6. Sanario 26 16.07.13 23:46 Сейчас в теме
Спасибо, мысль интересная!
7. biker1052 16.12.13 05:55 Сейчас в теме
А бывает оказывается клиенту нужно всю папку номенклатуры скопировать!Так что берем на вооружение.
8. prophet85 26.01.15 09:52 Сейчас в теме
Зачем эта часть в запросе??
                        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
                               |        ПО Номенклатура.ЕдиницаДляОтчетов = ЕдиницыИзмерения.Ссылка
                               |            И Номенклатура.ЕдиницаХраненияОстатков = ЕдиницыИзмерения.Ссылка
                               |            И Номенклатура.ЕдиницаИзмеренияМест = ЕдиницыИзмерения.Ссылка


А вот разве не работает:


                                 ВЫБРАТЬ
                                 |      ЕдиницыИзмерения.Ссылка,
	                         |	ЕдиницыИзмерения.Владелец,
	                         |	ЕдиницыИзмерения.Код,
	                         |	ЕдиницыИзмерения.ЕдиницаПоКлассификатору КАК ПоКлассификатору,
	                         |	ЕдиницыИзмерения.Наименование,
	                         |	ЕдиницыИзмерения.Коэффициент,
	                         |	ЕдиницыИзмерения.Вес,
	                         |	ЕдиницыИзмерения.Объем
	                         |ИЗ
	                         |	Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
	                         |ГДЕ
	                         |	ЕдиницыИзмерения.Владелец = &Номенклатура


Пока РезультатЕдИзм.Следующий() Цикл    
   НоваяСтрока = РезультатЕдИзм.Ссылка.Скопировать();	        
   НоваяСтрока.Владелец                     = Источник.Ссылка;
   НоваяСтрока.Записать();
КонецЦикла;


                                       ВЫБРАТЬ
	                               |	ЗначенияСвойствОбъектов.Объект,
	                               |	ЗначенияСвойствОбъектов.Свойство,
	                               |	ЗначенияСвойствОбъектов.Значение
	                               |ИЗ
	                               |	РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
	                               |ГДЕ
	                               |	ЗначенияСвойствОбъектов.Объект = &Номенклатура


                        

Показать
9. GH0STexe 12 02.02.15 11:46 Сейчас в теме
(8) prophet85, по идее должно работать. Не помню почему написал так как написал.
Оставьте свое сообщение