|
КД 2.0 передача данных через параметр? массив структур | ☑ | ||
---|---|---|---|---|
0
spiller26
24.08.17
✎
16:23
|
Суть такова. Переброс из БП в КА. В КА при поступление услуг нужно указывать обязательно номенклатуру (тип "Услуга"), а в БП можно просто написать "Содержание".
1. Заполняю в источнике данные по услугам, и пихаю его в Параметр. 2. В получателе "парсю" и при надобности вытягиваю данные Вот с 2-м пунктом проблемище. -------------------------------------- Есть Параметр "МассивПоступлениеУслугСодержание" (передавать при выгрузке) Перед выгрузкой данных, заполняю массив структур, т.к. с таблицей значений всё плохо. После загрузки параметров, пытаюсь обратиться к этому параметру и получаю "Неопределено". Как их прочитать в на получателе? |
|||
1
Ёпрст
24.08.17
✎
16:35
|
Передавать можно через Входящие/ИсходящиеДанные
|
|||
2
Ёпрст
24.08.17
✎
16:35
|
или просто, передавать в параметр, и ставить галку - используется призагрузке
|
|||
3
spiller26
24.08.17
✎
16:36
|
(2) галка стоит
|
|||
4
Parenek_88
24.08.17
✎
16:37
|
(0) >>После загрузки параметров
это что за событие такое? |
|||
5
Ёпрст
24.08.17
✎
16:42
|
(3)
Ну смотри, делаешь параметр, вася, ставишь галку - передавать данные в параметр, в свойствах, ПередВыгрузкой, присвваиваешь ему что -то , например, Значение="Лошпед" затем, в ПослеЗагрузки этого объекта, ловишь как Параметрыобъекта["Вася"] |
|||
6
Ёпрст
24.08.17
✎
16:44
|
так делаешь ?
|
|||
7
spiller26
24.08.17
✎
16:48
|
(4) Конвертация_ПослеЗагрузкиПараметров
|
|||
8
spiller26
24.08.17
✎
16:50
|
(5)
Конвертация_ПередВыгрузкойДанных Параметры.МассивПоступлениеУслугСодержание = Новый Массив; //заполение ТаблицаПоступлениеУслугСодержание Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеУслуг.НомерДокумента КАК НомерДокумента, | ПоступлениеУслуг.ДатаДокумента КАК ДатаДокумента, | ПоступлениеУслуг.НомерСтрокиДок КАК НомерСтрокиДок, | ПоступлениеУслуг.Содержание КАК Содержание, | ПоступлениеУслуг.СчетУчета КАК СчетУчета, | ПоступлениеУслуг.СтатьяЗатрат КАК СтатьяЗатрат |ИЗ | (ВЫБРАТЬ | ПоступлениеТоваровУслугУслуги.Ссылка.Номер КАК НомерДокумента, | ПоступлениеТоваровУслугУслуги.Ссылка.Дата КАК ДатаДокумента, | ПоступлениеТоваровУслугУслуги.НомерСтроки КАК НомерСтрокиДок, | ПоступлениеТоваровУслугУслуги.Номенклатура КАК Номенклатура, | ПоступлениеТоваровУслугУслуги.Содержание КАК Содержание, | ПоступлениеТоваровУслугУслуги.СчетЗатрат КАК СчетУчета, | ПоступлениеТоваровУслугУслуги.Субконто1 КАК СтатьяЗатрат | ИЗ | Документ.ПоступлениеТоваровУслуг.Услуги КАК ПоступлениеТоваровУслугУслуги | ГДЕ | ПоступлениеТоваровУслугУслуги.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания | И ПоступлениеТоваровУслугУслуги.Ссылка.ПометкаУдаления = ЛОЖЬ) КАК ПоступлениеУслуг |ГДЕ | ПоступлениеУслуг.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)"; Запрос.УстановитьПараметр("ДатаНачала", Параметры.ДатаНачала); Запрос.УстановитьПараметр("ДатаОкончания", Параметры.ДатаОкончания); РезультатУслуг = Запрос.Выполнить().Выбрать(); Пока РезультатУслуг.Следующий() Цикл СтруктураСтроки = Новый Структура; СтруктураСтроки.Вставить("НомерДокумента", РезультатУслуг.НомерДокумента); СтруктураСтроки.Вставить("ДатаДокумента", РезультатУслуг.ДатаДокумента); СтруктураСтроки.Вставить("НомерСтрокиДок", РезультатУслуг.НомерСтрокиДок); СтруктураСтроки.Вставить("Содержание", РезультатУслуг.Содержание); СтруктураСтроки.Вставить("СчетУчета", РезультатУслуг.СчетУчета.Код); СтруктураСтроки.Вставить("СтатьяЗатрат", ""); //РезультатУслуг.СтатьяЗатрат; // Параметры.МассивПоступлениеУслугСодержание.Добавить(СтруктураСтроки); КонецЦикла; Конвертация_ПослеЗагрузкиПараметров Параметры.ТаблицаПоступлениеУслугСодержание = Новый ТаблицаЗначений; Параметры.ТаблицаПоступлениеУслугСодержание.Колонки.Добавить("НомерДокумента"); Параметры.ТаблицаПоступлениеУслугСодержание.Колонки.Добавить("ДатаДокумента"); Параметры.ТаблицаПоступлениеУслугСодержание.Колонки.Добавить("НомерСтрокиДок"); Параметры.ТаблицаПоступлениеУслугСодержание.Колонки.Добавить("Содержание"); Параметры.ТаблицаПоступлениеУслугСодержание.Колонки.Добавить("СчетУчета"); Параметры.ТаблицаПоступлениеУслугСодержание.Колонки.Добавить("СтатьяЗатрат"); Для Каждого СтрМассива Из Параметры.МассивПоступлениеУслугСодержание Цикл НовСтрУслуга = Параметры.ТаблицаПоступлениеУслугСодержание.Добавить(); НовСтрУслуга.НомерДокумента = СтрМассива.НомерДокумента; НовСтрУслуга.ДатаДокумента = СтрМассива.ДатаДокумента; НовСтрУслуга.НомерСтрокиДок = СтрМассива.НомерСтрокиВДокументе; НовСтрУслуга.Содержание = СтрМассива.Содержание; НовСтрУслуга.СчетУчета = СтрМассива.СчетУчета; НовСтрУслуга.СтатьяЗатрат = СтрМассива.СтатьяЗатрат; КонецЦикла; |
|||
9
spiller26
24.08.17
✎
16:54
|
ПКО_ПоступлениеТоваровУслуг_ПослеЗагрузкиОбъекта
ТаблицаПоступлениеУслугСодержание = Параметры.ТаблицаПоступлениеУслугСодержание; //Строки товара (интересуют услуги) Для Каждого СтрТовар Из Объект.Товары Цикл Если СтрТовар.Номенклатура.Пустая() Тогда ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("НомерДокумента", Объект.Номер); ПараметрыОтбора.Вставить("ДатаДокумента", Объект.Дата); ПараметрыОтбора.Вставить("НомерСтрокиДок", СтрТовар.НомерСтроки); // НайденныеСтроки = ТаблицаПоступлениеУслугСодержание.НайтиСтроки(ПараметрыОтбора); Для Каждого СтрУслуг Из НайденныеСтроки Цикл //Номенклатура НаименованиеУслуги = СокрЛП(СтрУслуг.Содержание); Если НаименованиеУслуги <> "" Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | Номенклатура.Ссылка КАК УслугаСсылка, | Номенклатура.Код КАК Код |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Наименование ПОДОБНО &Наименование | И Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга) | |УПОРЯДОЧИТЬ ПО | Код УБЫВ"; Запрос.УстановитьПараметр("Наименование", НаименованиеУслуги); РезультатУслуг = Запрос.Выполнить().Выбрать(); Если РезультатУслуг.Следующий() Тогда //Заполение строки СтрТовар.Номенклатура = РезультатУслуг.УслугаСсылка; Иначе //создание услуги НовУслуга = Справочники.Номенклатура.СоздатьЭлемент(); НовУслуга.Родитель = ГруппаУслуг; НовУслуга.Наименование = НаименованиеУслуги; НовУслуга.НаименованиеПолное = НаименованиеУслуги; НовУслуга.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга; НовУслуга.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Услуги"); НовУслуга.ВариантОформленияПродажи = Перечисления.ВариантыОформленияПродажи.РеализацияТоваровУслуг; НовУслуга.ЕдиницаИзмерения = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоКоду("796"); НовУслуга.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать; НовУслуга.Качество = Перечисления.ГрадацииКачества.Новый; НовУслуга.СтавкаНДС = СтрУслуг.СтавкаНДС; Попытка НовУслуга.Записать(); СтрТовар.Номенклатура = НовУслуга.Ссылка; Исключение Сообщить("Номенклатура (Услуга): "+ НаименованиеУслуги + " // Не записана!"); КонецПопытки; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; //Проведение и отражение в РеглУчете Если Объект.Проведен Тогда Объект.Записать(РежимЗаписиДокумента.Проведение); РеглУчетПроведениеСервер.ОтразитьДокумент(Объект); Иначе Объект.Записать(РежимЗаписиДокумента.Запись); КонецЕсли; |
|||
10
Ёпрст
24.08.17
✎
16:55
|
(8) какой редкостный изврат :)
|
|||
11
Ёпрст
24.08.17
✎
16:58
|
Не проще ли, в ПКО табличной части, передавать данные в параметр, если у источника, это услуга. А затем в ПослеЗагрузки, добавлять эту услугу, если параметр заполнен ?
|
|||
12
spiller26
24.08.17
✎
16:58
|
(10) Я старался :)
|
|||
13
Ёпрст
24.08.17
✎
16:59
|
или еще проще, если это услуга, то ищем в приёмнике по пко Услуга, если товар - по ПКО Товар. Для услуги, можно, например, из входящих данных всё получить
|
|||
14
spiller26
24.08.17
✎
17:01
|
(13) Да мне такая схема переброски еще пригодиться для ручных корректировок документов.
Вот и пошел этим путем. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |