helpf.pro
Регистрация

v8.2 УП: Чем занимается 1с

astonvilla
17.12.2012 12:24Прочитано: 5216
Есть конфигурация под УФ. Из нее подключаюсь в 1с 77, импортирую по OLE данные.
Как выводить в процессе импорта информацию о том, что в данный момент импортируется? Под толстым клиентом было просто - я выводил инфу в состояние, тут же вижу сообщения "после всего", а это немного неудобно )
Есть идеи?
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
17.12.2012 12:54Ответ № 1
(0) astonvilla, Код импорта выполняется на сервере?
astonvilla
17.12.2012 12:59Ответ № 2
(1) Да, импорт выполняется на сервере...
Изменено 17.12.12 13:51:51
astonvilla
17.12.2012 13:01Ответ № 3
В принципе была идея тупо писать в текстовик чем он занимается )
Чтобы хоть где-то можно было глянуть....
А то при импорте ... миллионов записей и времени этого импорта в ... часов хочется знать сколько это еще займет и когда закончиться )
astonvilla
17.12.2012 13:04Ответ № 4
Когда база 82 была файловая импорт выполнялся под толстым клиентом. Проблемы с выводом состояния естественно не было. После перевода базы под SQL переписал обработку под УФ. Ну и встал вопрос о выводе текущего состояния...
Gnost
17.12.2012 13:46Ответ № 5
Прошу прощения за спам, никак не могу найти кнопку удаления
Изменено 17.12.12 13:49:41
E_Migachev
17.12.2012 13:59Ответ № 6
(0) astonvilla,
Обработка на сервере с отображение процесса загрузки и возможностью прерывания

Код 1C v 8.х
 &НаСервере
Функция ИнициализацияОбработкиСервер()

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Спр.Ссылка
|ИЗ
| Справочник.Банки КАК Спр";

Данные = Запрос.Выполнить().Выгрузить();
АдресДанных = ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор);

// Обработка
// В справочнике ~ 4000 элементов
Возврат Данные.Количество();

КонецФункции

&НаСервереБезКонтекста
Функция ОбработатьЭлемент(ДанныеЭлемента)

СпрОбъект = ДанныеЭлемента.Ссылка.ПолучитьОбъект();

// Обработка

СпрОбъект.ОбменДанными.Загрузка = Истина;
СпрОбъект.Записать();

КонецФункции

&НаСервереБезКонтекста
Функция ОбработатьПорциюНаСервере(Начало, Конец, АдресДанных)

Данные = ПолучитьИзВременногоХранилища(АдресДанных);

Для Счетчик = Начало - 1 По Конец - 1 Цикл

ОбработатьЭлемент(Данные[Счетчик]);

КонецЦикла;

КонецФункции

&НаКлиенте
Процедура ВыполнитьОбработку(Команда)

Количество = ИнициализацияОбработкиСервер();
РазмерШага = 10;
КоличествоШагов = Цел(Количество / РазмерШага);
КоличествоЦел = КоличествоШагов * РазмерШага;

Если КоличествоЦел < Количество Тогда
Элементы.Индикатор.МаксимальноеЗначение = КоличествоШагов + 1;
Иначе
Элементы.Индикатор.МаксимальноеЗначение = КоличествоШагов;
КонецЕсли;

Для Счетчик = 1 По КоличествоШагов Цикл

ОбработатьПорциюНаСервере(РазмерШага * (Счетчик - 1) + 1, РазмерШага * Счетчик, АдресДанных);
Индикатор = Счетчик;
ОбработкаПрерыванияПользователя();
ОбновитьОтображениеДанных();

КонецЦикла;

Если КоличествоЦел < Количество Тогда

ОбработатьПорциюНаСервере(КоличествоШагов * РазмерШага + 1, Количество, АдресДанных);
Индикатор = Индикатор + 1;

КонецЕсли;

КонецПроцедуры
Пример обработка - Скачивать файлы может только зарегистрированный пользователь!
astonvilla
17.12.2012 14:10Ответ № 7
Спасибо, буду смотреть....
Подсказка: Для выделения Кода используйте (в редакторе).
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.