|

Как разработать обработку сверки двух баз источника и приемки в конфигурации 1С: Бухгалтерия 3.0 КОРП


Содержание:

1. Сверка документов в 1С

2. Внешний вид обработки

Сверка документов в 1С

Конфигурация БП 3.0 КОРП

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

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

Затем в колонке «Загрузить» ставим флаг на той строке какой документ хотим загрузить в базу приемника.

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

Дальше по кнопке «Обновить список» обновляется табличная часть и можно сверить каждый загруженный документ с документом в источнике.

Процесс сверки и загрузки других видов документов аналогично.

По кнопке «Статусы счетов покупателей» проставляется статус документа Счет (подгружается в регистр сведений СтатусыДокументов).

Внешний вид обработки

Сверка документов

Процедуры и функции обработки:

#Область Переменные

&НаКлиенте

Перем ИмяБазы, Префикс, ИННОрганизации, КППОрганизации;

&НаКлиенте

Перем ИмяФайлаПравилОбмена, ИмяФайлаОбмена;

&НаКлиенте

Перем ИмяФайлаПравилОбменаАТ, ИмяФайлаПравилОбменаИТ;

&НаКлиенте

Перем ИмяФайлаОбменаАТ, ИмяФайлаОбменаИТ; 

&НаКлиенте

Перем ПользовательИТ, ПарольИТ, НаименованиеСервераИТ, НаименованиеБазыИТ, СерверИсточникИТ; 

&НаКлиенте

Перем ПользовательАТ, ПарольАТ, НаименованиеСервераАТ, НаименованиеБазыАТ, СерверИсточникАТ; 

&НаКлиенте

Перем Пользователь, Пароль, НаименованиеСервера, НаименованиеБазы, СерверИсточник; 

&НаКлиенте

Перем ВыбранныйВидДокумента;

&НаКлиенте

Перем ИмяРоли;

#КонецОбласти

#Область ВидыДокументов

&НаКлиенте

Процедура ПоступленияНаРС(Команда)

    ПолучитьДокументыHTTP(“ПоступлениеНаРасчетныйСчет”);

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

&НаКлиенте

Процедура СписанияРС(Команда)

    ПолучитьДокументыHTTP(“СписаниеСРасчетногоСчета”);

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

&НаКлиенте

Процедура ПоступлениеТоваровУслуг(Команда)

    ПолучитьДокументыHTTP(“ПоступлениеТоваровУслуг”);

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

&НаКлиенте

Процедура РеализацияТоваровУслуг(Команда)

    ПолучитьДокументыHTTP(“РеализацияТоваровУслуг”);

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

&НаКлиенте

Процедура Операции(Команда)

    ПолучитьДокументыHTTP(“ОперацияБух”);

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

&НаКлиенте

Процедура ПКО(Команда)

    ПолучитьДокументыHTTP(“ПриходныйКассовыйОрдер”);   

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

&НаКлиенте

Процедура РКО(Команда)

    ПолучитьДокументыHTTP (“РасходныйКассовыйОрдер”);

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

&НаКлиенте

Процедура ОперацияСБилетом(Команда)

    ПолучитьДокументыHTTP(“ОперацияСБилетом”);

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

&НаКлиенте

Процедура АвансовыйОтчет(Команда)

    ПолучитьДокументыHTTP(“АвансовыйОтчет”);

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

&НаКлиенте

Процедура ТребованиеНакладная(Команда)

    ПолучитьДокументыHTTP(“ТребованиеНакладная”);   

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

&НаКлиенте

Процедура ПоступлениеДопРасходов(Команда)

    ПолучитьДокументыHTTP(“ПоступлениеДопРасходов”);

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

&НаКлиенте

Процедура ПередачаМатериаловВЭксплуатацию(Команда)

    ПолучитьДокументыHTTP(“ПередачаМатериаловВЭксплуатацию”);

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

&НаКлиенте

Процедура СчетПокупателю(Команда)

    ПолучитьДокументыHTTP(“СчетНаОплатуПокупателю”);

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

#КонецОбласти

 
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    ТолькоПроведенныеДокументыВИсточнике = Истина;
    ПереключательБазы = 1;  
    
    ИмяБазы = "ИТ"; 
    Префикс = "ИТ";
    
    ИННОрганизации = "111111111"; 
    КППОрганизации = "777777777"; 
 
    ИмяОбработки = ПредопределенноеЗначение("Перечисление.Расш1_ВидыОбработок.СверкаДокументов");
    
    БазаАТ = ПредопределенноеЗначение("Перечисление.Расш1_ИменаБаз.АТ");
    БазаИТ = ПредопределенноеЗначение("Перечисление.Расш1_ИменаБаз.ИТ");
    
    ПутиАТ = ДанныеПодключения.ПолучитьПути(ИмяОбработки, БазаАТ); 
    
    Если ПутиАТ = Неопределено Тогда
        ИмяФайлаПравилОбменаАТ = ""; 
        ИмяФайлаОбменаАТ       = "";
    Иначе
        ИмяФайлаПравилОбменаАТ = ПутиАТ.ИмяФайлаПравилОбмена; 
        ИмяФайлаОбменаАТ       = ПутиАТ.ИмяФайлаОбмена;
    КонецЕсли;
    
    ПутиИТ = ДанныеПодключения.ПолучитьПути(ИмяОбработки, БазаИТ); 
    
    Если ПутиИТ = Неопределено Тогда
        ИмяФайлаПравилОбменаИТ = "";
        ИмяФайлаОбменаИТ       = ""; 
    Иначе
        ИмяФайлаПравилОбменаИТ = ПутиИТ.ИмяФайлаПравилОбмена;
        ИмяФайлаОбменаИТ       = ПутиИТ.ИмяФайлаОбмена; 
    КонецЕсли;
    
    ДанныеАвторизацииИТ = ДанныеПодключения.ПолучитьАвторизацию("ИТ");
    
    Если ДанныеАвторизацииИТ = Неопределено Тогда
        ПользовательИТ        = "";
        ПарольИТ              = "";
        НаименованиеСервераИТ = "";
        НаименованиеБазыИТ    = "";
        СерверИсточникИТ      = "";
    Иначе
        ПользовательИТ        = Строка(ДанныеАвторизацииИТ.Пользователь);
        ПарольИТ              = Строка(ДанныеАвторизацииИТ.Пароль);
        НаименованиеСервераИТ = Строка(ДанныеАвторизацииИТ.НаименованиеСервера);
        НаименованиеБазыИТ    = Строка(ДанныеАвторизацииИТ.НаименованиеБазы);
        СерверИсточникИТ      = Строка(ДанныеАвторизацииИТ.СерверИсточник);
    КонецЕсли;
    
    ДанныеАвторизацииАТ = ДанныеПодключения.ПолучитьАвторизацию("АТ"); 
    
    Если ДанныеАвторизацииАТ = Неопределено Тогда
        ПользовательАТ        = "";
        ПарольАТ              = "";
        НаименованиеСервераАТ = "";
        НаименованиеБазыАТ    = "";
        СерверИсточникАТ      = "";
    Иначе
        ПользовательАТ        = Строка(ДанныеАвторизацииАТ.Пользователь);
        ПарольАТ              = Строка(ДанныеАвторизацииАТ.Пароль);
        НаименованиеСервераАТ = Строка(ДанныеАвторизацииАТ.НаименованиеСервера);
        НаименованиеБазыАТ    = Строка(ДанныеАвторизацииАТ.НаименованиеБазы);
        СерверИсточникАТ      = Строка(ДанныеАвторизацииАТ.СерверИсточник);
    КонецЕсли;
    
    ТД = ТекущаяДата();
    ПериодСверки.ДатаНачала    = НачалоМесяца(ТД);
    ПериодСверки.ДатаОкончания = КонецМесяца(ТД);
    
    ИмяРоли = "Расш1_РазрешитьЗагрузкуДокументовПоИТ";   
    
КонецПроцедуры 
 
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    ТолькоПроведенныеДокументыВИсточнике = Истина;
    ПереключательБазы = 1;  
    
    ИмяБазы = "ИТ"; 
    Префикс = "ИТ";
    
    ИННОрганизации = "111111111"; 
    КППОрганизации = "777777777"; 
 
    ИмяОбработки = ПредопределенноеЗначение("Перечисление.Расш1_ВидыОбработок.СверкаДокументов");
    
    БазаАТ = ПредопределенноеЗначение("Перечисление.Расш1_ИменаБаз.АТ");
    БазаИТ = ПредопределенноеЗначение("Перечисление.Расш1_ИменаБаз.ИТ");
    
    ПутиАТ = ДанныеПодключения.ПолучитьПути(ИмяОбработки, БазаАТ); 
    
    Если ПутиАТ = Неопределено Тогда
        ИмяФайлаПравилОбменаАТ = ""; 
        ИмяФайлаОбменаАТ       = "";
    Иначе
        ИмяФайлаПравилОбменаАТ = ПутиАТ.ИмяФайлаПравилОбмена; 
        ИмяФайлаОбменаАТ       = ПутиАТ.ИмяФайлаОбмена;
    КонецЕсли;
    
    ПутиИТ = ДанныеПодключения.ПолучитьПути(ИмяОбработки, БазаИТ); 
    
    Если ПутиИТ = Неопределено Тогда
        ИмяФайлаПравилОбменаИТ = "";
        ИмяФайлаОбменаИТ       = ""; 
    Иначе
        ИмяФайлаПравилОбменаИТ = ПутиИТ.ИмяФайлаПравилОбмена;
        ИмяФайлаОбменаИТ       = ПутиИТ.ИмяФайлаОбмена; 
    КонецЕсли;
    
    ДанныеАвторизацииИТ = ДанныеПодключения.ПолучитьАвторизацию("ИТ");
    
    Если ДанныеАвторизацииИТ = Неопределено Тогда
        ПользовательИТ        = "";
        ПарольИТ              = "";
        НаименованиеСервераИТ = "";
        НаименованиеБазыИТ    = "";
        СерверИсточникИТ      = "";
    Иначе
        ПользовательИТ        = Строка(ДанныеАвторизацииИТ.Пользователь);
        ПарольИТ              = Строка(ДанныеАвторизацииИТ.Пароль);
        НаименованиеСервераИТ = Строка(ДанныеАвторизацииИТ.НаименованиеСервера);
        НаименованиеБазыИТ    = Строка(ДанныеАвторизацииИТ.НаименованиеБазы);
        СерверИсточникИТ      = Строка(ДанныеАвторизацииИТ.СерверИсточник);
    КонецЕсли;
    
    ДанныеАвторизацииАТ = ДанныеПодключения.ПолучитьАвторизацию("АТ"); 
    
    Если ДанныеАвторизацииАТ = Неопределено Тогда
        ПользовательАТ        = "";
        ПарольАТ              = "";
        НаименованиеСервераАТ = "";
        НаименованиеБазыАТ    = "";
        СерверИсточникАТ      = "";
    Иначе
        ПользовательАТ        = Строка(ДанныеАвторизацииАТ.Пользователь);
        ПарольАТ              = Строка(ДанныеАвторизацииАТ.Пароль);
        НаименованиеСервераАТ = Строка(ДанныеАвторизацииАТ.НаименованиеСервера);
        НаименованиеБазыАТ    = Строка(ДанныеАвторизацииАТ.НаименованиеБазы);
        СерверИсточникАТ      = Строка(ДанныеАвторизацииАТ.СерверИсточник);
    КонецЕсли;
    
    ТД = ТекущаяДата();
    ПериодСверки.ДатаНачала    = НачалоМесяца(ТД);
    ПериодСверки.ДатаОкончания = КонецМесяца(ТД);
    
    ИмяРоли = "Расш1_РазрешитьЗагрузкуДокументовПоИТ";   
    
КонецПроцедуры
 
#Область HTTP
 
&НаКлиенте
Процедура УстановитьВидимостьКолонок(ВидДокумента) 
    
    Если ВидДокумента = "ПередачаМатериаловВЭксплуатацию" или ВидДокумента = "ТребованиеНакладная" или ВидДокумента = "ОперацияБух" Тогда
        Элементы.ТаблицаРезультатИННКонтрагента.Видимость = Ложь;
        Элементы.ТаблицаРезультатКонтрагент.Видимость = Ложь;
        Элементы.ТаблицаРезультатСуммаДокумента.Видимость = Ложь;
        Элементы.ТаблицаРезультатСуммаДокументаЗдесь.Видимость = Ложь;
    Иначе    
        Элементы.ТаблицаРезультатИННКонтрагента.Видимость = Истина;
        Элементы.ТаблицаРезультатКонтрагент.Видимость = Истина;
        Элементы.ТаблицаРезультатСуммаДокумента.Видимость = Истина;
        Элементы.ТаблицаРезультатСуммаДокументаЗдесь.Видимость = Истина; 
        Элементы.ТаблицаРезультатОперацияЗдесь.Видимость = Ложь;
        Элементы.ТаблицаРезультатСуммаОперацииЗдесь.Видимость = Ложь;
        Элементы.ТаблицаРезультатОбщаяСуммаЗдесь.Видимость = Ложь;  
    КонецЕсли;  
    
    Если ВидДокумента = "СписаниеСРасчетногоСчета" или ВидДокумента = "ПоступлениеТоваровУслуг" Тогда 
        Если Элементы.ТаблицаРезультатСуммаОперацииЗдесь.ТекстПодвала = "0" Тогда
            Элементы.ТаблицаРезультатОперацияЗдесь.Видимость = Ложь;
            Элементы.ТаблицаРезультатСуммаОперацииЗдесь.Видимость = Ложь;
            Элементы.ТаблицаРезультатОбщаяСуммаЗдесь.Видимость = Ложь; 
        Иначе
            Элементы.ТаблицаРезультатОперацияЗдесь.Видимость = Истина;
            Элементы.ТаблицаРезультатСуммаОперацииЗдесь.Видимость = Истина;
            Элементы.ТаблицаРезультатОбщаяСуммаЗдесь.Видимость = Истина; 
        КонецЕсли;      
    КонецЕсли; 
    
    Элементы.ТаблицаРезультатНомерСчетНаОплату.Видимость = Ложь;
    Элементы.ТаблицаРезультатРазницаНомеров.Видимость = Ложь;  
    
