Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
11 Дек 2017, 16:00
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Обмен данными  (Прочитано 873 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн shutani

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-01-14
  • Сайт: 
Доброе утро/день/вечер. Создала две конфигурации - центральная база и для мобильного устройства. Необходимо выполнить обмен (из центральной в мобильную) справочников, документов и регистров. Функции для справочников и документов есть (представлен на листинге). Как организовать процедуру загрузки для регистра сведений (измерения - товар, ресурсы - цена)?
Функция ВыполнитьОбменДанными(ТипОбмена = 1) Экспорт
Сообщить("Начало обмена " +ТекущаяДата());
ТипОбмена1 = ТипОбмена;
Соединение = WSСсылки.obmendan.СоздатьWSПрокси("obmendan", "obmendan","obmendanSoap");
Операция = Соединение.ТочкаПодключения.Интерфейс.Операции.Получить("ВыполнитьОбмен");
СтрокаДанных = Соединение.ФабрикаXDTO.Создать(Операция.Параметры.Получить("Данные").Тип,СформироватьДанныеДляСервера());
ТипОбмена = Соединение.ФабрикаXDTO.Создать(Операция.Параметры.Получить("ТипОбмена").Тип,Сериализовать(ТипОбмена));

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

Для каждого Дан Из Ответ Цикл
Если  Дан.Ключ = Тип("СправочникСсылка.Контрагенты") Тогда
ЗагрузитьСправочникКонтрагенты(Дан.Значение);
КонецЕсли;
КонецЦикла;

Для каждого Дан Из Ответ Цикл
Если Дан.Ключ = Тип("СправочникСсылка.МагазиныКонтрагента") Тогда
ЗагрузитьСправочникМагазиныКонтрагента(Дан.Значение);
КонецЕсли;
КонецЦикла;

Для каждого Дан Из Ответ Цикл
Если Дан.Ключ = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
ЗагрузитьДокументЗаказПокупателя(Дан.Значение);
КонецЕсли;
КонецЦикла;

ИначеЕсли ТипОбмена1 = 2 Тогда
Соединение.ВыполнитьОбмен(СтрокаДанных,ТипОбмена);
КонецЕсли;

Сообщить("Конец обмена "+ ТекущаяДата());

КонецФункции // ВыполнитьОбменДанными()


&НаСервере
Процедура ЗагрузитьСправочникНоменклатура(ТЗ)

Для каждого Спр Из ТЗ Цикл

Если ЗначениеЗаполнено(Спр.Ссылка.код) Тогда
СпрНовый = Спр.Ссылка.ПолучитьОбъект();
Иначе
Если Спр.ЭтоГруппа Тогда
СпрНовый = Справочники.Номенклатура.СоздатьГруппу();
СпрНовый.УстановитьСсылкуНового(Спр.Ссылка);
  иначе
СпрНовый = Справочники.Номенклатура.СоздатьЭлемент();
СпрНовый.УстановитьСсылкуНового(Спр.Ссылка);
КонецЕсли;
КонецЕсли;

СпрНовый.Наименование = Спр.Наименование;
СпрНовый.Код = Спр.код;
СпрНовый.Родитель = Спр.Родитель;
СпрНовый.Записать();

КонецЦикла;

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

&НаСервере
Процедура ЗагрузитьСправочникКонтрагенты(ТЗ)

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

Если Не Спр.ЭтоГруппа Тогда
СпрНовый.ИНН_КПП = Спр.ИНН_КПП;
КонецЕсли;
СпрНовый.Наименование = Спр.Наименование;
СпрНовый.Родитель = Спр.Родитель;
СпрНовый.Код = Спр.код;

СпрНовый.Записать();
КонецЦикла;

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

&НаСервере
Процедура ЗагрузитьСправочникМагазиныКонтрагента(ТЗ)

Для каждого Спр Из ТЗ Цикл

Если ЗначениеЗаполнено(Спр.Ссылка.код) Тогда
СпрНовый = Спр.Ссылка.ПолучитьОбъект();
Иначе
Если Спр.ЭтоГруппа Тогда
СпрНовый = Справочники.МагазиныКонтрагента.СоздатьГруппу();
СпрНовый.УстановитьСсылкуНового(Спр.Ссылка);
        иначе
СпрНовый = Справочники.МагазиныКонтрагента.СоздатьЭлемент();
СпрНовый.УстановитьСсылкуНового(Спр.Ссылка);
КонецЕсли;
// ЗаполнитьЗначенияСвойств(СпрНовый,Спр);
Если Не СпрНовый.ЭтоГруппа() Тогда
СпрНовый.Адрес = Спр.Адрес;
КонецЕсли;
СпрНовый.Наименование = Спр.Наименование;
СпрНовый.Родитель = Спр.Родитель;
СпрНовый.Владелец = Спр.Владелец;
СпрНовый.Код = Спр.код;
КонецЕсли;
Попытка
СпрНовый.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;

КонецЦикла;

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

&НаСервере
Процедура ЗагрузитьДокументЗаказПокупателя(Массив)

Для каждого Док Из Массив Цикл

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

КонецПроцедуры
 
&НаСервере
Функция СформироватьДанныеДляСервера()

Соответствие = Новый Соответствие;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателя.Ссылка,
| ЗаказПокупателя.ПометкаУдаления,
| ЗаказПокупателя.Номер,
| ЗаказПокупателя.Дата,
| ЗаказПокупателя.Проведен,
| ЗаказПокупателя.Контрагент,
| ЗаказПокупателя.Магазин
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя";

Док = Запрос.Выполнить().Выгрузить();
Массив = Новый Массив;

Для каждого Строка Из Док Цикл
Структура = Новый Структура( );
СтруктураРек = Новый Структура();

Для каждого колонки Из Док.Колонки Цикл
СтруктураРек.Вставить(колонки.Имя, Строка[Колонки.Имя]);
КонецЦикла;

Структура.Вставить("Реквизиты",СтруктураРек);
Структура.Вставить("Товары",Строка.Ссылка.Товары.Выгрузить());
Массив.Добавить(Структура);
КонецЦикла;

Соответствие.Вставить(ТипЗнч(Документы.ЗаказПокупателя.ПустаяСсылка()),Массив);
Возврат Сериализовать(Соответствие);

КонецФункции // СформироватьДанныеДляСервера()


Оффлайн fipolaz

  • *
  • Сообщений: 47
  • РЕПУТАЦИЯ: 8
  • КПД: 17%
  • Регистрация: 2015-03-29
    • Skype: fipolaz
  • Компания: ИП
  • Профессия: Программист 7.7
Re: Обмен данными
« Ответ #1: 18 Апр 2015, 19:38 »
shutani, полагаете что ветка Конфигурирование, программирование в "1С - Предприятие 7.7" для вашего вопроса - это удачный выбор?

Оффлайн shutani

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-01-14
  • Сайт: 
Re: Обмен данными
« Ответ #2: 20 Апр 2015, 11:47 »
Простите, не усмотрела)


Теги:
 

Обмен ключей "1С"

Автор NovelРаздел Беседка

Ответов: 0
Просмотров: 2880
Последний ответ 16 Дек 2010, 16:30
от Novel
Обмен между типовой и не типовой конфигурацией.

Автор Maestro90Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 3207
Последний ответ 18 Сен 2012, 13:05
от Dethmontt
Односторонний обмен из ут10.3(базовая) в бп3.0(базовая)

Автор andryscha92Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 4107
Последний ответ 11 Ноя 2014, 09:06
от andryscha92
распределенная база данных, штатный обмен данных по расписанию не запускается

Автор mars551Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 2295
Последний ответ 21 Май 2014, 14:41
от mars551
Ребята, срочно нужна помощь. Какую процедуру нужно написать в форме справочника, чтобы таблица заполнялась данными из другого справочника?

Автор Олька БякинаРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 2751
Последний ответ 27 Май 2016, 15:19
от Олька Бякина

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
163 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
56 Сообщений
alex0402
46 Сообщений
andron81_81
44 Сообщений
AIFrame
35 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
28 Сообщений
BuhRust
27 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal