Конвертация данных .передача параметров в

1. Asuneft 2 24.04.14 06:53 Сейчас в теме
До того как выполнить выгрузку по правилу в структуру "СтруктураВхДанных" собрал необходимые данные, затем -> ВыгрузитьПоПравилу(,,СтруктураВхДанных,,"ПЛ_В_Треб ованиеНакладная_ЗаПериод_НЕИспВВыгДанных");

Могу ли я в <ПослеЗагрузки> по этому правило обратитться к элементам структуры СтруктураВхДанных?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
14. adva 45 25.04.14 11:54 Сейчас в теме
(1) выложи правила (можно в личку), чувствую мне так легче понять будет. В (13) по параметру хорошо расписали, теперь осталось понять, как его лучше заполнить
2. Asuneft 2 24.04.14 14:02 Сейчас в теме
Сделано так , из УАТа в БП3 путевые листы выгружаются через правила обмена КД, выгружаются запросом, а в приемнике "Требование - Накладная" все заполняется через элементы СтруктураВхДанных, но в требовании накладной есть поля Субконто1 , субконто 2 , субконто3 и СчетЗатрат, который в этой задаче всегда 20.1.1. Я запросом в структуру положил нужные значения Субконто1, Субконто2 и Субконто3. Дозаполнение Требования накладной происходит в "ПослеЗагрузки", я там же и хотел присвоить значения субконто1, субконто2, субконто3 и не получается у меня. Как это можно сделать?
3. adva 45 24.04.14 15:04 Сейчас в теме
В <ПослеЗагрузки> Вы не сможете обратиться к структуре СтруктураВхДанных. Не понял, что именно не получается дозаполнить в <ПослеЗагрузки> ?

Можно передать при желании свойства СтруктураВхДанных в параметры (когда реквизитом-приемником является не реквизит, а параметр)
4. Asuneft 2 24.04.14 22:04 Сейчас в теме
"Можно передать при желании свойства СтруктураВхДанных в параметры (когда реквизитом-приемником является не реквизит, а параметр)" не расскажете как?
5. compreSSor 10 24.04.14 22:12 Сейчас в теме
(4) Asuneft, опиши, если не сложно, что ты хочешь сделать... потому что не совсем понятна проблема
6. adva 45 25.04.14 06:18 Сейчас в теме
(4) это добавляете ПКС (правило конвертации свойств), в котором в качестве приемника выбран не реквизит, а параметр (откроете ПКС, увидите, там так и написано, передавать в параметр). При загрузке будет доступно соответсвие ПараметрыОБъекта (на память привожу, может по другому называется, ищите в описаниях обработчиков)
7. Asuneft 2 25.04.14 07:25 Сейчас в теме
Сделано так, документ формируется на стороне приемника из запроса по входящим данным, поля субконто1, субконто2, субконто3 на стороне приемника не определены. я хотел передать на сторону приемника из запроса коды нужных элементов , а затем типизировать субконто1-3 и по кодам присвоить нужные элементы справочников. Пока сделал это , через поле "комментарий" документа, но хочется более красивого решения.
8. adva 45 25.04.14 07:31 Сейчас в теме
(7) значит Вы вполне можете использовать вместо комментария (6) . Либо несколько, либо одно (если так удобнее)
9. Asuneft 2 25.04.14 08:21 Сейчас в теме
Я не совсем понял как)
В ПКС завел реквизит, например ,"субконто3".
Затем как я в него положу значение в запросе?

Субконто3 = Запрос.Субконто3?
10. adva 45 25.04.14 09:07 Сейчас в теме
(9) тогда я Вас тоже не понял. Приведите конкретный пример, это реквизиты шапки или ТЧ, в каком именно событии делаете запрос, другие сведения, относящиеся к делу. Как Вы сейчас в комментарий пишите? Точно также можно будет писать вместо комментария в ПКС-параметр
11. adva 45 25.04.14 09:09 Сейчас в теме
Если в самом ПКС присваивать значение, то так:

Значение = ...

Если из другого места, то это может быть совершенно по другому. Можете скрины привести, если описывать долго
12. Asuneft 2 25.04.14 09:48 Сейчас в теме
В событии "После обработки"

Если НЕ Параметры.ВыгружатьФактРасходПоПЛ тогда
мЗапрос = Новый Запрос;
Если Параметры.ПриВыгрузкеРасходаГСМЗаПериодДетилизироватьПоТС = Ложь тогда
мЗапрос.текст =
"ВЫБРАТЬ
| уатПутевойЛистРасходГСМ.Ссылка.Организация КАК Организация,
| уатПутевойЛистРасходГСМ.ГСМ,
| СУММА(ВЫБОР
| КОГДА &Факт
| ТОГДА уатПутевойЛистРасходГСМ.РасходПоФакту
| ИНАЧЕ уатПутевойЛистРасходГСМ.РасходПоНорме
| КОНЕЦ) КАК Количество
|ИЗ
| Документ.уатПутевойЛист.РасходГСМ КАК уатПутевойЛистРасходГСМ
|ГДЕ
| уатПутевойЛистРасходГСМ.Ссылка В(&Ссылки)
|
|СГРУППИРОВАТЬ ПО
| уатПутевойЛистРасходГСМ.Ссылка.Организация,
| уатПутевойЛистРасходГСМ.ГСМ
|УПОРЯДОЧИТЬ ПО
| уатПутевойЛистРасходГСМ.Ссылка.Организация
|ИТОГИ ПО
| Организация";
мЗапрос.установитьПараметр("Ссылки",Параметры.ПутевыеЛистыДляФактРасхода);
мЗапрос.УстановитьПараметр("Факт" ,Параметры.ВыгружатьФактическийРасходГСМ);
ВыборкаОрг = мЗапрос.выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока выборкаОрг.Следующий() цикл
СтруктураВхДанных = Новый Структура;
СтруктураВхДанных.Вставить("Организация" ,ВыборкаОрг.Организация);


СтруктураВхДанных.Вставить("Ответственный",глЗначениеПеременной("глТекущийПользователь"));

Если Параметры.ВыгружатьФактическийРасходГСМ Тогда
мКоммент = "Выгрузка из УАТ. Фактический расход по ПЛ";
Иначе
мКоммент = "Выгрузка из УАТ. Нормативный расход по ПЛ";
КонецЕсли;

Если ЗначениеЗаполнено(ДатаНачала) тогда
мКоммент = мКоммент + " с " + ДатаНачала;
КОнецЕсли;
Если ЗначениеЗаполнено(ДатаОкончания) тогда
СтруктураВхДанных.Вставить("Дата" ,ДатаОкончания);
мКоммент = мКоммент + " по " + ДатаОкончания;
Иначе
СтруктураВхДанных.Вставить("Дата" ,текущаяДата());
КонецЕсли;

СтруктураВхДанных.Вставить("Комментарий" ,мКоммент);
ТабРасхода = Новый ТаблицаЗначений;
ТабРасхода.Колонки.Добавить("Номенклатура");
ТабРасхода.Колонки.Добавить("Количество");

ВыборкаРасход = ВыборкаОрг.Выбрать();
Пока ВыборкаРасход.Следующий() Цикл
Если ВыборкаРасход.Количество = 0 Тогда
Продолжить;
КонецЕсли;

НовСтрока = ТабРасхода.Добавить();
НовСтрока.Номенклатура = ВыборкаРасход.ГСМ;
НовСтрока.Количество = ВыборкаРасход.Количество;
КонецЦикла;

Если ТабРасхода.Количество() = 0 Тогда
Продолжить;
КонецЕсли;

