Работа с ComОбъектом 1С 8.2; 8.3

Публикация № 1043482

Разработка - Обмен данными 1С - Перенос данных из 1C8 в 1C8

обмен COM COMОбъект соединение

Определение типов и значений через COM соединение между конфигурациями.

При написании обработок обмена между конфигурациями 1С часто возникает необходимость определения типа принимаемых данных справочник, документ, ПланСчетов или т.д. Эта информация разбросана по интернету но я решил систематизировать и показать Вам.

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

СтруктураПодключения - эта переменная в которой имеется Строка соединения с СОМ объектом

Перем Коннект;

Процедура  ПолучитьИмяКонфигурацииИсточника()
	Если Коннект = Неопределено Тогда Если Не ПодключитьИБ() Тогда	Сообщить("Не удалось установить подключение к ИБ!!!");	Возврат ; КонецЕсли; КонецЕсли;
	Если Коннект.Метаданные.DetailedInformation = "Бухгалтерия предприятия, редакция 2.0" 
			ИЛИ Коннект.Метаданные.DetailedInformation = "1С:Учет в управляющих компаниях ЖКХ, ТСЖ и ЖСК"
			ИЛИ Коннект.Метаданные.DetailedInformation = "Бухгалтерия строительной организации, редакция 2.0" ТОгда
		ИмяКонфигурацииИсточника = "БП20";
	ИначеЕсли Коннект.Метаданные.DetailedInformation = "Комплексная автоматизация, редакция 1.1" ТОгда
			
		ИмяКонфигурацииИсточника = "КА11";
 	Иначе
		ИмяКонфигурацииИсточника = "БП30";
	КонецЕсли;
КонецПроцедуры

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

// Возвращает шаблон структуры параметров для установки внешнего соединения.
// Параметрам необходимо задать требуемые значения и передать.
// В метод ОбщегоНазначения.УстановитьВнешнееСоединение().
//
Функция СтруктураПараметровДляУстановкиВнешнегоСоединения() Экспорт
	
	СтруктураПараметров = Новый Структура;
	СтруктураПараметров.Вставить("ВариантРаботыИнформационнойБазы", 0);
	СтруктураПараметров.Вставить("КаталогИнформационнойБазы", "");
	СтруктураПараметров.Вставить("ИмяСервера1СПредприятия", "");
	СтруктураПараметров.Вставить("ИмяИнформационнойБазыНаСервере1СПредприятия", "");
	СтруктураПараметров.Вставить("АутентификацияОперационнойСистемы", Ложь);
	СтруктураПараметров.Вставить("ИмяПользователя", "");
	СтруктураПараметров.Вставить("ПарольПользователя", "");
	
	Возврат СтруктураПараметров;
КонецФункции

Функция ЗаполнитьПараметрыПодключенияВнешнегоСоединения(НастройкиТранспорта)
	
	ПараметрыПодключения = СтруктураПараметровДляУстановкиВнешнегоСоединения();
	
	ПараметрыПодключения.ВариантРаботыИнформационнойБазы             = НастройкиТранспорта.COMВариантРаботыИнформационнойБазы;
	ПараметрыПодключения.КаталогИнформационнойБазы                   = НастройкиТранспорта.COMКаталогИнформационнойБазы;
	ПараметрыПодключения.ИмяСервера1СПредприятия                     = НастройкиТранспорта.COMИмяСервера1СПредприятия;
	ПараметрыПодключения.ИмяИнформационнойБазыНаСервере1СПредприятия = НастройкиТранспорта.COMИмяИнформационнойБазыНаСервере1СПредприятия;
	ПараметрыПодключения.АутентификацияОперационнойСистемы           = НастройкиТранспорта.COMАутентификацияОперационнойСистемы;
	ПараметрыПодключения.ИмяПользователя                             = НастройкиТранспорта.COMИмяПользователя;
	ПараметрыПодключения.ПарольПользователя = НастройкиТранспорта.COMПарольПользователя;
	
	Возврат ПараметрыПодключения;
КонецФункции

Функция ИмяCOMСоединителя()
	Если ПодключенияВариант = Неопределено ТОгда
		Какая8 = СтрЗаменить(COMПодключенияВариант, ".", "");
	Иначе
		Какая8 = СтрЗаменить(ПодключенияВариант, ".", "");
	КонецЕсли;
	Возврат "v" + Какая8 + ".COMConnector";
КонецФункции

// Устанавливает внешнее соединение с информационной базой по переданным параметрам подключения и возвращает указатель
// на это соединение.
// 
// Параметры:
//  Параметры - Структура - параметры для установки внешнего соединения с информационной базой.
//                          Свойства см. в функции
//                          ОбщегоНазначенияКлиентСервер.СтруктураПараметровДляУстановкиВнешнегоСоединения):
//
//	  * ВариантРаботыИнформационнойБазы             - Число  -  Вариант работы информационной базы: 0 - файловый; 1 -
//	                                                           клиент-серверный;
//	  * КаталогИнформационнойБазы                   - Строка - Каталог информационной базы для файлового режима работы;
//	  * ИмяСервера1СПредприятия                     - Строка - Имя сервера1С:Предприятия;
//	  * ИмяИнформационнойБазыНаСервере1СПредприятия - Строка - Имя информационной базы на сервере1С:Предприятия;
//	  * АутентификацияОперационнойСистемы           - Булево - Признак аутентификации операционной системы при создании
//	                                                           внешнего подключения к информационной базе;
//	  * ИмяПользователя                             - Строка - Имя пользователя информационной базы;
//	  * ПарольПользователя                          - Строка - Пароль пользователя информационной базы.
// 
// Возвращаемое значение:
//  Структура -
//    * Соединение                  - COMОбъект, Неопределено - указатель на COM-объект соединения или Неопределено в
//                                    случае ошибки;
//    * КраткоеОписаниеОшибки       - Строка - краткое описание ошибки;
//    * ПодробноеОписаниеОшибки     - Строка - подробное описание ошибки;
//    * ОшибкаПодключенияКомпоненты - Булево - флаг ошибки подключения COM.
//
Функция УстановитьВнешнееСоединениеСБазойCOM(Параметры) Экспорт
	
	Результат = Новый Структура;
	Результат.Вставить("Соединение");
	Результат.Вставить("КраткоеОписаниеОшибки", "");
	Результат.Вставить("ПодробноеОписаниеОшибки", "");
	Результат.Вставить("ОшибкаПодключенияКомпоненты", Ложь);
	
	#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
		ЭтоLinux = ОбщегоНазначения.ЭтоLinuxСервер();
		КраткоеОписаниеОшибки = НСтр("ru = 'Прямое подключение к информационной базе недоступно на сервере под управлением ОС Linux.'");
	#Иначе
		ЭтоLinux = ЭтоLinuxКлиент();
		КраткоеОписаниеОшибки = НСтр("ru = 'Прямое подключение к информационной базе недоступно на клиенте под управлением ОС Linux.'");
	#КонецЕсли
	
	Если ЭтоLinux Тогда
		Результат.Соединение = Неопределено;
		Результат.КраткоеОписаниеОшибки = КраткоеОписаниеОшибки;
		Результат.ПодробноеОписаниеОшибки = КраткоеОписаниеОшибки;
		Возврат Результат;
	КонецЕсли;
	
	Попытка
		COMConnector = Новый COMObject(ИмяCOMСоединителя()); // "V83.COMConnector"
	Исключение
		Информация = ИнформацияОбОшибке();
		СтрокаСообщенияОбОшибке = НСтр("ru = 'Не удалось подключится к другой программе: %1'");
		
		Результат.ОшибкаПодключенияКомпоненты = Истина;
		Результат.ПодробноеОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщенияОбОшибке, ПодробноеПредставлениеОшибки(Информация));
		Результат.КраткоеОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщенияОбОшибке, КраткоеПредставлениеОшибки(Информация));
		
		Возврат Результат;
	КонецПопытки;
	
	ФайловыйВариантРаботы = Параметры.ВариантРаботыИнформационнойБазы = 0;
	
	// Проверка корректности указания параметров.
	ОшибкаПроверкиЗаполнения = Ложь;
	Если ФайловыйВариантРаботы Тогда
		
		Если ПустаяСтрока(Параметры.КаталогИнформационнойБазы) Тогда
			СтрокаСообщенияОбОшибке = НСтр("ru = 'Не задано месторасположение каталога информационной базы.'");
			ОшибкаПроверкиЗаполнения = Истина;
		КонецЕсли;
		
	Иначе
		
		Если ПустаяСтрока(Параметры.ИмяСервера1СПредприятия) Или ПустаяСтрока(Параметры.ИмяИнформационнойБазыНаСервере1СПредприятия) Тогда
			СтрокаСообщенияОбОшибке = НСтр("ru = 'Не заданы обязательные параметры подключения: ""Имя сервера""; ""Имя информационной базы на сервере"".'");
			ОшибкаПроверкиЗаполнения = Истина;
		КонецЕсли;
		
	КонецЕсли;
	
	Если ОшибкаПроверкиЗаполнения Тогда
		
		Результат.ПодробноеОписаниеОшибки = СтрокаСообщенияОбОшибке;
		Результат.КраткоеОписаниеОшибки   = СтрокаСообщенияОбОшибке;
		Возврат Результат;
		
	КонецЕсли;
	
	// Формирование строки соединения.
	ШаблонСтрокиСоединения = "[СтрокаБазы][СтрокаАутентификации]";
	
	Если ФайловыйВариантРаботы Тогда
		СтрокаБазы = "File = ""&КаталогИнформационнойБазы""";
		СтрокаБазы = СтрЗаменить(СтрокаБазы, "&КаталогИнформационнойБазы", Параметры.КаталогИнформационнойБазы);
	Иначе
		СтрокаБазы = "Srvr = ""&ИмяСервера1СПредприятия""; Ref = ""&ИмяИнформационнойБазыНаСервере1СПредприятия""";
		СтрокаБазы = СтрЗаменить(СтрокаБазы, "&ИмяСервера1СПредприятия",                     Параметры.ИмяСервера1СПредприятия);
		СтрокаБазы = СтрЗаменить(СтрокаБазы, "&ИмяИнформационнойБазыНаСервере1СПредприятия", Параметры.ИмяИнформационнойБазыНаСервере1СПредприятия);
	КонецЕсли;
	
	Если Параметры.АутентификацияОперационнойСистемы Тогда
		СтрокаАутентификации = "";
	Иначе
		
		Если СтрНайти(Параметры.ИмяПользователя, """") Тогда
			Параметры.ИмяПользователя = СтрЗаменить(Параметры.ИмяПользователя, """", """""");
		КонецЕсли;
		
		Если СтрНайти(Параметры.ПарольПользователя, """") Тогда
			Параметры.ПарольПользователя = СтрЗаменить(Параметры.ПарольПользователя, """", """""");
		КонецЕсли;
		
		СтрокаАутентификации = "; Usr = ""&ИмяПользователя""; Pwd = ""&ПарольПользователя""";
		СтрокаАутентификации = СтрЗаменить(СтрокаАутентификации, "&ИмяПользователя",    Параметры.ИмяПользователя);
		СтрокаАутентификации = СтрЗаменить(СтрокаАутентификации, "&ПарольПользователя", Параметры.ПарольПользователя);
	КонецЕсли;
	
	СтрокаСоединения = СтрЗаменить(ШаблонСтрокиСоединения, "[СтрокаБазы]", СтрокаБазы);
	СтрокаСоединения = СтрЗаменить(СтрокаСоединения, "[СтрокаАутентификации]", СтрокаАутентификации);
	
	Попытка
		Результат.Соединение = COMConnector.Connect(СтрокаСоединения);
	Исключение
		Информация = ИнформацияОбОшибке();
		СтрокаСообщенияОбОшибке = НСтр("ru = 'Не удалось подключиться к другой программе: %1'");
		
		Результат.ОшибкаПодключенияКомпоненты = Истина;
		Результат.ПодробноеОписаниеОшибки     = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщенияОбОшибке, ПодробноеПредставлениеОшибки(Информация));
		Результат.КраткоеОписаниеОшибки       = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщенияОбОшибке, КраткоеПредставлениеОшибки(Информация));
	КонецПопытки;
	
	Возврат Результат;
	
КонецФункции