КонецПроцедуры
 
&НаКлиенте
Функция ВыполнитьЗапросHTTP(ИмяМетода, АдресРесурса, СтрокаТелаЗапрос, ИмяБазы) 
    
    РезультатЗапросаHTTP = Неопределено;
    
    Сообщение = Новый СообщениеПользователю;  
 
    Если ИмяБазы = "АТ" Тогда
        СерверИсточник = СерверИсточникАТ; 
        Пользователь   = ПользовательАТ; 
        Пароль         = ПарольАТ;
    ИначеЕсли ИмяБазы = "ИТ" Тогда
        СерверИсточник = СерверИсточникИТ; 
        Пользователь   = ПользовательИТ; 
        Пароль         = ПарольИТ;
    КонецЕсли;
    
    Попытка
        HTTPСоединение = Новый HTTPСоединение(СерверИсточник,, Пользователь, Пароль);
    Исключение
        Сообщение.Текст = "Не удалось установить HTTP соединение!";
        Сообщение.Сообщить();
        Возврат РезультатЗапросаHTTP;
    КонецПопытки;   
    
    HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
    
    Если ИмяМетода <> "GET" и ИмяМетода <> "DELETE" Тогда
        HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаТелаЗапрос);    
    КонецЕсли;  
    
    Попытка
        
        Результат = HTTPСоединение.ВызватьHTTPМетод(ИмяМетода, HTTPЗапрос);  
        РезультатЗапросаHTTP = Результат.ПолучитьТелоКакСтроку();
        
        Если Результат.КодСостояния > 299 Тогда
            Сообщение.Текст = РезультатЗапросаHTTP;
            Сообщение.Сообщить();
            РезультатЗапросаHTTP = Неопределено;
        КонецЕсли;
        
        Возврат РезультатЗапросаHTTP;
        
    Исключение
        
        Сообщение.Текст = ОписаниеОшибки();
        Сообщение.Сообщить();
        
        Возврат РезультатЗапросаHTTP;
        
    КонецПопытки; 
    
КонецФункции
 
&НаКлиенте
Процедура ПолучитьДокументыHTTP(ВидДокумента) 
    
    ТаблицаРезультат.Очистить();
    
    ДоступКДокументам = ПроверкаДоступаКДокументамСервер.ЕстьРоль(ИмяРоли);  
    
    Если Не ДоступКДокументам Тогда
        
        ПоказатьПредупреждение(, "Нет доступа загрузки документов " + ИмяБазы);
        
        Возврат;
        
    КонецЕсли;  
    
    ВыбранныйВидДокумента = ВидДокумента;
    
    СтруктураДат = ПроверитьПериодСверки();  
    
    Если СтруктураДат = 0 Тогда
        Возврат;
    КонецЕсли;
    
    СтрокаДата1 = СтруктураДат.СтрокаДата1;
    СтрокаДата2 = СтруктураДат.СтрокаДата2;
    
    ТаблицаРезультат.Очистить();  
    
    ПараметрыОтбора = СтрокаДата1 + "/" + СтрокаДата2 + "/" + ВидДокумента + "/" + ИННОрганизации + "/" + КППОрганизации;   
    
    Если ВыводитьСообщения Тогда
        Сообщить("ПараметрыОтбора = " + ПараметрыОтбора);
    КонецЕсли;
    
    Если ПереключательБазы = 1 Тогда
        Адрес = "/at_IToCORP/hs/documents/" + ПараметрыОтбора;
    ИначеЕсли ПереключательБазы = 2 Тогда
        Адрес = "/at_BPoAT_/hs/documents/" + ПараметрыОтбора;  
    КонецЕсли;
    
    РезультатЗапросаHTTP = ВыполнитьЗапросHTTP("GET", Адрес, "", ИмяБазы);
    
    Если РезультатЗапросаHTTP = Неопределено Тогда
        Сообщить("Ошибка в HTTP запросе!");  
        Элементы.ТаблицаРезультатСуммаДокумента.ТекстПодвала      = 0;
        Элементы.ТаблицаРезультатСуммаДокументаЗдесь.ТекстПодвала = 0;
        Элементы.ТаблицаРезультатСуммаОперацииЗдесь.ТекстПодвала  = 0;
        Элементы.ТаблицаРезультатОбщаяСуммаЗдесь.ТекстПодвала     = 0; 
    Иначе
        ОбработатьФайлJSON(РезультатЗапросаHTTP, ВидДокумента);
    КонецЕсли;  
    
КонецПроцедуры 
 
&НаКлиенте
Процедура ОбработатьФайлJSON(СтрокаТекста, ВидДокумента)  
    
    Дата1 = ПериодСверки.ДатаНачала;  
    Дата2 = ПериодСверки.ДатаОкончания;
    
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(СтрокаТекста); 
    ДанныеJSON = ПрочитатьJSON(ЧтениеJSON, Истина); 
    
    МассивДанных = Новый Массив;
    
    Для каждого стр Из ДанныеJSON Цикл
        
        //Сообщить("стр.Ключ = " + стр.Ключ);
        //Сообщить("стр.Значение = " + стр.Значение); 
        
        Для каждого Данные Из стр.Значение Цикл
            
            //Сообщить("    Данные.Ключ = " + Данные.Ключ);
            //Сообщить("    Данные.Значение = " + Данные.Значение);  
            
            ТекЗначение = Данные.Значение;
            
            Если Данные.Ключ = "Номер" Тогда
                Номер = ТекЗначение;
            ИначеЕсли Данные.Ключ = "Дата" Тогда
                Дата = ТекЗначение;
            ИначеЕсли Данные.Ключ = "ИННКонтрагента" Тогда
                ИННКонтрагента = ТекЗначение; 
            ИначеЕсли Данные.Ключ = "НаименованиеКонтрагента" Тогда
                НаименованиеКонтрагента = ТекЗначение;
            ИначеЕсли Данные.Ключ = "СуммаДокумента" Тогда       
                СуммаДокумента = ТекЗначение;  
            ИначеЕсли Данные.Ключ = "СуммаОперации" Тогда       
                СуммаОперации = ТекЗначение; 
            ИначеЕсли Данные.Ключ = "Проведен" Тогда                    
                Проведен = ТекЗначение;
            Иначе
            КонецЕсли;
            
        КонецЦикла;  
        
        Номер = Префикс + Сред(Номер, 3); 
        
        ЭтоОперация = Ложь;  
        
        СтруктураДанных = Новый Структура;
        
        СтруктураДанных.Вставить("Номер",  Номер);
        СтруктураДанных.Вставить("Дата",   Дата);
        СтруктураДанных.Вставить("СуммаДокумента", СуммаДокумента);
        СтруктураДанных.Вставить("Проведен",       Проведен);
        СтруктураДанных.Вставить("ИННКонтрагента", ИННКонтрагента); 
        СтруктураДанных.Вставить("НаименованиеКонтрагента", НаименованиеКонтрагента);
        СтруктураДанных.Вставить("ВидДокумента",   ВидДокумента);
        СтруктураДанных.Вставить("ЭтоОперация",    ЭтоОперация);  
        
        Если ТолькоПроведенныеДокументыВИсточнике и НЕ Проведен Тогда
            Продолжить;        
        КонецЕсли;
        
        МассивДанных.Добавить(СтруктураДанных); 
        
    КонецЦикла; 
    
    ЧтениеJSON.Закрыть(); 
    
    Для каждого стр Из МассивДанных Цикл
        
        Если ВидДокумента = "СписаниеСРасчетногоСчета" или ВидДокумента = "ПоступлениеТоваровУслуг" Тогда 
            ЭтоОперация = ПроверитьНаСовпадениеИНН(стр.ИННКонтрагента);     
            Если ЭтоОперация Тогда
                стр.ЭтоОперация = Истина;            
            КонецЕсли;
        КонецЕсли;
        
    КонецЦикла;
    
    ЗаполнитьДокументыБазыНаСервере(МассивДанных, Дата1, Дата2, ВидДокумента);  
    
    УстановитьВидимостьКолонок(ВидДокумента); 
    
КонецПроцедуры
 
&НаСервере  
Процедура ЗаполнитьДокументыБазыНаСервере(МассивДанных, Дата1, Дата2, ВидДокумента)  
    
    Массив = Новый Массив;
    
    КС = Новый КвалификаторыСтроки(11);
    Массив.Добавить(Тип("Строка"));
    ОписаниеТиповСтрока11 = Новый ОписаниеТипов(Массив, , , ,КС);
    Массив.Очистить();
    
    КД = Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя);
    Массив.Добавить(Тип("Дата"));
    ОписаниеТиповДата = Новый ОписаниеТипов(Массив, , ,КД);
    Массив.Очистить();
    
    КЧ = Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Неотрицательный);
    Массив.Добавить(Тип("Число"));
    ОписаниеТиповЧисло15_2 = Новый ОписаниеТипов(Массив, , ,КЧ);
    Массив.Очистить();
    
    КС = Новый КвалификаторыСтроки(12);
    Массив.Добавить(Тип("Строка"));
    ОписаниеТиповСтрока12 = Новый ОписаниеТипов(Массив, , , ,КС);
    Массив.Очистить();
    
    КС = Новый КвалификаторыСтроки(35);
    Массив.Добавить(Тип("Строка"));
    ОписаниеТиповСтрока35 = Новый ОписаниеТипов(Массив, , , ,КС);
    Массив.Очистить();
    
    ОписаниеБулево = Новый ОписаниеТипов("Булево");
    
    ТЗ = Новый ТаблицаЗначений;
    
    ТЗ.Колонки.Добавить("Номер",          ОписаниеТиповСтрока11);
    ТЗ.Колонки.Добавить("Дата",           ОписаниеТиповДата);
    ТЗ.Колонки.Добавить("СуммаДокумента", ОписаниеТиповЧисло15_2);
    ТЗ.Колонки.Добавить("Проведен",       ОписаниеБулево);
    ТЗ.Колонки.Добавить("ИННКонтрагента", ОписаниеТиповСтрока12); 
    ТЗ.Колонки.Добавить("НаименованиеКонтрагента", ОписаниеТиповСтрока35); 
    ТЗ.Колонки.Добавить("ВидДокумента",   ОписаниеТиповСтрока35); 
    ТЗ.Колонки.Добавить("ЭтоОперация",    ОписаниеБулево);   
    
    Для каждого стр Из МассивДанных Цикл 
        
        //Сообщить("стр = " + стр);
        
        НоваяСтрока = ТЗ.Добавить();
        
        ЗаполнитьЗначенияСвойств(НоваяСтрока, стр);
        
    КонецЦикла;
    
    //Сообщить("ВидДокумента = " + ВидДокумента);
    
    Если ВидДокумента = "ПоступлениеНаРасчетныйСчет" Тогда
        Выборка = ДокументыБазыСервер.ПолучитьПоступленияНаРасчетныйСчет(ТЗ, Дата1, Дата2);
    ИначеЕсли ВидДокумента = "СписаниеСРасчетногоСчета" Тогда
        Выборка = ДокументыБазыСервер.ПолучитьСписанияСРасчетногоСчета(ТЗ, Дата1, Дата2);
    ИначеЕсли ВидДокумента = "ПоступлениеТоваровУслуг" Тогда
        Выборка = ДокументыБазыСервер.ПолучитьПоступленийТоваровУслуг(ТЗ, Дата1, Дата2);
    ИначеЕсли ВидДокумента = "РеализацияТоваровУслуг" Тогда
        Выборка = ДокументыБазыСервер.ПолучитьРеализацийТоваровУслуг(ТЗ, Дата1, Дата2);
    ИначеЕсли ВидДокумента = "ПриходныйКассовыйОрдер" Тогда
        Выборка = ДокументыБазыСервер.ПолучитьПриходныеКассовыеОрдера(ТЗ, Дата1, Дата2);
    ИначеЕсли ВидДокумента = "ОперацияСБилетом" Тогда
        Выборка = ДокументыБазыСервер.ПолучитьОперацияСБилетом(ТЗ, Дата1, Дата2);
    ИначеЕсли ВидДокумента = "АвансовыйОтчет" Тогда
        Выборка = ДокументыБазыСервер.ПолучитьАвансовыеОтчеты(ТЗ, Дата1, Дата2);
    ИначеЕсли ВидДокумента = "ТребованиеНакладная" Тогда
        Выборка = ДокументыБазыСервер.ПолучитьТребованииНакладные(ТЗ, Дата1, Дата2);
    ИначеЕсли ВидДокумента = "ПоступлениеДопРасходов" Тогда
        Выборка = ДокументыБазыСервер.ПолучитьПоступленийДопРасходов(ТЗ, Дата1, Дата2);
    ИначеЕсли ВидДокумента = "ПередачаМатериаловВЭксплуатацию" Тогда
        Выборка = ДокументыБазыСервер.ПолучитьПередачиМатериаловВЭксплуатацию(ТЗ, Дата1, Дата2);
    ИначеЕсли ВидДокумента = "ОперацияБух" Тогда
        Выборка = ДокументыБазыСервер.ПолучитьОперацииБух(ТЗ, Дата1, Дата2);  
    ИначеЕсли ВидДокумента = "СчетНаОплатуПокупателю" Тогда
        Выборка = ДокументыБазыСервер.ПолучитьСчетаНаОплатуПокупателей(ТЗ, Дата1, Дата2); 
    Иначе
        Возврат;
    КонецЕсли; 
    
    МассивКонтрагентовНеНужноПерекидывать = Новый Массив;
    
    МассивКонтрагентовНеНужноПерекидывать.Добавить("1655382341");  
    МассивКонтрагентовНеНужноПерекидывать.Добавить("1655420111"); 
    
    К = 0;
    
    Пока Выборка.Следующий() Цикл   
        
        Если ВидДокумента = "РеализацияТоваровУслуг" Тогда
            Если Не МассивКонтрагентовНеНужноПерекидывать.Найти(Выборка.ИННКонтрагента) = Неопределено Тогда
                Продолжить;
            КонецЕсли;   
        КонецЕсли;
        
        К = К + 1;
        
        //Сообщить("К = " + К);
        
        НоваяСтрока = ТаблицаРезультат.Добавить();
        
        ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка); 
        
        НоваяСтрока.НомерСтроки = К; 
        НоваяСтрока.ВидДокументаВТаблице  = Выборка.ВидДокумента; 
        НоваяСтрока.ОбщаяСуммаЗдесь       = Выборка.СуммаДокументаЗдесь + Выборка.СуммаОперацииЗдесь;  
        НоваяСтрока.ДокументЗагруженВерно = (ЗначениеЗаполнено(Выборка.ДокументЗдесь) и Выборка.СуммаДокумента = Выборка.СуммаДокументаЗдесь) 
        или (ЗначениеЗаполнено(Выборка.ОперацияЗдесь) и Выборка.СуммаДокумента = Выборка.СуммаОперацииЗдесь);    
        
        Если (ВидДокумента = "РеализацияТоваровУслуг" ИЛИ ВидДокумента = "ПоступлениеНаРасчетныйСчет") и ЗначениеЗаполнено(Выборка.ДокументЗдесь) Тогда
            НоваяСтрока.НомерСчетНаОплату = Выборка.НомерСчетНаОплату; 
        Иначе 
            НоваяСтрока.НомерСчетНаОплату = "";
        КонецЕсли;   
        
        Если СокрЛП(НоваяСтрока.Номер) = СокрЛП(НоваяСтрока.НомерСчетНаОплату) Тогда
            НоваяСтрока.РазницаНомеров = Истина;
        Иначе
            НоваяСтрока.РазницаНомеров = Ложь;
        КонецЕсли;
        
        Если ВыводитьСообщения Тогда    
            
            Сообщить("НомерСтроки = " + К);
            Сообщить("Номер = " + Выборка.Номер);
            Сообщить("НомерЗдесь = " + Выборка.НомерЗдесь); 
            Сообщить("Дата = " + Выборка.Дата); 
            Сообщить("ДатаЗдесь = " + Выборка.ДатаЗдесь); 
            Сообщить("СуммаДокумента = " + Выборка.СуммаДокумента); 
            //Сообщить("СуммаОперации = " + СтрокаМассива.СуммаОперации);
            Сообщить("Проведен = " + Выборка.Проведен);
            //Сообщить("ОригиналПолучен = " + ОригиналПолучен);
            //Сообщить("СтатусДокумента = " + СтатусДокумента);
            
            Если Не Выборка.ИННКонтрагента = "" Тогда
                Сообщить("ИННКонтрагента = " + Выборка.ИННКонтрагента);       
            КонецЕсли;
            
            Если Не Выборка.НаименованиеКонтрагента = "" Тогда
                Сообщить("НаименованиеКонтрагента = " + Выборка.НаименованиеКонтрагента);       
            КонецЕсли;
            
            Если Выборка.ЭтоОперация Тогда
                Сообщить("ЭтоОперация = " + Выборка.ЭтоОперация);
            КонецЕсли;  
            
            Сообщить("=============================");  
            
        КонецЕсли;
        
    КонецЦикла;
    
    Если ТаблицаРезультат.Количество() > 0 Тогда
        Элементы.ТаблицаРезультатСуммаДокумента.ТекстПодвала      = ТаблицаРезультат.Итог("СуммаДокумента");
        Элементы.ТаблицаРезультатСуммаДокументаЗдесь.ТекстПодвала = ТаблицаРезультат.Итог("СуммаДокументаЗдесь");
        Элементы.ТаблицаРезультатСуммаОперацииЗдесь.ТекстПодвала  = ТаблицаРезультат.Итог("СуммаОперацииЗдесь");
        Элементы.ТаблицаРезультатОбщаяСуммаЗдесь.ТекстПодвала     = ТаблицаРезультат.Итог("ОбщаяСуммаЗдесь"); 
    Иначе
        Элементы.ТаблицаРезультатСуммаДокумента.ТекстПодвала      = 0;
        Элементы.ТаблицаРезультатСуммаДокументаЗдесь.ТекстПодвала = 0;
        Элементы.ТаблицаРезультатСуммаОперацииЗдесь.ТекстПодвала  = 0;
        Элементы.ТаблицаРезультатОбщаяСуммаЗдесь.ТекстПодвала     = 0; 
    КонецЕсли;
    
КонецПроцедуры
 
