Редактирование правил УТ 10.3 - БП 3.0 (из оприходования делаем выпуск)

1. AlexeyPapanov 466 12.04.15 11:08 Сейчас в теме
Всем привет!
Задача из документа "Оприходование товаров" (УТ) сделать "Отчет производства за смену" (БП).
Я открыл в КД стандартные правила конвертации из папки шаблонов БП.
Отредактировал правила, сопоставил свойства объектов.
При обмене получаю ошибку.
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(3702)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта
	ИмяПКО                 =  ОприходованиеТоваров
	ТипОбъекта             =  Отчет производства за смену
	Объект                 =  Отчет производства за смену ЦБ000000013 от 12.04.2015 10:13:07
	Обработчик             =  ПослеЗагрузкиОбъекта
	ОписаниеОшибки         =  Поле объекта не обнаружено (Товары)
	ПозицияМодуля          =  (1)
	КСообщенияОбОшибках    =  21
		ВызватьИсключение СтрокаСообщенияОбОшибке;
Показать


У ОтчетаОПроизводствеЗаСмену нет табличной части "Товары", но есть аналогичная - "Продукция", с которой я и делал сопоставление.

Подскажите куда еще посмотреть?

см. скриншоты
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Lovish 14 13.04.15 14:27 Сейчас в теме
(1) El_Loco, дабы не гадать, попробуйте поставить в базе-приемнике "Остановка по ошибке" - и посмотрите, где остановится. Если на выполнении обработчика - как раз и узнаете, какой там текст. Потому что если бы ругалось на глобальный обработчик, то в описании ошибки стояло бы что-то вроде "Обработчик = ПослеЗагрузкиОбъекта (глобальный)".
6. AlexeyPapanov 466 13.04.15 18:15 Сейчас в теме
(4) Lovish, а где включить "остановку по ошибке"? это в самой БП 3.0 или в правилах где-то?
я не нашел(
7. Caspersky 13.04.15 18:26 Сейчас в теме
(6) El_Loco, Lovish имеет ввиду в "остановка по ошибке" в конфигураторе при отладке, а не в самой обработке загрузки.
Вообще, Диво-дивное) судя по скринам... с субботы любуюсь)
8. AlexeyPapanov 466 13.04.15 21:55 Сейчас в теме
(7) Caspersky, а чего со скринами не так?)
я пытался изложить доступно свою проблему, чтобы проще было ответить тем, кто знает.
в обменах я полный ноль. да и не только в них ;)
9. Caspersky 13.04.15 22:28 Сейчас в теме
(8) Ел_Лосо, Со скринами все ОК, вообщем, исчерпывающее описание проблемы))
Это я не про скрины, а про проблему ...
А попробуйте ка, посмотреть файл обмена, в том же notepade++, пошукайте там вхождение "Товары".
Проверьте также алгоритмы: ЗаполнитьРеквизитыПоУмолчанию., у Вас на скрине в (3) посте.
Может прояснится что?
2. dubrovin 12.04.15 21:19 Сейчас в теме
Посмотрите в обработчик ПослеЗагрузкиОбъекта самой конвертации
3. AlexeyPapanov 466 13.04.15 09:18 Сейчас в теме
(2) dubrovin, вот такое там, если я вас правильно понял.

в коде алгоритма не нашел ничего по таб.часть...

//подставляет обязательные значения
МетаданныеДокумента = Объект.Метаданные();
Если Метаданные.Документы.Содержит(МетаданныеДокумента) Тогда
	
	ОбъектСодержитРеквизитОрганизация      = ОбщегоНазначения.ЕстьРеквизитОбъекта("Организация", МетаданныеДокумента);
	ОбъектСодержитРеквизитСклад            = ОбщегоНазначения.ЕстьРеквизитОбъекта("Склад", МетаданныеДокумента);
	ОбъектСодержитПодразделениеОрганизации = ОбщегоНазначения.ЕстьРеквизитОбъекта("ПодразделениеОрганизации", МетаданныеДокумента);
	
	Если ОбъектСодержитРеквизитОрганизация И НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
		Объект.Организация = Параметры.ОсновнаяОрганизация;
	КонецЕсли;
	
	Если ОбъектСодержитРеквизитСклад Тогда
		Если (НЕ ЗначениеЗаполнено(Объект.Склад)) Тогда
			Объект.Склад = Параметры.СкладДляОбменаДаннымиСУТ;
		КонецЕсли;
	КонецЕсли;
	
	// Заполнение реквизита ПодразделениеОрганизации
	Если ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеСРасчетногоСчета")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеНаРасчетныйСчет")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПриходныйКассовыйОрдер")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
		Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация Тогда
			
			Если ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеСРасчетногоСчета") Тогда
				// Заполнение подразделения организации
				Если ЗначениеЗаполнено(Объект.Организация)
					И ЗначениеЗаполнено(Объект.СчетОрганизации)
					Тогда
					СвойстваСчета = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
										Объект.СчетОрганизации,
										"ПодразделениеОрганизации"
					);
					Объект.ПодразделениеОрганизации = СвойстваСчета.ПодразделениеОрганизации;
				КонецЕсли;
				
				Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийСписаниеДенежныхСредств.ОплатаПоставщику")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийСписаниеДенежныхСредств.ВозвратПокупателю")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийСписаниеДенежныхСредств.ПрочиеРасчетыСКонтрагентами")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийСписаниеДенежныхСредств.РасчетыПоКредитамИЗаймам")
					Тогда
					Объект.ПодразделениеДт = Неопределено;
				// {ОбособленныеПодразделения
				Иначе
					Объект.ПодразделениеДт = Объект.ПодразделениеОрганизации;
				// }ОбособленныеПодразделения
				КонецЕсли;
			ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеНаРасчетныйСчет") Тогда
				// Заполнение подразделения организации
				Если ЗначениеЗаполнено(Объект.Организация)
					И ЗначениеЗаполнено(Объект.СчетОрганизации)
					Тогда
					СвойстваСчета = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
										Объект.СчетОрганизации,
										"ПодразделениеОрганизации"
					);
					Объект.ПодразделениеОрганизации = СвойстваСчета.ПодразделениеОрганизации;
				КонецЕсли;
				
				Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПоступлениеДенежныхСредств.ОплатаПокупателя")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПоступлениеДенежныхСредств.ВозвратОтПоставщика")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПоступлениеДенежныхСредств.ПрочиеРасчетыСКонтрагентами")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПоступлениеДенежныхСредств.РасчетыПоКредитамИЗаймам")
					Тогда
					Объект.ПодразделениеКт = Неопределено;
				// {ОбособленныеПодразделения
				Иначе
					Объект.ПодразделениеКт = Объект.ПодразделениеОрганизации;
				// }ОбособленныеПодразделения
				КонецЕсли;
			ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ПриходныйКассовыйОрдер") Тогда
				ОсновноеПодразделение = ОбщегоНазначенияБПВызовСервера.ПолучитьЗначениеПоУмолчанию("ОсновноеПодразделениеОрганизации");
				Если ОсновноеПодразделение.Владелец = Объект.Организация Тогда
					Объект.ПодразделениеОрганизации = ОсновноеПодразделение;
				Иначе
					Объект.ПодразделениеОрганизации = Неопределено;
				КонецЕсли;
				
				Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПКО.ОплатаПокупателя")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПКО.ВозвратОтПоставщика")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПКО.ВозвратОтПодотчетногоЛица")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПКО.ПолучениеНаличныхВБанке")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПКО.РасчетыПоКредитамИЗаймам")
					Тогда
					Объект.ПодразделениеКт = Неопределено;
				// {ОбособленныеПодразделения
				Иначе
					Объект.ПодразделениеКт = ?(ОбъектСодержитПодразделениеОрганизации, Объект.ПодразделениеОрганизации, Неопределено);
				// }ОбособленныеПодразделения
				КонецЕсли;
			ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
				ОсновноеПодразделение = ОбщегоНазначенияБПВызовСервера.ПолучитьЗначениеПоУмолчанию("ОсновноеПодразделениеОрганизации");
				Если ОсновноеПодразделение.Владелец = Объект.Организация Тогда
					Объект.ПодразделениеОрганизации = ОсновноеПодразделение;
				Иначе
					Объект.ПодразделениеОрганизации = Неопределено;
				КонецЕсли;
				
				Если (Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ОплатаПоставщику")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВозвратПокупателю")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВыдачаПодотчетномуЛицу")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.РасчетыПоКредитамИЗаймам")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВзносНаличнымиВБанк")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВыплатаДепонентов")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВыплатаЗаработнойПлатыПоВедомостям")
					ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВыплатаЗаработнойПлатыРаботнику"))
				Тогда
					Объект.ПодразделениеДт = Неопределено;
				// {ОбособленныеПодразделения
				Иначе
					Объект.ПодразделениеДт = Объект.ПодразделениеОрганизации;
				// }ОбособленныеПодразделения
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
	ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.АвансовыйОтчет")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетКомиссионераОПродажах")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетКомитентуОПродажах")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.КорректировкаДолга") Тогда
		//Выполнить процедуру ЗаполнениеДокументов.ПриИзмененииЗначенияОрганизации(ЭтотОбъект, глЗначениеПеременной("глТекущийПользователь"));
		Если ОбъектСодержитРеквизитОрганизация И ОбъектСодержитПодразделениеОрганизации
			И ЗначениеЗаполнено(Объект.Организация) Тогда
			ПодразделениеПоУмолчанию = ОбщегоНазначенияБПВызовСервера.ПолучитьЗначениеПоУмолчанию("ОсновноеПодразделениеОрганизации");
			// Если ПодразделениеОрганизации не заполнено.
			Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация Тогда
				Если НЕ ЗначениеЗаполнено(Объект.ПодразделениеОрганизации) Тогда
					// Если ПодразделениеПоУмолчанию соответствует выбранной организации, подставляем его.
					Если ПодразделениеПоУмолчанию.Владелец = Объект.Организация Тогда
						Объект.ПодразделениеОрганизации = ПодразделениеПоУмолчанию;
					КонецЕсли;
				Иначе // Если ПодразделениеОрганизации заполнено.
					// Если ПодразделениеОрганизации не соответствует выбранной организации.
					Если НЕ Объект.ПодразделениеОрганизации.Владелец = Объект.Организация Тогда
						// Если ПодразделениеПоУмолчанию соответствует выбранной организации, подставляем его.
						Если ПодразделениеПоУмолчанию.Владелец = Объект.Организация Тогда
							Объект.ПодразделениеОрганизации = ПодразделениеПоУмолчанию;
						Иначе // Выбрана не основная организация. ПодразделениеОрганизации нужно очистить.
							Объект.ПодразделениеОрганизации = Справочники.ПодразделенияОрганизаций.ПустаяСсылка();
						КонецЕсли;
					КонецЕсли;
				КонецЕсли;
			КонецЕсли
		КонецЕсли;
	ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ГТДИмпорт") Тогда
		// Выполнить процедуру ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект);
		Если ОбъектСодержитРеквизитОрганизация
			И ЗначениеЗаполнено(Объект.Организация)
			И ОбъектСодержитПодразделениеОрганизации
			И (НЕ ЗначениеЗаполнено(Объект.ПодразделениеОрганизации)) Тогда
			
			ПодразделениеОрганизации = ОбщегоНазначенияБПВызовСервера.ПолучитьЗначениеПоУмолчанию("ОсновноеПодразделениеОрганизации");
			
			Если ЗначениеЗаполнено(ПодразделениеОрганизации) И ПодразделениеОрганизации.Владелец = Объект.Организация Тогда
				Объект.ПодразделениеОрганизации = ПодразделениеОрганизации;
			КонецЕсли;
		КонецЕсли;
	ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ВозвратТоваровОтПокупателя")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ВозвратТоваровПоставщику")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОприходованиеТоваров")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетОРозничныхПродажах")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеТоваровУслуг")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.РеализацияТоваровУслуг")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеТоваров")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ТребованиеНакладная")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.КомплектацияНоменклатуры")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.СчетНаОплатуПокупателю")
		ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПеремещениеТоваров") Тогда
		
		Если ТипЗнч(Объект) = Тип("ДокументОбъект.ПеремещениеТоваров") Тогда
			Если ОбщегоНазначения.ЕстьРеквизитОбъекта("ПодразделениеОтправитель", МетаданныеДокумента) Тогда
				Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация ИЛИ Объект.Ссылка.СкладОтправитель <> Объект.СкладОтправитель Тогда
					Объект.ПодразделениеОтправитель = ОбщегоНазначенияБПВызовСервера.ПолучитьПодразделение(Объект.Организация, Объект.СкладОтправитель);
				КонецЕсли;
			КонецЕсли;
			Если ОбщегоНазначения.ЕстьРеквизитОбъекта("ПодразделениеПолучатель", МетаданныеДокумента) Тогда
				Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация ИЛИ Объект.Ссылка.СкладПолучатель <> Объект.СкладПолучатель Тогда
					Объект.ПодразделениеПолучатель = ОбщегоНазначенияБПВызовСервера.ПолучитьПодразделение(Объект.Организация, Объект.СкладПолучатель);
				КонецЕсли;
			КонецЕсли;
		Иначе
			Если ОбъектСодержитРеквизитОрганизация
				И ОбъектСодержитРеквизитСклад
				И ОбъектСодержитПодразделениеОрганизации
				Тогда
				Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация ИЛИ Объект.Ссылка.Склад <> Объект.Склад Тогда
					Объект.ПодразделениеОрганизации = ОбщегоНазначенияБПВызовСервера.ПолучитьПодразделение(Объект.Организация, Объект.Склад);
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецЕсли;
Показать
5. kasper076 110 13.04.15 14:52 Сейчас в теме
Оставьте свое сообщение

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