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

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
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 дней, при нахождении первой поиск прекращается и возвращается первая найденная цена.
Оставьте свое сообщение

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