Помогите новичку, первый раз обновляю конфигу, да еще и не типовую, дали задание

1. Greamdevil 6 27.02.17 10:29 Сейчас в теме
Суть вопроса в том чтобы запустить процедуру в менеджере модуля Документа СчетПокупателю, есть там процедура:
Процедура ОбработатьТаблицуУслуги(Параметры) Экспорт
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1000
	|	СчетНаОплатуПокупателюУдалитьУслуги.Ссылка КАК СчетНаОплату
	|ИЗ
	|	Документ.СчетНаОплатуПокупателю.УдалитьУслуги КАК СчетНаОплатуПокупателюУдалитьУслуги";
	
	Выборка = Запрос.Выполнить().Выбрать();
	
	ПроблемныхОбъектов = 0;
	ОбъектовОбработано = 0;
	
	Пока Выборка.Следующий() Цикл
		
		Попытка
			
			Если Не ЗначениеЗаполнено(Выборка.СчетНаОплату) Тогда
				Продолжить;
			КонецЕсли;
			
			ДокументОбъект = Выборка.СчетНаОплату.ПолучитьОбъект();
			
			Если ДокументОбъект = Неопределено Тогда
				Продолжить;
			КонецЕсли;
			
			Если ДокументОбъект.УдалитьУслуги.Количество() > 0 Тогда
				ТаблицаУслуг = ДокументОбъект.УдалитьУслуги.Выгрузить();
				
				Для Каждого СтрокаТЧ Из ТаблицаУслуг Цикл
					НоваяСтрока = ДокументОбъект.Товары.Добавить();
					ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЧ);
				КонецЦикла;
				
				ДокументОбъект.УдалитьУслуги.Очистить();
			Иначе
				Продолжить;
			КонецЕсли;
			
			ОбновлениеИнформационнойБазы.ЗаписатьДанные(ДокументОбъект);
			
			ОбъектовОбработано = ОбъектовОбработано + 1;
			
		Исключение
			// Если не удалось обработать какой-либо документ, повторяем попытку снова.
			ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
			
			ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Не удалось объединить товары и услуги в ""%1"" по причине:
			|%2'"), 
			Выборка.СчетНаОплату,
			ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
			ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,, 
			Выборка.СчетНаОплату, ТекстСообщения);
		КонецПопытки;
		
	КонецЦикла;
	
	Если ОбъектовОбработано + ПроблемныхОбъектов = 0 Тогда
		
		Параметры.ОбработкаЗавершена = Истина;
		
	Иначе
		
		Параметры.ОбработкаЗавершена = Ложь;
		
		Если ОбъектовОбработано = 0 Тогда
			ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Процедуре СчетНаОплатуПокупателю.ОбработатьТаблицуУслуги
			|не удалось объединить товары и услуги в %1 документах Счет покупателю'"),
			ПроблемныхОбъектов);
			ВызватьИсключение ТекстСообщения;
		Иначе
			ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,,,
			СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Процедура СчетНаОплатуПокупателю.ОбработатьТаблицуУслуги
			|обработала очередную порцию документов Счет покупателю: %1 элементов'"),
			ОбъектовОбработано));
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры
Показать


Эта процедура переносит данные из табличного поля УдалитьУслуги (которое не видимое) в табличное поле Товары.

У меня старый релиз и в нем создан документ, на основании которого создается этот счет, так вот я передал данные из этого документа в таблицу УдалитьУслуги, раньше это была таблица Услуги, а теперь её нету.

Но почему то ничего в создаваемых документах не появляется.

Я вот и не могу понять, то ли эта процедура по каким то причинам не запускается (для старых проведенных документов, все сработало, счета заполнились) а вот если создаешь новые документы, ничего не заполняется.

Дак вот основной вопрос, какие параметры передать в эту процедуру и куда ее в модуль формы или в модуль объекта засунуть или же может другие есть пути решения?
По теме из базы знаний
Найденные решения
6. torin13 27.02.17 15:39 Сейчас в теме
(5)Здравствуйте!
Если я вас правильно понял, то вы хотите на основании самописного документа создать документ счет на оплату. Из вашего документа вы заполняли таблицу услуги в счете на оплату, а теперь пытаетесь заполнить таблицу удалить услуги. Сразу из вашего документа заполняйте таблицу товары в счете на оплату, так как сейчас услуги и товары счета на оплату находятся в одной таблице "Товары".
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Greamdevil 6 27.02.17 10:30 Сейчас в теме
Заранее извиняюсь за тупость, опыта 0)))
3. Turn123 18 27.02.17 10:32 Сейчас в теме
в модуль менеджера документа.


Параметры - это структура с полем ОбработкаЗавершена булевого типа....
4. Greamdevil 6 27.02.17 10:54 Сейчас в теме
(3)Дак она и так в модуле менеджера? Процедуру вроде запустил, в параметры передал (Параметры), и закомментил окончание кода из за которого вылазила ошибка:
Процедура ОбработатьТаблицуУслуги(Параметры) Экспорт
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1000
	|	СчетНаОплатуПокупателюУдалитьУслуги.Ссылка КАК СчетНаОплату
	|ИЗ
	|	Документ.СчетНаОплатуПокупателю.УдалитьУслуги КАК СчетНаОплатуПокупателюУдалитьУслуги";
	
	Выборка = Запрос.Выполнить().Выбрать();
	
	ПроблемныхОбъектов = 0;
	ОбъектовОбработано = 0;
	
	Пока Выборка.Следующий() Цикл
		
		Попытка
			
			Если Не ЗначениеЗаполнено(Выборка.СчетНаОплату) Тогда
				Продолжить;
			КонецЕсли;
			
			ДокументОбъект = Выборка.СчетНаОплату.ПолучитьОбъект();
			
			Если ДокументОбъект = Неопределено Тогда
				Продолжить;
			КонецЕсли;
			
			Если ДокументОбъект.УдалитьУслуги.Количество() > 0 Тогда
				ТаблицаУслуг = ДокументОбъект.УдалитьУслуги.Выгрузить();
				
				Для Каждого СтрокаТЧ Из ТаблицаУслуг Цикл
					НоваяСтрока = ДокументОбъект.Товары.Добавить();
					ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЧ);
				КонецЦикла;
				
				ДокументОбъект.УдалитьУслуги.Очистить();
			Иначе
				Продолжить;
			КонецЕсли;
			
			ОбновлениеИнформационнойБазы.ЗаписатьДанные(ДокументОбъект);
			
			ОбъектовОбработано = ОбъектовОбработано + 1;
			
		Исключение
			// Если не удалось обработать какой-либо документ, повторяем попытку снова.
			ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
			
			ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Не удалось объединить товары и услуги в ""%1"" по причине:
			|%2'"), 
			Выборка.СчетНаОплату,
			ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
			ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,, 
			Выборка.СчетНаОплату, ТекстСообщения);
		КонецПопытки;
		
	КонецЦикла;
	
	//Если ОбъектовОбработано + ПроблемныхОбъектов = 0 Тогда
	//	
	//	Параметры.ОбработкаЗавершена = Истина;
	//	
	//Иначе
	//	
	//	Параметры.ОбработкаЗавершена = Ложь;
	//	
	//	Если ОбъектовОбработано = 0 Тогда
	//		ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
	//		НСтр("ru = 'Процедуре СчетНаОплатуПокупателю.ОбработатьТаблицуУслуги
	//		|не удалось объединить товары и услуги в %1 документах Счет покупателю'"),
	//		ПроблемныхОбъектов);
	//		ВызватьИсключение ТекстСообщения;
	//	Иначе
	//		ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,,,
	//		СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
	//		НСтр("ru = 'Процедура СчетНаОплатуПокупателю.ОбработатьТаблицуУслуги
	//		|обработала очередную порцию документов Счет покупателю: %1 элементов'"),
	//		ОбъектовОбработано));
	//	КонецЕсли;
	//	
	//КонецЕсли;
Показать


А процедуру засунул в модуль формы:
#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// СтандартныеПодсистемы.Печать
	УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма, Элементы.ГруппаПечать);
	// Конец СтандартныеПодсистемы.Печать
	
	// ДополнительныеОтчетыИОбработки
	ДополнительныеОтчетыИОбработки.ПриСозданииНаСервере(ЭтаФорма);
	// Конец ДополнительныеОтчетыИОбработки
	
	// СтандартныеПодсистемы.ВерсионированиеОбъектов
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
	
	ОтправкаПочтовыхСообщений.ПриСозданииНаСервере(ЭтотОбъект);
	
	Если Параметры.Свойство("ПравилоПовторения") И ЗначениеЗаполнено(Параметры.ПравилоПовторения) Тогда
		ПравилоПовторения = Параметры.ПравилоПовторения;
		НадписьПовторение = НадписьПовторение(ПравилоПовторения, Параметры.Ключ.Пустая());
	Иначе
		ЗаполнитьПравилоПовторенияИНадпись();
	КонецЕсли;
	
	Если Параметры.Ключ.Пустая() Тогда
		ПодготовитьФормуНаСервере();
	КонецЕсли;

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

	Документы.СчетНаОплатуПокупателю.ОбработатьТаблицуУслуги(Параметры);	
КонецПроцедуры
Показать


в самом конце процедура
5. Greamdevil 6 27.02.17 10:55 Сейчас в теме
Только вот мне это ничем не помогло, счет попрежнему пуст, хотя в отладчике пробежался, данные в процедуре появились, вроде все передается
6. torin13 27.02.17 15:39 Сейчас в теме
(5)Здравствуйте!
Если я вас правильно понял, то вы хотите на основании самописного документа создать документ счет на оплату. Из вашего документа вы заполняли таблицу услуги в счете на оплату, а теперь пытаетесь заполнить таблицу удалить услуги. Сразу из вашего документа заполняйте таблицу товары в счете на оплату, так как сейчас услуги и товары счета на оплату находятся в одной таблице "Товары".
7. Greamdevil 6 28.02.17 05:35 Сейчас в теме
(6) Здравствуйте, да можно попробовать, а старые документы тогда не полетят?
8. Greamdevil 6 28.02.17 06:30 Сейчас в теме
(6) Спасибо все получилось, теперь новый косяк вылез при перезаписи реализации, меняетс форма документа с основной на услуги, что совсем не нужно
9. torin13 28.02.17 07:53 Сейчас в теме
Все правильно если есть только услуги, то вид операции документа реализации будет услуги. Если вы посмотрите в предприятии, создадите документ ручками (товары услуги комиссия) и заполните только колонку услуги, то тогда документ примет вид операции "услуги", а не "товары услуги комиссия"..
10. Greamdevil 6 28.02.17 11:16 Сейчас в теме
(9) Ну да пришлось, еще отредактировать форму Услуги, чтобы было так же как и в общей форме документа.
11. resonance 81 21.07.21 01:18 Сейчас в теме
У меня подобная ситуация с только с типовым документом РКО
ПараметрыПриСозданииНаСервере.КолонкаСостоянияЭДО = Элементы.ПредставлениеСостояния ошибка вот в этом месте
12. Greamdevil 6 21.07.21 11:19 Сейчас в теме
(11) Здраствуйте, недавно изменилось помойму перечисление, сам тип КолонкиСостояниеЭДО, скорее всего в этом проблема, что искомый тип не найден в конфигурации
Оставьте свое сообщение

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