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

02.05.12

Интеграция - Перенос данных 1C

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
АвтоматическаяСверкаОСВ.zip
.zip 83,93Kb
65 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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. Дополнительно требуется удалять эти файлы , можете сделать новую обработку и запускать через планировщик.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

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

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

38000 руб.

15.12.2021    33388    250    64    

190

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 руб.

12.06.2017    159450    953    317    

479

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 3, УНФ 3 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

16531 руб.

18.02.2016    201939    671    543    

561

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

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

38000 руб.

23.07.2020    67195    313    94    

251

Перенос данных 1C Программист Бухгалтер 1С:Предприятие 8 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12200 руб.

25.09.2016    90919    412    257    

342

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

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

122000 руб.

19.08.2020    29116    27    3    

28

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Платные (руб)

Что же Вы получаете? 2 способа обмена объектами – с ОДИНАКОВОЙ структурой и с ОТЛИЧАЮЩЕЙСЯ! Забудьте о том, что не могли ранее перенести данные между базами, из-за того, что изменилась структура объектов в одной из них с обновлением конфигурации – теперь это в прошлом! Теперь не помеха для обмена изменение состава реквизитов объекта (измерений, ресурсов)/состава табличных частей/реквизитов табличных частей/типов реквизитов! А так же получаете быстрый алгоритм обмена, с возможностью указания уровня выгрузки объектов по ссылкам! 2 способа обмена - ФАЙЛ, HTTP: Система слежения за дублями предопределенных элементов при загрузке; Система поиска связей объектов для выгрузки; Отборы для каждого объекта конфигурации в отдельности; Динамическая замена произвольных ссылок при обмене; Выбор регистров движений для выгрузки. (Обновление от 09.04.2026, версия 9.2 - 11.1.1 (критическое), фоновая выгрузка-загрузка версия 1.4)

20740 руб.

28.08.2012    223308    336    287    

677

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

Расширение конфигурации, позволяющее выполнить обмен данными между двумя базами любой конфигурации с возможностью запуска обмена в фоне или по расписанию. Простой интерфейс и функция автоматического сопоставления реквизитов позволит выполнить простейший обмен даже обычному пользователю. Множество гибких инструментов дает возможность продвинутому пользователю или программисту как угодно манипулировать данными и настроить обмен любой сложности. Версия расширения 4.x.x теперь поддерживает не только обмен через com-компоненту, но и через предварительно опубликованный web-сервис. Также доступен глобальный каталог, в нем можно сохранить свои настройки обмена, или загрузить уже готовые, созданные другими пользователями. Есть возможность использовать планы обменов и регистрацию объектов к обмену.

24400 руб.

11.08.2022    11341    29    27    

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

P.S. По теме чтобы не оффтопить - идея хорошая. Попробую завтра пощупать
3. ak0710 166 10.05.12 09:04 Сейчас в теме
(2) Артано, Да это так и есть , Я думаю может загружать только идеи как делать то или иное или просто наброски , а не готовый результат , обмен знаниями это хорошо.
4. ak0710 166 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 Сейчас в теме
Идея супер, приходится время от времени проделывать тоже самое но в ручном режиме, по той же технологии...
Для отправки сообщения требуется регистрация/авторизация