Передача значения из ПКГС в ПКС если ПКО вызвано через ВыгрузитьПоПравилу(Источник,,ВходящиеДанные,,"НазваниеПКО")

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. KirilLoveVE 21.10.12 12:11 Сейчас в теме
Описание работы переноса документа описана у меня в блоге, добавилась задача указать в перемещении розничные цены магазина, цены были установлены через несколько дней докуметом УстановкаЦенВМагазине, то есть я сделал Запрос.ЦеныНоменклатуры:

ВЫБРАТЬ
	ЦеныНоменклатурыМагазинов.Период,
	ЦеныНоменклатурыМагазинов.Регистратор,
	ЦеныНоменклатурыМагазинов.НомерСтроки,
	ЦеныНоменклатурыМагазинов.Активность,
	ЦеныНоменклатурыМагазинов.Номенклатура,
	ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры,
	ЦеныНоменклатурыМагазинов.Магазин,
	ЦеныНоменклатурыМагазинов.Цена,
	ЦеныНоменклатурыМагазинов.ЕдиницаИзмерения
ИЗ
	РегистрСведений.ЦеныНоменклатурыМагазинов КАК ЦеныНоменклатурыМагазинов
ГДЕ
	ЦеныНоменклатурыМагазинов.Номенклатура = &Номенклатура
	И ЦеныНоменклатурыМагазинов.Магазин = &Магазин
	И ЦеныНоменклатурыМагазинов.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
Показать


Вызывается он из Алгоритма.НайтиРозничнуюЦенуНоменклатуры:

Попытка
	Запросы.ЦеныНоменклатуры.УстановитьПараметр("Номенклатура",Параметры.ПараметрыАлгоритмов.Номенклатура);
	Запросы.ЦеныНоменклатуры.УстановитьПараметр("ДатаНачала",Параметры.ПараметрыАлгоритмов.ДатаНачала);
	Запросы.ЦеныНоменклатуры.УстановитьПараметр("ДатаОкончания",Параметры.ПараметрыАлгоритмов.ДатаОкончания);
	Запросы.ЦеныНоменклатуры.УстановитьПараметр("Магазин",Параметры.ПараметрыАлгоритмов.Магазин);
	Выборка = Запросы.ЦеныНоменклатуры.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		Цена = Выборка.Цена;
		Прервать;
	КонецЦикла;
Исключение
	Сообщить("Ошибка выполнения: Алгоритмы.НайтиРозничнуюЦенуНоменклатуры",СтатусСообщения.ОченьВажное);
КонецПопытки;
Показать


Алгоритм вставил в ПКС: ПКС_ПеремещениеТоваровВТорговуюТочку_Товары_Цена_ПриВыгрузке­Свойства_16_32

Цена = 0;
Параметры.ПараметрыАлгоритмов = Новый Структура;
Параметры.ПараметрыАлгоритмов.Вставить("Номенклатура",ОбъектКоллекции.Номенклатура);
Параметры.ПараметрыАлгоритмов.Вставить("ДатаНачала",Источник.Дата);
Параметры.ПараметрыАлгоритмов.Вставить("ДатаОкончания",Источник.Дата+(60*60*24*60)); // 60 дней
Параметры.ПараметрыАлгоритмов.Вставить("Магазин",Источник.Магазин);
Выполнить(Алгоритмы.НайтиРозничнуюЦенуНоменклатуры);
Значение = Цена;


Вобщем мне нужно установить значения полей : Цена, Сумма, ПроцентРозничнойНаценки
Через КоллекциюОбъектов в ПКГС.ПередОбработкой?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. KirilLoveVE 21.10.12 16:01 Сейчас в теме
Пока ждал ответа, нашел решение сам, вот таким образом:
В ПКГС_ПеремещениеТоваровВТорговуюТочку_Товары_ПередОбработкой­Выгрузки_10_32:
Переменная КоллекцияОбъектов в этой обработке еще пока неопрделена, если создать переменную с типом таблица значений, то доступ к ОбъектКоллекции в ПКС будет осуществляться с той что мы определили. Я скопировал данные таблицы, добавил нужные колонки. Путем переборки строк определил нужные значения в полях. Вот подробное описание как это заработало:

ПКГС_ПеремещениеТоваровВТорговуюТочку_Товары_ПередОбработкой­Выгрузки_10_32:
КоллекцияОбъектов = Источник.Товары.Выгрузить();
КоллекцияОбъектов.Колонки.Добавить("ПроцентРозничнойНаценки");
КоллекцияОбъектов.Колонки.Добавить("ЦенаПоступления");
КоллекцияОбъектов.Колонки.Добавить("СуммаПоступления");

Для Каждого СтрокаТЧ Из КоллекцияОбъектов Цикл
	Цена = 0;
	Параметры.ПараметрыАлгоритмов = Новый Структура;
	Параметры.ПараметрыАлгоритмов.Вставить("Номенклатура",СтрокаТЧ.Номенклатура);
	Параметры.ПараметрыАлгоритмов.Вставить("ДатаНачала",Источник.Дата);
	Параметры.ПараметрыАлгоритмов.Вставить("ДатаОкончания",Источник.Дата+(60*60*24*60)); // 60 дней
	Параметры.ПараметрыАлгоритмов.Вставить("Магазин",Источник.Магазин);
	Выполнить(Алгоритмы.НайтиРозничнуюЦенуНоменклатуры);

	СтрокаТЧ.ЦенаПоступления = СтрокаТЧ.Цена;
	СтрокаТЧ.СуммаПоступления = СтрокаТЧ.Сумма;
	СтрокаТЧ.Цена = Цена;
	СтрокаТЧ.Сумма = Цена * СтрокаТЧ.Количество;
	СтрокаТЧ.ПроцентРозничнойНаценки = ((СтрокаТЧ.Сумма/СтрокаТЧ.СуммаПоступления)-1)*100;
КонецЦикла;
Показать


Алгоритм получает через запрос цену номенклатуру перебирая период с текущей даты документа в интервале 60 дней, при нахождении первой поиск прекращается и возвращается первая найденная цена.
Оставьте свое сообщение

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