Имя: Пароль:
1C
1С v8
Конвертация данных - произвольный код.
,
0 d3N4eGG
 
06.09.13
17:15
Добрый день!

Разбираюсь с конфигурацией "Конвертация данных". Была поставлена задача: реализовать перенос данных из одной "торговли" в другую. Конфигурации абсолютно одинаковые. Нужно перенести некоторые справочники, регистры и тд.

С правилами обмена вроде разобрался, с обработчиками тоже.
Сейчас столкнулся со следующей проблемой:

Допустим, есть у нас регистр сведений "ЦеныНоменклатуры", в нем миллион миллионов записей. Мне же нужно из него вытащить срез последних и завести эти данные в новой базе документом "УстановкаЦенНоменклатуры".

Вопрос следующий, а где такой код мне писать? Я предполагаю, что должен быть какой-то общий модуль для таких операция, но не нашел такого, может плохо искал.

Подскажите, пожалуйста.
1 Alex S D
 
06.09.13
17:18
копай ПВД произвольный запрос
2 Абыр
 
06.09.13
17:19
(0) ПВД. Произвольный запрос. ВыгрузитьПоПравилу(), либо заполняете ВыборкаДанных.
3 d3N4eGG
 
06.09.13
17:21
спасибо, буду дальше разбираться
4 Крошка Ру
 
06.09.13
17:39
ПКО - Обработчики событий, не подойдут? Собственно можно писать практически любой код, который будет запускаться в нужный момент(перед выгрузкой, при выгрузки, после выгрузки в файл и т.д.)
5 d3N4eGG
 
09.09.13
14:16
Хочу снова поднять вопрос. Так и не могу понять, и найти ответа.

Я разобрался как работают алгоритмы, запросы, ВыгрузитьПоПравилу(). Но не понимаю следюещее:
у меня задача такая, есть регистр накопления "ТоварыНаСкладах", мне нужно взять остатки из этого регистра и в новой базе создать документ "Оприходование", куда внести остатки.

По моей логике, где-то должен быть общий модуль, к примеру, в Правилах выгрузки данных, где я уже пропишу следующий код:

РезультатЗапроса = Запросы.ОстаткиТоваровНаСкладах.Выполнить().Выгрузить();

НовДок = Документы.Оприходование.СоздатьДокумент();
НовДок.УстановитьНовыйНомер();
НовДок.УстановитьВремя();
Для Каждого Стр Из РезультатЗапроса Цикл
   НовСтр = НовДок.Товары.Добавить();
   НовСтр.Товар = Стр.Товар;
   НовСтр.Количество = Стр.Количество();
КонецЦикла;
НовДок.Записать();


Как правильно реализовать такой фрагмент? есть ли такой общий модуль?
6 d3N4eGG
 
09.09.13
14:27
up. ребят помогите
7 d3N4eGG
 
09.09.13
14:27
пожалуйста
8 mxs089
 
09.09.13
14:36
создаешь ПВД, называешь остатки по регистру, перед выгрузкой получаешь остатки и вызываешь правило, без источника, где приемник документ оприходования
9 mxs089
 
09.09.13
14:37
(8) вызываешь ПКО
10 Шурик71
 
09.09.13
14:37
Все неправильно.

Тебе не надо создавать документ.
Тебе надо создать структуру данных, аналогичную документу.
На стороне базы - источника.

Т.е. примерно так:

ТЗ = Запросы.ОстаткиТоваровНаСкладах.Выполнить().Выгрузить();

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

ДанныеВыгрузки.Вставить("Товары",ТЗ);
...

ВыгрузитьПоПравилу(ДанныеВыгрузки, , , ,"ТребованиеНакладная");


(или ВыгрузитьПоПравилу( ,  ,ДанныеВыгрузки , ,"ТребованиеНакладная"); - в этом случае все получать из входящих данных

Это все будет в произвольном алгоритме правил выгрузки данных.
11 Шурик71
 
09.09.13
14:38
*ВыгрузитьПоПравилу(ДанныеВыгрузки, , , ,"ТутНазваниеПравилаОприходования");