Если Параметры.ВыгружатьФактРасходВСписание тогда
СтруктураВхДанных.Вставить("Товары",ТабРасхода);
ВыгрузитьПоПравилу(,,СтруктураВхДанных,,"ПЛ_В_Списание_ЗаПериод_НЕИспВВыгДанных");
Иначе
СтруктураВхДанных.Вставить("Материалы",ТабРасхода);
ВыгрузитьПоПравилу(,,СтруктураВхДанных,,"ПЛ_В_ТребованиеНакладная_ЗаПериод_НЕИспВВыгДанных");
КонецЕсли;
КонецЦикла;
Иначе
мЗапрос.текст =
"ВЫБРАТЬ
| уатПутевойЛистРасходГСМ.Ссылка.Организация КАК Организация,
| уатПутевойЛистРасходГСМ.Ссылка.Подразделение КАК Подразделение,
| уатПутевойЛистРасходГСМ.Ссылка.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
| уатПутевойЛистРасходГСМ.ГСМ,
| уатПутевойЛистРасходГСМ.ТС,
| СУММА(ВЫБОР
| КОГДА &Факт
| ТОГДА уатПутевойЛистРасходГСМ.РасходПоФакту
| ИНАЧЕ уатПутевойЛистРасходГСМ.РасходПоНорме
| КОНЕЦ) КАК Количество
|ИЗ
| Документ.уатПутевойЛист.РасходГСМ КАК уатПутевойЛистРасходГСМ
|ГДЕ
| уатПутевойЛистРасходГСМ.Ссылка В(&Ссылки)
|
|СГРУППИРОВАТЬ ПО
| уатПутевойЛистРасходГСМ.Ссылка.Организация,
| уатПутевойЛистРасходГСМ.Ссылка.Подразделение,
| уатПутевойЛистРасходГСМ.Ссылка.НоменклатурнаяГруппа,
| уатПутевойЛистРасходГСМ.ГСМ,
| уатПутевойЛистРасходГСМ.ТС
|УПОРЯДОЧИТЬ ПО
| уатПутевойЛистРасходГСМ.ТС,
| уатПутевойЛистРасходГСМ.Ссылка.Организация
|ИТОГИ ПО
| Организация,
| Подразделение,
| НоменклатурнаяГруппа,
| ТС";
мЗапрос.установитьПараметр("Ссылки",Параметры.ПутевыеЛистыДляФактРасхода);
мЗапрос.УстановитьПараметр("Факт" ,Параметры.ВыгружатьФактическийРасходГСМ);
ВыборкаОрг = мЗапрос.выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока выборкаОрг.Следующий() цикл
Сообщить(ВыборкаОрг.Организация);
СтруктураВхДанных = Новый Структура;
СтруктураВхДанных.Вставить("Организация" ,ВыборкаОрг.Организация);
СтруктураВхДанных.Вставить("Ответственный",глЗначениеПеременной("глТекущийПользователь"));

Если Параметры.ВыгружатьФактическийРасходГСМ Тогда
мКоммент = "Выгрузка из УАТ. Фактический расход по ПЛ";
Иначе
мКоммент = "Выгрузка из УАТ. Нормативный расход по ПЛ";
КонецЕсли;

Если ЗначениеЗаполнено(ДатаНачала) тогда
мКоммент = мКоммент + " с " + ДатаНачала;
КОнецЕсли;
Если ЗначениеЗаполнено(ДатаОкончания) тогда
СтруктураВхДанных.Вставить("Дата" ,ДатаОкончания);
мКоммент = мКоммент + " по " + ДатаОкончания;
Иначе
СтруктураВхДанных.Вставить("Дата" ,текущаяДата());
КонецЕсли;

ВыборкаПодразделение = выборкаОрг.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПодразделение.Следующий() Цикл
Сообщить("Подразделение" + СокрЛП(ВыборкаПодразделение.Подразделение));
СтруктураВхДанных.Вставить("Субконто1" ,ВыборкаПодразделение.Подразделение);
ВыборкаНоменклатурнаяГруппа = ВыборкаПодразделение.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНоменклатурнаяГруппа.Следующий() Цикл
Сообщить("Номенклатурная группа" + ВыборкаНоменклатурнаяГруппа.НоменклатурнаяГруппа);
СтруктураВхДанных.Вставить("Субконто3" ,ВыборкаНоменклатурнаяГруппа.НоменклатурнаяГруппа);
ВыборкаТС = ВыборкаНоменклатурнаяГруппа.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаТС.Следующий() Цикл
Сообщить(ВыборкаТС.ТС);
Если ЗначениеЗаполнено(ВыборкаТС.ТС) тогда
мКомментДок = мКоммент + " ТС = " + уатОбщегоНазначения.уатПредставлениеТС(ВыборкаТС.ТС, ВыборкаОрг.Организация);
Иначе
Продолжить;
КонецЕсли;
мКомментДок = мКоммент + " (пдр" + ВыборкаПодразделение.Подразделение.Код + "нг" + ВыборкаНоменклатурнаяГруппа.НоменклатурнаяГруппа.Код+")";
Сообщить("Создаем путевой лист:0" );
СтруктураВхДанных.Вставить("Комментарий" ,мКомментДок);
ТабРасхода = Новый ТаблицаЗначений;
ТабРасхода.Колонки.Добавить("Номенклатура");
ТабРасхода.Колонки.Добавить("Количество");

