Имя: Пароль:
1C
1С v8
Перенос с помощью конвертации данных из регистра сведений в новый! документ.
0 new_hope
 
29.08.18
08:54
Подскажите - мне нужно перенести данные из РегистраСведений (ну и не только - там запросом будет выбираться данные) базы "источника" в документ (в табличную часть) базы "приемник" - но - эти документы будут НОВЫЕ - то-есть в базе приемнике их нужно создавать!

Еще вариант более удобный для меня вариант - создать только один документ в базе "приемнике" и занести все данные РегистраСведений базы "источника" в табличную часть этого документа

Это возможно в пределах конвертации данных?

Функция ВыгрузитьПоПравилу() мне поможет? Что использовать?
Подскажите - куда копать? Может кто-то решал подобное - поделитесь ссылкой и т.д.
1 Optan
 
29.08.18
08:57
2 Йохохо
 
29.08.18
08:59
в чем вопрос то? возможно - конечно. ВыгрузитьПоПравилу поможет, есть и другие варианты. В один или много документов зависит от того, что за данные, как будут синхронизироваться дальще, сколько записей, как будет проводиться документ.
3 Shur1cIT
 
29.08.18
09:14
(0) Запросом получаешь данные из регистра, даёш поля такие же названия как в документе потом выгрузить по правилу на пальцах  не объяснить ищи видео уроки
4 new_hope
 
29.08.18
09:49
(2) Данные разные, не все совпадают в базе-приемнике. Но все данные исключительно будут попадать в табличную часть нового документа.

Некоторые данные в базе "приемника" нужно будет скать в справочниках "приемника" - на основании данных базы источника.

Но я вроде как начинаю понимать, если это возможно - то ок!
5 hhhh
 
29.08.18
10:00
(4) это всё абсолютно без разницы. Садитесь уже и начинайте делать. Абсолютно рутинная задача. Конвертации данных абсолютно похрен, новый или не новый документ. Новый даже проще.
6 new_hope
 
29.08.18
10:15
(5) Да... пробую делать! Спасибо! Просто я в начале пути - если честно.
А создавать новый документ (документы) в базе приемника по событию ПКО "ПослеЗагрузки" -> Где "Объект" = и будет (например) ТаблицаЗначений (которую я подготовил ранее в запросе в базе "источника" в событии ПВД "ПередВыгрузкой"), которую я могу поместить в табличное поле _нового_ документа, который я могу создать програмно прямо в этом собитии?

Ход мыслей верный?
7 Optan
 
29.08.18
10:30
(6) Нет.
В общем случае, сначала определяешься какие данные являются повторной выгрузкой (замена документа), а какие новой (создание нового документа). В зависимости от этого определяешь поля поиска для документа.
В ПВД собираешь необходимые данные в виде структуры или ТЗ.
Затем обходишь свои данные и для каждого нового набора данных вызываешь ВыгрузитьПоПравилу().

По поводу "Некоторые данные в базе "приемника" нужно будет скать в справочниках "приемника" - на основании данных базы источника...." - для каждого поля ссылочного типа по-хорошему придется написать свое правило ПКО.
8 new_hope
 
29.08.18
18:20
(7) Еще вопрос - если я буду из регистра сведений получать данные - я создаю в ПВД запрос, собираю свои данные и вызываю ВыгрузитьПоПравилу()... тут я уже понял (вроде-бы)

Осталось правило сделать для загрузки... Но - если я буду в базе "приемник" - создавать новый документ из тех данных, которые я получу в запросе ПВД - то... и все эти данные помещаются в табличную часть этого нового документа - то, мне нужно создавать ПКО, где "Имя" этого ПКО будет мой созданный ПВД, Объект Источник - не указываю ничего - а что указывать в Объект Приемник, если это будет НОВЫЙ документ, и ничего искать в базе приемнике не нужно?
9 Йохохо
 
29.08.18
18:31
(8) объект приемник это тип. Тема недели на три)
10 Вафель
 
29.08.18
18:39
смотри как в типовых правилах например остатки переносятся
11 Optan
 
30.08.18
12:42
(8) Объект приемник это не конкретный документ, а тип документа который будет создаваться в базе приемнике (как тебе уже написали в (9))
Ты пишешь про НОВЫЙ документ - но при этом имеешь ввиду  новый экземпляр типа данных "ДокументОбъект.ПродажаТоваров" №12345".
В конвертации ты определяешь только тип, а новый у тебя объект создастся или будет отредактирован старый определяется по настройкам и полям поиска (или GUID), т.е., например, - выгрузилась у тебя порция данных, причем на этапе выгрузки ты задал что у документа номер=1, а дата 01.01.2000. При загрузке обработка ищет документ по полям поиска (пусть у тебя это дата и номер). Найдет документ - заменит существующий, не найдет - создаст новый!
12 new_hope
 
03.09.18
06:13
Всем спасибо! Все получилось...но почти все.

Столкнулся с другим вопросом.

При переносе документа произвольным алгоритмом (нужно из кучи документов базы источника сделать один документ базы приемника).
Я в ПВД делаю запрос к документам источника и формирую таблицу значений... все переносится, кроме одного поля - "Физлицо" табличной части (ссылочного типа), которое отсутствует в базе приемнике, но которое можно найти и сопоставить на этапе загрузки в приемник.

В базе истоничке Физлицо - тип СправочникСылка.Физлица
В базе приемнике мне нужно заполнить тип СправочникСсылка.Сотрудники

Как мне передать это значение, через параметр? Или как? На каком этапе мне делать конвертацию этого свойства?
Что-то запутался совсем

Вот произвольный алгоритм в ПВД:

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Номер");
ТЗ.Колонки.Добавить("Дата");
ТЗ.Колонки.Добавить("Комментарий");

СтрокаТЗ = ТЗ.Добавить();
СтрокаТЗ.Номер = "1";
СтрокаТЗ.Дата = ТекущаяДата();
СтрокаТЗ.Комментарий = "Мой комментарий";

СтрокаТЗ.ФИО= Новый ТаблицаЗначений;
СтрокаТЗ.Начисления.Колонки.Добавить("Физлицо");
СтрокаТЗ.Начисления.Колонки.Добавить("Результат");

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

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


Собственно - это не работает - "физлицо" в приемнике приходит пустым
13 hhhh
 
03.09.18
06:46
Запрос.Текст =
        "ВЫБРАТЬ
        |    НачисленияБонуса.Физлицо,
        |    СУММА(НачисленияБонуса.Результат)
        |ИЗ
        |    Документ.НачисленияБонуса.Начисления КАК НачисленияБонуса
        |ГДЕ
        |    НачисленияБонуса.Результат > 0
        |
        |СГРУППИРОВАТЬ ПО
        |    НачисленияБонуса.Физлицо";
14 new_hope
 
03.09.18
08:19
(13) Да, конечно, так.

Но - вопрос в другом.

Я в "ВыборкаДанных" пепедаю таблицу значений для заполнения табличного.
Но - т.к. "Физлицо" в источнике имеет тип СправочникСылка.Физлица а в СправочникСсылка.Сотрудники. Справочники не однотипные.

Что мне и где нужно сделать, чтобы в приемник передать Физлиц так, чтобы заполнить Сотрудников в приемнике?
15 Мимохожий Однако
 
03.09.18
08:32
(14) Вместо физлиц получить сотрудников нет возможности?
16 new_hope
 
03.09.18
08:35
(15)

Нет. Такого справочника в базе-источнике вообще нету.

Единственное - в базе.приемнике у справочника "Сотрудники" есть реквизит - Физлицо типа Справочник.Физлица
17 Wirtuozzz_Х
 
03.09.18
09:02
(0) жуть какая то. Неужели у вас РС имеет столько ресурсов и измерений, что бы заполнить документ?
18 new_hope
 
03.09.18
09:05
(17) Не понял вопроса.

В данном случае у меня все получилось, кроме второго вопроса, который я задал двумя сообщениями выше
19 VS-1976
 
03.09.18
09:14
(14) Если тупо создать сотрудников, то нужно написать правило конвертации из Физлица в Сотрудники и установить это правило для поля
20 new_hope
 
03.09.18
09:20
(19) Сотрудники в приемнике уже есть. Нужно просто сопоставить. Я просто все перепробовал - не пойму как сделать. Уже голова кругом идет. Вроде банальная вещь, или не?
21 Мимохожий Однако
 
03.09.18
09:27
(16) Не все физические лица становятся сотрудниками. Физлица в приёмнике есть?
22 new_hope
 
03.09.18
09:31
(21) Да, есть
23 Мимохожий Однако
 
03.09.18
09:32
(22) Зачем тогда тебе сотрудники?
24 new_hope
 
03.09.18
09:34
(21) Может както в параметре передать этих физлиц? Я-бы их в обработчике "ПослеЗагрузки" - сопоставил-бы с сотрудниками. Но как не пробовал - не получается.
25 new_hope
 
03.09.18
09:34
(23) Как заполнить документ Сотрудниками (а не физлицами)?
26 Мимохожий Однако
 
03.09.18
09:35
(24) Ответь Зачем..?
27 hhhh
 
03.09.18
09:36
(24) должно быть правило ФизЛицаСотрудники. Если оно уже есть
вставить его для ПКС Сотрудники.

В запросе конечно надо так

ВЫБРАТЬ
        |    НачисленияБонуса.Физлицо КАК Сотрудник,
28 new_hope
 
03.09.18
09:39
(26) Мне нужно получить приемнике Табличную документа "Назначения" - где Поле1 - Сотрудник. Поле2 - Сумма

В Источнике есть только Физлица.

Сейчас буду пробовать (24)
29 Мимохожий Однако
 
03.09.18
09:57
(28) Любопытно, на какую должность ты примешь на работу Сидорова или Петрова? У каждого сотрудника должна быть как минимум должность, оклад и т.п.
...
Я не понимаю логики.
30 new_hope
 
03.09.18
10:19
(29) Логика такова!

В Источнике есть куча документов, где табличная часть, например: Поле1 - Физлицо, Поле2 - Результат

В Приемнике также документ с табличной частью, где:
Поле1 - Сотрудник, Поле2 - Результат.

Мне нужно собрать все документы за период (за месяц например) - и по всем сотрудникам создать один документ.

Физлицо Источника = Сотруднику приемника. НО - в Приемнике есть справочник Физлиц, а у Сотрудника - реквизит - ссылка на Физлиц.

Задача скорее всего до безобразия банальная - но я просто видно что-то не так делаю, и запутался полностью
31 Мимохожий Однако
 
03.09.18
10:22
(30) А ты ответь на вопрос как бы ты вручную перенёс Сидорова в приёмник. Или пусть на этот вопрос ответит заказчик. После уточнения создать нового сотрудника, если он не сопоставлен проблем не будет
32 new_hope
 
10.09.18
10:16
Еще возник по ходу вопрос.

Есть справочники в базе источника и базе приемника с предопределенными элементами.

При переносе документа в табличном поле этого документа - значения этого справочника.

Ну - собственно - элементы этого справочника мне переносить не нужно - а нужно сопоставить элементы в приемнике:
Что-то типа:

Если Источник.реквизит = КакоетоЗначение Тогда Приемник.реквизит = НужноеЗначение

В каком событии и где это можно корректно сделать?

Пробовал делать - или в Приемнике создаются значения (которые мне не надо) или вообще ничего не переносится.

Подскажите - в каком месте мне сопоставлять конкретные значения справочника?
AdBlock убивает бесплатный контент. 1Сергей