&НаКлиенте
Процедура ПереключательБазыПриИзменении(Элемент)  
    
    ТаблицаРезультат.Очистить();
    
    Если ПереключательБазы = 1 Тогда
        ИмяБазы = "ИТ"; 
        Префикс = "ИТ";
        ИННОрганизации = "7701881977"; 
        КППОрганизации = "770101001";  
        ИмяРоли = "Расш1_РазрешитьЗагрузкуДокументовПоИТ";
    ИначеЕсли ПереключательБазы = 2 Тогда
        ИмяБазы = "АТ"; 
        Префикс = "АТ"; 
        ИННОрганизации = "7702413379"; 
        КППОрганизации = "770101001"; 
        ИмяРоли = "Расш1_РазрешитьЗагрузкуДокументовПоАТ";
    КонецЕсли;   
    
    //Сообщить("ИмяБазы = " + ИмяБазы);
    //Сообщить("Префикс = " + Префикс);
    //Сообщить("ИННОрганизации = " + ИННОрганизации);
    //Сообщить("КППОрганизации = " + КППОрганизации);
    
КонецПроцедуры
 
&НаКлиенте
Процедура ТаблицаРезультатЗагрузитьПриИзменении(Элемент)
    
    КоличествоФлажков = 0;
    
    Для каждого стр Из ТаблицаРезультат Цикл
        Если стр.Загрузить Тогда
            КоличествоФлажков = КоличествоФлажков + 1;
        КонецЕсли;
    КонецЦикла;
    
    Если КоличествоФлажков > 6 Тогда 
        ТекущаяСтрока = Элементы.ТаблицаРезультат.ТекущиеДанные.НомерСтроки;
        ДопПараметр = Новый Структура("ТекущаяСтрока", (ТекущаяСтрока - 1));
        Описание = Новый ОписаниеОповещения("ТаблицаРезультатЗагрузитьПриИзмененииЗавершение", ЭтаФорма, ДопПараметр);
        ПоказатьПредупреждение(Описание, "Выберите флажков не больше 6 шт."); 
    КонецЕсли;
    
КонецПроцедуры
 
 
&НаКлиенте
Процедура ТаблицаРезультатЗагрузитьПриИзмененииЗавершение(ДопПараметр) Экспорт   
    ТекущаяСтрока = ДопПараметр.ТекущаяСтрока; 
    ТаблицаРезультат[ТекущаяСтрока].Загрузить = Ложь;  
КонецПроцедуры
 
&НаКлиенте
Функция ПроверитьНаСовпадениеИНН(ИННКонтрагента)
    
    МассивКонтрагентов = Новый Массив;
    
    МассивКонтрагентов.Добавить("7");   
    МассивКонтрагентов.Добавить("0");  
    
    Если МассивКонтрагентов.Найти(ИННКонтрагента) = Неопределено Тогда
        ЭтоОперация = Ложь;
    Иначе
        ЭтоОперация = Истина;
    КонецЕсли;
    
    Возврат ЭтоОперация;
    
КонецФункции 
 
#КонецОбласти
 
#Область ЗагрузкаДокументов
 
&НаКлиенте
Процедура ОрганизоватьОтборПоНомеру(СтрокаМассива, МассивНомеров, ТекстДок)  
    
    КоличествоНомеров = МассивНомеров.Количество();
    
    ОтборПоНомеру = "";
    Разделитель = "#";  
    К = 0; 
    
    Для каждого ТекНомер Из МассивНомеров Цикл
        К = К + 1;
        ОтборПоНомеру = ОтборПоНомеру + """"+ТекНомер+"""";
        Если К < КоличествоНомеров Тогда
            ОтборПоНомеру = ОтборПоНомеру + Разделитель;                 
        КонецЕсли;  
    КонецЦикла; 
    
    ОтборПоНомеру = "Если Объект.Номер = " + СтрЗаменить(ОтборПоНомеру, "#", " или Объект.Номер = ") + " Тогда Иначе Отказ = Истина; КонецЕсли;";  
    
    ВидДокументаВТаблице = СтрокаМассива.ВидДокументаВТаблице; 
    ТекВидДокумента      = СтрокаМассива.ТекВидДокумента;
    
    //Сообщить("ВидДокументаВТаблице = " + ВидДокументаВТаблице + " ТекВидДокумента = " + ТекВидДокумента); 
    
    Если ВидДокументаВТаблице = "СписаниеСРасчетногоСчета" Тогда
        Если ТекВидДокумента = "СписаниеСРасчетногоСчета" или ТекВидДокумента = "СписаниеСРасчетногоСчета_ОперацияБух" Тогда
            СтрокаЗамены = "<ПередВыгрузкойОбъекта>" + ОтборПоНомеру + "</ПередВыгрузкойОбъекта>";  
        Иначе
            СтрокаЗамены = "<ПередВыгрузкойОбъекта>//#55#</ПередВыгрузкойОбъекта>";  
        КонецЕсли; 
    ИначеЕсли ВидДокументаВТаблице = "ПоступлениеТоваровУслуг" Тогда
        Если ТекВидДокумента = "ПоступлениеТоваровУслуг" или ТекВидДокумента = "ПоступлениеТоваровУслуг_Оборудование" или ТекВидДокумента = "ПоступлениеТоваровУслуг_ОперацияБухОС" или ТекВидДокумента = "ПоступлениеТоваровУслуг_ОперацияБухРБП" Тогда
            СтрокаЗамены = "<ПередВыгрузкойОбъекта>" + ОтборПоНомеру + "</ПередВыгрузкойОбъекта>";  
        Иначе
            СтрокаЗамены = "<ПередВыгрузкойОбъекта>//#55#</ПередВыгрузкойОбъекта>";  
        КонецЕсли; 
    Иначе
        Если ВидДокументаВТаблице = ТекВидДокумента Тогда
            СтрокаЗамены = "<ПередВыгрузкойОбъекта>" + ОтборПоНомеру + "</ПередВыгрузкойОбъекта>";  
        Иначе
            СтрокаЗамены = "<ПередВыгрузкойОбъекта>//#55#</ПередВыгрузкойОбъекта>";  
        КонецЕсли; 
    КонецЕсли;
    
    ТекстДок.ЗаменитьСтроку(СтрокаМассива.Индекс, СтрокаЗамены);
    
КонецПроцедуры    
 