// Основная функция для использования внешнего соединения при обмене.
//
// Параметры: 
//  СтруктураНастроек - структура настроек транспорта COM обмена.
//
Функция УстановитьВнешнееСоединениеСБазой(СтруктураНастроек) Экспорт
	
	Результат = УстановитьВнешнееСоединениеСБазойCOM(ЗаполнитьПараметрыПодключенияВнешнегоСоединения(СтруктураНастроек));
	
	ВнешнееСоединение = Результат.Соединение;
	Если ВнешнееСоединение = Неопределено Тогда
		// Ошибка установки соединения.
		Возврат Результат;
	КонецЕсли;
	
	// Дополнительно проверяем возможность работы с внешней базой.
	
	Попытка
		НетПолныхПрав = Не ВнешнееСоединение.ОбменДаннымиВнешнееСоединение.РольДоступнаПолныеПрава();
	Исключение
		НетПолныхПрав = Истина;
	КонецПопытки;
	
	Если НетПолныхПрав Тогда
		Результат.ПодробноеОписаниеОшибки = НСтр("ru = 'Пользователю, указанному для подключения к другой программе, должны быть назначены роли ""Администратор системы"" и ""Полные права""'");
		Результат.КраткоеОписаниеОшибки   = Результат.ПодробноеОписаниеОшибки;
		Результат.Соединение = Неопределено;
	Иначе
		Попытка 
			СостояниеНеДопустимо = ВнешнееСоединение.ОбновлениеИнформационнойБазы.НеобходимоОбновлениеИнформационнойБазы();
		Исключение
			СостояниеНеДопустимо = Ложь
		КонецПопытки;
		
		Если СостояниеНеДопустимо Тогда
			Результат.ПодробноеОписаниеОшибки = НСтр("ru = 'Другая программа находится в состоянии обновления.'");
			Результат.КраткоеОписаниеОшибки   = Результат.ПодробноеОписаниеОшибки;
			Результат.Соединение = Неопределено;
		КонецЕсли;
		
	КонецЕсли;
	
	Возврат Результат;
КонецФункции

Часто возникает необходимость проверка наличия реквизита или свойства объекта, при этом понятия не имееш есть данный реквизит или нет

но использование Попытки .. Исключение .. КонецПопытки не желательно то в даном варианте можно использовать подстановку реквизита в структуру

и тем самым использовать следующую процедуру:

// Проверяет наличие реквизита или свойства у произвольного объекта без обращения к метаданным.
//
// Параметры:
//  Объект       - Произвольный - объект, у которого нужно проверить наличие реквизита или свойства;
//  ИмяРеквизита - Строка       - имя реквизита или свойства.
//
// Возвращаемое значение:
//  Булево.
//
Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт
	
	КлючУникальности   = Новый УникальныйИдентификатор;
	СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности);
	ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект);
	
	Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности;
	
КонецФункции

Теперь вопрос который многих интересует: "Мы получили СОМ объект тоесть ТИП("СомОбъект"), какое значение и что с ним делать?

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

_СтрокаXML = Коннект.XMLString(РеквCOM); // УникальныйИдентификатор объекта

УИД объекта имеет определенный формат даных поэтому для выяснения что мы имеем то необходимо доп проверка

т.к. _СтрокаXML  имеет формат "00000000-0000-0000-0000-000000000000" то актуальна проверка

Если СтрНайти(_СтрокаXML, "-", , , 4) = 24 Тогда //Всего скорее это  ГУИД

//***********

ИначеЕсли СтрДлина(_СтрокаXML) = 48 Тогда //Хранилище значения

//************

Иначе //Перечисление

//************

КонецЕсли;

Рассмотрим что можно получить от объекта если по нему есть УИД

_ПолныйТипОбъекта 	= РеквCOM.GetObject().Metadata().FullName();
СтрокиТипа			= СтрЗаменить(_ПолныйТипОбъекта, ".", Символы.ПС);
_ТипОбъекта 		= СтрПолучитьСтроку(СтрокиТипа, 1);
_ИдентификаторCOM 	= СтрПолучитьСтроку(СтрокиТипа, 2);

//Для получения менеджера объекта нужно воспользоваться доп процедурой

_МенеджерОбъекта = ПолучитьМенеджерОбъекта(_ИдентификаторCOM);


Функция ПолучитьМенеджерОбъекта(СсылкаОб) Экспорт
	Если ТипЗнч(СсылкаОб) = Тип("Строка") Тогда
		СсылкаПоиска = _ПолучитьПустуюСсылкуПоИдентификаторуОбъекта(СсылкаОб);
	Иначе
		СсылкаПоиска = СсылкаОб;
	КонецЕсли;
	//Попытка
		Если СсылкаПоиска <> Неопределено Тогда
			ИмяОбъекта = СсылкаПоиска.Метаданные().Имя;
		Иначе
			Возврат Неопределено;	
		КонецЕсли;
	//Исключение
	//	Возврат Неопределено;
	//КонецПопытки;
	ТипСсылки = ТипЗнч(СсылкаПоиска);
	Если Справочники.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
		Возврат Справочники[ИмяОбъекта];
	ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
		Возврат Документы[ИмяОбъекта];
	ИначеЕсли БизнесПроцессы.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
		Возврат БизнесПроцессы[ИмяОбъекта];
	ИначеЕсли ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
		Возврат ПланыВидовХарактеристик[ИмяОбъекта];
	ИначеЕсли ПланыСчетов.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
		Возврат ПланыСчетов[ИмяОбъекта];
	ИначеЕсли ПланыВидовРасчета.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
		Возврат ПланыВидовРасчета[ИмяОбъекта];
	ИначеЕсли Задачи.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
		Возврат Задачи[ИмяОбъекта];
	ИначеЕсли ПланыОбмена.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
		Возврат ПланыОбмена[ИмяОбъекта];
	ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда
		Возврат Перечисления[ИмяОбъекта];
	Иначе
		Возврат Неопределено;
	КонецЕсли;
КонецФункции

Функция _ПолучитьПустуюСсылкуПоИдентификаторуОбъекта(ОбъектМетаданных) Экспорт
	ТипМД = _ПолучитьТипПоИдентификатору(ОбъектМетаданных);
	ПустаяСсылка = "";
	Если ТипМД = "Справочник" Тогда
		Команда1С = "ПустаяСсылка = Справочники."+ОбъектМетаданных+".ПустаяСсылка()";
	ИначеЕсли ТипМД = "Документ" Тогда
		Команда1С = "ПустаяСсылка = Документы."+ОбъектМетаданных+".ПустаяСсылка()";
	ИначеЕсли ТипМД = "Перечисление" Тогда
		Команда1С = "ПустаяСсылка = Перечисления."+ОбъектМетаданных+".ПустаяСсылка()";
	ИначеЕсли ТипМД = "ПланВидовРасчета" Тогда
		Команда1С = "ПустаяСсылка = ПланыВидовРасчета."+ОбъектМетаданных+".ПустаяСсылка()";
	Иначе
		Возврат Неопределено;
	КонецЕсли;
	Выполнить (Команда1С);
	Возврат ПустаяСсылка;
КонецФункции

 

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

развернуться как Вам больше нравится

В случае если наш объект является ХранилищеЗначений то для переноса данного объекта либо получение значения можно воспользоваться функцией

//*****************************
//рабочая процедура и в ней код обработки

    ИначеЕсли _ТипОбъекта = "ХранилищеЗначения" Тогда
	   Возврат ПереносХранилища(РеквCOM);


//*****************************


Функция ПереносХранилища(РеквCOM)
	Попытка
		ДвоичныеДанные = РеквCOM.Get();
	Исключение
		Возврат Неопределено;
	Конецпопытки;
	Если "" + ДвоичныеДанные = "COMОбъект" Тогда
		Попытка
			ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
			ДвоичныеДанные.Write(ИмяВременногоФайла);
			ДвоичныеДанныеВозврат  = Новый ДвоичныеДанные(ИмяВременногоФайла);
			УдалитьФайлы(ИмяВременногоФайла);
			Возврат Новый ХранилищеЗначения(ДвоичныеДанныеВозврат);
		Исключение
			Возврат Неопределено;
		КонецПопытки;
	Иначе
		Возврат Неопределено;
	КонецЕсли;
КонецФункции

Если объект является перечислением то вместо УИД кода будет выведено наименование перечисления

Также для получения списка реквизитов объекта СОМ используется обращение

 РеквCOM.Metadata().Attributes // Список реквизитов

 РеквCOM.Metadata().Attributes.Find("Реквизит") // Поиск реквизита в объекте
 // если реквизит не найден возвращает значение НЕОПРЕДЕЛЕНО

 РеквCOM.Metadata().StandardAttributes // Список стандартных реквизитов

 РеквCOM.Metadata().TabularSections // Список табличных частей

 

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

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

// Доступность объектов метаданных по функциональным опциям.
Функция ДоступностьОбъектовПоОпциямCOM() Экспорт
	Если Коннект = Неопределено Тогда Если Не ПодключитьИБ() Тогда	Сообщить("Не удалось установить подключение к ИБ!!!");	Возврат Новый Соответствие КонецЕсли; КонецЕсли;
	Параметры = Новый Структура;
	ДоступностьОбъектов = Новый Соответствие;
	Для Каждого ФункциональнаяОпция Из Коннект.Метаданные.ФункциональныеОпции Цикл
		Значение = -1;
		Для Каждого Элемент Из ФункциональнаяОпция.Состав Цикл
			Если Значение = -1 Тогда
				Значение = ПолучитьФункциональнуюОпцию(ФункциональнаяОпция.Имя, Параметры);
			КонецЕсли;
			Если Значение = Истина Тогда
				ДоступностьОбъектов.Вставить(Элемент.Объект, Истина);
			Иначе
				Если ДоступностьОбъектов[Элемент.Объект] = Неопределено Тогда
					ДоступностьОбъектов.Вставить(Элемент.Объект, Ложь);
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;
	Возврат ДоступностьОбъектов;
КонецФункции


//Рабочая процедура
Функция ОбъектМетаданныхДоступенПоФункциональнымОпциямCOM(ОбъектМетаданныхCOM) Экспорт
	Возврат ДоступностьОбъектовПоОпциямCOM()[ОбъектМетаданныхCOM] <> Ложь;
КонецФункции

Так же при работе с переносом документов возникает необходимость определения списка регистров движения данного документа

 

	МетаданныеДокументаCOM = ДокCom.MetaData();
	Регистры = ЗаполнитьТаблицуРегистровCOM(МетаданныеДокументаCOM);
	УстановитьПривилегированныйРежим(Истина);
	РегистрыСДвижениями = ПолучитьМассивИспользуемыхРегистровCOM(ДокCom, МетаданныеДокументаCOM.Движения);


Функция ЗаполнитьТаблицуРегистровCOM(МетаданныеДокументаCOM)
	Если Коннект = Неопределено Тогда Если Не ПодключитьИБ() Тогда	Сообщить("Не удалось установить подключение к ИБ!!!");	Возврат Новый ТаблицаЗначений КонецЕсли; КонецЕсли;
	МетаданныеРегистровНакопленияCOM = Коннект.Metadata.РегистрыНакопления;
	МетаданныеРегистровСведенийCOM   = Коннект.Metadata.РегистрыСведений;
	ВидРегистраОстаткиCOM            = Коннект.Metadata.СвойстваОбъектов.ВидРегистраНакопления.Остатки;
	
	Регистры = Новый ТаблицаЗначений;
	Регистры.Колонки.Добавить("ТипРегистра", ОбщегоНазначения.ОписаниеТипаСтрока(20)); 
	Регистры.Колонки.Добавить("Имя", ОбщегоНазначения.ОписаниеТипаСтрока(100)); 
	Регистры.Колонки.Добавить("Синоним", ОбщегоНазначения.ОписаниеТипаСтрока(100)); 
	Регистры.Колонки.Добавить("ЕстьДвижения", Новый ОписаниеТипов("Булево")); 
	Регистры.Колонки.Добавить("РегистрОстатков", Новый ОписаниеТипов("Булево")); 
	Регистры.Колонки.Добавить("Записывать", Новый ОписаниеТипов("Булево")); 
	Для каждого МетаданныеРегистраCOM Из МетаданныеДокументаCOM.Движения Цикл
		Если Лев(МетаданныеРегистраCOM.Имя, 7) = "Удалить" Тогда Продолжить КонецЕсли;
		//Если Не ОбъектМетаданныхДоступенПоФункциональнымОпциямCOM(МетаданныеРегистраCOM) Тогда
		//	Продолжить;
		//КонецЕсли;
		СтрокаРегистра     = Регистры.Добавить();
		СтрокаРегистра.Имя = МетаданныеРегистраCOM.Имя;
		ПолноеИмя    = МетаданныеРегистраCOM.ПолноеИмя();
		ПозицияТочки = Найти(ПолноеИмя, ".");
		ТипРегистра  = Лев(ПолноеИмя, ПозицияТочки - 1);
		СтрокаРегистра.ТипРегистра = ТипРегистра;
		СтрокаРегистра.Синоним     = МетаданныеРегистраCOM.Синоним;
		Если ТипРегистра = "РегистрНакопления" Тогда
			СтрокаРегистра.РегистрОстатков = МетаданныеРегистраCOM.ВидРегистра = ВидРегистраОстаткиCOM;
		КонецЕсли;
	КонецЦикла;
	// Сначала показывается регистр бухгалтерии, затем регистры накопления, затем - сведений
	Регистры.Сортировать("ТипРегистра, Синоним");
	Возврат Регистры;
КонецФункции

