Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Обмен между базами Состояние() , Отображение прогресса обмена          
Veizdem Подменю пользователя
сообщение 18.11.16, 10:33
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0

Добрый день, есть самописная конфигурация (не мной) тянущаяся с 7.7 до 8.3 версии, приложение обычное, но были попытки переводить его в управляемое, так что теперь это комбайн из обычного приложения, в котором местами есть управляемые формы. Так вот, задача имея форму управляемого приложения в обработке, которая делает обмен между базами, вывести в строку состояния обычного приложения (или окошко состояния, не важно) при помощи метода Состояние() прогресс самого обмена, условно, видеть хотя бы какой процент имеющихся изменений в файле обмена изменений уже обработаны (при загрузке) или же наоборот уже записаны в файл (при выгрузке). Есть ли вообще такая возможность и если да, то каким способом делается?


Signature
В моих жилах текут нолики и единички...

Vofka Подменю пользователя
сообщение 18.11.16, 11:04
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Надо куда-то писать прогресс, а в форме периодически опрашивать то, куда он пишется.

logist Подменю пользователя
сообщение 18.11.16, 11:07
Сообщение #3

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Написать код серверной части таким образом, что бы можно было вызывать его "порциями" с клиента, на клиенте - между порциями отображать изменение состояния.

Цитата(Vofka @ 18.11.16, 12:04) *
а в форме периодически опрашивать то, куда он пишется.

Только в том случае если выполнение будет в фоновом задании, иначе форма будет ждать пока завершится серверная часть, выполнять что-то паралельно не будет.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 18.11.16, 11:14
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Цитата(logist @ 18.11.16, 11:07) *
Только в том случае если выполнение будет в фоновом задании, иначе форма будет ждать пока завершится серверная часть, выполнять что-то паралельно не будет.

Верное замечание.

Veizdem Подменю пользователя
сообщение 18.11.16, 11:46
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0

Получение данных из файла выполняется таким образом:
&НаКлиенте
Процедура ПрочитатьИзмененияНаСервере(ИмяФайла)
    //Создать и проанализировать объект ЧтениеXML
    ЧтениеXML=Новый ЧтениеXML;
    ЧтениеXML.ОткрытьФайл(ИмяФайла);
    //Создать объект ЧтениеСообщенияОбмена и начать чтение сообещиня
    ЧтениеСообщения=ПланыОбмена.СоздатьЧтениеСообщения();
    ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
    //Прочитать содержимое тела сообещения
    ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения);
    //Закончить чтение сообщения и чтение XML
    ЧтениеСообщения.ЗакончитьЧтение();
    ЧтениеXML.Закрыть();
КонецПроцедуры

&НаКлиенте
Процедура ПрочитатьИзменения(Команда)
    ИмяXMLФайла=РазархивироватьФайл(РабочийКаталог+ИмяЗагрузки);
    ПрочитатьИзмененияНаСервере(ИмяXMLФайла);
    Предупреждение("Чтение изменений завершено.",10);
КонецПроцедуры


А записывается в файл так:
&НаКлиенте
Процедура ЗаписатьИзмененияНаСервере(Узел,ИмяФайла)
    //Создать и проанализировать объект ЗаписьXML
    ЗаписьXML=Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл(ИмяФайла);
    //Создать объект ЗаписьСообщенияОбмена и начать запись сообщения.
    ЗаписьСообщения=ПланыОбмена.СоздатьЗаписьСообщения();
    ЗаписьСообщения.НачатьЗапись(ЗаписьXML,Узел);
    //Записать содержимое тела сообщения обмена данными распределенной ИБ
    ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения);
    //Закончить запись сообщения и запись XML
    ЗаписьСообщения.ЗакончитьЗапись();
    ЗаписьXML.Закрыть();
КонецПроцедуры

&НаКлиенте
Процедура ЗаписатьИзменения(Команда)
    ИмяФайлаБезРасширения=Лев(ИмяВыгрузки,Найти(ИмяВыгрузки,".")-1);
    ИмяФайлаXML=РабочийКаталог+ИмяФайлаБезРасширения+".xml";
    ЗаписатьИзмененияНаСервере(ПолеВводаОтделение,ИмяФайлаXML);
    ЗаархивироватьФайл(РабочийКаталог+ИмяФайлаБезРасширения);
    ЗаписатьИзмененияНаСервере(ПолеВводаОтделение,ИмяФайлаXML);
    Предупреждение("Запись изменений завершена.",10);
КонецПроцедуры


Signature
В моих жилах текут нолики и единички...

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 20.04.24, 3:43
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!