Автоматическая сверка данных в различных базах (Работа с FTP,SMTP,Планировщик Windows, запуск внешних обработок, командная строка 1С)

02.05.12

Интеграция - Обмен между базами 1C

Бывают проблемы когда после обмена РИБ в базе Главного узла и дочернего наблюдаются расхождения в данных, для выяснения этих расхождений Я решил сравнивать отчет ОСВ в дочке и голове в автоматическом режиме без доработки типовой конфигурации.

Обработки и отчеты разрабатывались для конфигурации Бухгалтерии Для Казахстана 2.0 это не окончательная их версия, но при желании можно взять идею

Скачать файлы

Наименование Файл Версия Размер
АвтоматическаяСверкаОСВ.zip
.zip 83,93Kb
65
.zip 83,93Kb 65 Скачать

1. Для начала сохранил нужный мне отчет как внешний .

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

Функция СоединениеФТП() /// Айбек 


Сервер = "192.168.1.59";
Пользователь = "region";
Пароль = "ht3214";
Порт = 21;

Попытка



Соединение = Новый FTPСоединение(Сервер, Порт, Пользователь, Пароль, ,Ложь);

Исключение



// ошибка при подключении к ftp

Сообщить("Ошибка при подключении к FTP : " + Сервер + " ! " + ОписаниеОшибки());

Возврат Неопределено;



КонецПопытки;

Возврат Соединение;

 

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

 

Процедура ИзменитьОтбор(Код) Экспорт



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



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


Процедура ВыгрузитьОСВ(Соединение,КодОрганизации,КодУзла,Голова = Ложь)



ИзменитьОтбор(КодОрганизации);

Настроить();
СтандартныеОтчеты.ВосстановитьНастройкиФормы(ЭтаФорма);
ОбновитьПанельНастроек();
СтандартныеОтчеты.УправлениеОтображениемОбластейОтчета(ЭтотОбъект, ЭтаФорма);
СтандартныеОтчеты.УправлениеОтображениемПанелиПользователя(ЭтаФорма);
СтандартныеОтчеты.ЗаполнитьТаблицуЭлементов(ЭтаФорма);


ОбновитьОтчет();
ЭлементыФормы.Результат.Записать(КаталогВременныхФайлов()+"/КНС_"+КодУзла+".mxl");


Если Голова Тогда


Соединение.Записать(КаталогВременныхФайлов()+"/КНС_"+КодУзла+".mxl","КНС_"+КодУзла+".mxl");


Иначе


Соединение.Записать(КаталогВременныхФайлов()+"/КНС_"+КодУзла+".mxl","фКНС_"+КодУзла+".mxl");


КонецЕсли;



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


Процедура ПриОткрытии()


Соединение = СоединениеФТП();

/// Айбек
НачалоПериода = НачалоМесяца(ТекущаяДата());
КонецПериода = КонецМесяца(ТекущаяДата());

Если ПланыОбмена.ПоОрганизации.ЭтотУзел().Код = "КНС" Тогда



ВыгрузитьОСВ(Соединение,"000000001","АЛМ",Истина);
ВыгрузитьОСВ(Соединение,"АБ0000002","АПФ",Истина);
ВыгрузитьОСВ(Соединение,"ТР0002 ","ЖПФ",Истина);
ВыгрузитьОСВ(Соединение,"УР0000001","ЗКП",Истина);
ВыгрузитьОСВ(Соединение,"КЗ0000001","КПФ",Истина);
ВыгрузитьОСВ(Соединение,"АК0000001","МПФ",Истина);
ВыгрузитьОСВ(Соединение,"000000002","ЮКП",Истина);



ИначеЕсли ПланыОбмена.ПоОрганизации.ЭтотУзел().Код = "АЛМ" Тогда


