Передача значения из ПКГС в ПКС если ПКО вызвано через ВыгрузитьПоПравилу(Источник,,ВходящиеДанные,,"НазваниеПКО")
Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
Описание работы переноса документа описана у меня в блоге, добавилась задача указать в перемещении розничные цены магазина, цены были установлены через несколько дней докуметом УстановкаЦенВМагазине, то есть я сделал Запрос.ЦеныНоменклатуры:
Вызывается он из Алгоритма.НайтиРозничнуюЦенуНоменклатуры:
Алгоритм вставил в ПКС: ПКС_ПеремещениеТоваровВТорговуюТочку_Товары_Цена_ПриВыгрузкеСвойства_16_32
Вобщем мне нужно установить значения полей : Цена, Сумма, ПроцентРозничнойНаценки
Через КоллекциюОбъектов в ПКГС.ПередОбработкой?
ВЫБРАТЬ
ЦеныНоменклатурыМагазинов.Период,
ЦеныНоменклатурыМагазинов.Регистратор,
ЦеныНоменклатурыМагазинов.НомерСтроки,
ЦеныНоменклатурыМагазинов.Активность,
ЦеныНоменклатурыМагазинов.Номенклатура,
ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры,
ЦеныНоменклатурыМагазинов.Магазин,
ЦеныНоменклатурыМагазинов.Цена,
ЦеныНоменклатурыМагазинов.ЕдиницаИзмерения
ИЗ
РегистрСведений.ЦеныНоменклатурыМагазинов КАК ЦеныНоменклатурыМагазинов
ГДЕ
ЦеныНоменклатурыМагазинов.Номенклатура = &Номенклатура
И ЦеныНоменклатурыМагазинов.Магазин = &Магазин
И ЦеныНоменклатурыМагазинов.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
ПоказатьВызывается он из Алгоритма.НайтиРозничнуюЦенуНоменклатуры:
Попытка
Запросы.ЦеныНоменклатуры.УстановитьПараметр("Номенклатура",Параметры.ПараметрыАлгоритмов.Номенклатура);
Запросы.ЦеныНоменклатуры.УстановитьПараметр("ДатаНачала",Параметры.ПараметрыАлгоритмов.ДатаНачала);
Запросы.ЦеныНоменклатуры.УстановитьПараметр("ДатаОкончания",Параметры.ПараметрыАлгоритмов.ДатаОкончания);
Запросы.ЦеныНоменклатуры.УстановитьПараметр("Магазин",Параметры.ПараметрыАлгоритмов.Магазин);
Выборка = Запросы.ЦеныНоменклатуры.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Цена = Выборка.Цена;
Прервать;
КонецЦикла;
Исключение
Сообщить("Ошибка выполнения: Алгоритмы.НайтиРозничнуюЦенуНоменклатуры",СтатусСообщения.ОченьВажное);
КонецПопытки;
ПоказатьАлгоритм вставил в ПКС: ПКС_ПеремещениеТоваровВТорговуюТочку_Товары_Цена_ПриВыгрузке
Цена = 0;
Параметры.ПараметрыАлгоритмов = Новый Структура;
Параметры.ПараметрыАлгоритмов.Вставить("Номенклатура",ОбъектКоллекции.Номенклатура);
Параметры.ПараметрыАлгоритмов.Вставить("ДатаНачала",Источник.Дата);
Параметры.ПараметрыАлгоритмов.Вставить("ДатаОкончания",Источник.Дата+(60*60*24*60)); // 60 дней
Параметры.ПараметрыАлгоритмов.Вставить("Магазин",Источник.Магазин);
Выполнить(Алгоритмы.НайтиРозничнуюЦенуНоменклатуры);
Значение = Цена;
Вобщем мне нужно установить значения полей : Цена, Сумма, ПроцентРозничнойНаценки
Через КоллекциюОбъектов в ПКГС.ПередОбработкой?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Пока ждал ответа, нашел решение сам, вот таким образом:
В ПКГС_ПеремещениеТоваровВТорговуюТочку_Товары_ПередОбработкойВыгрузки_10_32:
Переменная КоллекцияОбъектов в этой обработке еще пока неопрделена, если создать переменную с типом таблица значений, то доступ к ОбъектКоллекции в ПКС будет осуществляться с той что мы определили. Я скопировал данные таблицы, добавил нужные колонки. Путем переборки строк определил нужные значения в полях. Вот подробное описание как это заработало:
ПКГС_ПеремещениеТоваровВТорговуюТочку_Товары_ПередОбработкойВыгрузки_10_32:
Алгоритм получает через запрос цену номенклатуру перебирая период с текущей даты документа в интервале 60 дней, при нахождении первой поиск прекращается и возвращается первая найденная цена.
В ПКГС_ПеремещениеТоваровВТорговуюТочку_Товары_ПередОбработкой
Переменная КоллекцияОбъектов в этой обработке еще пока неопрделена, если создать переменную с типом таблица значений, то доступ к ОбъектКоллекции в ПКС будет осуществляться с той что мы определили. Я скопировал данные таблицы, добавил нужные колонки. Путем переборки строк определил нужные значения в полях. Вот подробное описание как это заработало:
ПКГС_ПеремещениеТоваровВТорговуюТочку_Товары_ПередОбработкой
КоллекцияОбъектов = Источник.Товары.Выгрузить();
КоллекцияОбъектов.Колонки.Добавить("ПроцентРозничнойНаценки");
КоллекцияОбъектов.Колонки.Добавить("ЦенаПоступления");
КоллекцияОбъектов.Колонки.Добавить("СуммаПоступления");
Для Каждого СтрокаТЧ Из КоллекцияОбъектов Цикл
Цена = 0;
Параметры.ПараметрыАлгоритмов = Новый Структура;
Параметры.ПараметрыАлгоритмов.Вставить("Номенклатура",СтрокаТЧ.Номенклатура);
Параметры.ПараметрыАлгоритмов.Вставить("ДатаНачала",Источник.Дата);
Параметры.ПараметрыАлгоритмов.Вставить("ДатаОкончания",Источник.Дата+(60*60*24*60)); // 60 дней
Параметры.ПараметрыАлгоритмов.Вставить("Магазин",Источник.Магазин);
Выполнить(Алгоритмы.НайтиРозничнуюЦенуНоменклатуры);
СтрокаТЧ.ЦенаПоступления = СтрокаТЧ.Цена;
СтрокаТЧ.СуммаПоступления = СтрокаТЧ.Сумма;
СтрокаТЧ.Цена = Цена;
СтрокаТЧ.Сумма = Цена * СтрокаТЧ.Количество;
СтрокаТЧ.ПроцентРозничнойНаценки = ((СтрокаТЧ.Сумма/СтрокаТЧ.СуммаПоступления)-1)*100;
КонецЦикла;
ПоказатьАлгоритм получает через запрос цену номенклатуру перебирая период с текущей даты документа в интервале 60 дней, при нахождении первой поиск прекращается и возвращается первая найденная цена.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот