Оптимизация передачи данных между "1С" и "ST-Мобильная Торговля"

Прикладные решения для российских организаций на платформе "1С:Предприятие 8". Особенности обмена данными с помощью XML-файлов между "1С" и "ST-Мобильная Торговля". Создание плана обмена, предназначенного для регистрации измененной цены в номенклатуре.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 27.03.2015
Размер файла 1,9 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

- номер отправленного сообщения;

- номер принятого сообщения.

Для предопределенного узла эти свойства смысла не имеют (база данных сама с собой данными не обменивается).

Служба регистрации изменений предназначена для регистрации изменений данных, производимых «1С:Предприятием», чтобы при обмене данными иметь возможность передавать не все данные, а только новые, измененные и удаленные.

Настройка состава объектов, для которых включается регистрация изменений, производится в режиме Конфигуратор, на закладке Основные объекта конфигурации ПланОбмена (необходимо нажать кнопку Состав), Рис. 11.

Можно сказать, что объекты, для которых включается регистрация изменений, являются входными данными для службы регистрации изменений. Задача этой службы состоит в том, чтобы, опираясь на данный перечень объектов, отслеживать изменения объектов, их удаление и производить соответствующие записи в таблицах регистрации изменений объектов. При этом отслеживаются ситуации повторного изменения.

Рисунок 11 - Состав плана обмена

Обобщив изложенный ранее материал, можно сказать, что планы обмена:

- определяют состав участников обмена (любой узел, кроме предопределенного, соответствует какому-либо участнику обмена);

- позволяют производить регистрацию изменений объектов (служба регистрации изменений, как объектов, так и самой конфигурации);

- реализуют инфраструктуру сообщений.

Целью регистрации изменений является получение списка измененных элементов данных, которые должны быть переданы в очередном сообщении тому или иному узлу, с которым производится обмен данными. При каждом изменении данных должно быть зарегистрировано, что имеются изменения, которые предстоит передать во все узлы, с которыми поддерживается обмен этими данными. При получении подтверждения приема сообщения, в котором были отправлены изменения, записи регистрации изменений должны быть удалены.

Регистрация изменений может выполняться для следующих элементов данных:

- КонстантаМенеджерЗначения.<имя>;

- объекты базы данных:

1) СправочникОбъект.<имя>;

2) ДокументОбъект.<имя>;

3) ПланСчетовОбъект.<имя>;

4) ПланВидовХарактеристикОбъект.<имя>;

5) ПланВидовРасчетаОбъект.<имя>;

6) БизнесПроцессОбъект.<имя>;

7) ЗадачаОбъект.<имя>;

- наборы записей:

1) РегистрСведенийНаборЗаписей.<имя>;

2) РегистрБухгалтерииНаборЗаписей.<имя>;

3) РегистрНакопленияНаборЗаписей.<имя>;

4) ПоследовательностьНаборЗаписей.<имя>;

5) РегистрРасчетаНаборЗаписей.<имя>;

6) ПерерасчетНаборЗаписей.<имя>.

Для каждого из приведенных элементов данных ведется своя таблица регистрации изменений. Таблицы имеют разную структуру, в зависимости от того, для каких элементов данных регистрируются изменения, но все-таки структуры таблиц подобны. В структуре можно выделить три составляющих:

- ключ элемента данных, для которого регистрируются изменения;

- ссылка на узел, в который изменение должно быть передано;

- номер сообщения, в котором изменение передано в первый раз.

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

Структуры таблиц регистрации изменений для разных данных отличаются ключом, так как ключи у разных данных разные:

- для константы ключом является идентификатор константы;

- для объектов базы данных в качестве ключа используется ссылка на объект;

- для наборов записей, для которых определен регистратор, в качестве ключа используется ссылка на объект-регистратор;

- для набора записей регистра сведений, если регистратор не определен, в качестве ключа используется совокупность измерений, входящих в основной отбор. А если регистр сведений является периодическим и включен основной отбор по периоду, то в ключ входит еще и период.

Изменение элемента данных должно быть зарегистрировано для всех узлов, в которые изменение должно быть передано. Таким образом, в результате изменения элемента данных в таблице регистрации изменений должно появиться N записей (наборов записей), где N - количество узлов, для которых регистрируются изменения (все узлы плана обмена, за исключением предопределенного). В каждой из этих записей (наборе записей) указано одно и то же значение ключа элемента данных и различные значения ссылки на узел.

Непосредственно после выполнения регистрации изменения номер сообщения имеет значение Null. При первой отправке изменения в составе сообщения в данное поле помещается номер сообщения, в котором изменение отправлено.

Cостав плана обмена распространяется на все узлы данного плана обмена. Поэтому, если, например, с разными узлами нужно обмениваться разным составом информации, необходимо создавать несколько планов обмена, в которых объединять узлы, обменивающиеся одинаковым составом информации.

При определении состава объектов, для которых производится регистрация изменений (кнопка Состав на закладке Основные объекта конфигурации План обмена), для каждого объекта можно определить свойство Авторегистрация (Рис. 12).

Рисунок 12 - Свойство «Авторегистрация»

Авторегистрацию можно разрешить или запретить. Если авторегистрация разрешена, то при изменении данных регистрация будет выполнена автоматически. Если запрещена, то регистрацию изменения необходимо выполнять «вручную» (определив код на встроенном языке). Следует отметить, что можно «корректировать» результат регистрации и в том случае, если авторегистрация объекта включена.

У каждого объекта конфигурации, входящего в состав плана обмена, имеется свойство ОбменДанными, имеющее тип ПараметрыОбменаДанными. Данное свойство может быть использовано только для чтения и предназначено как для управления различными параметрами при обмене данными, так и при реализации других механизмов, связанных с изменением объекта. Например, такое свойство, как Загрузка, может определять необходимость проведения (непроведения) каких-либо проверок в момент записи объекта (при записи в режиме загрузки можно отказаться от проверки номеров, кодов объектов, наличия каких-либо связанных с загружаемыми объектами данных и т. п., так как эти данные могут быть загружены после).

Следует обратить внимание на тот факт, что значение данного свойства не хранится в базе данных. В соответствии с этим все изменения (определения различных коллекций, свойств), которые выполняются через данное свойство, «работают» только в течение существования объекта.

У объекта ПараметрыОбменаДанными есть свойство Получатели, имеющее тип НаборУзлов. В данном свойстве хранится перечень узлов, для которых будет выполняться регистрация изменений при записи или удалении данных.

Если для объекта включена автоматическая регистрация изменений, этот список получателей (свойство Получатели) заполняется автоматически, перед тем как будет вызван обработчик события ПередЗаписью (при выполнении записи данных) или ПередУдалением (при выполнении удаления). Перед вызовом данных обработчиков событий список получателей предварительно очищается. Исходя из этого, вносить изменения в список получателей (если для объекта включена автоматическая регистрация изменений) можно только в обработчиках ПередЗаписью (и/или ПередУдалением). При этом следует помнить, что список получателей может содержать только ссылки на узлы, относящиеся к планам обмена, в состав которых входит соответствующий объект конфигурации.

В приведенном ниже примере обработчик ПередЗаписью исключает из списка получателей узел с кодом Оптовый плана обмена УдаленныеСклады:

Процедура ПередЗаписью()

Узел = ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Оптовый");

Объект.ОбменДанными.Получатели.Удалить(Узел);

КонецПроцедуры

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

Пример реализации:

Узел = ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Оптовый");

Объект.ОбменДанными.Получатели.Автозаполнение = Ложь;

Объект.ОбменДанными.Получатели.Добавить(Узел);

Объект.Записать();

В этом случае автозаполнение отключается, и состав коллекции получателей можно определять в любом возможном месте (участке кода, отвечающего за работу с объектом). Но чтобы конфигурация была логически понятна и легко читаема, лучше это делать все в тех же обработчиках событий ПередЗаписью и/или ПередУдалением.

Также следует напомнить, что в конфигурации может быть определено несколько планов обмена. В одном из них для объекта может быть включена автоматическая регистрация изменений, в другом она может быть отключена.

Если автоматическая регистрация изменений не производится, то перед вызовом обработчиков ПередЗаписью и ПриУдалении сброс и заполнение списка получателей не осуществляются. Исходя из этого, заполнение данного списка может производиться в любом фрагменте кода:

Узел = ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Оптовый");

Объект.ОбменДанными.Получатели.Добавить(Узел);

Объект.Записать();

Если автоматическая регистрация изменений для объекта отключена и в конфигурации нигде не встречаются строки кода, подобные тем, которые приведены выше (или будут рассматриваться ниже), экземпляры данного объекта никогда не попадут в таблицу регистрации изменений (для данного объекта она будет пустой).

В некоторых случаях может потребоваться принудительная регистрация изменений для какого-либо объекта, их списка (или всех объектов). Для этой цели может использоваться метод ЗарегистрироватьИзменения() объекта ПланыОбменаМенеджер. Данный метод позволяет выполнять регистрацию изменений одиночных элементов данных или целых групп для одного или нескольких узлов.

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

Узел = ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Новый");

ПланыОбмена.ЗарегистрироватьИзменения(Узел);

Данный вариант использования метода может быть полезен для организации начальной передачи данных вновь созданному узлу.

Если же первый параметр представляет собой массив ссылок на узлы, то второй параметр обязательно должен быть указан:

Узлы = Новый Массив(2);

Узлы[0] = ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Оптовый");

Узлы[1] = ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Розничный");

Данные = Справочники.Номенклатура.НайтиПоКоду("000000004");

ПланыОбмена.ЗарегистрироватьИзменения(Узлы, Данные);

Впрочем, второй параметр может присутствовать и в том случае, если первый параметр - одиночная ссылка на узел. В зависимости от способа задания второго параметра можно зарегистрировать изменения одного элемента данных или же всех данных, относящихся к одному объекту конфигурации. Кроме этого, можно зарегистрировать удаление объекта (указав в качестве второго параметра объект типа УдалениеОбъекта).

Для регистрации изменений одного элемента в качестве второго параметра может быть указан сам элемент данных, ссылка на объект базы данных или объект конфигурации.

Пример регистрации изменений всех данных, относящихся к объекту конфигурации:

Узлы = Новый Массив(2);

Узлы[0] = ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Оптовый");

Узлы[1] = ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Розничный");

ПланыОбмена.ЗарегистрироватьИзменения(Узлы, Метаданные.Справочники.Номенклатура);

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

- гарантированная доставка сообщений. В этом случае очистка таблиц регистрации изменений производится сразу же после того, как сообщение будет сформировано;

- ожидание квитанции. В этом случае очистка таблиц регистрации изменений производится при приеме сообщения, исходя из номера последнего полученного «от нас» сообщения (этот номер передается как квитанция в заголовке сообщения).

Для удаления записей регистрации изменений у менеджера планов обмена имеется метод УдалитьРегистрациюИзменений(). В качестве первого параметра метода может использоваться ссылка на узел или массив таких ссылок. В качестве второго параметра может указываться ссылка на объект, УдалениеОбъекта, объект конфигурации, число (номер сообщения).

Для удаления записей таблицы регистрации изменений с номерами сообщения не больше переданного (в примере с номерами 1 и 2) может использоваться фрагмент кода:

ЧтениеXML = Новый ЧтениеXML;

ЧтениеXML.ОткрытьФайл(ИмяФайла);

// Загрузка из найденного файла.

ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();

ЧтениеСообщения.НачатьЧтение(ЧтениеXML);

// Считаем, что получен номер сообщения, равный 2.

НомерПринятого = ЧтениеСообщения.НомерПринятого;

ПланыОбмена.УдалитьРегистрациюИзменений(Узел, НомерПринятого);

Пример удаления записей регистрации изменений для всех данных, которые зарегистрированы для узла:

Узел = ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Оптовый");

ПланыОбмена.УдалитьРегистрациюИзменений(Узел);

Можно удалить записи регистрации изменений конкретного элемента данных для одного или нескольких узлов:

Узлы = Новый Массив(2);

Узлы[0] = ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Оптовый");

Узлы[1] = ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Розничный");

Данные = Справочники.Номенклатура.НайтиПоКоду("000000004");

ПланыОбмена.УдалитьРегистрациюИзменений(Узлы, Данные);

Также можно удалить записи регистрации изменений всех данных, относящихся к объекту конфигурации для одного или нескольких узлов:

Узлы = Новый Массив(2);

Узлы[0] = ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Оптовый");

Узлы[1] = ПланыОбмена.УдаленныеСклады.НайтиПоКоду("Розничный");

ПланыОбмена.УдалитьРегистрациюИзменений(Узлы, Метаданные.Справочники.Номенклатура);

В режиме Конфигуратор был создан план обмена «Новый». В составе объектов, для которых включается регистрация изменений, включена Номенклатура (Рис. 13).

Рисунок 13 - План обмена «Новый»

Авторегистрация запрещена с целью регистрации только при изменении цены в номенклатуре в ручном режиме. Для регистрации в ручном режиме в документе «УстановкаЦенНоменклатура: Модуль объекта» были написаны процедура и функция.

Код процедуры и функции:

Функция ПроверитьНомВМарш(Маршрут, Ном)

Перечень=Маршрут.ПереченьТоваров;

Если Перечень.Код=1 Тогда

Рез=Истина;

Возврат Рез;

КонецЕсли;

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| МТ_ПереченьТоваровТовары.Товар

|ИЗ

| Справочник.МТ_ПереченьТоваров.Товары КАК МТ_ПереченьТоваровТовары

|ГДЕ

| МТ_ПереченьТоваровТовары.Ссылка = &Перечень

| И МТ_ПереченьТоваровТовары.Товар = &Ном";

Запрос.УстановитьПараметр("Ном", Ном);

Запрос.УстановитьПараметр("Перечень", Перечень);

Результат = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = Результат.Выбрать();

Если ВыборкаДетальныеЗаписи.Следующий() Тогда

Рез=Истина;

Иначе

Если Ном.Родитель<>Справочники.Номенклатура.ПустаяСсылка() Тогда

Рез=ПроверитьНомВМарш(Маршрут, Ном.Родитель);

Иначе

Рез=Ложь;

КонецЕсли;

КонецЕсли;

Возврат Рез;

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

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства);

Документы.УстановкаЦенНоменклатуры.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

Ценообразование.ОтразитьЦеныНоменклатуры(ДополнительныеСвойства, Движения, Отказ);

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

Для Каждого Стр Из Движения.ЦеныНоменклатуры Цикл

Ном=Стр.Номенклатура;

Узел=ПланыОбмена.Новый.Выбрать();

//Узел=ПланыОбмена.Новый.НайтиПоКоду("102");

Пока Узел.Следующий() Цикл

Маршрут=Справочники.МТ_Маршруты.НайтиПоКоду(Узел.Код);

Если Маршрут=Справочники.МТ_Маршруты.ПустаяСсылка() Тогда

Продолжить;

КонецЕсли;

Если ПроверитьНомВМарш(Маршрут, Ном)=Истина Тогда

ПланыОбмена.ЗарегистрироватьИзменения(Узел.Ссылка, Ном);

Сообщить(Маршрут);

КонецЕсли;

КонецЦикла;

КонецЦикла;

КонецПроцедуры

В данном коде идет регистрация изменений цены на товары, если они имеются в маршруте каждого торгового представителя. У торговых представителей имеется свой номер, который соответствует номеру узла плана обмена.

При установке новой цены на товар происходит регистрация новой цены в номенклатуре для каждого узла, при условии, что этот товар имеется в маршруте торгового представителя.

3.2 Создание внешней обработки «ВыгрузкаТолькоЦен» (External Data Processor ), выгружающей измененную цену для выбранного маршрута в xml-файл

Обработки - это прикладные объекты конфигурации. Они предназначены для выполнения различных действий над информацией.

Например, с их помощью можно выполнять удаление из системы устаревших данных, импорт информации из других систем и многое другое. Характер выполняемых в этом случае действий отражает название объекта конфигурации - Обработка, так как в результате информация, хранящаяся в системе, претерпевает какие-либо изменения.

Обработка может содержать одну или несколько форм, с помощью которых, при необходимости, можно организовать ввод каких-либо параметров, влияющих на ход алгоритма. Вывод результатов выполнения алгоритма на экран и принтер осуществляется с помощью конструктора запроса с обработкой результата.

Основное отличие обработки от отчета заключается в том, что отчет может использовать схему компоновки данных. В остальном обработка не отличается от отчета.

Внешние обработки представляют собой обработки, которые не входят в состав прикладного решения и хранятся в отдельных файлах с расширением *.epf.

Основное их преимущество заключается в том, что такие обработки можно использовать в различных прикладных решениях без изменения структуры самих решений. Кроме того, важным преимуществом внешних обработок является возможность проектировать и отлаживать их в процессе работы прикладного решения, без необходимости сохранения каждый раз конфигурации прикладного решения.

Внешнюю обработку можно создать в конфигураторе (Рис. 16)

Рисунок 16 - Пример создания внешней обработки

В режиме 1С:Предприятие внешнюю обработку можно запустить на выполнение, открыв ее как любой другой файл, хранящийся на диске (Рис. 17). Такая обработка будет работать точно так же, как если бы она входила в состав прикладного решения.

Рисунок 17 - Пример открытия внешней обработки

Любой существующий в конфигурации отчет или обработка может быть преобразован во внешний, и наоборот. Кроме этого внешние обработки и отчеты могут быть добавлены в структуру прикладного решения как новые объекты (Рис. 18).

Рисунок 18 - Пример добавления внешней обработки в структуру прикладного решения

Конфигуратор поддерживает также возможность сравнения и объединения существующей в конфигурации обработки или отчета с внешней обработкой и отчетом, а также сравнение и объединение двух внешних отчетов или обработок.

Для обмена измененной ценой на товары была создана внешняя обработка ВыгрузкаТолькоЦен. Для запуска этой обработки на форме внутренней обработки «МТ_ОбменДанными» создана кнопка «Выгрузка изменений».

Так как код выгрузки в нужном формате из 1С уже есть, поэтому во внешнюю обработку был скопирован код из обработки Выгрузка. Затем этот код был отредактирован, чтобы выгружалась только цену на товар. Для получения измененной цены из таблицы регистрации изменений была написана следующая функция:

Функция ВыгрузитьРегЦены(group, пИмяXML) Экспорт

Узел=ПланыОбмена.Новый.НайтиПоКоду(Маршрут.Код);

//Сообщить("-------- Выгрузка в узел " + Строка(ЭтотОбъект) + " ---------");

Каталог = КаталогВременныхФайлов();

// Сформировать имя временного файла

ИмяФайла = Каталог +?(Прав(Каталог, 1) = "\","", "\") + "Message" + СокрЛП(Узел.Код) + "_" + СокрЛП(Маршрут.Код) + ".xml";

ЗаписьXML = Новый ЗаписьXML;

ЗаписьXML.ОткрытьФайл(ИмяФайла);

ЗаписьXML.ЗаписатьОбъявлениеXML();

// *** Инфраструктура сообщений

ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();

ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Узел);

// Сообщить("Номер сообщения: " + ЗаписьСообщения.НомерСообщения);

// Получить выборку измененных данных

// *** Механизм регистрации изменений

ВыборкаИзменений =ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения)

prices = ДокXML.CreateElement("prices");

Пока ВыборкаИзменений.Следующий() Цикл

лТЗнЭлементы =ВыборкаИзменений.Получить().Ссылка; //ТаблицаТоваровИндивидуальные.ВыгрузитьКолонку("Номенклатура");

Запрос = Новый Запрос();

Запрос.Текст ="ВЫБРАТЬ РАЗРЕШЕННЫЕ

| ЦеныНоменклатурыСрезПоследних.Цена * КурсыВалютСрезПоследних.Курс КАК Цена,

| ЦеныНоменклатурыСрезПоследних.Номенклатура,

| ЦеныНоменклатурыСрезПоследних.Упаковка,

| ЦеныНоменклатурыСрезПоследних.ВидЦены,

| ЦеныНоменклатурыСрезПоследних.Характеристика

|ИЗ

| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(

| &ВрТочка,

| ВидЦены В (&СписокЦен)

| И Номенклатура В (&СписокТоваров)) КАК ЦеныНоменклатурыСрезПоследних

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютСрезПоследних

| ПО ЦеныНоменклатурыСрезПоследних.Валюта = КурсыВалютСрезПоследних.Валюта";

Запрос.УстановитьПараметр("ВрТочка", ДатаФормирования);

Запрос.УстановитьПараметр("СписокЦен", СписокВидовЦен);

Запрос.УстановитьПараметр("СписокТоваров", лТЗнЭлементы);

ВыборкаЦен = Запрос.Выполнить().Выбрать();

prices = ДокXML.CreateElement("prices");

Пока ВыборкаЦен.Следующий() Цикл

price = МТ_СистемаСервер.ДобавитьОбъект(ДокXML, "price");

Если ВыборкаЦен.Номенклатура.ВидНоменклатуры.ИспользованиеХарактеристик = Перечисления.ВариантыВеденияДополнительныхДанныхПоНоменклатуре.ИндивидуальныеДляНоменклатуры тогда

Если ЗначениеЗаполнено(ВыборкаЦен.Характеристика) тогда

МТ_СистемаСервер.ДобавитьПотомка(ДокXML, price, "skucode", МТ_СистемаСервер.СТ_ЗначениеВСтрокуВнутр(ВыборкаЦен.Характеристика);

Иначе

МТ_СистемаСервер.ДобавитьПотомка(ДокXML, price, "skucode", МТ_СистемаСервер.СТ_ЗначениеВСтрокуВнутр(ВыборкаЦен.Номенклатура));

КонецЕсли;

ИначеЕсли ВыборкаЦен.Номенклатура.ВидНоменклатуры.ИспользованиеХарактеристик = Перечисления.ВариантыВеденияДополнительныхДанныхПоНоменклатуре.НеИспользовать тогда

МТ_СистемаСервер.ДобавитьПотомка(ДокXML, price, "skucode", МТ_СистемаСервер.СТ_ЗначениеВСтрокуВнутр(ВыборкаЦен.Номенклатура));

ИначеЕсли ВыборкаЦен.Номенклатура.ВидНоменклатуры.ИспользованиеХарактеристик = Перечисления.ВариантыВеденияДополнительныхДанныхПоНоменклатуре.ОбщиеДляВидаНоменклатуры тогда

Если ЗначениеЗаполнено(ВыборкаЦен.Характеристика) тогда

МТ_СистемаСервер.ДобавитьПотомка(ДокXML, price, "skucode", МТ_СистемаСервер.СТ_ЗначениеВСтрокуВнутрПоДвумЭлементамКиИнд(ВыборкаЦен.Характеристика, ВыборкаЦен.Номенклатура));

Иначе

МТ_СистемаСервер.ДобавитьПотомка(ДокXML, price, "skucode", МТ_СистемаСервер.СТ_ЗначениеВСтрокуВнутр(ВыборкаЦен.Номенклатура));

КонецЕсли;

КонецЕсли;

Если НЕ ВыборкаЦен.Упаковка = Справочники.УпаковкиНоменклатуры.ПустаяСсылка() тогда

МТ_СистемаСервер.ДобавитьПотомка(ДокXML, price, "unitcode", МТ_СистемаСервер.СТ_ЗначениеВСтрокуВнутр(ВыборкаЦен.Упаковка.Ссылка));

Иначе

МТ_СистемаСервер.ДобавитьПотомка(ДокXML, price, "unitcode", МТ_СистемаСервер.СТ_ЗначениеВСтрокуВнутр(ВыборкаЦен.Номенклатура.ЕдиницаИзмерения));

КонецЕсли;

МТ_СистемаСервер.ДобавитьПотомка(ДокXML, price, "pricetypecode" , МТ_СистемаСервер.СТ_ЗначениеВСтрокуВнутр(ВыборкаЦен.ВидЦены));

МТ_СистемаСервер.ДобавитьПотомка(ДокXML, price, "price", ВыборкаЦен.Цена);

МТ_СистемаСервер.ДобавитьНоду(prices, price);

мКолвоОбъектов = мКолвоОбъектов + 1;

КонецЦикла;

МТ_СистемаСервер.ДобавитьНоду(group, prices);

КонецЦикла;

ПланыОбмена.УдалитьРегистрациюИзменений(ЗаписьСообщения.Получатель,

ЗаписьСообщения.НомерСообщения);

КонецФункции //ВыгрузитьРегЦены()

Вначале идет определение узла, торгового маршрута, для которого необходимо делать выгрузку. Затем для этого узла из таблицы регистрации берутся товары, для которых необходимо делать выгрузку, для каждого запрашиваются данные, необходимые при выгрузке в XML-файл, после чего эти данные записываются в XML в нужном формате.

3.3 Тестирование программы

Для проверки эффективности проделанной работы были созданы две внешние обработки, одна из которых создает 5000 товаров, а другая - устанавливает цену для 5000 товаров.

При изменении цены для 10 наименований при полной выгрузке время работы программы составляет в среднем 65 сек, а при обмене только изменениями время выгрузки информации составляет в среднем 2 сек.

Объем информации при полном обмене составляет 7843,84 КБ, а при обмене изменениями - 2,30 КБ.

Обмен изменениями позволяет намного меньше затрачивать времени на выгрузку информации и объем передаваемых данных тоже намного меньше, в результате чего идет экономия на GPRS-интернете.

ЗАКЛЮЧЕНИЕ

В результате проделанной работы был оптимизирован процесс передачи данных между «1С: Управление торговлей» и «ST-Мобильная Торговля», в результате чего был уменьшен трафик передаваемых данных и уменьшено время, затрачиваемое на выгрузку данных.

Для достижения цели были решены следующие задачи:

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

- Создана внешняя обработка, которая выгружает только измененную цену для выбранного маршрута в xml-файл в нужном формате.

Полученные результаты внедрены в деятельность организации ООО «Компания Респект», которая занимается обслуживанием организаций, работающих с «1С» в целом и «1С: Управление торговлей» в частности, что подтверждено соответствующей справкой о внедрении.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1 www.1c.ru / Сайт фирмы «1С» / http://www.1c.ru/rus/firm1c/firm1c.htm [17.02.14].

2 v8.1c.ru / Сайт фирмы «1С» / http://v8.1c.ru [18.02.14].

3 www.sys4tec.com / Сайт группы компаний «Системные технологии» / http://www.sys4tec.com [19.02.14].

4 Гладкий А. А. 1С:Управление торговлей 8.2 с нуля. 100 уроков для начинающих - СПб.: БХВ-Петербург, 2011. - 448 с.: ил.

5 Профессиональная разработка в системе «1С:Предприятие 8» (издание 2), том 1 - ООО «1С-Паблишинг», 2012. - 690 с.: ил.

6 Райзберг Б. А., Лозовский Л. Ш., Стародубцева Е. Б. Современный экономический словарь. 5-е изд., перераб. и доп. - М.:ИНФРА-М,2007. - 495 с.: ил.

Размещено на Allbest.ru


Подобные документы

  • Характеристика буфера обмена как области памяти, резервируемой системой Windows для организации обмена данными между приложениями. Копирование и перемещение файлов как функции буфера обмена. Изучение абсолютной и относительной адресации ячеек MS Excel.

    контрольная работа [13,9 K], добавлен 11.09.2011

  • Назначение буфера обмена, управление его данными в среде Windows. Взаимодействие между владельцем и клиентом буфера. Данные и тип дескриптора, для каждого типа предопределенных форматов. Воспроизведение данных буфера обмена с задержкой, окна просмотра.

    реферат [58,9 K], добавлен 04.10.2010

  • Операция обмена данными между прикладной программой и шиной USB путем передачи буферов памяти. Основные характеристики каналов. Аппаратная часть USB. Физическая топология шины. Конструкция кабелей и коннекторов. Способы питания устройств от сети.

    контрольная работа [218,4 K], добавлен 27.01.2014

  • Критерии различия между механизмами межпроцессного обмена. Системные вызовы для работы с разделяемой памятью, выделение ее области. Создание и инициализация семафора. Задачи использования потока. Способ обмена между виртуальной машиной Linux и Windows.

    лекция [485,2 K], добавлен 29.07.2012

  • Изучение процесса обмена данными между приложениями в среде MS Office, используя при этом разные форматы хранения и представления информации. Создание файла исходных данных формата CSV по шаблону. Выполнение тестов, расчетов с исходным набором данных.

    курсовая работа [3,4 M], добавлен 27.01.2015

  • Просмотр, запись и чтение данных буфера обмена. Динамический обмен данными (DDE), способы его организации. Атомы в Windows, их понятие и функции. Особенности задания параметра lParam сообщений DDE. Обмен и передача данных между клиентом и сервером.

    лекция [303,7 K], добавлен 24.06.2009

  • Описание входных и выходных документов и сообщений. Проектирование реляционной базы данных. Разработка механизмов управления данными в базе при помощи триггеров. Разграничение полномочий пользователя. Организация обмена данными между приложениями.

    курсовая работа [1,6 M], добавлен 22.06.2011

  • Определение наиболее надёжного пути передачи 2-х потоков информации за один цикл между шестью коммутаторами с учётом критерия максимальной помехозащищенности. Вычисление коэффициентов целевой функции и системы ограничений. Оптимальный план обмена данными.

    курсовая работа [617,5 K], добавлен 13.01.2015

  • Создание системы информационного обмена для страховой медицинской организации. Разработка алгоритмов, интерфейса пользователя, экранных форм и отчетов, процедур и функций приложения. Расчет цены разработанной программы, капитальных вложений и расходов.

    дипломная работа [1,4 M], добавлен 20.07.2014

  • Обмен данными между приложениями Word и Excel в MS Office как основа их интеграции. Основные способы обмена данными между программами в MS Office. Связывание и внедрение объектов. Сравнительный анализ основных способов. Простое (статическое) копирование.

    методичка [599,5 K], добавлен 10.11.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.