ВыгрузитьОСВ(Соединение,"000000001","АЛМ");
ИначеЕсли ПланыОбмена.ПоОрганизации.ЭтотУзел().Код = "АПФ" Тогда
ВыгрузитьОСВ(Соединение,"АБ0000002","АПФ");
ИначеЕсли ПланыОбмена.ПоОрганизации.ЭтотУзел().Код = "ЖПФ" Тогда
ВыгрузитьОСВ(Соединение,"ТР0002 ","ЖПФ");
ИначеЕсли ПланыОбмена.ПоОрганизации.ЭтотУзел().Код = "ЗКП" Тогда
ВыгрузитьОСВ(Соединение,"УР0000001","ЗКП");
ИначеЕсли ПланыОбмена.ПоОрганизации.ЭтотУзел().Код = "КПФ" Тогда
ВыгрузитьОСВ(Соединение,"КЗ0000001","КПФ");
ИначеЕсли ПланыОбмена.ПоОрганизации.ЭтотУзел().Код = "МПФ" Тогда
ВыгрузитьОСВ(Соединение,"АК0000001","МПФ");


Иначе


ВыгрузитьОСВ(Соединение,"000000002","ЮКП");


КонецЕсли;

ПрекратитьРаботуСистемы();

 

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

 

3. Cохранил этот отчет в справочнике внешние отчеты , конешно можно его запускать на прямую как внешний но Я решил чтобы сам отчет был в базе.

Создал обработку которая бы запускала этот отчет  в форме ПриОткрытии()  прописал:

СсылкаОтчет = Справочники.ВнешниеОбработки.НайтиПоКоду("ШМ0000003");// код отчета в справочнике ВнешниеОбработки
ХранОбъект = СсылкаОтчет.ХранилищеВнешнейОбработки.Получить();
ХранОбъект.Записать(КаталогВременныхФайлов()+"/otchet.ert");
Отчет = ВнешниеОтчеты.Создать(КаталогВременныхФайлов()+"/otchet.ert");
ФормаОтчета = Отчет.ПолучитьФорму("ФормаОтчета");
ФормаОтчета.Открыть();

Если без сохранения можно ограничиться тремя нижними строчками , и на прямую указать путь к отчету.

Далее добавил задание в планировщик которое запускало все это:

 

ДЛЯ КЛИЕНТ-СЕРВЕРНОЙ БАЗЫ 1С

 

"C:\Program Files (x86)\1cv82\8.2.14.537\bin\1cv8.exe" ENTERPRISE /Salm-srv4\buh_cons82 /NАдмин /P1й2ц /AppAutoCheckMode /Execute"C:\RunSaveOSV.epf" /DisableStartupMessages

Расшифровки для создания задания :

alm-srv4 – Имя Сервера на котором находиться база

buh_cons82 – Имя Базы на севере 1С Предприятие

Админ – Имя пользователя 

1й2ц – Пароль пользователя

C:\RunSaveOSV.epf – Путь к файлу обработки

 

ДЛЯ ФАЙЛОВОЙ БАЗЫ 1С

"C:\Program Files (x86)\1cv82\8.2.14.537\bin\1cv8.exe" ENTERPRISE /F”C:\База1С” /NАдмин /P1й2ц /AppAutoCheckMode /Execute"C:\RunSaveOSV.epf" /DisableStartupMessages

Расшифровки для создания задания :

C:\База1С – Каталог базы данных 1С Предприятие

Админ – Имя пользователя

1й2ц – Пароль пользователя

C:\RunSaveOSV.epf – Путь к файлу обработки

 

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

 

4 . Сверка данных файлов , для этого я воспользовался типовой фукцией 1С для сравнения файлов , и в случае если файлы не равны отправлялось сообщение на почтовый адрес.

МодульФормы обработки сравнения файлов:

 

Функция ОтправитьНаПочту(ТекстПисьма)

Профиль = Новый ИнтернетПочтовыйПрофиль;

Профиль.Пользователь = "asdasd@mail.ru";
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
Профиль.АутентификацияPOP3 = СпособPOP3Аутентификации.Обычная;
Профиль.ПользовательSMTP = "asdasd@mail.ru";
Профиль.Пароль = "выфвыф";
Профиль.ПарольSMTP = "выфвыф";
Профиль.ПользовательSMTP = "asdasd";
Профиль.АдресСервераSMTP = "smtp.mail.ru";
Профиль.ПортSMTP = 25;

Письмо = Новый ИнтернетПочтовоеСообщение;