Функция ПолучитьМассивИспользуемыхРегистровCOM(Регистратор, Движения, МассивИсключаемыхРегистров = Неопределено) Экспорт
	Если Коннект = Неопределено Тогда Если Не ПодключитьИБ() Тогда	Сообщить("Не удалось установить подключение к ИБ!!!");	Возврат Новый ТаблицаЗначений КонецЕсли; КонецЕсли;
	Запрос = Коннект.NewObject("Query");
	Запрос.УстановитьПараметр("Регистратор", Регистратор);

	Результат = Новый Массив;
	МаксимумТаблицВЗапросе = 256;
	СчетчикТаблиц   = 0;
	СчетчикДвижений = 0;
	ВсегоДвижений = Движения.Количество();
	ТекстЗапроса  = "";
	Для Каждого Движение Из Движения Цикл
		СчетчикДвижений = СчетчикДвижений + 1;
		ПропуститьРегистр = МассивИсключаемыхРегистров <> Неопределено
							И МассивИсключаемыхРегистров.Найти(Движение.Имя) <> Неопределено;
		Если Не ПропуститьРегистр Тогда
			Если СчетчикТаблиц > 0 Тогда
				ТекстЗапроса = ТекстЗапроса + "
				|ОБЪЕДИНИТЬ ВСЕ
				|";
			КонецЕсли;
		СчетчикТаблиц = СчетчикТаблиц + 1;
    	ТекстЗапроса = ТекстЗапроса + 
			"
			|ВЫБРАТЬ ПЕРВЫЕ 1
			|""" + Движение.Имя + """ КАК ИмяРегистра
			|
			|ИЗ " + Движение.ПолноеИмя() + "
			|
			|ГДЕ Регистратор = &Регистратор
			|";
		КонецЕсли;
		Если СчетчикТаблиц = МаксимумТаблицВЗапросе Или СчетчикДвижений = ВсегоДвижений Тогда
			Запрос.Текст  = ТекстЗапроса;
			ТекстЗапроса  = "";
			СчетчикТаблиц = 0;
			Если Результат.Количество() = 0 Тогда

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

	Возврат Результат;

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

Все процедуры, используемые в статье, являются работающими и готовы к использованию.

Надеюсь, кому-нибудь данная статья будет полезна!

Спасибо за внимание) !!!

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. zeegin 85 15.04.19 15:26 Сейчас в теме
При копировании процедур из БСП следует указывать, что они из БСП.

Attribution 4.0 International (CC BY 4.0)
Ответы на типовые вопросы по лицензированию "1С:Предприятия 8"
delete; vano-ekt; wowik; stako8; user733468; DAAbramov; +6 Ответить
2. ArchLord42 73 16.04.19 10:47 Сейчас в теме
Вот КД уже сколько лет существует, а люди все свои костылики пишут для обмена, да ещё и по ком, мде в общем..
amon_ra; boggonzikov; artfa; wowik; dsdred; +5 Ответить
5. Кадош 17.04.19 12:58 Сейчас в теме
(2) вы еще мал и глуп, бывает ситуация разовых омбенов, когда проще и много быстрее реализовать костыльный обмен через ком.
7. ArchLord42 73 17.04.19 16:43 Сейчас в теме
(5) Очень приятно :) А Вы собственно кто будете? Большой и умный заядлый велосипидист, тот что делает "быстрые одноразовые" обмены ?:)
К сожалению, повидал на своем маленьком веку такие штуки, надеюсь не скоро еще увижу.
delete; artfa; +2 Ответить
9. Кадош 17.04.19 17:34 Сейчас в теме
(7) абсолютно так. Написал быстренько обработку, загрузил нужные данные, помог заказчику, взял деньги, взял лесопед и пошел кататься. Все довольны - и я и заказчик. А вы сидите, отлаживайте днями ваши обмены, корпите значит. Видал я обмены таких корпунов, когда затирали данные в рабочей базе, надеюсь еще не скоро увижу.
FreeArcher; chemezov; astrallight; +3 1 Ответить
10. ZloyProger 8 30.07.19 08:52 Сейчас в теме
(2), (5) ИМХО глупый спор коллеги, этому холивару (что лучше КД или Com) уж скоро *цать лет будет, это всё равно что спорить что лучше - микроволновка или холодильник) Разные инструменты, требующие вдумчивого применения есть плюсы и минусы у обоих, в каждом конкретном случае надо подумать что проще/быстрее/лучше/универсальнее применить. Статья хорошая, действительно всё вместе в одном месте собрано. По поводу (6) хотел тоже отметить что сталкивался в своей работе с ситуациями когда .Метаданные() - вызывает ошибку, а .Metadata() нет.. И с обратными тоже сталкивался (причём с обратными ситуациями чаще после 2-й точки.. блин как лучше сформулировать-то, ну типа например РеквCOM.Metadata().TabularSection() - вызывает ошибку, а РеквCOM.Metadata().ТабличныеЧасти() - нет, точно не помню уже ситуаций), в общем так и не понял от чего это зависит, приходится идти иногда на такой "зоопарк"( Если кто знает - поделитесь, буду рад получению новых знаний.
3. SlavaKron 16.04.19 17:08 Сейчас в теме
ИначеЕсли СтрДлина(_СтрокаXML) = 48 Тогда //Хранилище значения

Почему вы так решили? СтрокаXML от хранилища значения - это сырые данные (строка в формате base64). Её длина может быть какой угодно.
Для определения типа КомОбъекта следует пользоваться процедурами и функциями работы с XML (XMLТип, XMLТипЗнч, ИзXMLТипа).

_ПолныйТипОбъекта = РеквCOM.GetObject().Metadata().FullName();

Чтобы получить метаданные, объект получать не обязательно. У любой ссылки есть метод Метаданные.

Получить менеджер можно проще:
Менеджер = Новый (СтрЗаменить(ПолноеИмяМетаданных, ".", "Менеджер."));

Получение пустой ссылки логичнее делать через менеджер.

Хранилище значения переносится через XMLСтрока / XMLЗначение
4. vik070777 236 16.04.19 19:01 Сейчас в теме
(3) У любой ссылки есть Метаданные Вы правы но через COM соединение не все можно получить
ИначеЕсли СтрДлина(_СтрокаXML) = 48 Тогда //Хранилище значения
если рассматривать как просто отдельная строка то да сказать точно что это хранилище невозможно, но первое стоит проверка на наличие 4 дефисов что говорит о формате строки УИД, если не УИД то хранилище, иначе перечисление по другому я не сталкивался.
Что касаемо определение Менеджера, то в Вашем примере Вы должны точно знать уже имя менеджера ссылки чтоб произвести замену
в моем случае мы его знать не должны он определится автоматически.
Что касаемо самой статьи то я много искал и изучал вопрос и сталкивался с проблемами которые порой не описаны в инете, поэтому и решил поделится информацией. Никто не спорит что коды совершенны и их дорабатывать нельзя)
6. wowik 782 17.04.19 13:30 Сейчас в теме
Сложная статья для прочтения.

Когда-то тоже писал про это - https://infostart.ru/public/164976/

Как по мне, GetObject().Metadata().FullName() - здесь и в других аналогичных местах нужно использовать наименования на русском, глаз режет.
8. acanta 17.04.19 17:01 Сейчас в теме
Ком-соединение для сравнения остатков и оборотов тоже требует и поиска и идентификации объектов, иногда по тем же правилам, которые описаны в конвертации данных.
Ссылка с гуидом на данные не всегда сохраняется.
Статья очень полезная, спасибо.
11. John_d 2452 30.07.19 15:32 Сейчас в теме
com-соединения лучше не использовать вообще. (википедия Стандарт COM был разработан в 1993 году корпорацией Microsoft как основа для развития технологии OLE.) Технология 1993 года.
Переходить на http-сервис
https://infostart.ru/public/955078/
12. Yashazz 3256 30.07.19 19:11 Сейчас в теме
Ё-моё... И вот за такое - столько плюсов? Мдя. Зря я сюда лет 10 назад все исходники свои не выложил, вот точно хит был бы...

Пишешь про ком - так хотя б не баянь. Хотя бы интересные моменты опиши. А это, извините, из серии хелло ворлд.

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

См. также

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    19023    0    m-rv    17    

Конвертация данных 2. Использование подключаемых обработок в правилах обмена. Конвертация дерева значений

Обмен данными 1С Обмен через XML Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Разработка правил обмена с использованием подключаемых обработок. В качестве примера рассмотрена реальная задача конвертации дерева значений.

15.06.2020    2116    0    Drivingblind    6    

Конвертация данных 2.1. Методика переноса остатков

Перенос данных из 1C8 в 1C8 v8 1cv8.cf УУ Бесплатно (free)

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

12.06.2020    2959    0    aximo    15    

Механизм XDTO

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Попытка понять механизм XDTO и его неочевидные аспекты. Научиться выполнять обмены между различными конфигурациями без оглядки на реализацию в типовых.

12.05.2020    4136    0    totchaz    3    

Повышаем эффективность разработки правил обмена Промо

Практика программирования Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    27208    0    olegtymko    47    

Механизмы проведения документов при обмене по универсальному формату

Перенос данных из 1C8 в 1C8 БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Как проводятся документы при обмене по универсальному формату. Пример доработки типовых правил обмена с переносом состояния документа: проведен/не поведен/пометка удаления.

04.03.2020    3804    0    partizand    6    

Односторонний обмен ЗУП и БП

Перенос данных из 1C8 в 1C8 v8 БП3.0 ЗУП3.x Россия Бесплатно (free)

Односторонний обмен из ЗУП в БУХ

29.02.2020    4205    0    VAAngelov    11    

Автоматический обмен при появлении файла, по регламентному заданию создаёт файл выгрузки, даже если файл загрузки не появлялся

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Россия Бесплатно (free)

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

20.02.2020    2498    0    wau8824ru    4    

Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть І: Справочники Промо

Перенос данных из 1C8 в 1C8 v8 Бесплатно (free)

Сейчас все чаще интеграции различных конфигураций проектируются через HTTP-сервисы - они и работают быстрее, и "войти" в режим отладки гораздо проще, тем самым обойдя "черный ящик" универсального обмена через xml, например. Более года назад я начал работать в компании, в которой разработчики работали с конфигурациями 1С в режиме совместимости еще 8.2.16 (менять режим совместимости в типичных базах мы не хотели) - а как Вы наверное знаете, если интересовались HTTP-сервисами в 1С, их использование в режиме совместимости 8.3.4 и ниже недопустимо - и здесь я уже не надеялся на разработку и использование HTTP-сервисов. Но позже меня заинтересовал такой "сервис" как REST интерфейс OData, так как его можно использовать не меняя режим совместимости конфигурации - именно он и стал для меня идеальным вариантом решения "нетривиальных" задач.

11.05.2018    22069    0    V.Stavinsky    11    

Бесшовная интеграция через обмен по правилам - миссия выполнима

Практика программирования Интеграция Перенос данных из 1C8 в 1C8 v8 ДО ERP2 Бесплатно (free)

При организации работы с договорами в ERP 2, с помощью бесшовной интеграции с Документооборотом, «типовой» методикой является создание договоров в ЕРП. После создания договора в ЕРП, пользователь «отправляет» договор в ДО по бесшовной интеграции. На практике, весьма часто пользователи хотят видеть обратную схему: вводить договоры в ДО и при этом получать их в ЕРП без «лишних телодвижений». Или даже вводить их независимо в обеих системах – так, чтобы потом «стыковать» по каким-то определенным правилам.

24.01.2020    4260    0    e-9    2    

Конвертация ставок НДС: из Перечисления в Справочник (правила обмена в конвертации 2.0)

Перенос данных из 1C8 в 1C8 v8 КД Россия НДС Бесплатно (free)

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

09.11.2019    5894    0    vikulinamari    1    

Настройка синхронизации между конфигурациями Бухгалтерия для Беларуси 2.1 и Управление торговлей для Беларуси 3.4

Перенос данных из 1C8 в 1C8 v8 БП3.0 УТ11 Беларусь Бесплатно (free)

Пошаговое описание настройки типового обмена между конфигурациями Бухгалтерия для Беларуси 2.1 и Управление торговлей для Беларуси 3.4

21.10.2019    6991    0    Olesia_Matusevich    1    

Взаимодействие между базами 1С через COM Промо

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассмотрено много особенностей взаимодействия между базами 1С по COM технологии

10.08.2015    145785    0    tormozit    65    

Объединение организаций в ЗУП при реорганизации с переносом данных из ЗУП 2.5 в ЗУП 3.1

Зарплата Управление персоналом (HRM) Перенос данных из 1C8 в 1C8 v8 v8::СПР ЗУП2.5 ЗУП3.x БУ Бесплатно (free)

В этой статье описан опыт объединения 2-х организаций при реорганизации в ЗУП 3.1 с переносом данных одной организации из ЗУП 2.5 (релизы баз более или менее свежие, но не самые последние на момент перехода, примерно двух- и трехмесячной давности). За основу было взято решение из этой статьи https://infostart.ru/public/833658/, в которой описан алгоритм решения задачи, за что автору статьи огромная благодарность! Здесь же даны некоторые комментарии и пояснения к алгоритму переноса и объединения, описаны выявленные мною ошибки. Также приведена небольшая инструкция по использованию обработки ирПодборИОбработкаОбъектовБД — она будет полезна для пользователей — «не программистов», впервые работающих в не управляемых формах.

09.10.2019    6985    0    Neti    2    

EnterpriseData: простой способ защиты данных в базе получателя при одностороннем обмене

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

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

04.10.2019    6447    0    handscenter    12    

Дозагрузка измененных данных при помощи КД2

Практика программирования Перенос данных из 1C8 в 1C8 v8 Россия Бесплатно (free)

Иногда во время каких-то регламентных действий по обслуживанию базы(например, при обновлении измененной базы на много релизов) требуется обеспечить бесперебойность работы пользователей. Если конфигурации баз до и после идентичны, то тут сам Бог велел воспользоваться обработкой "ВыгрузкаЗагрузкаДанныхXML", либо такой же но с отбором(на Инфостарте есть такая). Но что если конфигурации баз различаются/значительно различаются? Ниже опишу, как вышел из положения я.

12.09.2019    4581    0    al_zzz    2    

Использование инструментов разработчика для отладки обменов КД 2.0 Промо

Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Пара трюков, благодаря которым жить становится намного проще...

05.05.2017    26919    0    unichkin    3    

Конвертация Данных. Нюансы использования конструкции "НеЗамещатьОбъект = Истина" в обработчике события "ПриЗагрузке"

Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

У конвертации данных есть «особенности», которые «пьют кровь» программистов. Эта статья про очередную обнаруженную «особенность».

10.09.2019    8795    0    ivanek    21    

Обмен данными через Web Сервисы

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Россия Бесплатно (free)

Ознакомительная статья о том, как загружать\выгружать данные с одной базы в другую, используя Web Сервисы.

02.09.2019    19150    0    user5300    41    

Выгрузка и загрузка документов с движениями

Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

02.09.2019    6385    0    human_new    9    

Приемы обработки больших данных в 1С Промо

Универсальные обработки Математика и алгоритмы Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    65659    0    tormozit    27    

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка v8 v8::УФ 1cv8.cf Бесплатно (free)

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    13378    0    ids79    8    

Перенос дополнительных реквизитов в Конвертации данных 2.0

Перенос данных из 1C8 в 1C8 v8 КД Россия УУ Бесплатно (free)

Пример написания правил обмена (КД 2.0) для переноса дополнительных реквизитов справочника "Номенклатура", в том числе перенос ПВХ с разными типами значений.

13.08.2019    9928    0    vikulinamari    7    

Синхронизация данных между 1С: ЗУП 3.1 и Бухгалтерией 3.0 через файл

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Россия Бесплатно (free)

Публикация описывает последовательность синхронизации данных между 1С: ЗУП 3.1 и Бухгалтерией 3.0 через файл.

23.04.2019    11685    0    saveliev    6    

Настройка типового обмена данными между: 1С: Предприятие Бухгалтерия ред. 3.0 (БП 3.0) и 1С: Управление торговлей ред. 10.3 (УТ 10.3). Промо

Перенос данных из 1C8 в 1C8 v8 УТ10 Россия Бесплатно (free)

В этой статье я опишу, как настраивается типовой обмен данными между БП 3.0 и УТ 10.3.

29.01.2014    264673    0    arr    53    

Полезные приемы при работе с Конвертацией данных 2.1. Логирование, интерактивное управление, дозаполнение и постпроведение документов

Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Некоторые полезные приемы для КД 2.1, которые могут пригодиться как при доработке типовых правил, так и самописных.

22.04.2019    8843    0    maks_20    9    

Обмен данными между УПП 1.3.64.х и БП 3.0 по расписанию через Универсальный обмен данными + План обмена

Обмен через XML Перенос данных из 1C8 в 1C8 v8 УПП1 Россия Бесплатно (free)

Описание доработки конфигурации УПП 1.3.64.х для выполнения обмена данными по расписанию в БП 3.0. через обработку Универсальный Обмен Данными XML и План Обмена.

09.04.2019    6687    0    mrcamomile    15    

RabbitMQ + Конвертация Данных 3.0

Внешние источники данных Обмен через XML Интеграция Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

21.03.2019    24354    0    barelpro    82    

Отладка правил обмена 7.7, 8 Промо

Перенос данных из 1С7.7 в 1C8.X Обмен через XML Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

29.10.2013    50916    0    pyrkin_vanya    70    

Конвертация данных 2.1: поиск по условию

Перенос данных из 1C8 в 1C8 v8 КД ERP2 Бесплатно (free)

Задача. При обмене документами "Реализация товаров и услуг", поиск контрагента осуществлять по полям "ИНН", "КПП". Если вид договора с комиссионером, то поиск осуществлять по полям "ИНН", "КПП", "Наименование".

15.01.2019    13775    0    wowik    13    

Заметки КД 2.1: Как передать файл, динамически создаваемый в источнике, в справочник присоединенных файлов приемника

Перенос данных из 1C8 в 1C8 v8 КД Россия Бесплатно (free)

В БП 3.0 есть документ "Книга Продаж Для Передачи В ЭлектронномВиде" из которого выгружается XML файл. Задача: Нужно из БП 3.0 посредством правил обмена, вместе с документом книга продаж сформировать и перенести XML файл в базу приемник. В приемнике файл будет храниться в справочнике "Книга Продаж Присоединенные Файлы".

10.10.2018    9244    0    Viktor_Ermakov    6    

Практические рекомендации по настройке бесшовной интеграции 1С:ERP и 1С:Документооборот КОРП

Перенос данных из 1C8 в 1C8 v8::Бизнес-процессы ERP2 Россия Бесплатно (free)

В настоящей статье мы пошагово рассмотрим, как настроить бесшовную интеграцию 1С:Документооброт КОРП (1С:ДО) с 1С:ERP.

28.09.2018    18156    0    Aprsoft    10    

Обмен по расписанию типовыми средствами. Промо

Распределенная БД (УРИБ, УРБД) Обмен через XML Перенос данных из 1C8 в 1C8 v8 1cv8.cf Россия Бесплатно (free)

Часто перед интеграторами стоит задача организовать автообмен (по расписанию или при наступлении какого-либо события) данными между различными конфигурациями. В этой статье я попробую изложить простую инструкцию, как это можно сделать средствами, заложенными в типовые конфигурации 1С (ЗУП, БП, УПП и т.д.). Для обмена используется подсистема "Обмен данными" из БСП

20.06.2012    101552    0    kser87    52    

Планы обмена 1С

Перенос данных из 1C8 в 1C8 Интеграция v8 Бесплатно (free)

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

10.09.2018    52864    0    zhichkin    27    

Конвертация 2.0. Обмен данными между справочниками по сопоставлению артикулов с помощью регистра сведений (пример).

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Россия Бесплатно (free)

Пример обмена данными между справочниками по сопоставлению артикулов с помощью регистра сведений

27.08.2018    8867    0    Lyubogradov.P    1    

Альтернатива переноса ТЗ в конвертации данных 2.1

Практика программирования Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Здравствуйте уважаемые. Решил выложить альтернативный способ переноса данных в конвертации данных из источника к приемнику, с последующим сбором их в ТЗ в месте ПослеЗагрузки. Т.е.можно готовый перенесенный объект доработать либо создать что-то еще на базе данных. Метод сам разработан с учетом простого понимания Конвертации без использования всех её многочисленных тонкостей и сложностей. В примере рассматривается перенос Операции. И вот еще что. Я не привожу тут готовое решение, я всего лишь показываю концепцию того, как можно делать в КД. Без использования глобальных переменных.

20.08.2018    6644    0    dinopopyys    6    

Заготовка для загрузки файлов по ftp Промо

WEB Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

3 процедуры и 1 макет

03.06.2013    29937    0    anig99    6    

Конвертация 2.0. Перенос независимого справочника в подчиненный (пример).

Перенос данных из 1C8 в 1C8 v8 КД Россия Бесплатно (free)

Пример переноса независимого справочника в подчиненный с помощью Конвертации 2.0.

15.08.2018    10029    0    Lyubogradov.P    6    

Конвертация 2.0. Перенос элементов и групп справочника, имеющих различный вид иерархии (пример).

Перенос данных из 1C8 в 1C8 v8 КД Россия Бесплатно (free)

Пример переноса справочника, имеющего различный вид иерархии, с помощью Конвертации 2.0.

13.08.2018    9343    0    Lyubogradov.P    0    

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

Перенос данных из 1C8 в 1C8 v8 v8::УФ 1cv8.cf Россия Бесплатно (free)

hsИнтегратор : Простое в использовании решение, работает в качестве клиента и сервиса (в мобильном приложении – только клиента). Не обязательно требует внесения изменений в конфигурации интегрируемых баз данных. Маленький трафик обмена между клиентом и сервером, быстрая реакция на запросы со стороны клиента. Единый сервис для обмена данными различной структуры, механизмы для обеспечения безопасности.

25.06.2018    11631    12    hobi    8    

Интеграция «1С:Управление производственным предприятием» с «1С:Документооборот» Промо

Перенос данных из 1C8 в 1C8 Документооборот и делопроизводство Документооборот и делопроизводство v8 КА1 УПП1 ДО Бесплатно (free)

В данной статье пойдет речь о возможности интеграции 1С:Управление производственным предприятием ред. 1.3 с 1С:Документооборот КОРП и о том, что может получить предприятие от этой интеграции.

18.02.2013    61639    0    Vladimir_Konyrev    38    

Обмен через универсальный формат. Пример нестандартной конвертации данных

Обмен через XML Перенос данных из 1C8 в 1C8 v8 УТ11 Россия Бесплатно (free)

В статье описан небольшой пример обмена данными через EnterpriseData без снятия конфигурации с поддержки. Тестовая площадка: Управление торговлей, редакция 11 (11.4.3.126), версия платформы 8.3.11

18.06.2018    33452    0    artkor    12    

Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть ІІІ: Регистры сведений

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Часть III публикаций об универсальном обмен через REST интерфейс OData - обмен регистрами сведений

26.05.2018    9270    0    V.Stavinsky    3    

Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть ІІ: Документы

Перенос данных из 1C8 в 1C8 v8 Бесплатно (free)

Продолжение статьи об универсальном обмене между идентичными конфигурации через REST интерфейс OData (https://infostart.ru/public/829356/). В части второй разберем особенности обмена документами.

19.05.2018    11066    0    V.Stavinsky    5    

Особенности обмена данными с использованием "ручной" регистрации Промо

Распределенная БД (УРИБ, УРБД) Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Эта статья рассчитана на программистов, которые используют обмен данными с помощью метода "ВыбратьИзменения" и последующую их запись. Только для планов обменов, имеющих "ручную" регистрацию.

14.01.2013    32870    0    logarifm    6    

Как написать обмен с 50 поставщиками и не сойти с ума. Техника

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

О том как из обмена с одним идеальным поставщиком сделать обмены с 50 реальными поставщиками.

16.04.2018    9963    0    m-rv    1    

Конвертация данных. Произвольная иерархия справочника

Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Источник: Бухгалтерский учет ред. 4.5 платформы 7.7. Приемник: Бухгалтерия предприятия 3.0. Задача: При загрузке справочника «Номенклатура» в приемнике, все элементы поместить в папку «Товары» с сохранением имеющейся иерархии в 7.7.

10.04.2018    10310    0    pyrkin_vanya    3    

Перенос помеченных на удаление объектов. Конвертация 2.1

Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

02.04.2018    13482    0    Shmell    2    

СТАБИЛЬНАЯ Загрузка справочника номенклатуры в 1С:Управление торговлей 8 из прайс-листа в Excel (код открыт скачать можно бесплатно) Промо

Перенос данных из 1C8 в 1C8 Загрузка и выгрузка в Excel v8 УТ10 Россия Бесплатно (free)

В таких случаях многие заказывают соответствующие обработки у собственных штатных программистов, фирм-франчайзи или сторонних разработчиков, но это дополнительные расходы и время. Как быть, если по различным причинам такой возможности нет? У каждого пользователя профессиональной версии 1С:Предприятие 8 подобная обработка уже есть! На диске ИТС! Типовая обработка «ЗагрузкаДанныхИзТабличногоДокумента.epf», находиться в разделе «Технологическая поддержка» > «Методическая поддержка 1С:Предприятие 8» > «Универсальные отчеты и обработки» > «Загрузка данных из табличного документа». Обратите внимание, начиная с Февраля 2010 г. на диске ИТС данная обработка для конфигураций на платформе 8.1 находиться в другом разделе: «Технологическая поддержка» > «Методическая поддержка 1С:Предприятие 8» > «Платформа 1С:Предприятие 8.1» > «Универсальные отчеты и обработки» > «Загрузка данных из табличного документа».

07.11.2011    181409    0    SkyLink2012    132    

Совместная работа БП 3.0 и ЗУП 3.1. Устранение ошибки синхронизации персональных данных физических лиц

Перенос данных из 1C8 в 1C8 Управление персоналом (HRM) Управление персоналом (HRM) v8 БП3.0 ЗУП3.x Бесплатно (free)

При совместной работе указанных конфигураций с использованием встроенного плана обмена «ОбменЗарплата3Бухгалтерия3» персональные данные физических лиц передаются некорректно. Это связано с ошибкой в правилах обмена (замшелой уже, с учётом того, сколько времени эта ошибка «кочует» из версии в версию правил).

31.03.2018    13839    0    ser73461014    12