&НаКлиенте
Процедура КорректировкаПравилаВыгрузкиДанных(СтрокаМассива, ТекстДок) 
    
    ИндексПризнакВыгрузки = СтрокаМассива.Индекс - 7; 
    
    ВидДокументаВТаблице = СтрокаМассива.ВидДокументаВТаблице; 
    ТекВидДокумента      = СтрокаМассива.ТекВидДокумента;
    
    Если ВидДокументаВТаблице = "СписаниеСРасчетногоСчета" Тогда
        Если ТекВидДокумента = "СписаниеСРасчетногоСчета" или ТекВидДокумента = "СписаниеСРасчетногоСчета_ОперацияБух" Тогда
            ПризнакВыгрузки = "<Правило Отключить=" + """false""" + ">";
        Иначе
            ПризнакВыгрузки = "<Правило Отключить=" + """true""" + ">";
        КонецЕсли; 
    ИначеЕсли ВидДокументаВТаблице = "ПоступлениеТоваровУслуг" Тогда
        Если ТекВидДокумента = "ПоступлениеТоваровУслуг" или ТекВидДокумента = "ПоступлениеТоваровУслуг_Оборудование" или ТекВидДокумента = "ПоступлениеТоваровУслуг_ОперацияБухОС" или ТекВидДокумента = "ПоступлениеТоваровУслуг_ОперацияБухРБП" Тогда
            ПризнакВыгрузки = "<Правило Отключить=" + """false""" + ">";
        Иначе
            ПризнакВыгрузки = "<Правило Отключить=" + """true""" + ">";
        КонецЕсли; 
    Иначе
        Если ВидДокументаВТаблице = ТекВидДокумента Тогда
            ПризнакВыгрузки = "<Правило Отключить=" + """false""" + ">";
        Иначе
            ПризнакВыгрузки = "<Правило Отключить=" + """true""" + ">";
        КонецЕсли; 
    КонецЕсли;
    
    ТекстДок.ЗаменитьСтроку(ИндексПризнакВыгрузки, ПризнакВыгрузки);
    
    //Сообщить("Корректировали");     
    
КонецПроцедуры  
 
&НаКлиенте
Процедура ЗагрузитьВыбранныйДокумент(Команда) 
    
    ОчиститьСообщения();
    
    МассивНомеров = Новый Массив;
    
    Для каждого стр Из ТаблицаРезультат Цикл
        
        Если стр.Загрузить Тогда 
            ВидДокументаВТаблице = стр.ВидДокументаВТаблице;  
            Если ПереключательБазы = 1 Тогда
                ТекНомер = "ИТ" + Сред(стр.Номер, 3);
            Иначе
                ТекНомер = "00" + Сред(стр.Номер, 3);
            КонецЕсли;
            МассивНомеров.Добавить(ТекНомер);
        КонецЕсли;
        
    КонецЦикла;   
    
    Если МассивНомеров.Количество() = 0 Тогда 
        
        ПоказатьПредупреждение(, "Выберите нужный документ!"); 
        
        Возврат;
        
    КонецЕсли;
    
    Если Элементы.ЗагрузитьВыбранныйДокумент.Заголовок = "КНОПКА НАЖАТА!" Тогда
        
        ПоказатьПредупреждение(, "Загрузка прошла, обновите список!");   
        
        Возврат;
        
    КонецЕсли;
    
    Описание = Новый ОписаниеОповещения("ЗагрузитьВыбранныйДокументЗавершение", ЭтаФорма);
    
    ВыполнитьОбработкуОповещения(Описание, КодВозвратаДиалога.Да); 
    
    Сообщить("Кнопка нажата, ждите идет соединение с источником"); 
    
    МассивСтрок = Новый Массив;  
    
    Если ИмяБазы = "АТ" Тогда
        ИмяФайлаОбмена = ИмяФайлаОбменаАТ;    
        ИмяФайлаПравилОбмена = ИмяФайлаПравилОбменаАТ;
    ИначеЕсли ИмяБазы = "ИТ" Тогда
        ИмяФайлаОбмена = ИмяФайлаОбменаИТ;
        ИмяФайлаПравилОбмена = ИмяФайлаПравилОбменаИТ;
    КонецЕсли;
    
    ТекстДок = Новый ТекстовыйДокумент;
 
    ТекстДок.Прочитать(ИмяФайлаПравилОбмена);
    
    ИндексПервойСтроки = 0;
    НашлиПервуюСтроку  = Ложь;
    ИндексПоследнейСтроки = 0;
    НашлиПоследнююСтроку  = Ложь;  
    
    СтрокаПоискаОригинал = "<ПередВыгрузкойОбъекта>//#55#</ПередВыгрузкойОбъекта>"; 
    СтрокаПоиска = "<ПередВыгрузкойОбъекта>";  
    МассивИндексовНайденныхСтрокПередВыгрузкойОбъекта = Новый Массив; 
    
    Для Индекс = 1 По ТекстДок.КоличествоСтрок() Цикл
        
        СтрокаXML = СокрЛП(Строка(ТекстДок.ПолучитьСтроку(Индекс)));  
        
        Если СтрокаXML = "<ПравилаВыгрузкиДанных>" Тогда
            // Сообщить("СтрокаXML = " + СтрокаXML);
            ИндексПервойСтроки = Индекс;
            НашлиПервуюСтроку = Истина;
        КонецЕсли;
        
        Если СтрокаXML = "</ПравилаВыгрузкиДанных>" Тогда
            // Сообщить("СтрокаXML = " + СтрокаXML);
            ИндексПоследнейСтроки = Индекс;
            НашлиПоследнююСтроку = Истина;
        КонецЕсли;
        
        Если НашлиПервуюСтроку и Индекс >= ИндексПервойСтроки Тогда //42268 
            
            ТекСтрокаПоиска = Сред(СтрокаXML, 1, 23); 
            
            Если ТекСтрокаПоиска = СтрокаПоиска Тогда 
                ТекСтрокаКода = СокрЛП(Строка(ТекстДок.ПолучитьСтроку(Индекс - 6)));  
                ДлинаСтроки = СтрДлина(ТекСтрокаКода);
                ТекВидДокумента = Сред(ТекСтрокаКода, 6, ДлинаСтроки - 11);  
                СтруктураПередВыгрузкойОбъекта = Новый Структура("Индекс, ВидДокументаВТаблице, ТекВидДокумента", Индекс, ВидДокументаВТаблице, ТекВидДокумента);
                МассивИндексовНайденныхСтрокПередВыгрузкойОбъекта.Добавить(СтруктураПередВыгрузкойОбъекта); 
                //Сообщить("ВидДокументаВТаблице = " + ВидДокументаВТаблице);
                //Сообщить("ТекВидДокумента = " + ТекВидДокумента);
            КонецЕсли;
            
            Если НашлиПоследнююСтроку и Индекс >= ИндексПоследнейСтроки Тогда
                Прервать;            
            КонецЕсли;
            
        КонецЕсли;
        
    КонецЦикла;  
    
    Для каждого СтрокаМассива Из МассивИндексовНайденныхСтрокПередВыгрузкойОбъекта Цикл
        ОрганизоватьОтборПоНомеру(СтрокаМассива, МассивНомеров, ТекстДок);
        КорректировкаПравилаВыгрузкиДанных(СтрокаМассива, ТекстДок);
    КонецЦикла; 
    
    ТекстДок.Записать(ИмяФайлаПравилОбмена);
    
    ЗапуститьОбработкуCOM(1);
    
    Сообщить("Конец обработки!");
    