//Письмо.Получатели.Добавить("321@321.kz");
Письмо.Получатели.Добавить("вфыв@выф.kz");

Письмо.ИмяОтправителя = "Служба проверки ОСВ";
Письмо.Отправитель.ОтображаемоеИмя = "Служба проверки ОСВ";
Письмо.Отправитель.Адрес = "asdasd@mail.ru";

Письмо.Кодировка = "UTF-8";

Письмо.Тема = "Расхождение данных в ОСВ от " +Формат(ТекущаяДата(),"ДЛФ=DD") ;

ТекстПисьма = Письмо.Тексты.Добавить(ТекстПисьма,ТипТекстаПочтовогоСообщения.HTML);

Почта = Новый ИнтернетПочта;

Попытка
Почта.Подключиться(Профиль);
Почта.Послать(Письмо);
Почта.Отключиться();
Отправлено = Истина;
Исключение
Сообщить(НСтр("Ошибка отправки!") + ОписаниеОшибки());
Отправлено = Ложь;
КонецПопытки;


 Возврат Отправлено;

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


Функция СоединениеФТП() /// Айбек


Сервер = "192.168.1.59";
Пользователь = "region";
Пароль = "585858";
Порт = 21;

Попытка



Соединение = Новый FTPСоединение(Сервер, Порт, Пользователь, Пароль, ,Ложь);



Исключение



// ошибка при подключении к ftp
Сообщить("Ошибка при подключении к FTP : " + Сервер + " ! " + ОписаниеОшибки());



Возврат Неопределено;



КонецПопытки;

Возврат Соединение;


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


Процедура ПроверитьОСВ(КодУзла,Соединение,Ошибка,ТекстДобавление)

 

Попытка /// лень писать код с проверкой существования файлов на фтп


Соединение.Получить("КНС_"+КодУзла+".mxl", КаталогВременныхФайлов()+"/КНС_"+КодУзла+".mxl");
Соединение.Получить("фКНС_"+КодУзла+".mxl", КаталогВременныхФайлов()+"/фКНС_"+КодУзла+".mxl");

Сравнение = Новый СравнениеФайлов;

Сравнение.ПервыйФайл = КаталогВременныхФайлов()+"/КНС_"+КодУзла+".mxl";
Сравнение.ВторойФайл = КаталогВременныхФайлов()+"/фКНС_"+КодУзла+".mxl";


Если НЕ Сравнение.Сравнить() Тогда


ТекстДобавление = ТекстДобавление + КодУзла + "

"; // Символы.ПС можно было
Ошибка = Истина;


КонецЕсли;
Исключение

КонецПопытки;

 

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


Процедура КнопкаВыполнитьНажатие(Кнопка) // можно было прописать сразу при открытии , но я сначала проверял потом так и осталось


Соединение = СоединениеФТП();
Ошибка = Ложь;
ТекстДобавление = "";
ПроверитьОСВ("АЛМ",Соединение,Ошибка,ТекстДобавление);
ПроверитьОСВ("АПФ",Соединение,Ошибка,ТекстДобавление);
ПроверитьОСВ("ЮКП",Соединение,Ошибка,ТекстДобавление);
ПроверитьОСВ("ЖПФ",Соединение,Ошибка,ТекстДобавление);
ПроверитьОСВ("МПФ",Соединение,Ошибка,ТекстДобавление);
ПроверитьОСВ("КПФ",Соединение,Ошибка,ТекстДобавление);
ПроверитьОСВ("ЗКП",Соединение,Ошибка,ТекстДобавление);

Если Ошибка Тогда
ТекстHTML =
"
|
|
|
|
|
|
|Добрый День!

|

|Данное письмо было посланно в автоматическом режиме , отвечать на него не требуется, расхождение
|наблюдается по следующим узлам :

"
+ ТекстДобавление +"

|С уважением №"№"№" Айбек

|Департамент информационных технологий

|АО ""№"№"№"к""

|Тел: 1267

|
|";

ЛогФайл = Новый ТекстовыйДокумент;
ЛогФайл.УстановитьТекст(ТекстHTML);

Если НЕ ОтправитьНаПочту(ТекстHTML) Тогда


ЛогФайл.Записать(КаталогВременныхФайлов()+"/log.html");
Соединение.Записать(КаталогВременныхФайлов()+"/log.html","mail_error"+Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy")+".html");


КонецЕсли;


ЛогФайл.Записать(КаталогВременныхФайлов()+"/log.html");

Соединение.Записать(КаталогВременныхФайлов()+"/log.html","mail_error"+Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy")+".html");


КонецЕсли;


Сообщить("Расхождение данных по :" + ТекстДобавление);



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

Процедура ПриОткрытии()


КнопкаВыполнитьНажатие(Неопределено);


ПрекратитьРаботуСистемы();

 

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

 

5. Требуется создать задание в планировщике с запуском обработки из пункта №4 , по времени после выгрузок всех файлов.

6. Дополнительно требуется удалять эти файлы , можете сделать новую обработку и запускать через планировщик.

См. также

SALE! 10%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Обработка позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию. Переносятся документы, а также начальные остатки и справочная информация. Есть фильтр по организации и множество других опциональных параметров выгрузки. Наши правила переноса в продаже с 2015 года, постоянно работаем над их развитием. Более 360 предприятий выполнили переход с использованием этого продукта. Оказываем техническую поддержку по всем вопросам проекта переноса данных из УПП 1.3.

50722 45650 руб.

04.08.2015    159273    363    266    

345

SALE! 10%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    134604    718    291    

387

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20091    132    38    

90

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Переносятся документы за выбранный период, нормативно-справочная информация и остатки по счетам бухгалтерского учета из программы "1С:БП 3.0" в "1С:УТ 11" или "1С:КА. 2" или "1С:ERP Управление предприятием, ред. 2".

50722 45650 руб.

31.10.2014    231096    124    326    

295

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Обработка позволяет не только перенести все документы, справочную информацию и начальные остатки из ERP 2 или КА 2 в ЗУП 3, но и организовать регулярный перенос данных между программами 1С:ERP 2 / КА 2 и 1С:ЗУП 3. Вы можете выбрать период отбора данных и установить фильтр по организациям, чтобы выгружать только необходимую информацию. Более того, перенос оперативно обновляется при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

48278 43450 руб.

03.12.2020    34034    80    57    

78

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос позволяет настроить собственный обмен данными между указанными программами, альтернативный предлагаемому фирмой 1С. Перенос данных осуществляется из 1С:ERP 2 / 1С:КА 2 / 1С:УТ 11 в 1С:БП 3.0. Правила обмена оперативно обновляются при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

38500 34650 руб.

15.04.2019    68196    176    136    

108

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9155    9    8    

10

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    46020    194    64    

153
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ak0710 162 08.05.12 08:37 Сейчас в теме
2. Артано 759 09.05.12 16:31 Сейчас в теме
(1) К моему удивлению тут обнаружилось немало людей именующих себя программистами и выдающие скачанные отсюда работы за свои труды. Причем это явление довольно распространено. Недавно испытал момент славы, в одной организации предприимчивый молодой человек, под видом весьма технологичной вещи загнал им выложенную мною на сайте простенькую печатную форму. За работу и внедрение(!!!) взял 5к. Такие дела :-(

P.S. По теме чтобы не оффтопить - идея хорошая. Попробую завтра пощупать
3. ak0710 162 10.05.12 09:04 Сейчас в теме
(2) Артано, Да это так и есть , Я думаю может загружать только идеи как делать то или иное или просто наброски , а не готовый результат , обмен знаниями это хорошо.
4. ak0710 162 29.05.12 12:47 Сейчас в теме
Так же хотелось бы дополнить что после проверки каждый день требуется чистить эти файлы с фтп каталога , так как у меня свой сервер фтп я на нем запускаю батник с таким содержанием:

del /s d:\regions\*.mxl
del /s d:\regions\*.html

"d:\regions\" каталог выгрузки ОСВ.
5. slavich 7 10.09.12 15:00 Сейчас в теме
Идея супер, приходится время от времени проделывать тоже самое но в ручном режиме, по той же технологии...
Оставьте свое сообщение