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

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) Здраствуйте, недавно изменилось помойму перечисление, сам тип КолонкиСостояниеЭДО, скорее всего в этом проблема, что искомый тип не найден в конфигурации
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)