|
КД. Нужно перенести набор записей регистра накопления | ☑ | ||
---|---|---|---|---|
0
skydrive
04.02.17
✎
16:31
|
Здравствуйте. Нужна помощь.
Нужно перенести список значений, который состоит из записей регистра накопления источника в базу приемник и там, на основе этих данных, заполнить реквизиты документа. Я так понимаю это можно сделать через глобальный параметр с типом хранилище значений. Записываю данные в параметр - все отлично. Пытаюсь получить данные после загрузки - не выходит. Может есть у кого простой пример, как правильно получить данные из параметра с типом хранилище значений на стороне приемника? |
|||
1
skydrive
06.02.17
✎
21:20
|
Неужели никто не знает как передать список значений из источника в приемник?
|
|||
2
Лефмихалыч
06.02.17
✎
21:24
|
какую-то ты ерунду с глобальным параметром затеял.
|
|||
3
Defender aka LINN
06.02.17
✎
21:46
|
(0) "Я так понимаю это можно сделать через глобальный параметр"
Откуда такое понимание? И что мешает сразу в источнике все эти реквизиты получить и передать? |
|||
4
Diman000
06.02.17
✎
21:53
|
Список значений не может состоять из записей регистра.
Нет такого ссылочного объекта "Запись регистра накопления". У тебя в списке либо структуры с полями регистра, либо хз что. Это первое. А второе, если ты запихал в хранилище значений объекты одной информационной базы, то при "распаковке" в другой базе непонятно что ты хочешь получить. Ссылки просто так не перенесутся, нормально перенесутся только примитивные типы. Ну и третье, см. (3). Наверняка, можно сразу передать эту информацию в приемник, например, через "входящие данные". Чтобы приемник не парился ни с каким хранилищем значений из параметра. |
|||
5
MadJhey
06.02.17
✎
22:27
|
посмотри как переносятся остатки в старых правилах обмена.
например. Производство+Услуги+Бухгалтерия, редакция 2.8 --> УправлениеПроизводственнымПредприятием здесь правда источник 7.7 но идею поймешь. |
|||
6
MadJhey
06.02.17
✎
22:35
|
если в двух словах:
1. делаешь правило конвертации документа: Дата, номер, реквизиты и пр. Источник - пустой. 2. делаешь правило выгрузки данных: способ выборки произвольный алогоритм, правило конвертации п.1 в перед обработкой пишешь что то вроде: ВыборкаДанных = СоздатьОбъект("ТаблицаЗначений"); ВыборкаДанных.НоваяКолонка("Дата"); ВыборкаДанных.НоваяКолонка("Комментарий"); ВыборкаДанных.НоваяКолонка("ПартииТоваровНаСкладах"); ВыборкаДанных.НоваяСтрока(); ВыборкаДанных.Дата = ПолучитьДатуV8(ПолучитьТА()); ВыборкаДанных.Комментарий = "Остатки по партиям"; ВыборкаДанных.ПартииТоваровНаСкладах = ПартииОстатки(); вместо таблицы значений можно использовать и структуру. 3.ПартииОстатки - алгоритм Перем РезультатЗапроса; ДатаКон = ?(ПустоеЗначение(ДатаОкончания) = 0, ?(ДатаОкончания > ПолучитьДатуТА(), ПолучитьДатуТА(), ДатаОкончания), ПолучитьДатуТА()); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |с ДатаКон; |Без итогов; |Номенклатура = Регистр.Партии.МПЗ; |Склад = Регистр.Партии.МестоХранения; |Заказ = Регистр.Партии.Заявка; |ПартииКоличество = Регистр.Партии.Количество; |ПартииСумма = Регистр.Партии.Сумма; |Функция Количество = КонОст(ПартииКоличество); |Функция Стоимость = КонОст(ПартииСумма); |Группировка Номенклатура без групп; |Группировка Склад без групп; |Группировка Заказ без групп; |"//}}ЗАПРОС ; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат 0; КонецЕсли; Запрос.Выгрузить(РезультатЗапроса); РезультатЗапроса.НоваяКолонка("Период"); Если РезультатЗапроса.КоличествоСтрок() > 0 Тогда РезультатЗапроса.Заполнить(ПолучитьДатуV8(ДатаКон),,, "Период"); КонецЕсли; Возврат РезультатЗапроса; |
|||
7
MadJhey
06.02.17
✎
22:36
|
"глобальный параметр с типом хранилище значений" - это какой то бред
|
|||
8
skydrive
07.02.17
✎
15:41
|
Спасибо всем большое за помощь! Сделал в итоге сам.
Надо было, наверное, пояснить. Я из УТ в БП переносил документы. И мне нужно было на стороне приемника заполнить счета в документах на основании записи измерения "СтатусПартии" регистра накопления "ПартииТоваровНаСкладах". Если статус "Купленный" у документа, то одни счета, а если "На комиссию" - другие. Сделал запрос, получил данные. А вот как передать результат запроса на сторону приемника не знал. В итоге реализовал так: 1. Создал параметр с типом хранилище значения "СтатусПартииПоступления". 2. Получил результат запроса в виде списка значения. СтатусПартииПоступления = Новый СписокЗначений(); Пока Выборка.Следующий() Цикл СтатусПартииПоступления.Добавить(Выборка.Номер, Выборка.СтатусПартии); КонецЦикла; 3. Поместил в хранилище. Результат = Новый ХранилищеЗначения(СтатусПартииПоступления); 4. Передал в параметр, предварительно сделав сериализацию, так как тип примитивный только передать можно. ПередатьОдинПараметрВПриемник("СтатусПартииПоступления", ЗначениеВСтрокуВнутр(Результат)); 5. Далее уже на стороне приемника, после загрузки делаю обратный процесс и получаю список значений из хранилища: СтатусПартииПоступления = ЗначениеИзСтрокиВнутр(Параметры.СтатусПартииПоступления).Получить(); Ну и дальше уже делаю с этим что хочу. Немного не понял, как это можно было реализовать другим способом. Извиняюсь, что не расписал более подробно, что я хотел сделать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |