хуй

antipodarok


Антиподарок

аренда подъемников


Previous Entry Share Next Entry
1C Обмен данными
хуй
antipodarok

Как организовать работу удаленных складов?

Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента) 

	Если ТипЗнч(ЭлементДанных) = Тип("ДокументОбъект.РеализацияТоваров") Тогда
		Если ЭлементДанных.Склад <> Склад Тогда
			ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить;
		КонецЕсли;
	КонецЕсли; 

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

Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад) 

	Если ТипЗнч(ЭлементДанных) = Тип("ДокументОбъект.РеализацияТоваров") Тогда
		ПолучениеЭлемента = ПолучениеЭлементаДанных.Принять;
	КонецЕсли; 

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

Процедура ПриПолученииДанныхОтГлавного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад) 

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

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

Как при создании начального образа управлять тем, какие виды объектов перегружаются, а какие нет?

Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента) 

	Если НеВыгружатьОбъекты Тогда 

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

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

Как просмотреть объекты, для которых зарегистрированы изменения?

ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
Узел = ПланыОбмена.НаСклады.НайтиПоКоду("С1");
ЗапСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗапСообщения.НачатьЗапись(ЗаписьXML, Узел); 

Выборка = ПланыОбмена.ВыбратьИзменения(Узел, ЗапСообщения.НомерСообщения);
Пока Выборка.Следующий() Цикл
	Данные = Выборка.Получить();
	Сообщить(Данные);
КонецЦикла; 

ЗапСообщения.ПрерватьЗапись(); 

Стр = ЗаписьXML.Закрыть();

Как организовать обмен данными между произвольными конфигурациями 1С:Предприятие 8.0?

Процедура Выгрузка(Элемент) 

	Путь = "c:\"; //реальный путь к каталогу, в котором создаются файлы 

	ЗаписьXML = Новый ЗаписьXML();
	ЗаписьXML.ОткрытьФайл(Путь + "выгрузка.xml");
	Узел = ПланыОбмена.Поставка.НайтиПоКоду("Маг1"); 

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

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

	Пока Выборка.Следующий() Цикл
		Данные = Выборка.Получить(); 

		Если ТипЗнч(Данные) = Тип("ДокументОбъект.РеализацияТоваров") Тогда
			ВыгрузкаРеализации(ЗаписьXML, Данные); 

		Иначе // все остальные объекты
			ЗаписатьXML(ЗаписьXML, Данные);
		КонецЕсли;
	КонецЦикла; 

	ЗапСообщения.ЗакончитьЗапись();
	ЗаписьXML.Закрыть(); 

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

Процедура ВыгрузкаРеализации(ЗаписьXML, Документ) 

    ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentObject.ПередачаТовара"); 

    ЗаписатьXML(ЗаписьXML, Документ.Ссылка.УникальныйИдентификатор(),
                "Ref", НазначениеТипаXML.Явное);
    ЗаписатьXML(ЗаписьXML, Документ.ПометкаУдаления,
                "DeletionMark",НазначениеТипаXML.Явное);
    ЗаписатьXML(ЗаписьXML, Документ.ВалютаДокумента,
                "ВалютаДокумента", НазначениеТипаXML.Явное); 

    // Остальные свойства документа. 

    // Табличная часть.
    ЗаписьXML.ЗаписатьНачалоЭлемента("Товары"); 

    Для Каждого ТекСтрока Из Документ.Товары Цикл
    	ЗаписьXML.ЗаписатьНачалоЭлемента("Row"); 

    	ЗаписатьXML(ЗаписьXML, ТекСтрока.Номенклатура,
                    "Номенклатура", НазначениеТипаXML.Явное);
    	ЗаписатьXML(ЗаписьXML, ТекСтрока.Количество,
                    "Количество", НазначениеТипаXML.Явное); 

    	// Остальные реквизиты табличной части. 

    	ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла; 

    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.ЗаписатьКонецЭлемента(); 

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

Процедура Загрузка(Элемент) 

	Путь = "c:\"; //реальный путь к каталогу, в котором создаются файлы 

	ЧтениеXML = Новый ЧтениеXML();
	ЧтениеXML.ОткрытьФайл(Путь + "выгрузка.xml"); 

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

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

	Пока ВозможностьЧтенияДанных(ЧтениеXML) Цикл
		Данные = ПрочитатьДанные(ЧтениеXML); 

		Если РазрешениеКоллизий(Данные) Тогда
			Данные.ОбменДанными.Отправитель = ЧтСообщения.Отправитель;
			Данные.ОбменДанными.Загрузка = Истина;
			Данные.Записать();
		КонецЕсли;
	КонецЦикла; 

	ЧтСообщения.ЗакончитьЧтение();
	ЧтениеXML.Закрыть(); 

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

Функция ВозможностьЧтенияДанных(ЧтениеXML) 

	ТипXML = ПолучитьXMLТип(ЧтениеXML); 

	Если ТипXML = Неопределено Тогда
		Возврат Ложь;
	КонецЕсли; 

	Если ТипXML.ИмяТипа = "DocumentObject.ПередачаТовара" И
             ТипXML.URIПространстваИмен = "" Тогда
		Возврат Истина;
	КонецЕсли; 

	Возврат ВозможностьЧтенияXML(ЧтениеXML); 

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

Функция ПрочитатьДанные(ЧтениеXML) 

	ТипXML = ПолучитьXMLТип(ЧтениеXML); 

	Если ТипXML.ИмяТипа = "DocumentObject.ПередачаТовара" И
             ТипXML.URIПространстваИмен = "" Тогда
		Возврат ЧтениеРеализации(ЧтениеXML);
	КонецЕсли; 

	Возврат ПрочитатьXML(ЧтениеXML); 

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

Функция ЧтениеРеализации(ЧтениеXML) 

	ЧтениеXML.Прочитать(); 

	// Работа со ссылкой документа.
	ПолученнаяСсылка = ПрочитатьXML(ЧтениеXML);
	Док = Документы.ПоступлениеТоваров.ПолучитьСсылку(
                  Новый УникальныйИдентификатор(ПолученнаяСсылка)); 

	Документ = Док.ПолучитьОбъект(); 

	Если Документ = Неопределено Тогда
		Документ = Документы.ПоступлениеТоваров.СоздатьДокумент();
		Документ.УстановитьСсылкуНового(Док);
		Документ.Дата = ТекущаяДата;
		Документ.УстановитьНовыйНомер();
	КонецЕсли; 

	Документ.ПометкаУдаления = ПрочитатьXML(ЧтениеXML);
	Документ.ВалютаДокумента = ПрочитатьXML(ЧтениеXML); 

	// Табличная часть "Товары.
	// Построчное чтение.
	ЧтениеXML.Прочитать();
	Документ.Товары.Очистить(); 

	Пока ЧтениеXML.Имя = "Row" Цикл 

		// Позиционируемся на узле с номенклатурой.
		ЧтениеXML.Прочитать();
		НоваяСтрока = Документ.Товары.Добавить();
		НоваяСтрока.Номенклатура = ПрочитатьXML(ЧтениеXML);
		НоваяСтрока.Количество = ПрочитатьXML(ЧтениеXML); 

		// Читаем конец узла Row.
		ЧтениеXML.Прочитать();
	КонецЦикла; 

	// Читаем конец табличной части.
	ЧтениеXML.Прочитать(); 

	// Читаем конец документа.
	ЧтениеXML.Прочитать(); 

	Возврат(Документ); 

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

Функция РазрешениеКоллизий(Данные) 

    Если ТипЗнч(Данные) = Тип("ДокументОбъект.ПоступлениеТоваров") Тогда 

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

	    Если ПланыОбмена.ИзменениеЗарегистрировано(СсылкаНаУзел, Данные) Тогда
		Возврат(Ложь);
	    КонецЕсли;
	КонецЕсли;
    КонецЕсли; 

    Возврат(Истина); 

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

Как принудительно зарегистрировать изменения объектов?

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

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

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

?

Log in