Я хочу привести (работающий) код синхронизации Контрагентов из УТ-11 в УТ-10 и БП 1.6
&НаСервере
Перем ИмяСервера Экспорт;
Перем ИмяБазы Экспорт;
Перем Пользователь Экспорт;
Перем Пароль Экспорт;
Перем СтрокаСоединения Экспорт;
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ СИНХРОНИЗАЦИИ КОНТРАГЕНТОВ
&НаСервере
Функция ПравоСинхронизацииКонтрагентов()
//+++ YuriKo bgn [2012.12.06] начало 27
Если РольДоступна(Метаданные.Роли.ПравоВводаИнформацииПоПартнеруБезКонтроля) Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
//--- YuriKo end [2012.12.06] конец 27
КонецФункции // ПравоСинхронизацииКонтрагентов()
&НаКлиенте
Процедура Синхронизировать(Команда)
//+++ YuriKo bgn [2012.05.05] начало 2
Ответ = Вопрос("Копировать текущего Контрагента в УТ-10 ?", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
ИмяСервера = УТ10_ПолучитьИмяСервера();
ИмяБазы = УТ10_ПолучитьИмяБазы();
Пользователь = УТ10_ПолучитьПользователя();
Пароль = УТ10_ПолучитьПароль();
Если НЕ ЗначениеЗаполнено(ИмяСервера) ИЛИ НЕ ЗначениеЗаполнено(ИмяБазы) ИЛИ НЕ ЗначениеЗаполнено(Пользователь) ИЛИ НЕ ЗначениеЗаполнено(Пароль) Тогда
Предупреждение("Не заполнены параметры обмена с УТ-10. Откройте форму Констант и введите недостающие...");
Возврат;
Иначе
//СтрокаСоединения = "File=""c:\1c\ak@ut""; Usr =""Админ"";";
СтрокаСоединения = "Srvr=""" + ИмяСервера + """;Ref=""" + ИмяБазы + """;Usr=""" + Пользователь + """;Pwd=""" + Пароль + """";
КонецЕсли;
УТ10_Выгрузить(СтрокаСоединения);
КонецЕсли;
Ответ = Вопрос("Копировать текущего Контрагента в БП ?", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
ИмяСервера = БП16_ПолучитьИмяСервера();
ИмяБазы = БП16_ПолучитьИмяБазы();
Пользователь = БП16_ПолучитьПользователя();
Пароль = БП16_ПолучитьПароль();
Если НЕ ЗначениеЗаполнено(ИмяСервера) ИЛИ НЕ ЗначениеЗаполнено(ИмяБазы) ИЛИ НЕ ЗначениеЗаполнено(Пользователь) ИЛИ НЕ ЗначениеЗаполнено(Пароль) Тогда
Предупреждение("Не заполнены параметры обмена с БП. Откройте форму Констант и введите недостающие...");
Возврат;
Иначе
//СтрокаСоединения = "File=""c:\1c\ak@ut""; Usr =""Админ"";";
СтрокаСоединения = "Srvr=""" + ИмяСервера + """;Ref=""" + ИмяБазы + """;Usr=""" + Пользователь + """;Pwd=""" + Пароль + """";
КонецЕсли;
БП16_Выгрузить(СтрокаСоединения);
КонецЕсли;
//--- YuriKo end [2012.05.05] конец 2
КонецПроцедуры // Синхронизировать()
&НаСервере
Процедура ПолучитьФормуСинхро()
//+++ YuriKo bgn [2012.12.04] начало 18
ПолучитьОбщуюФорму("НО_ПараметрыСинхронизации").ОткрытьМодально();
//--- YuriKo end [2012.12.04] конец 18
КонецПроцедуры // ПолучитьОбщФорму()
&НаСервере
Функция ПолучитьСправочникОбъектПоСсылке(Объект_Ссылка)
//+++ YuriKo bgn [2012.12.04] начало 9
Спр = Объект_Ссылка.ПолучитьОбъект();
Возврат Спр;
//--- YuriKo end [2012.12.04] конец 9
КонецФункции // ПолучитьСправочникОбъектПоСсылке()
/////////////////////////////// Бухгалтерия
&НаСервере
Функция БП16_ПолучитьИмяСервера()
//+++ YuriKo bgn [2012.12.05] начало 22
ИмяСервера = Константы.НО_БП16_ИмяСервера.Получить();
Возврат ИмяСервера;
//--- YuriKo end [2012.12.05] конец 22
КонецФункции // ПолучитьИмяСервера()
&НаСервере
Функция БП16_ПолучитьИмяБазы()
//+++ YuriKo bgn [2012.12.05] начало 23
ИмяБазы = Константы.НО_БП16_ИмяБазы.Получить();
Возврат ИмяБазы;
//--- YuriKo end [2012.12.05] конец 23
КонецФункции // ПолучитьИмяБазы()
&НаСервере
Функция БП16_ПолучитьПользователя()
//+++ YuriKo bgn [2012.12.05] начало 24
Пользователь = Константы.НО_БП16_Пользователь.Получить();
Возврат Пользователь;
//--- YuriKo end [2012.12.05] конец 24
КонецФункции // ПолучитьПользователя()
&НаСервере
Функция БП16_ПолучитьПароль()
//+++ YuriKo bgn [2012.12.05] начало 25
Пароль = Константы.НО_БП16_Пароль.Получить();
Возврат Пароль;
//--- YuriKo end [2012.12.05] конец 25
КонецФункции // ПолучитьПароль()
&НаСервере
Функция БП16_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения)
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных БП не открыта!!! Невозможно передать Контрагента из УТ 11 - Функция БП16_СоздатьНовогоКонтрагента() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат "";
КонецПопытки;
Контрагент = Объект;
Попытка
ноКонтр = СОМсоединение.Справочники.Контрагенты.СоздатьЭлемент();
Если ЗначениеЗаполнено(мКод) Тогда
ноКонтр.Код = мКод;
КонецЕсли;
ноКонтр.Наименование = Контрагент.Наименование;
ноКонтр.НаименованиеПолное = Контрагент.НаименованиеПолное;
ноКонтр.ИНН = Контрагент.ИНН;
ноКонтр.КПП = Контрагент.КПП;
ноКонтр.КодПоОКПО = Контрагент.КодПоОКПО;
ноКонтр.Комментарий = ?(ПустаяСтрока(Контрагент.ДополнительнаяИнформация), "передан из УТ-11 [" + ТекущаяДата() + "]",
Контрагент.ДополнительнаяИнформация + " передан из УТ-11 [" + ТекущаяДата() + "]");
Если Контрагент.ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.ЮрФизЛицо.ЮрЛицо") Тогда
ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ЮрЛицо;
Иначе
ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ФизЛицо;
КонецЕсли;
ноКонтр.Записать();
ноКонтр.ГоловнойКонтрагент = ноКонтр.Ссылка;
ноКонтр.Записать();
КонтраКом = ноКонтр.Ссылка;
GUID_БП16 = КонтраКом.УникальныйИдентификатор();
ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
GUID = Строка(ГУИД);
Попытка
КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
Исключение
Сообщить("Не могу найти Контрагента в БП по ГУИД = <" + GUID + "> - Функция БП16_СоздатьНовогоКонтрагента() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат Ложь;
КонецПопытки;
мКод = Строка(КонтраКом.Код);
КонтраОбъект = Контрагент.Ссылка.ПолучитьОбъект();
КонтраОбъект.НО_GUID_БП16 = GUID;
КонтраОбъект.НО_Код_БП16 = мКод;
КонтраОбъект.Записать();
V8 = 0; СОМсоединение = 0;
Возврат GUID;
Исключение
Сообщить("Не удалось записать в БП контрагента " + Контрагент.НаименованиеПолное + Символы.ПС + ОписаниеОшибки());
КонтраКом = Неопределено;
V8 = 0; СОМсоединение = 0;
Возврат "";
КонецПопытки;
КонецФункции // БП16_СоздатьНовогоКонтрагента()
&НаСервере
Функция БП16_НайтиКонтрагентаПоГУИД(GUID_БП16, мКод, СтрокаСоединения)
мКод = "";
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных БП не открыта!!! Невозможно передать Контрагента из УТ 11 - Функция БП16_НайтиКонтрагентаПоГУИД() - вызывайте программиста ...");
мКод = "База данных не открыта";
Возврат "";
КонецПопытки;
Попытка
КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID_БП16));
Исключение
Сообщить("Не могу найти Контрагента в БП по ГУИД = <" + GUID_БП16 + "> - Функция БП16_НайтиКонтрагентаПоГУИД() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат Ложь;
КонецПопытки;
мКод = Строка(КонтраКом.Код);
V8 = 0; СОМсоединение = 0;
Если ЗначениеЗаполнено(мКод) Тогда Возврат Истина Иначе Возврат Ложь КонецЕсли;
КонецФункции // БП16_НайтиКонтрагентаПоГУИД(Цель)
&НаСервере
Функция БП16_НайтиКонтрагентаПоИНН(Контрагент, мКод, мГУИД, СтрокаСоединения)
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных БП не открыта!!! Невозможно передать Контрагента из УТ 11 - Функция БП16_НайтиКонтрагентаПоИНН() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат "";
КонецПопытки;
Попытка
КонтраКом = СОМсоединение.Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", Контрагент.ИНН);
Исключение
Сообщить("Не могу найти Контрагента в БП по ИНН = <" + Контрагент.ИНН + "> - Функция БП16_НайтиКонтрагентаПоГУИД() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат Ложь;
КонецПопытки;
GUID_БП16 = КонтраКом.УникальныйИдентификатор();
ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
мГУИД = Строка(ГУИД);
мКод = Строка(КонтраКом.Код);
V8 = 0; СОМсоединение = 0;
Если ЗначениеЗаполнено(мКод) Тогда Возврат Истина Иначе Возврат Ложь КонецЕсли;
КонецФункции // БП16_НайтиКонтрагентаПоИНН(Цель)
&НаСервере
Функция БП16_НайтиКонтрагентаПоНаименованию(Контрагент, мКод, мГУИД, СтрокаСоединения)
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных БП не открыта!!! Невозможно передать Контрагента из УТ 11 - Функция БП16_НайтиКонтрагентаПоНаименованию() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат "";
КонецПопытки;
Попытка
КонтраКом = СОМсоединение.Справочники.Контрагенты.НайтиПоНаименованию(Контрагент.Наименование);
Исключение
Сообщить("Не могу найти Контрагента в БП по Наименованию = <" + Контрагент.Наименование + "> - Функция БП16_НайтиКонтрагентаПоНаименованию() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат Ложь;
КонецПопытки;
GUID_БП16 = КонтраКом.УникальныйИдентификатор();
ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
мГУИД = Строка(ГУИД);
мКод = Строка(КонтраКом.Код);
V8 = 0; СОМсоединение = 0;
Если ЗначениеЗаполнено(мКод) Тогда Возврат Истина Иначе Возврат Ложь КонецЕсли;
КонецФункции // БП16_НайтиКонтрагентаПоНаименованию()
&НаСервере
Процедура БП16_ЗаписатьКонтактыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
Выполнено = Истина; // заготовка
КонецПроцедуры // БП16_ЗаписатьКонтактыКонтрагента()
&НаСервере
Процедура БП16_ПолучитьБанкСчетаКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
Выполнено = Ложь;
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных БП не открыта!!! Невозможно передать Контрагента из УТ 11 - Процедура БП16_ПолучитьБанкСчетаКонтрагента()- вызывайте программиста ...");
Возврат;
КонецПопытки;
Попытка
КонтрНовый = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
Исключение
Сообщить("Не могу найти Контрагента в БП по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура БП16_ПолучитьБанкСчетаКонтрагента() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат;
КонецПопытки;
Контрагент = Объект;
ВыборкаБухСчётовКонтры = Справочники.БанковскиеСчетаКонтрагентов.Выбрать( , Контрагент.Ссылка, , );
Пока ВыборкаБухСчётовКонтры.Следующий() Цикл
Если ВыборкаБухСчётовКонтры.ЭтоГруппа ИЛИ ВыборкаБухСчётовКонтры.ПометкаУдаления Тогда
Продолжить;
КонецЕсли;
Счёт = ВыборкаБухСчётовКонтры;
Счёт_Наимен = ВыборкаБухСчётовКонтры.Наименование;
Счёт_Номер = ВыборкаБухСчётовКонтры.НомерСчета;
Счёт_Банк = ВыборкаБухСчётовКонтры.Банк;
Счёт_РсБанк = ВыборкаБухСчётовКонтры.БанкДляРасчетов;
Счёт_Валюта = ВыборкаБухСчётовКонтры.ВалютаДенежныхСредств;
Счёт_Контра = ВыборкаБухСчётовКонтры.Владелец;
Счёт_ТеКорр = ВыборкаБухСчётовКонтры.ТекстКорреспондента;
Счёт_ТеНазн = ВыборкаБухСчётовКонтры.ТекстНазначения;
Счёт_изБП16 = СОМсоединение.Справочники.БанковскиеСчета.НайтиПоНаименованию(Счёт_Наимен, , , КонтрНовый);
мСчёт = Строка(Счёт_изБП16.НомерСчета);
Если Счёт_Номер = мСчёт Тогда
Выполнено = Истина;
Продолжить;
Иначе
НовыйСчёт = СОМсоединение.Справочники.БанковскиеСчета.СоздатьЭлемент();
НовыйСчёт.Владелец = КонтрНовый;
НовыйСчёт.НомерСчета = Счёт_Номер;
НовыйСчёт.Наименование = Счёт_Наимен;
НовыйСчёт.ВидСчета = "Расчетный";
Если Счёт_Валюта.Код = "643" Тогда // Российский рубль
НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
ИначеЕсли Счёт_Валюта.Код = "978" Тогда // Евро
НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("978");
ИначеЕсли Счёт_Валюта.Код = "840" Тогда // Доллар США
НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("840");
Иначе
НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
КонецЕсли;
мБанк = СОМсоединение.Справочники.Банки.НайтиПоКоду(Счёт_Банк.Код);
Если ЗначениеЗаполнено(мБанк.Code) Тогда
НовыйСчёт.Банк = мБанк;
Иначе
Сообщить("В БП отсутствует банк [" + Счёт_Банк.Наименование + "] с кодом <" + Счёт_Банк.Код + ">, счёт [" +
Счёт.Наименование + "] записан не будет");
Продолжить;
КонецЕсли;
Попытка
НовыйСчёт.Записать();
Выполнено = Истина;
Исключение
Сообщить("В БП не удалось записать банковский счёт <" + Счёт_Номер + ">");
Выполнено = Ложь;
КонецПопытки;
КонецЕсли;
КонецЦикла;
V8 = 0; СОМсоединение = 0;
КонецПроцедуры // БП16_ПолучитьБанкСчетаКонтрагента()
&НаСервере
Процедура БП16_ЗаписатьДоговорыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных БП не открыта!!! Невозможно передать Контрагента из УТ 11 - Процедура БП16_ЗаписатьДоговорыКонтрагента() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат;
КонецПопытки;
Попытка
КонтрНовый = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
Исключение
Сообщить("Не могу найти Контрагента в БП по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура БП16_ЗаписатьДоговорыКонтрагента() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат;
КонецПопытки;
Контрагент = Объект;
Отбор = Новый Структура("Контрагент");
Контр = Контрагент.Ссылка;
Отбор.Контрагент = Контр;
Выборка = Справочники.ДоговорыКонтрагентов.Выбрать( , , Отбор, );
Пока Выборка.Следующий() Цикл
Если (НЕ Выборка.Статус = Перечисления.СтатусыДоговоровКонтрагентов.Действует) ИЛИ (Выборка.ПометкаУдаления = Истина) ИЛИ Выборка.Ссылка.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
// искать договор по ГУИД
GUID = Выборка.НО_GUID_БП16;
Если ЗначениеЗаполнено(GUID) Тогда
ДогКом = СОМсоединение.Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
мКод = Строка(ДогКом.Код);
Иначе
мКод = "";
КонецЕсли;
Если ЗначениеЗаполнено(мКод) Тогда
ДоговорОбъект = ПолучитьСправочникОбъектПоСсылке(Выборка.Ссылка);
ДоговорОбъект.НО_Код_БП16 = мКод;
ДоговорОбъект.Записать();
Продолжить;
КонецЕсли;
Если ЗначениеЗаполнено(Выборка.НО_Код_БП16) Тогда
мКод = Выборка.НО_Код_БП16;
Иначе
Если ЗначениеЗаполнено(Выборка.НО_Код_УТ10) Тогда
мКод = Выборка.НО_Код_УТ10;
КонецЕсли;
КонецЕсли;
Дог = СОМсоединение.Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
Если ЗначениеЗаполнено(мКод) Тогда
Дог.Код = мКод;
КонецЕсли;
Дог.Наименование = Выборка.Наименование;
Дог.Комментарий = Выборка.Комментарий;
// в БП с одним ИНН введено много организаций М и Р (для отчётности), поэтому ищем организацию по коду
Если Выборка.Организация.ИНН = "7722706542" Тогда
Дог.Организация = СОМсоединение.Справочники.Организации.НайтиПоКоду("OFB000001"); // ООО "Новый "Детский мир" (новый)
ИначеЕсли Выборка.Организация.ИНН = "7722706609" Тогда
Дог.Организация = СОМсоединение.Справочники.Организации.НайтиПоКоду("OFB000003"); // ООО «Новый «Детский мир М»
ИначеЕсли Выборка.Организация.ИНН = "7722706581" Тогда
Дог.Организация = СОМсоединение.Справочники.Организации.НайтиПоКоду("OFB000002"); // ООО «Новый «Детский мир Р1»
Иначе
Дог.Организация = СОМсоединение.Справочники.Организации.НайтиПоКоду("OFB000001"); // ООО "Новый "Детский мир" (новый)
КонецЕсли;
Если Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту Тогда
Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
ИначеЕсли Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером;
ИначеЕсли Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика Тогда
Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком;
ИначеЕсли Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию Тогда
Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СКомитентом;
Иначе
Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.Прочее;
КонецЕсли;
Если Выборка.ВалютаВзаиморасчетов.Код = "643" Тогда // Российский рубль
Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
ИначеЕсли Выборка.ВалютаВзаиморасчетов.Код = "978" Тогда // Евро
Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("978");
ИначеЕсли Выборка.ВалютаВзаиморасчетов.Код = "840" Тогда // Доллар США
Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("840");
Иначе
Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
КонецЕсли;
Дог.Владелец = КонтрНовый;
Дог.ВедениеВзаиморасчетов = СОМсоединение.Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом;
Попытка
Дог.Записать();
Исключение
// Возможно, такой код элемента ужЕ существует
Попытка
Дог.Код = "";
Дог.Записать();
Исключение
Сообщить("Не удалось записать договор контрагента " + Дог + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
КонецПопытки;
ДогКом = Дог.Ссылка;
GUID_БП16 = ДогКом.УникальныйИдентификатор();
ГУИД = СОМсоединение.String(ДогКом.УникальныйИдентификатор());
GUID = Строка(ГУИД);
ДогКом = СОМсоединение.Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
мКод = Строка(ДогКом.Код);
Если ЗначениеЗаполнено(мКод) Тогда
ДоговорОбъект = ПолучитьСправочникОбъектПоСсылке(Выборка.Ссылка);
ДоговорОбъект.НО_GUID_БП16 = GUID;
ДоговорОбъект.НО_Код_БП16 = мКод;
ДоговорОбъект.Записать();
Продолжить;
КонецЕсли;
КонецЦикла;
Выполнено = Истина;
V8 = 0; СОМсоединение = 0;
КонецПроцедуры // БП16_ЗаписатьДоговорыКонтрагента()
&НаСервере
Процедура БП16_ЗаполнитьКонтактнуюИнформацию(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных БП не открыта!!! Невозможно передать Контрагента из УТ 11 - Процедура БП16_ЗаполнитьКонтактнуюИнформацию() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат;
КонецПопытки;
Контрагент = Объект;
Попытка
КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
Исключение
Сообщить("Не могу найти Контрагента в БП по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура БП16_ЗаполнитьКонтактнуюИнформацию() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат;
КонецПопытки;
Для ы = 0 По Контрагент.КонтактнаяИнформация.Количество()-1 Цикл
Если Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Юридический адрес" Тогда
ЮрАдр = Контрагент.КонтактнаяИнформация[ы].Представление;
ИначеЕсли Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Фактический адрес" Тогда
ФкАдр = Контрагент.КонтактнаяИнформация[ы].Представление;
ИначеЕсли Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Телефон" Тогда
Телфн = Контрагент.КонтактнаяИнформация[ы].Представление;
ИначеЕсли Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Email" Тогда
Email = Контрагент.КонтактнаяИнформация[ы].Представление;
КонецЕсли;
КонецЦикла;
АдрИнф = СОМсоединение.РегистрыСведений.КонтактнаяИнформация;
НаборАдр = АдрИнф.СоздатьНаборЗаписей();
НаборАдр.Отбор.Объект.Установить(КонтраКом);
НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00010")); //НайтиПоНаименованию("Юридический адрес"));
НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес);
НаборАдр.Прочитать();
Если НаборАдр.Количество() = 0 Тогда
Адр = НаборАдр.Добавить();
Адр.Объект = КонтраКом;
Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес;
Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00010");
Адр.Представление = ЮрАдр;
НаборАдр.Записать();
КонецЕсли;
НаборАдр.Отбор.Объект.Установить(КонтраКом);
НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес);
НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00008")); //НайтиПоНаименованию("Фактический адрес"));
НаборАдр.Прочитать();
Если НаборАдр.Количество() = 0 Тогда
Адр = НаборАдр.Добавить();
Адр.Объект = КонтраКом;
Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес;
Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00008");
Адр.Представление = ФкАдр;
НаборАдр.Записать();
КонецЕсли;
НаборАдр.Отбор.Объект.Установить(КонтраКом);
НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Телефон);
НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00005")); //НайтиПоНаименованию("Телефон"));
НаборАдр.Прочитать();
Если НаборАдр.Количество() = 0 Тогда
Адр = НаборАдр.Добавить();
Адр.Объект = КонтраКом;
Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Телефон;
Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00005");
Адр.Представление = Телфн;
НаборАдр.Записать();
КонецЕсли;
НаборАдр.Отбор.Объект.Установить(КонтраКом);
НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Адрес электронной почты контрагента для обмена электронными документами"));
НаборАдр.Прочитать();
Если НаборАдр.Количество() = 0 Тогда
Адр = НаборАдр.Добавить();
Адр.Объект = КонтраКом;
Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Адрес электронной почты контрагента для обмена электронными документами");
Адр.Представление = Email;
НаборАдр.Записать();
КонецЕсли;
Выполнено = Истина;
V8 = 0; СОМсоединение = 0;
КонецПроцедуры // БП16_ЗаполнитьКонтактнуюИнформацию()
&НаСервере
Процедура БП16_ЗаписатьРеквизитыКонтрагента(ОСсылка, GUID_БП16, Код_БП16)
КонтраОбъект = Объект.Ссылка.ПолучитьОбъект();
КонтраОбъект.НО_GUID_УТ16 = GUID_БП16;
КонтраОбъект.НО_Код_УТ16 = Код_БП16;
КонтраОбъект.Записать();
КонецПроцедуры // БП16_ЗаписатьРеквизитыКонтрагента()
&НаСервере
Процедура БП16_ПерезаполнитьОсновныеРеквизитыКонтрагента(НовыйКонтрагентГУИД, СтрокаСоединения)
мКод = "";
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных БП не открыта!!! Невозможно перезаполнить реквизиты Контрагента - Процедура БП16_ПерезаполнитьОсновныеРеквизитыКонтрагента() - вызывайте программиста ...");
Возврат;
КонецПопытки;
Контрагент = Объект;
Попытка
КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
Исключение
Сообщить("Не могу найти Контрагента в БП по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура БП16_ПерезаполнитьОсновныеРеквизитыКонтрагента() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат;
КонецПопытки;
мКод = Строка(КонтраКом.Код);
ноКонтр = КонтраКом.ПолучитьОбъект();
Если ЗначениеЗаполнено(Объект.НО_Код_БП16) Тогда
ноКонтр.Код = Объект.НО_Код_БП16;
КонецЕсли;
ноКонтр.Наименование = Контрагент.Наименование;
ноКонтр.НаименованиеПолное = Контрагент.НаименованиеПолное;
ноКонтр.ИНН = Контрагент.ИНН;
ноКонтр.КПП = Контрагент.КПП;
ноКонтр.КодПоОКПО = Контрагент.КодПоОКПО;
ноКонтр.Комментарий = ?(НЕ ЗначениеЗаполнено(ноКонтр.Комментарий), "передан из БП [" + ТекущаяДата() + "]", ноКонтр.Комментарий);
Если Контрагент.ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.ЮрФизЛицо.ЮрЛицо") Тогда
ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ЮрЛицо;
Иначе
ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ФизЛицо;
КонецЕсли;
ноКонтр.ГоловнойКонтрагент = ноКонтр.Ссылка;
ноКонтр.Записать();
КонтраКом = ноКонтр.Ссылка;
GUID_БП16 = КонтраКом.УникальныйИдентификатор();
ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
GUID = Строка(ГУИД);
Попытка
КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
Исключение
Сообщить("Не могу найти Контрагента в БП по ГУИД = <" + GUID + "> - Процедура БП16_ПерезаполнитьОсновныеРеквизитыКонтрагента() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат;
КонецПопытки;
мКод = Строка(КонтраКом.Код);
КонтраОбъект = Контрагент.Ссылка.ПолучитьОбъект();
КонтраОбъект.НО_GUID_БП16 = GUID;
КонтраОбъект.НО_Код_БП16 = мКод;
КонтраОбъект.Записать();
V8 = 0; СОМсоединение = 0;
КонецПроцедуры // БП16_ПерезаполнитьОсновныеРеквизитыКонтрагента()
&НаКлиенте
Процедура БП16_Выгрузить(СтрокаСоединения)
//+++ YuriKo bgn [2012.05.05] начало 4
// процедура ищет Контрагента в БП по ГУИД, или ИНН, или Наименованию
// - если не нашла - создаёт ноаого, со всеми реквизитами и сопутствующими (контакты, договоры, счета ... )
НовыйКонтрагентГУИД = "";
Контрагент = Объект;
КонтрагентНайден = Ложь;
мКод = "";
GUID_БП16 = Объект.НО_GUID_БП16;
Если НЕ ПустаяСтрока(GUID_БП16) Тогда
КонтрагентНайден = БП16_НайтиКонтрагентаПоГУИД(GUID_БП16, мКод, СтрокаСоединения);
Если мКод = "База данных не открыта" Тогда
// неправильные данные для соединения, или проблемы с открытием базы
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(GUID_БП16) И НЕ КонтрагентНайден Тогда
БП16_ЗаписатьРеквизитыКонтрагента(Объект.Ссылка, "", "");
GUID_БП16 = "";
КонецЕсли;
Если КонтрагентНайден Тогда
БП16_ЗаписатьРеквизитыКонтрагента(Объект.Ссылка, GUID_БП16, мКод);
Ответ = Вопрос("Контрагент с таким ГУИД, и с Кодом = <" + мКод + "> - найден в БП:" + Символы.ПС +
"перезаписать <<Да>> или ничего не делать <<Нет>> ?", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
// перезаписать существующего
НовыйКонтрагентГУИД = GUID_БП16;
Иначе
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
// поиск по ИНН
Если НЕ ЗначениеЗаполнено(НовыйКонтрагентГУИД) И ЗначениеЗаполнено(Контрагент.ИНН) Тогда
мГУИД = "";
КонтрагентНайден = БП16_НайтиКонтрагентаПоИНН(Контрагент, мКод, мГУИД, СтрокаСоединения);
Если КонтрагентНайден Тогда
Ответ = Вопрос("Контрагент с таким ИНН, и с Кодом = <" + мКод + "> - найден в БП:" + Символы.ПС +
"Создать нового (да), перезаписать (нет) или ничего не делать (отмена) ?", РежимДиалогаВопрос.ДаНетОтмена);
Если Ответ = КодВозвратаДиалога.Отмена Тогда
// ничего не делать
Возврат;
ИначеЕсли Ответ = КодВозвратаДиалога.Да Тогда
// создать нового
НовыйКонтрагентГУИД = БП16_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения);
Если ПустаяСтрока(НовыйКонтрагентГУИД) Тогда
Предупреждение("Контрагент в БП не создан :(");
КонецЕсли;
ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
// перезаписать существующего
НовыйКонтрагентГУИД = мГУИД;
Иначе
КонецЕсли;
Иначе
КонецЕсли;
КонецЕсли;
// поиск по Наименованию
Если НЕ ЗначениеЗаполнено(НовыйКонтрагентГУИД) Тогда
Если НЕ (мКод = "База данных не открыта" ИЛИ мКод = " ") Тогда
КонтрагентНайден = БП16_НайтиКонтрагентаПоНаименованию(Контрагент, мКод, мГУИД, СтрокаСоединения);
Если КонтрагентНайден Тогда
Ответ = Вопрос("Контрагент с таким Наименованием, и с Кодом = <" + мКод + "> - найден в БП:" + Символы.ПС +
"Создать нового <<Да>>, перезаписать существующего <<Нет>>, или ничего не делать <<Отмена>> ?",
РежимДиалогаВопрос.ДаНетОтмена);
Если Ответ = КодВозвратаДиалога.Да Тогда
// создать нового
НовыйКонтрагентГУИД = БП16_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения);
Если ПустаяСтрока(НовыйКонтрагентГУИД) Тогда
Предупреждение("Контрагент в БП не создан :(");
КонецЕсли;
ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
// перезаписать существующего
НовыйКонтрагентГУИД = мГУИД;
Иначе
// ничего не делать
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
// если не найден по ГУИД или ИНН или Наименованию - создаём нового
Если НЕ ЗначениеЗаполнено(НовыйКонтрагентГУИД) Тогда
Если НЕ ЗначениеЗаполнено(мКод) Тогда
Если ЗначениеЗаполнено(Объект.НО_Код_УТ10) Тогда
мКод = Объект.НО_Код_УТ10;
КонецЕсли;
КонецЕсли;
НовыйКонтрагентГУИД = БП16_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения);
Если ПустаяСтрока(НовыйКонтрагентГУИД) Тогда
Предупреждение("Контрагент в БП не создан :(");
Возврат;
Иначе
Сообщить("Создан контрагент в БП с кодом <" + мКод + "> и ГУИД = <" + НовыйКонтрагентГУИД + ">");
КонецЕсли;
Иначе
// Контрагент найден в УТ-10, перезаполним основные рекквизиты
БП16_ПерезаполнитьОсновныеРеквизитыКонтрагента(НовыйКонтрагентГУИД, СтрокаСоединения);
КонецЕсли;
// адреса и телефоны Контрагента
Выполнено = Ложь;
БП16_ЗаполнитьКонтактнуюИнформацию(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
Если НЕ Выполнено Тогда
Сообщить("Не удалось записать адреса и телефоны Контрагента в БП... ");
КонецЕсли;
// контактные лица Контрагента
Выполнено = Ложь;
БП16_ЗаписатьКонтактыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
Если НЕ Выполнено Тогда
Сообщить("Не удалось записать контактные лица Контрагента в БП... ");
КонецЕсли;
// договоры Контрагента
Выполнено = Ложь;
БП16_ЗаписатьДоговорыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
Если НЕ Выполнено Тогда
Сообщить("Не удалось записать договоры Контрагента в БП... ");
КонецЕсли;
// Банковские счета Контрагента
Выполнено = Ложь;
БП16_ПолучитьБанкСчетаКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
Если НЕ Выполнено Тогда
Сообщить("Не удалось записать Банковские счета Контрагента в БП... ");
КонецЕсли;
//--- YuriKo end [2012.05.05] конец 4
КонецПроцедуры // БП16_Выгрузить()
/////////////////////////////// Торговля
&НаСервере
Функция УТ10_ПолучитьИмяСервера()
//+++ YuriKo bgn [2012.12.04] начало 14
ИмяСервера = Константы.НО_УТ10_ИмяСервера.Получить();
Возврат ИмяСервера;
//--- YuriKo end [2012.12.04] конец 14
КонецФункции // ПолучитьИмяСервера()
&НаСервере
Функция УТ10_ПолучитьИмяБазы()
//+++ YuriKo bgn [2012.12.04] начало 15
ИмяБазы = Константы.НО_УТ10_ИмяБазы.Получить();
Возврат ИмяБазы;
//--- YuriKo end [2012.12.04] конец 15
КонецФункции // ПолучитьИмяБазы()
&НаСервере
Функция УТ10_ПолучитьПользователя()
//+++ YuriKo bgn [2012.12.04] начало 16
Пользователь = Константы.НО_УТ10_Пользователь.Получить();
Возврат Пользователь;
//--- YuriKo end [2012.12.04] конец 16
КонецФункции // ПолучитьПользователя()
&НаСервере
Функция УТ10_ПолучитьПароль()
//+++ YuriKo bgn [2012.12.04] начало 17
Пароль = Константы.НО_УТ10_Пароль.Получить();
Возврат Пароль;
//--- YuriKo end [2012.12.04] конец 17
КонецФункции // ПолучитьПароль()
&НаСервере
Функция УТ10_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения)
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных УТ-10 не открыта!!! Невозможно передать Контрагента из УТ 11 - Функция УТ10_СоздатьНовогоКонтрагента() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат "";
КонецПопытки;
Контрагент = Объект;
Попытка
ноКонтр = СОМсоединение.Справочники.Контрагенты.СоздатьЭлемент();
Если ЗначениеЗаполнено(мКод) Тогда
ноКонтр.Код = Объект.НО_Код_УТ10;
КонецЕсли;
ноКонтр.Наименование = Контрагент.Наименование;
ноКонтр.НаименованиеПолное = Контрагент.НаименованиеПолное;
ноКонтр.ИНН = Контрагент.ИНН;
ноКонтр.КПП = Контрагент.КПП;
ноКонтр.КодПоОКПО = Контрагент.КодПоОКПО;
Если Контрагент.Партнер.Поставщик Тогда
ноКонтр.Поставщик = Истина;
КонецЕсли;
Если Контрагент.Партнер.Клиент Тогда
ноКонтр.Покупатель = Истина;
КонецЕсли;
ноКонтр.Комментарий = ?(ПустаяСтрока(Контрагент.ДополнительнаяИнформация), "передан из УТ-11 [" + ТекущаяДата() + "]",
Контрагент.ДополнительнаяИнформация + " передан из УТ-11 [" + ТекущаяДата() + "]");
Если Контрагент.ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.ЮрФизЛицо.ЮрЛицо") Тогда
ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ЮрЛицо;
Иначе
ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ФизЛицо;
КонецЕсли;
ноКонтр.Записать();
КонтраКом = ноКонтр.Ссылка;
GUID_УТ10 = КонтраКом.УникальныйИдентификатор();
ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
GUID = Строка(ГУИД);
Попытка
КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
Исключение
Сообщить("Не могу найти Контрагента в УТ 10 по ГУИД = <" + GUID + "> - Функция УТ10_СоздатьНовогоКонтрагента() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат Ложь;
КонецПопытки;
мКод = Строка(КонтраКом.Код);
КонтраОбъект = Контрагент.Ссылка.ПолучитьОбъект();
КонтраОбъект.НО_GUID_УТ10 = GUID; // полученный GUID как строку сохраняем в УТ-11
КонтраОбъект.НО_Код_УТ10 = мКод; // полученный из УТ-10 код сохраняем в УТ-11
КонтраОбъект.Записать();
V8 = 0; СОМсоединение = 0;
Возврат GUID;
Исключение
Сообщить("Не удалось записать контрагента " + Контрагент.НаименованиеПолное + Символы.ПС + ОписаниеОшибки());
Сообщить("Контрагент не был скопирован. Обратитесь к программисту...");
КонтраКом = Неопределено;
V8 = 0; СОМсоединение = 0;
Возврат "";
КонецПопытки;
КонецФункции // УТ10_СоздатьНовогоКонтрагента()
&НаСервере
Функция УТ10_НайтиКонтрагентаПоГУИД(GUID_УТ10, мКод, СтрокаСоединения)
//+++ YuriKo bgn [2012.12.04] начало 13
мКод = "";
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных УТ-10 не открыта!!! Невозможно передать Контрагента из УТ 11 - Функция УТ10_НайтиКонтрагентаПоГУИД() - вызывайте программиста ...");
мКод = "База данных не открыта";
Возврат "";
КонецПопытки;
Попытка
КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID_УТ10));
Исключение
Сообщить("Не могу найти Контрагента в УТ 10 по ГУИД = <" + GUID_УТ10 + "> - Функция УТ10_НайтиКонтрагентаПоГУИД() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат Ложь;
КонецПопытки;
мКод = Строка(КонтраКом.Код);
V8 = 0; СОМсоединение = 0;
Если ЗначениеЗаполнено(мКод) Тогда Возврат Истина Иначе Возврат Ложь КонецЕсли;
//--- YuriKo end [2012.12.04] конец 13
КонецФункции // УТ10_НайтиКонтрагентаПоГУИД(Цель)
&НаСервере
Функция УТ10_НайтиКонтрагентаПоИНН(Контрагент, мКод, мГУИД, СтрокаСоединения)
//+++ YuriKo bgn [2012.12.04] начало 19
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных УТ-10 не открыта!!! Невозможно передать Контрагента из УТ 11 - Функция УТ10_НайтиКонтрагентаПоИНН() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат "";
КонецПопытки;
Попытка
КонтраКом = СОМсоединение.Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", Контрагент.ИНН);
Исключение
Сообщить("Не могу найти Контрагента в УТ 10 по ИНН = <" + Контрагент.ИНН + "> - Функция УТ10_НайтиКонтрагентаПоГУИД() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат Ложь;
КонецПопытки;
GUID_УТ10 = КонтраКом.УникальныйИдентификатор();
ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
мГУИД = Строка(ГУИД);
мКод = Строка(КонтраКом.Код);
V8 = 0; СОМсоединение = 0;
Если ЗначениеЗаполнено(мКод) Тогда Возврат Истина Иначе Возврат Ложь КонецЕсли;
//--- YuriKo end [2012.12.04] конец 19
КонецФункции // УТ10_НайтиКонтрагентаПоИНН(Цель)
&НаСервере
Функция УТ10_НайтиКонтрагентаПоНаименованию(Контрагент, мКод, мГУИД, СтрокаСоединения)
//+++ YuriKo bgn [2012.12.04] начало 12
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных УТ-10 не открыта!!! Невозможно передать Контрагента из УТ 11 - Функция УТ10_НайтиКонтрагентаПоНаименованию() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат "";
КонецПопытки;
Попытка
КонтраКом = СОМсоединение.Справочники.Контрагенты.НайтиПоНаименованию(Контрагент.Наименование);
Исключение
Сообщить("Не могу найти Контрагента в УТ 10 по Наименованию = <" + Контрагент.Наименование + "> - Функция УТ10_НайтиКонтрагентаПоНаименованию() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат Ложь;
КонецПопытки;
GUID_УТ10 = КонтраКом.УникальныйИдентификатор();
ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
мГУИД = Строка(ГУИД);
мКод = Строка(КонтраКом.Код);
V8 = 0; СОМсоединение = 0;
Если ЗначениеЗаполнено(мКод) Тогда Возврат Истина Иначе Возврат Ложь КонецЕсли;
//--- YuriKo end [2012.12.04] конец 12
КонецФункции // УТ10_НайтиКонтрагентаПоНаименованию()
&НаСервере
Процедура УТ10_ЗаписатьКонтактыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
Выполнено = Истина; // заготовка
КонецПроцедуры // УТ10_ЗаписатьКонтактыКонтрагента()
&НаСервере
Процедура УТ10_ПолучитьБанкСчетаКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
//+++ YuriKo bgn [2012.12.04] начало 6
Выполнено = Ложь;
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных УТ-10 не открыта!!! Невозможно передать Контрагента из УТ 11 - Процедура УТ10_ПолучитьБанкСчетаКонтрагента()- вызывайте программиста ...");
Возврат;
КонецПопытки;
Попытка
КонтрНовый = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
Исключение
Сообщить("Не могу найти Контрагента в УТ 10 по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура УТ10_ПолучитьБанкСчетаКонтрагента() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат;
КонецПопытки;
Контрагент = Объект;
ВыборкаБухСчётовКонтры = Справочники.БанковскиеСчетаКонтрагентов.Выбрать( , Контрагент.Ссылка, , );
Пока ВыборкаБухСчётовКонтры.Следующий() Цикл
Если ВыборкаБухСчётовКонтры.ЭтоГруппа ИЛИ ВыборкаБухСчётовКонтры.ПометкаУдаления Тогда
Продолжить;
КонецЕсли;
Счёт = ВыборкаБухСчётовКонтры;
Счёт_Наимен = ВыборкаБухСчётовКонтры.Наименование;
Счёт_Номер = ВыборкаБухСчётовКонтры.НомерСчета;
Счёт_Банк = ВыборкаБухСчётовКонтры.Банк;
Счёт_РсБанк = ВыборкаБухСчётовКонтры.БанкДляРасчетов;
Счёт_Валюта = ВыборкаБухСчётовКонтры.ВалютаДенежныхСредств;
Счёт_Контра = ВыборкаБухСчётовКонтры.Владелец;
Счёт_ТеКорр = ВыборкаБухСчётовКонтры.ТекстКорреспондента;
Счёт_ТеНазн = ВыборкаБухСчётовКонтры.ТекстНазначения;
Счёт_изУт10 = СОМсоединение.Справочники.БанковскиеСчета.НайтиПоНаименованию(Счёт_Наимен, , , КонтрНовый);
мСчёт = Строка(Счёт_изУт10.НомерСчета);
Если Счёт_Номер = мСчёт Тогда
Выполнено = Истина;
Продолжить;
Иначе
НовыйСчёт = СОМсоединение.Справочники.БанковскиеСчета.СоздатьЭлемент();
НовыйСчёт.Владелец = КонтрНовый;
НовыйСчёт.НомерСчета = Счёт_Номер;
НовыйСчёт.Наименование = Счёт_Наимен;
НовыйСчёт.ВидСчета = "Расчетный";
Если Счёт_Валюта.Код = "643" Тогда // Российский рубль
НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
ИначеЕсли Счёт_Валюта.Код = "978" Тогда // Евро
НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("978");
ИначеЕсли Счёт_Валюта.Код = "840" Тогда // Доллар США
НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("840");
Иначе
НовыйСчёт.ВалютаДенежныхСредств = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
КонецЕсли;
мБанк = СОМсоединение.Справочники.Банки.НайтиПоКоду(Счёт_Банк.Код);
Если ЗначениеЗаполнено(мБанк.Code) Тогда
НовыйСчёт.Банк = мБанк;
Иначе
Сообщить("В УТ-10 отсутствует банк [" + Счёт_Банк.Наименование + "] с кодом <" + Счёт_Банк.Код + ">, счёт [" +
Счёт.Наименование + "] записан не будет");
Продолжить;
КонецЕсли;
Попытка
НовыйСчёт.Записать();
Выполнено = Истина;
Исключение
Сообщить("В УТ-10 не удалось записать банковский счёт <" + Счёт_Номер + ">");
Выполнено = Ложь;
КонецПопытки;
КонецЕсли;
КонецЦикла;
V8 = 0; СОМсоединение = 0;
//--- YuriKo end [2012.12.04] конец 6
КонецПроцедуры // УТ10_ПолучитьБанкСчетаКонтрагента()
&НаСервере
Процедура УТ10_ЗаписатьДоговорыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
//+++ YuriKo bgn [2012.06.25] начало 7
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных УТ-10 не открыта!!! Невозможно передать Контрагента из УТ 11 - Процедура УТ10_ЗаписатьДоговорыКонтрагента() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат;
КонецПопытки;
Попытка
КонтрНовый = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
Исключение
Сообщить("Не могу найти Контрагента в УТ 10 по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура УТ10_ЗаписатьДоговорыКонтрагента() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат;
КонецПопытки;
Контрагент = Объект;
Отбор = Новый Структура("Контрагент");
Контр = Контрагент.Ссылка;
Отбор.Контрагент = Контр;
Выборка = Справочники.ДоговорыКонтрагентов.Выбрать( , , Отбор, );
Пока Выборка.Следующий() Цикл
Если (НЕ Выборка.Статус = Перечисления.СтатусыДоговоровКонтрагентов.Действует) ИЛИ (Выборка.ПометкаУдаления = Истина) ИЛИ Выборка.Ссылка.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
// искать договор по ГУИД
GUID = Выборка.НО_GUID_УТ10;
Если ЗначениеЗаполнено(GUID) Тогда
ДогКом = СОМсоединение.Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
мКод = Строка(ДогКом.Код);
Иначе
мКод = "";
КонецЕсли;
Если ЗначениеЗаполнено(мКод) Тогда
ДоговорОбъект = ПолучитьСправочникОбъектПоСсылке(Выборка.Ссылка);
ДоговорОбъект.НО_Код_УТ10 = мКод;
ДоговорОбъект.Записать();
Продолжить;
КонецЕсли;
Если ЗначениеЗаполнено(Выборка.НО_Код_УТ10) Тогда
мКод = Выборка.НО_Код_УТ10;
Иначе
Если ЗначениеЗаполнено(Выборка.НО_Код_БП16) Тогда
мКод = Выборка.НО_Код_БП16;
КонецЕсли;
КонецЕсли;
Дог = СОМсоединение.Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
Если ЗначениеЗаполнено(мКод) Тогда
Дог.Код = мКод;
КонецЕсли;
Дог.Наименование = Выборка.Наименование;
Дог.Комментарий = Выборка.Комментарий;
Дог.Организация = СОМсоединение.Справочники.Организации.НайтиПоРеквизиту("ИНН", Выборка.Организация.ИНН);
Дог.Номер = Выборка.Номер;
Дог.Дата = Выборка.Дата;
//+++ YuriKo bgn [2012.12.04] начало 11
Если Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту Тогда
Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
ИначеЕсли Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером;
ИначеЕсли Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика Тогда
Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком;
ИначеЕсли Выборка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию Тогда
Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.СКомитентом;
Иначе
Дог.ВидДоговора = СОМсоединение.Перечисления.ВидыДоговоровКонтрагентов.Прочее;
КонецЕсли;
//--- YuriKo end [2012.12.04] конец 11
Если Выборка.ВалютаВзаиморасчетов.Код = "643" Тогда // Российский рубль
Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
ИначеЕсли Выборка.ВалютаВзаиморасчетов.Код = "978" Тогда // Евро
Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("978");
ИначеЕсли Выборка.ВалютаВзаиморасчетов.Код = "840" Тогда // Доллар США
Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("840");
Иначе
Дог.ВалютаВзаиморасчетов = СОМсоединение.Справочники.Валюты.НайтиПоКоду("810");
КонецЕсли;
Дог.СрокДействия = Выборка.ДатаОкончанияДействия;
Дог.Владелец = КонтрНовый;
Дог.ДопустимоеЧислоДнейЗадолженности = Выборка.НО_КоличествоДнейОтсрочкиПлатежа;
Дог.ВедениеВзаиморасчетов = СОМсоединение.Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом;
Дог.Записать();
ДогКом = Дог.Ссылка;
GUID_УТ10 = ДогКом.УникальныйИдентификатор();
ГУИД = СОМсоединение.String(ДогКом.УникальныйИдентификатор());
GUID = Строка(ГУИД);
ДогКом = СОМсоединение.Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
мКод = Строка(ДогКом.Код);
Если ЗначениеЗаполнено(мКод) Тогда // в БП найден ново-созданный Договор по ГУИД
ДоговорОбъект = ПолучитьСправочникОбъектПоСсылке(Выборка.Ссылка);
ДоговорОбъект.НО_GUID_УТ10 = GUID;
ДоговорОбъект.НО_Код_УТ10 = мКод;
ДоговорОбъект.Записать();
Продолжить;
КонецЕсли;
КонецЦикла;
Выполнено = Истина;
V8 = 0; СОМсоединение = 0;
//--- YuriKo end [2012.06.25] конец 7
КонецПроцедуры // УТ10_ЗаписатьДоговорыКонтрагента()
&НаСервере
Процедура УТ10_ЗаполнитьКонтактнуюИнформацию(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения)
//+++ YuriKo bgn [2012.12.01] начало 20
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных УТ-10 не открыта!!! Невозможно передать Контрагента из УТ 11 - Процедура УТ10_ЗаполнитьКонтактнуюИнформацию() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат;
КонецПопытки;
Контрагент = Объект;
Попытка
КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
Исключение
Сообщить("Не могу найти Контрагента в УТ 10 по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура УТ10_ЗаполнитьКонтактнуюИнформацию() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат;
КонецПопытки;
Для ы = 0 По Контрагент.КонтактнаяИнформация.Количество()-1 Цикл
Если Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Юридический адрес" Тогда
ЮрАдр = Контрагент.КонтактнаяИнформация[ы].Представление;
ИначеЕсли Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Фактический адрес" Тогда
ФкАдр = Контрагент.КонтактнаяИнформация[ы].Представление;
ИначеЕсли Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Телефон" Тогда
Телфн = Контрагент.КонтактнаяИнформация[ы].Представление;
ИначеЕсли Строка(Контрагент.КонтактнаяИнформация[ы].Вид) = "Email" Тогда
Email = Контрагент.КонтактнаяИнформация[ы].Представление;
КонецЕсли;
КонецЦикла;
АдрИнф = СОМсоединение.РегистрыСведений.КонтактнаяИнформация;
НаборАдр = АдрИнф.СоздатьНаборЗаписей();
НаборАдр.Отбор.Объект.Установить(КонтраКом);
НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Юридический адрес организации"));
НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес);
НаборАдр.Прочитать();
Если НаборАдр.Количество() = 0 Тогда
Адр = НаборАдр.Добавить();
Адр.Объект = КонтраКом;
Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес;
Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Юридический адрес организации");
Адр.Представление = ЮрАдр;
НаборАдр.Записать();
КонецЕсли;
НаборАдр.Отбор.Объект.Установить(КонтраКом);
НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес);
НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Фактический адрес организации"));
НаборАдр.Прочитать();
Если НаборАдр.Количество() = 0 Тогда
Адр = НаборАдр.Добавить();
Адр.Объект = КонтраКом;
Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Адрес;
Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Фактический адрес организации");
Адр.Представление = ФкАдр;
НаборАдр.Записать();
КонецЕсли;
НаборАдр.Отбор.Объект.Установить(КонтраКом);
НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Телефон);
НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Телефон контрагента"));
НаборАдр.Прочитать();
Если НаборАдр.Количество() = 0 Тогда
Адр = НаборАдр.Добавить();
Адр.Объект = КонтраКом;
Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.Телефон;
Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Телефон контрагента");
Адр.Представление = Телфн;
НаборАдр.Записать();
КонецЕсли;
НаборАдр.Отбор.Объект.Установить(КонтраКом);
НаборАдр.Отбор.Тип.Установить(СОМсоединение.Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
НаборАдр.Отбор.Вид.Установить(СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Адрес электронной почты контрагента для обмена электронными документами"));
НаборАдр.Прочитать();
Если НаборАдр.Количество() = 0 Тогда
Адр = НаборАдр.Добавить();
Адр.Объект = КонтраКом;
Адр.Тип = СОМсоединение.Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
Адр.Вид = СОМсоединение.Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Адрес электронной почты контрагента для обмена электронными документами");
Адр.Представление = Email;
НаборАдр.Записать();
КонецЕсли;
Выполнено = Истина;
V8 = 0; СОМсоединение = 0;
//--- YuriKo end [2012.12.01] конец 20
КонецПроцедуры // УТ10_ЗаполнитьКонтактнуюИнформацию()
&НаСервере
Процедура УТ10_ЗаписатьРеквизитыКонтрагента(ОСсылка, GUID_УТ10, Код_УТ10)
КонтраОбъект = Объект.Ссылка.ПолучитьОбъект();
КонтраОбъект.НО_GUID_УТ10 = GUID_УТ10;
КонтраОбъект.НО_Код_УТ10 = Код_УТ10;
КонтраОбъект.Записать();
КонецПроцедуры // УТ10_ЗаписатьРеквизитыКонтрагента()
&НаСервере
Процедура УТ10_ПерезаполнитьОсновныеРеквизитыКонтрагента(НовыйКонтрагентГУИД, СтрокаСоединения)
//+++ YuriKo bgn [2012.12.05] начало 10
мКод = "";
V8 = Новый COMОбъект("V82.ComConnector");
Попытка
СОМсоединение = V8.Connect(СтрокаСоединения);
Исключение
Сообщить("База данных УТ-10 не открыта!!! Невозможно перезаполнить реквизиты Контрагента - Процедура УТ10_ПерезаполнитьОсновныеРеквизитыКонтрагента() - вызывайте программиста ...");
Возврат;
КонецПопытки;
Контрагент = Объект;
Попытка
КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",НовыйКонтрагентГУИД));
Исключение
Сообщить("Не могу найти Контрагента в УТ 10 по ГУИД = <" + НовыйКонтрагентГУИД + "> - Процедура УТ10_ПерезаполнитьОсновныеРеквизитыКонтрагента() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат;
КонецПопытки;
мКод = Строка(КонтраКом.Код);
ноКонтр = КонтраКом.ПолучитьОбъект();
Если ЗначениеЗаполнено(Объект.НО_Код_УТ10) Тогда
ноКонтр.Код = Объект.НО_Код_УТ10;
КонецЕсли;
ноКонтр.Наименование = Контрагент.Наименование;
ноКонтр.НаименованиеПолное = Контрагент.НаименованиеПолное;
ноКонтр.ИНН = Контрагент.ИНН;
ноКонтр.КПП = Контрагент.КПП;
ноКонтр.КодПоОКПО = Контрагент.КодПоОКПО;
Если Контрагент.Партнер.Поставщик Тогда
ноКонтр.Поставщик = Истина;
КонецЕсли;
Если Контрагент.Партнер.Клиент Тогда
ноКонтр.Покупатель = Истина;
КонецЕсли;
ноКонтр.Комментарий = ?(НЕ ЗначениеЗаполнено(ноКонтр.Комментарий), "передан из УТ-11 [" + ТекущаяДата() + "]", ноКонтр.Комментарий);
Если Контрагент.ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.ЮрФизЛицо.ЮрЛицо") Тогда
ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ЮрЛицо;
Иначе
ноКонтр.ЮрФизЛицо = СОМсоединение.Перечисления.ЮрФизЛицо.ФизЛицо;
КонецЕсли;
ноКонтр.Записать();
КонтраКом = ноКонтр.Ссылка;
GUID_УТ10 = КонтраКом.УникальныйИдентификатор();
ГУИД = СОМсоединение.String(КонтраКом.УникальныйИдентификатор());
GUID = Строка(ГУИД);
Попытка
КонтраКом = СОМсоединение.Справочники.Контрагенты.ПолучитьСсылку(СОМсоединение.NewObject("УникальныйИдентификатор",GUID));
Исключение
Сообщить("Не могу найти Контрагента в УТ 10 по ГУИД = <" + GUID + "> - Процедура УТ10_ПерезаполнитьОсновныеРеквизитыКонтрагента() - вызывайте программиста ...");
Выполнено = Ложь;
Возврат;
КонецПопытки;
мКод = Строка(КонтраКом.Код);
КонтраОбъект = Контрагент.Ссылка.ПолучитьОбъект();
КонтраОбъект.НО_GUID_УТ10 = GUID; // полученный GUID как строку сохраняем в УТ-11
КонтраОбъект.НО_Код_УТ10 = мКод; // полученный из УТ-10 код сохраняем в УТ-11
КонтраОбъект.Записать();
V8 = 0; СОМсоединение = 0;
//--- YuriKo end [2012.12.05] конец 10
КонецПроцедуры // УТ10_ПерезаполнитьОсновныеРеквизитыКонтрагента()
&НаКлиенте
Процедура УТ10_Выгрузить(СтрокаСоединения)
//+++ YuriKo bgn [2012.06.20] начало 1
// процедура ищет Контрагента в УТ-10 по ГУИД, или ИНН, или Наименованию
// - если не нашла - создаёт ноаого, со всеми реквизитами и сопутствующими (контакты, договоры, счета ... )
НовыйКонтрагентГУИД = "";
Контрагент = Объект;
КонтрагентНайден = Ложь;
мКод = "";
GUID_УТ10 = Объект.НО_GUID_УТ10;
Если НЕ ПустаяСтрока(GUID_УТ10) Тогда
КонтрагентНайден = УТ10_НайтиКонтрагентаПоГУИД(GUID_УТ10, мКод, СтрокаСоединения);
Если мКод = "База данных не открыта" Тогда
// неправильные данные для соединения, или проблемы с открытием базы
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(GUID_УТ10) И НЕ КонтрагентНайден Тогда
УТ10_ЗаписатьРеквизитыКонтрагента(Объект.Ссылка, "", "");
GUID_УТ10 = "";
КонецЕсли;
Если КонтрагентНайден Тогда
УТ10_ЗаписатьРеквизитыКонтрагента(Объект.Ссылка, GUID_УТ10, мКод);
Ответ = Вопрос("Контрагент с таким ГУИД, и с Кодом = <" + мКод + "> - найден в УТ-10:" + Символы.ПС +
"перезаписать <<Да>> или ничего не делать <<Нет>> ?", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
// перезаписать существующего
НовыйКонтрагентГУИД = GUID_УТ10;
Иначе
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
// поиск по ИНН
Если НЕ ЗначениеЗаполнено(НовыйКонтрагентГУИД) И ЗначениеЗаполнено(Контрагент.ИНН) Тогда
мГУИД = "";
КонтрагентНайден = УТ10_НайтиКонтрагентаПоИНН(Контрагент, мКод, мГУИД, СтрокаСоединения);
Если КонтрагентНайден Тогда
Ответ = Вопрос("Контрагент с таким ИНН, и с Кодом = <" + мКод + "> - найден в УТ-10:" + Символы.ПС +
"Создать нового (да), перезаписать (нет) или ничего не делать (отмена) ?", РежимДиалогаВопрос.ДаНетОтмена);
Если Ответ = КодВозвратаДиалога.Отмена Тогда
// ничего не делать
Возврат;
ИначеЕсли Ответ = КодВозвратаДиалога.Да Тогда
// создать нового
НовыйКонтрагентГУИД = УТ10_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения);
Если ПустаяСтрока(НовыйКонтрагентГУИД) Тогда
Предупреждение("Контрагент в УТ-10 не создан :(");
КонецЕсли;
ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
// перезаписать существующего
НовыйКонтрагентГУИД = мГУИД;
Иначе
КонецЕсли;
Иначе
КонецЕсли;
КонецЕсли;
// поиск по Наименованию
Если НЕ ЗначениеЗаполнено(НовыйКонтрагентГУИД) Тогда
Если НЕ (мКод = "База данных не открыта" ИЛИ мКод = " ") Тогда
КонтрагентНайден = УТ10_НайтиКонтрагентаПоНаименованию(Контрагент, мКод, мГУИД, СтрокаСоединения);
Если КонтрагентНайден Тогда
Ответ = Вопрос("Контрагент с таким Наименованием, и с Кодом = <" + мКод + "> - найден в УТ-10:" + Символы.ПС +
"Создать нового <<Да>>, перезаписать существующего <<Нет>>, или ничего не делать <<Отмена>> ?",
РежимДиалогаВопрос.ДаНетОтмена);
Если Ответ = КодВозвратаДиалога.Да Тогда
// создать нового
НовыйКонтрагентГУИД = УТ10_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения);
Если ПустаяСтрока(НовыйКонтрагентГУИД) Тогда
Предупреждение("Контрагент в УТ-10 не создан :(");
КонецЕсли;
ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
// перезаписать существующего
НовыйКонтрагентГУИД = мГУИД;
Иначе
// ничего не делать
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
// если не найден по ГУИД или ИНН или Наименованию - создаём нового
Если НЕ ЗначениеЗаполнено(НовыйКонтрагентГУИД) Тогда
НовыйКонтрагентГУИД = УТ10_СоздатьНовогоКонтрагента(мКод, СтрокаСоединения);
Если ПустаяСтрока(НовыйКонтрагентГУИД) Тогда
Предупреждение("Контрагент в УТ-10 не создан :(");
Возврат;
Иначе
Сообщить("Создан контрагент в УТ-10 с кодом <" + мКод + "> и ГУИД = <" + НовыйКонтрагентГУИД + ">");
КонецЕсли;
Иначе
// Контрагент найден в УТ-10, перезаполним основные рекквизиты
УТ10_ПерезаполнитьОсновныеРеквизитыКонтрагента(НовыйКонтрагентГУИД, СтрокаСоединения);
КонецЕсли;
// адреса и телефоны Контрагента
Выполнено = Ложь;
УТ10_ЗаполнитьКонтактнуюИнформацию(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
Если НЕ Выполнено Тогда
Сообщить("Не удалось записать адреса и телефоны Контрагента в УТ-10... ");
КонецЕсли;
// контактные лица Контрагента
Выполнено = Ложь;
УТ10_ЗаписатьКонтактыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
Если НЕ Выполнено Тогда
Сообщить("Не удалось записать контактные лица Контрагента в УТ-10... ");
КонецЕсли;
// договоры Контрагента
Выполнено = Ложь;
УТ10_ЗаписатьДоговорыКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
Если НЕ Выполнено Тогда
Сообщить("Не удалось записать договоры Контрагента в УТ-10... ");
КонецЕсли;
//+++ YuriKo bgn [2012.12.04] начало 8
// Банковские счета Контрагента
Выполнено = Ложь;
УТ10_ПолучитьБанкСчетаКонтрагента(НовыйКонтрагентГУИД, Выполнено, СтрокаСоединения);
Если НЕ Выполнено Тогда
Сообщить("Не удалось записать Банковские счета Контрагента в УТ-10... ");
КонецЕсли;
//--- YuriKo end [2012.12.04] конец 8
//--- YuriKo end [2012.06.20] конец 1
КонецПроцедуры // УТ10_Выгрузить()
Показать