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

10.07.13

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

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

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

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

См. также

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

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    25079    dimanich70    82    

149

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

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

1 стартмани

18.03.2024    4496    3    John_d    11    

57

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

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

12.02.2024    25361    atdonya    25    

58

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

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

30.11.2023    6064    ke.92@mail.ru    17    

65

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

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

28.08.2023    16533    YA_418728146    8    

170

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

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

2 стартмани

22.08.2023    4257    73    progmaster    10    

4

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 1C:Бухгалтерия 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    19129    180    sapervodichka    112    

136
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 27 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, по идее должно работать. Не помню почему написал так как написал.
Оставьте свое сообщение