Подписка на события РегистрСведений ТекущиеСостоянияДокументов

1. Vitaly1C8 11.01.16 22:07 Сейчас в теме
Помогите разобраться с <Подпиской на события> ...
Документооборот 1.4
Есть РегистрСведений "ТекущиеСостоянияДокументов" с измерениями:
  • Документ
  • Состояние
Ресурсы:
  • УдалитьСостояние
Реквизиты:
  • Установил
  • ДатаУстановки
Я хочу сделать ПодпискуНаСобытие ПриЗаписи() этого регистра, - размещаю процедуру в отдельном модуле ?! (может надо в конкретном модуле?)
Процедура ВЧ_ДоговорСогласованПриЗаписи(Источник, Отказ, Замещение) Экспорт
	// Вставить содержимое обработчика.
	Если Источник.Сосотояние = Перечисления.СостоянияДокументов.Согласован Тогда
		// Проверим наш ли это "ВнутреннийДокумент"
		Если ТипЗнч(Источник.Документ) = Тип("СправочникСсылка.ВнутренниеДокументы") Тогда 
			// Формируем пакет для УПП
			Сообщить("Формируем пакет для УПП");
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры
Показать


Проблема в том, что Источник не имеет свойств .Сосотояние и .Документ
Что же тогда такое Источник и как надо исправить мой Код ?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. amaksimov 11.01.16 23:25 Сейчас в теме
(1) Vitaly1C8, Источник - это набор записей этого регистра (коллекция строк-записей)

Нужно сделать перебор в цикле

вот один из вариантов, если у Вас весь набор записей будет формировать пакет для УПП

Процедура ВЧ_ДоговорСогласованПриЗаписи(Источник, Отказ, Замещение) Экспорт

	ФормироватьПакетДляУПП = Ложь;
	
    Для Каждого Запись Из Источник Цикл
		Если Запись.Состояние = Перечисления.СостоянияДокументов.Согласован Тогда
			// Проверим наш ли это "ВнутреннийДокумент"
			Если ТипЗнч(Запись.Документ) = Тип("СправочникСсылка.ВнутренниеДокументы") Тогда 
				// Формируем пакет для УПП
				ФормироватьПакетДляУПП = Истина;
				Прервать; // прерываем цикл, т.к. поняли, что надо сформировать пакет для УПП
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	Если ФормироватьПакетДляУПП Тогда
		Сообщить("Формируем пакет для УПП");
		// формируем пакет начало
		//...
		
		// формируем пакет конец
	КонецЕсли;
	
КонецПроцедуры
Показать



а вот другой вариант, если для каждой строки свой пакет для УПП

Процедура ВЧ_ДоговорСогласованПриЗаписи(Источник, Отказ, Замещение) Экспорт

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

Процедура СформироватьПакетДляУПП(ТаблицаПакетаУПП)
	...
КонецПроцедуры
Показать
Vitaly1C8; +1 Ответить
3. teller 12.01.16 08:24 Сейчас в теме
(1) Vitaly1C8, обрати еще внимание что записи в рс.ТекущиеСостоянияДокументов добавляются,удаляются , перезаписываются , и не только в процессе обычного документооборота, но и обновления иб, и редактирования записи регистра и формы записи.
Что там в УПП прилетит в какой-нибудь момент.
Оставьте свое сообщение

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