Обработка проведения

1. Mister_1C 17.04.19 12:40 Сейчас в теме
Здравствуйте, возник вопрос. Как реализовать так что бы когда я проводил документ он создавался в другом документе? Вот есть код. Он был на кнопке. Но после того как я его вставил в ОбработкаПроведения, оно не работает.
Процедура ОбработкаПроведения(Отказ, РежимПроведения,МассивДокументов)
	// Вставить содержимое обработчика.
РеализацияТоваровИУслугНаСервере(МассивДокументов);
КонецПроцедуры

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

		Док.Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяОрганизация2");
			
		ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(Док, глЗначениеПеременной("глТекущийПользователь"), Константы.ВалютаРегламентированногоУчета.Получить(), "Покупка");
				
		ВыборкаТоваров	 = ВыборкаДокументов.Выбрать();
		Пока ВыборкаТоваров.Следующий() Цикл
		НоваяСтрока	 = Док.Товары.Добавить();	
			ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаТоваров);
			// Выполнить общие действия для всех документов при изменении номенклатуры.
		//	ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(НоваяСтрока, Док);
		//	НоваяСтрока.ЕдиницаИзмерения = ВыборкаТоваров.Номенклатура.ЕдиницаХраненияОстатков;
			НоваяСтрока.Коэффициент      = НоваяСтрока.ЕдиницаИзмерения.Коэффициент;
			НоваяСтрока.СтавкаНДС	 = Перечисления.СтавкиНДС.БезНДС;
			
	//			НоваяСтрока.Номенклатура = ВыборкаТоваров.Маршруты(Номенклатура);
//			НоваяСтрока.ЦенаДоставки = ВыборкаТоваров.ЦенаДоставки;
		КонецЦикла;
	
		Если Док.Товары.Количество() > 0 Тогда
			Док.Записать(РежимЗаписиДокумента.Запись);
			СписокСообщений.Добавить("Создан документ: " + Док.Ссылка);
		КонецЕсли;
		
	КонецЦикла;
	Возврат СписокСообщений;
КонецФункции
Показать
+
По теме из базы знаний
Найденные решения
9. Mister_1C 17.04.19 13:03 Сейчас в теме
Функция РеализацияТоваровИУслугНаСервере()//(МассивДокументов)	// Вставить содержимое обработчика.
СписокСообщений	= Новый СписокЗначений;
	
	Запрос = Новый Запрос;
	Запрос.Текст = " ВЫБРАТЬ
				   |	ВложенныйЗапрос.Водители,
				   |	ВложенныйЗапрос.Номенклатура,
				   |	ВложенныйЗапрос.ЕдиницаИзмерения,
				   |	ВложенныйЗапрос.Коэффициент,
				   |	ВложенныйЗапрос.Количество,
				   |	ВложенныйЗапрос.Сумма,
				   |	ВложенныйЗапрос.ЦенаДоставки,
				   |	ВложенныйЗапрос.ЦенаДоставкиЗаМКАД,  
				   |	ВложенныйЗапрос.Цена КАК Цена,
				   |	ВложенныйЗапрос.Брак КАК Брак,
				   |	ВложенныйЗапрос.Возврат как Возврат
				   |ИЗ
	               | 	(ВЫБРАТЬ
				   |		ДоставкаТовары.Водители как Водители,
	               |		ДоставкаТовары.Номенклатура КАК Номенклатура,
	               |		ДоставкаТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	               |		ДоставкаТовары.Коэффициент КАК Коэффициент,
	               |		СУММА(ДоставкаТовары.Количество) КАК Количество,
	               |		СУММА(ДоставкаТовары.Сумма) КАК Сумма,
	              // |		ДоставкаТовары.Маршруты.Водители КАК Водители,
				   |		ДоставкаТовары.ЦенаДоставки Как ЦенаДоставки,
				   |		ДоставкаТовары.ЦенаДоставкиЗаМКАД КАК ЦенаДоставкиЗаМКАД,
				   |		ДоставкаТовары.Цена КАК Цена,
				   |		ДоставкаТовары.Брак КАК Брак,
				   |		ДоставкаТовары.Возврат как Возврат
				   
	             //  |		ЕСТЬNULL(ЦеныПоставщиковСрезПоследних.ЦенаПоставщикаВал, 0) КАК Цена
	               |	ИЗ
				 //  |		Документ.Доставка.Товары как ДоставкаТовары
				   |		Документ.МаршрутПоездки.Маршруты КАК ДоставкаТовары
	               |			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныПоставщиков.СрезПоследних КАК ЦеныПоставщиковСрезПоследних
	               |			ПО ДоставкаТовары.Номенклатура = ЦеныПоставщиковСрезПоследних.Номенклатура.Номенклатура
	               |				И ДоставкаТовары.Водители = ЦеныПоставщиковСрезПоследних.НастройкаЗагрузки.Контрагент
	               |	ГДЕ
	               |		ДоставкаТовары.Ссылка В(&Ссылка)
				   |		И Брак = &Брак
				   |		И Возврат = &Возврат
	              // |		И ДоставкаТовары.Водители <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
	              // |		И НЕ ДоставкаТовары.Номенклатура.Услуга
				  // |	    
				   |	СГРУППИРОВАТЬ ПО
				   |		ДоставкаТовары.ЦенаДоставки,
				   |		ДоставкаТовары.ЦенаДоставкиЗаМКАД,
				   |		ДоставкаТовары.Номенклатура,
				   |		ДоставкаТовары.ЕдиницаИзмерения,
				   |		ДоставкаТовары.Коэффициент,
				   |		ДоставкаТовары.Водители,
				   |		ДоставкаТовары.Цена,
				   |		ДоставкаТовары.Брак,
				   |		ДоставкаТовары.Возврат,
				   |		ЕСТЬNULL(ЦеныПоставщиковСрезПоследних.ЦенаПоставщикаВал, 0)) КАК ВложенныйЗапрос
				   |ИТОГИ ПО
				   |	Водители";
	
	Запрос.УстановитьПараметр("Ссылка", Ссылка);
	Запрос.УстановитьПараметр("Брак",Ложь);
	Запрос.УстановитьПараметр("Возврат",Ложь);
	Результат = Запрос.Выполнить();
	ВыборкаДокументов = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	Пока ВыборкаДокументов.Следующий() Цикл
		
		Док				= Документы.РеализацияТоваровУслуг.СоздатьДокумент();
		Док.Дата		= ТекущаяДата();
		Док.Контрагент	= ВыборкаДокументов.Водители;
		Док.Комментарий	= "Сформирован по доставкам " + Док.Дата;

		Док.Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяОрганизация2");
			
		ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(Док, глЗначениеПеременной("глТекущийПользователь"), Константы.ВалютаРегламентированногоУчета.Получить(), "Покупка");
				
		ВыборкаТоваров	 = ВыборкаДокументов.Выбрать();
		Пока ВыборкаТоваров.Следующий() Цикл
		НоваяСтрока	 = Док.Товары.Добавить();	
			ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаТоваров);
			// Выполнить общие действия для всех документов при изменении номенклатуры.
		//	ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(НоваяСтрока, Док);
		//	НоваяСтрока.ЕдиницаИзмерения = ВыборкаТоваров.Номенклатура.ЕдиницаХраненияОстатков;
			НоваяСтрока.Коэффициент      = НоваяСтрока.ЕдиницаИзмерения.Коэффициент;
			НоваяСтрока.СтавкаНДС	 = Перечисления.СтавкиНДС.БезНДС;
			
	//			НоваяСтрока.Номенклатура = ВыборкаТоваров.Маршруты(Номенклатура);
//			НоваяСтрока.ЦенаДоставки = ВыборкаТоваров.ЦенаДоставки;
		КонецЦикла;
	
		Если Док.Товары.Количество() > 0 Тогда
			Док.Записать(РежимЗаписиДокумента.Запись);
			СписокСообщений.Добавить("Создан документ: " + Док.Ссылка);
		КонецЕсли;
		
	КонецЦикла;
	Возврат СписокСообщений;
КонецФункции
Показать
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. arsen_botashev 17.04.19 12:50 Сейчас в теме
(1)
(2)
А не в обработке заполнения надо это делать?
+
2. SedovSU@mail.ru 297 17.04.19 12:47 Сейчас в теме
Скажите в каком плане, он не срабатываете или не вызывается??Отладкой смотрели, может какая то ошибка? Процедура ОбработкаПроведения у вас срабатывает, в ней почему то странным образом появился третий параметр ОбработкаПроведения(Отказ, РежимПроведения,МассивДокументов)
+
3. Mister_1C 17.04.19 12:48 Сейчас в теме
(2)Нет ошибки. Просто не появляется в другом документе.
+
6. SedovSU@mail.ru 297 17.04.19 12:55 Сейчас в теме
(3) Так давай те еще раз. У вас есть документ РеализацияТоваровУслуг, когда вы его проводите должно создаться какой документ?
+
7. VmvLer 17.04.19 12:59 Сейчас в теме
(6) нужно присвоить ссылку этого документа в нечто.

при проведении ссылка уже существует и ее можно куда-то "приткнуть", правда хорошо бы обработать ситуацию отказа проведения.
+
8. Mister_1C 17.04.19 13:02 Сейчас в теме
(6)Есть документ "Маршрут поездок", когда я его провожу. То данные с этого документа должны попасть в документ "РеализацияТоваровУслуг".
+
5. Mister_1C 17.04.19 12:53 Сейчас в теме
Все порешал!)) Заменил "Массив документов" На ссылку!)
+
9. Mister_1C 17.04.19 13:03 Сейчас в теме
Функция РеализацияТоваровИУслугНаСервере()//(МассивДокументов)	// Вставить содержимое обработчика.
СписокСообщений	= Новый СписокЗначений;
	
	Запрос = Новый Запрос;
	Запрос.Текст = " ВЫБРАТЬ
				   |	ВложенныйЗапрос.Водители,
				   |	ВложенныйЗапрос.Номенклатура,
				   |	ВложенныйЗапрос.ЕдиницаИзмерения,
				   |	ВложенныйЗапрос.Коэффициент,
				   |	ВложенныйЗапрос.Количество,
				   |	ВложенныйЗапрос.Сумма,
				   |	ВложенныйЗапрос.ЦенаДоставки,
				   |	ВложенныйЗапрос.ЦенаДоставкиЗаМКАД,  
				   |	ВложенныйЗапрос.Цена КАК Цена,
				   |	ВложенныйЗапрос.Брак КАК Брак,
				   |	ВложенныйЗапрос.Возврат как Возврат
				   |ИЗ
	               | 	(ВЫБРАТЬ
				   |		ДоставкаТовары.Водители как Водители,
	               |		ДоставкаТовары.Номенклатура КАК Номенклатура,
	               |		ДоставкаТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	               |		ДоставкаТовары.Коэффициент КАК Коэффициент,
	               |		СУММА(ДоставкаТовары.Количество) КАК Количество,
	               |		СУММА(ДоставкаТовары.Сумма) КАК Сумма,
	              // |		ДоставкаТовары.Маршруты.Водители КАК Водители,
				   |		ДоставкаТовары.ЦенаДоставки Как ЦенаДоставки,
				   |		ДоставкаТовары.ЦенаДоставкиЗаМКАД КАК ЦенаДоставкиЗаМКАД,
				   |		ДоставкаТовары.Цена КАК Цена,
				   |		ДоставкаТовары.Брак КАК Брак,
				   |		ДоставкаТовары.Возврат как Возврат
				   
	             //  |		ЕСТЬNULL(ЦеныПоставщиковСрезПоследних.ЦенаПоставщикаВал, 0) КАК Цена
	               |	ИЗ
				 //  |		Документ.Доставка.Товары как ДоставкаТовары
				   |		Документ.МаршрутПоездки.Маршруты КАК ДоставкаТовары
	               |			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныПоставщиков.СрезПоследних КАК ЦеныПоставщиковСрезПоследних
	               |			ПО ДоставкаТовары.Номенклатура = ЦеныПоставщиковСрезПоследних.Номенклатура.Номенклатура
	               |				И ДоставкаТовары.Водители = ЦеныПоставщиковСрезПоследних.НастройкаЗагрузки.Контрагент
	               |	ГДЕ
	               |		ДоставкаТовары.Ссылка В(&Ссылка)
				   |		И Брак = &Брак
				   |		И Возврат = &Возврат
	              // |		И ДоставкаТовары.Водители <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
	              // |		И НЕ ДоставкаТовары.Номенклатура.Услуга
				  // |	    
				   |	СГРУППИРОВАТЬ ПО
				   |		ДоставкаТовары.ЦенаДоставки,
				   |		ДоставкаТовары.ЦенаДоставкиЗаМКАД,
				   |		ДоставкаТовары.Номенклатура,
				   |		ДоставкаТовары.ЕдиницаИзмерения,
				   |		ДоставкаТовары.Коэффициент,
				   |		ДоставкаТовары.Водители,
				   |		ДоставкаТовары.Цена,
				   |		ДоставкаТовары.Брак,
				   |		ДоставкаТовары.Возврат,
				   |		ЕСТЬNULL(ЦеныПоставщиковСрезПоследних.ЦенаПоставщикаВал, 0)) КАК ВложенныйЗапрос
				   |ИТОГИ ПО
				   |	Водители";
	
	Запрос.УстановитьПараметр("Ссылка", Ссылка);
	Запрос.УстановитьПараметр("Брак",Ложь);
	Запрос.УстановитьПараметр("Возврат",Ложь);
	Результат = Запрос.Выполнить();
	ВыборкаДокументов = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	Пока ВыборкаДокументов.Следующий() Цикл
		
		Док				= Документы.РеализацияТоваровУслуг.СоздатьДокумент();
		Док.Дата		= ТекущаяДата();
		Док.Контрагент	= ВыборкаДокументов.Водители;
		Док.Комментарий	= "Сформирован по доставкам " + Док.Дата;

		Док.Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяОрганизация2");
			
		ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(Док, глЗначениеПеременной("глТекущийПользователь"), Константы.ВалютаРегламентированногоУчета.Получить(), "Покупка");
				
		ВыборкаТоваров	 = ВыборкаДокументов.Выбрать();
		Пока ВыборкаТоваров.Следующий() Цикл
		НоваяСтрока	 = Док.Товары.Добавить();	
			ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаТоваров);
			// Выполнить общие действия для всех документов при изменении номенклатуры.
		//	ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(НоваяСтрока, Док);
		//	НоваяСтрока.ЕдиницаИзмерения = ВыборкаТоваров.Номенклатура.ЕдиницаХраненияОстатков;
			НоваяСтрока.Коэффициент      = НоваяСтрока.ЕдиницаИзмерения.Коэффициент;
			НоваяСтрока.СтавкаНДС	 = Перечисления.СтавкиНДС.БезНДС;
			
	//			НоваяСтрока.Номенклатура = ВыборкаТоваров.Маршруты(Номенклатура);
//			НоваяСтрока.ЦенаДоставки = ВыборкаТоваров.ЦенаДоставки;
		КонецЦикла;
	
		Если Док.Товары.Количество() > 0 Тогда
			Док.Записать(РежимЗаписиДокумента.Запись);
			СписокСообщений.Добавить("Создан документ: " + Док.Ссылка);
		КонецЕсли;
		
	КонецЦикла;
	Возврат СписокСообщений;
КонецФункции
Показать
+
Внимание! Тема сдана в архив

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