ВыборкаРасход = ВыборкаТС.Выбрать();
Пока ВыборкаРасход.Следующий() Цикл
Если ВыборкаРасход.Количество = 0 Тогда
Продолжить;
КонецЕсли;

НовСтрока = ТабРасхода.Добавить();
НовСтрока.Номенклатура = ВыборкаРасход.ГСМ;
НовСтрока.Количество = ВыборкаРасход.Количество;
КонецЦикла;
Сообщить("Создаем путевой лист:1" );
Если ТабРасхода.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
Сообщить("Создаем путевой лист:2" );
Если Параметры.ВыгружатьФактРасходВСписание тогда
Сообщить("Создаем путевой лист:3" );
СтруктураВхДанных.Вставить("Товары",ТабРасхода);
ВыгрузитьПоПравилу(,,СтруктураВхДанных,,"ПЛ_В_Списание_ЗаПериод_НЕИспВВыгДанных");
Иначе
Сообщить("Создаем путевой лист:4" );
СтруктураВхДанных.Вставить("Материалы",ТабРасхода);
ВыгрузитьПоПравилу(,,СтруктураВхДанных,,"ПЛ_В_ТребованиеНакладная_ЗаПериод_НЕИспВВыгДанных");
КонецЕсли;
КонецЦикла; // ТС
КонецЦикла; // Номенклатурная группа
КонецЦикла; // Подразделение
КонецЦикла; // Организация
КонецЕсли;

КонецЕсли;
15. adva 45 25.04.14 11:57 Сейчас в теме
Хотя субя по (12) тебе просто надо вместо

СтруктураВхДанных.Вставить("Комментарий" ,мКомментДок);

Указывать что то вроде:

СтруктураВхДанных.Вставить("ИмяПараметраСозданногоСогласно_13" ,НужноеЗначениеПараметра);
13. solarisman 149 25.04.14 11:25 Сейчас в теме
Добавляете новое правило конвертации свойства для объекта, в правиле выбираете "Передавать данные в параметр", в поле "Параметр" задаете произвольное имя параметра, например, "СчетДебета".
В качестве значения можете использовать свойство источника, а можете указать явное значение, пример:
Значение = ВходящиеДанные.СчетДебета


Можно так же выбрать правило конвертации, по которому данный параметр будет сконвертирован.
Далее в обработчике "После загрузки" обращаетесь к параметру так:

СчетДебета = ПараметрыОбъекта.Получить("СчетДебета");
18. adva 45 25.04.14 13:41 Сейчас в теме
По сути СтруктураВхДанных у тебя это структура шапки документа как я понял, ну так пусть она будет дополнительно содержать реквизиты-параметры, которые ты уже получил в запросе. Что мешает использовать (13). (13) это дополнительные реквзииты, которые передаются в приемник вместо комментария. Либо я чего не улавливаю, либо ты.
16. Asuneft 2 25.04.14 13:27 Сейчас в теме
В 13 не подходит способ мне. потому что я все собираю в одном запросе
17. adva 45 25.04.14 13:39 Сейчас в теме
(16) а как же ты при этом комментарий заполняешь? Или это комментарий другого объекта?
19. solarisman 149 25.04.14 13:56 Сейчас в теме
Картинки почему-то не в том порядке, в котором прикреплял.

Правила в приложении.

Можно смотреть документы
    "ЧекНаОплату" - параметр из свойства источника
    ПКО, РКО - параметр определяется программно
    "ПоступлениеНаРасчетныйСчет" и "СписаниеСРасчетногоСчета" параметр берется из входящих данных
20. Asuneft 2 29.04.14 06:55 Сейчас в теме
Оставьте свое сообщение

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