КонецПроцедуры
 
&НаКлиенте
Процедура ЗагрузитьВыбранныйДокументЗавершение(Ответ, ДопПараметр) Экспорт
    
    Если Ответ = КодВозвратаДиалога.Нет Тогда     
        Возврат;
    КонецЕсли;
    
    Элементы.ЗагрузитьВыбранныйДокумент.Заголовок = "КНОПКА НАЖАТА!";   
    Элементы.ЗагрузитьВыбранныйДокумент.ЦветФона  = WebЦвета.Аквамарин; 
    
    ОбновитьИнтерфейс();
    
КонецПроцедуры  
 
 
&НаКлиенте
Функция ПроверитьПериодСверки() 
    
    ОчиститьСообщения();
    
    Дата1 = ПериодСверки.ДатаНачала;  
    Дата2 = ПериодСверки.ДатаОкончания; 
    
    Если Не ЗначениеЗаполнено(Дата1) или Не ЗначениеЗаполнено(Дата2) Тогда
        
        Сообщить("Не выбран период серки!"); 
        
        Возврат 0;
        
    КонецЕсли;
    
    СтрокаДата1 = Формат(Дата1, "ДФ=yyyyMMdd");
    СтрокаДата2 = Формат(Дата2, "ДФ=yyyyMMddHHmmss"); 
    
    СтруктураДат = Новый Структура("СтрокаДата1, СтрокаДата2", СтрокаДата1, СтрокаДата2);
    
    Возврат СтруктураДат;
    
КонецФункции
 
&НаКлиенте
Процедура ЗапуститьОбработкуCOM(Команда)  
    
    Сообщить("Источник = " + ИмяБазы);
    
    Если ПереключательБазы = 1 Тогда
        НаименованиеСервера = НаименованиеСервераИТ;  
        НаименованиеБазы    = НаименованиеБазыИТ; 
        Пользователь        = ПользовательИТ;
        Пароль              = ПарольИТ;
    ИначеЕсли ПереключательБазы = 2 Тогда
        НаименованиеСервера = НаименованиеСервераАТ;  
        НаименованиеБазы    = НаименованиеБазыАТ; 
        Пользователь        = ПользовательАТ;
        Пароль              = ПарольАТ;
    Иначе    
        Возврат;
    КонецЕсли; 
    
    ПараметрыПодключения = "Srvr = """+НаименованиеСервера+"""; Ref = """+НаименованиеБазы+"""; Usr = """+Пользователь+"""; Pwd = """+Пароль+""";";
    
    V83 = Новый COMОбъект("V83.COMConnector");
    
    Попытка
        Соединение = V83.Connect(ПараметрыПодключения);
        Сообщить("Подключениепо COM сервису выполнено");
    Исключение
        Сообщить("Ошибка подключения по COM сервису!");
        Соединение = Неопределено;
        Возврат;
    КонецПопытки;
    
    ОбработкаТам = Соединение.Обработки.УниверсальныйОбменДаннымиXML.Создать();
    
    ОбработкаТам.РежимОбмена          = "Выгрузка";  
    ОбработкаТам.ДатаНачала           = ПериодСверки.ДатаНачала;
    ОбработкаТам.ДатаОкончания        = ПериодСверки.ДатаОкончания;
    ОбработкаТам.ИмяФайлаПравилОбмена = ИмяФайлаПравилОбмена;      
    ОбработкаТам.ИмяФайлаОбмена       = ИмяФайлаОбмена;
    
    ОбработкаТам.ЗагрузитьПравилаОбмена();
    
    Сообщить("Период сверки с " + ПериодСверки.ДатаНачала + " по " + ПериодСверки.ДатаОкончания);     
    
    ОбработкаТам.ВыполнитьВыгрузку();
    
    АдресВременногоХранилища = "";
    
    ПоместитьФайл(АдресВременногоХранилища, ИмяФайлаОбмена,, Ложь, ЭтаФорма.УникальныйИдентификатор); // помещаем наш файл во временное хранилище (для его передачи на сервер)
    
    ЗагрузкаЗдесь(АдресВременногоХранилища); 
    
    Соединение = Неопределено;
    
КонецПроцедуры
 
&НаСервереБезКонтекста
Процедура ЗагрузкаЗдесь(АдресВременногоХранилища)
    
    ДД = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);  // вытаскиваем на сервере из временного хранилища как двоичные данные
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml"); // получаем имя временного файла на сервере
    ДД.Записать(ИмяВременногоФайла);  
    
    ОбработкаЗдесь = Обработки.УниверсальныйОбменДаннымиXML.Создать();
    
    //    ОбработкаЗдесь.ИмяФайлаОбмена = ИмяФайлаОбмена;
    ОбработкаЗдесь.ИмяФайлаОбмена = ИмяВременногоФайла;
    ОбработкаЗдесь.РежимОбмена    = "Загрузка";
    ОбработкаЗдесь.ОптимизированнаяЗаписьОбъектов = Истина;
    ОбработкаЗдесь.ЗаписыватьРегистрыНаборамиЗаписей = Истина;
    ОбработкаЗдесь.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты = Истина;
    ОбработкаЗдесь.ЗагружатьДанныеВРежимеОбмена = Истина;
    
    ОбработкаЗдесь.ВыполнитьЗагрузку();   
    
КонецПроцедуры
 
&НаКлиенте
Процедура ОбновитьСписок(Команда)
    
    ЕстьФлажки = Ложь;
    
    Для каждого стр Из ТаблицаРезультат Цикл
        
        Если Не стр.Загрузить Тогда
            Продолжить;
        КонецЕсли;
        
        ЕстьФлажки = Истина;
        
    КонецЦикла;
    
    Если ЕстьФлажки Тогда
        ПолучитьДокументыHTTP(ВыбранныйВидДокумента);
    КонецЕсли; 
    
    Элементы.ЗагрузитьВыбранныйДокумент.Заголовок = "";   
    Элементы.ЗагрузитьВыбранныйДокумент.ЦветФона  = Новый Цвет(-1, -1, -1);
    
КонецПроцедуры
 
#КонецОбласти

Специалист компании ООО "Кодерлайн",
Айзатуллов Марс

Помогла ли вам статья? Оставьте свой комментарий:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Блог про 1С:Предприятие

Copyright © 2024 TopKoder

Мы занимаемся внедрением и обслуживанием программных продуктов 1С.