Автоматические выгрузки РИБ на файловых БД (моя реализация)

10.02.16

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

Необходимо было быстрое решение - ежедневный обмен 15 удаленных файловых распределенных 1с БП 2.0 с центральным клиент-серверным узлом. Реализовал первым пришедшим в голову вариантом...

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

Наименование Файл Версия Размер
Пример файла выгрузки РИБ
.bat 0,23Kb
25
.bat 0,23Kb 25 Скачать

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

Решения без изменения конфигурации мне найти не удалось... Уже вижу, как как в меня полетели помидоры - ведь при запуске 1с есть ключ /Execute , который позволяет после запуска 1с запустить внешнюю обработку и сделать обмен, да вот только - Sealed фик там! После загрузки 1с загружается: сначало панель интернет-соединение (отключил), а вот потом панель "Установить границу расчитанных итогов на...?" - быстро победить мне эту панельку не удалось. У-у-у-у-у, вторая порция помидоров полетела. Знаю, что есть права на регистрах - рассчитывать итоги, через которые можно избавить пользователя от этой ненужной обузы, да вот только для этого нужно создавать новую роль и тащить её через последующие релизы и для одной только цели - делать обмен. Мне это показалось не совсем универсально.

Покопавшись в интернете и ключах запуска нашел ключ /C - передача параметра в конфигурацию. 1с Бухгалтерия отрабатывает ключ /CРазрешитьРаботуПользователей, при котором работа 1с завершается, но с параметром Ложь: ЗавершитьРаботуСистемы(Ложь), при этом 1с просто подрубается, не выполняя функций завершения работы программы. Frown

Но ведь через этот ключ можно передать, что-то типа /cВыполнить=ЗавершитьРаботуСистемы(Истина); и при запуске обрезав "/cВыполнить=" выполнять строку кода, т.е. сразу же завершать работу 1с ещё до запуска окон "интернет-соединения" и "расчета границы итогов".

Для этого в процедуру ПриНачалеРаботыСистемы() внес обработчик передаваемого параметра (текст нашел где-то в нете, может и на инфостарте):

// Процедура - обработчик события "При начале работы системы".
//
Процедура ПриНачалеРаботыСистемы()

КонтрольВерсииПлатформы.ПроверитьВерсиюПлатформы();
ПервыйЗапуск = (Константы.НомерВерсииКонфигурации.Получить()="");

ПользовательОпределен = Ложь;
ОписаниеОшибкиОпределенияПользователя = "";
Если Не ЗначениеЗаполнено(ПараметрыСеанса.ТекущийПользователь) Тогда
Если УправлениеПользователями.ОпределитьТекущегоПользователя(ОписаниеОшибкиОпределенияПользователя) Тогда
ПользовательОпределен = ЗначениеЗаполнено(ПараметрыСеанса.ТекущийПользователь);
КонецЕсли;
Иначе
ПользовательОпределен = Истина;
КонецЕсли;

Если Не ПользовательОпределен Тогда
Если ПустаяСтрока(ОписаниеОшибкиОпределенияПользователя) Тогда
ОписаниеОшибкиОпределенияПользователя = "Ошибка идентификации пользователя. Обратитесь к администратору";
КонецЕсли;
Предупреждение(ОписаниеОшибкиОпределенияПользователя);
ЗавершитьРаботуСистемы(Ложь);
Возврат;
Иначе

//Изменение от 03.09.2012
//обработка cВыполнить=ЗавершитьРаботуСистемы(Истина);
Ключ = "Выполнить=";
ДлКлюча = СтрДлина(Ключ);
Если Лев(ПараметрЗапуска, ДлКлюча) = Ключ Тогда
Попытка ДлПараметра = СтрДлина(ПараметрЗапуска);
СтрокаКода = Прав(ПараметрЗапуска, ДлПараметра-ДлКлюча);
Выполнить(СтрокаКода);
Исключение СтрСообщения="Не удалось выполнить код:"+Символы.ПС+СтрокаКода;
Предупреждение(СтрСообщения,3);
ЗаписьЖурналаРегистрации("Запуск кода из командной строки.", УровеньЖурналаРегистрации.Ошибка, , , СтрСообщения);
КонецПопытки;
КонецЕсли;
// конец Изменение от 03.09.2012
//Заменим интерфейс УСН8

... и т.д.

(понимаю, что лучше было бы внести эти строки в обработку ключа /С: ОбщиеМодули-УправлениеСоединениями-ОбработатьПараметрыЗапуска(), но в любом случае в типовую конфигурацию надо вносить изменения).

 

 А дальше все просто - создаем bat-файл и ставим на шедулер (Планировщик заданий), что б в обед в 13.00-14.00 была выгрузка. Текст батника у меня такой (можно скачать в приложении):

@ECHO OFF
chcp 1251
PATH "C:\Program Files (x86)\1cv82\8.2.15.319\bin";"C:\Program Files\1cv82\8.2.15.319\bin"
start 1cv8.exe ENTERPRISE /F"\\Bases\2012\База" /N"Обмен" /P"12345" /cВыполнить=ЗавершитьРаботуСистемы(Истина); &

 Что б было понятно, объясню: 

1 строка - переключаемся в нужную кодировку, что б понимать русский язык.

2 строка - прописываем пути, где искать запускной файл 1с для 32 и 64 битных систем. У меня пути прописаны для 15 платформы 319 релиз.

3 строка - запускаем 1с: /F - указываем путь до базы, /N - указываем пользователя, /P - указываем пароль, /c- передаем параметр, & - запускаем в фоне, что б пользователь даже не видел запуска 1с.

 

А зачем завершать работу, спросите вы? И как при этом происходит выгрузка?

Все просто! При настройке обменов РИБ можно определенному пользователю (в нашем случае - под кем загружаем 1с из бат-файла) назначить выполнять обмен при различных событиях. Одним из событий является "Завершение работы", где мы и ставим галочку (смотрите рисунок).

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

 

Т.е. весь процесс выглядит так:

1. Шедулер ежедневно в фоне запускает 1с под пользователем "Обмен" и с ключем, который передает строку кода: ЗавершитьРаботуСистемы(Истина).

2. При загрузке системы отрабатывает наша обработка параметра, где переданная строка кода (в п.1) выполняется - т.е. завершается работа 1с.

3. Перед завершение работы делается обмен РИБ, после чего 1с благополучно завершает работу.

Всё!!! Одним емором стало меньше!!!

И теперь при загрузке 1с можно выполнять любые команды не вторгаясь в конфигурацию, прописав их в "/cВыполнить=". )))

См. также

SALE! 20%

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

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

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

45650 36520 руб.

04.08.2015    159693    363    267    

345

SALE! 15%

[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 22572 руб.

12.06.2017    134940    723    291    

388

SALE! 20%

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

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

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 27720 руб.

15.04.2019    68422    178    138    

111

SALE! 20%

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

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

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

43450 34760 руб.

03.12.2020    34170    80    58    

78

SALE! 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 25200 руб.

23.07.2020    46301    196    64    

158

SALE! 10%

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

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

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    231417    124    327    

296

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

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

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

60000 руб.

05.10.2022    9208    9    8    

10

SALE! 10%

Перенос данных из УПП 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 25200 руб.

15.12.2021    20252    132    38    

90
Вознаграждение за ответ
Показать полностью
Отзывы
7. Жолтокнижниг 258 25.09.12 20:13 Сейчас в теме
Таки я понимаю шо вы не блокируете, но пожалуйста посмотрите что делает конфига при обработке этого параметра. И о чудо, она завершает работу, и выполняется событие "ПриЗавершенииРаботыСистемы". Причем предприятию до одного места, установлена была блокировка али нет.
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Программулькин 301 21.09.12 03:52 Сейчас в теме
а будет выгрузка автоматическая если изменения в конфу внесёшь??
2. ikar-nikolay 103 21.09.12 12:02 Сейчас в теме
Не совсем понял вопроса...
Выгрузка будет автоматической из-за того, что Планировщик заданий будет запускать bat-файл в определенное время. А что бы все корректно работало, необходимо дописать кусочек кода - обработки параметра, передаваемого при запуске 1с в ключе "/с" в предопределенной процедуре ПриНачалеРаботыСистемы(), а остальные механизмы РИБ остаются типовыми.
Ну, и соответственно, этот кусочек кода не забывать проставлять при последующих обновлениях конфигураций (что занимает минимум времени, при большой приносимой пользе).
3. Жолтокнижниг 258 25.09.12 16:37 Сейчас в теме
Мне это показалось не совсем универсально.

А править конфигу ох как универсально. /Execute и пусть юзеры подождут.
В чем минусы то?Время на старт обработок?
4. ikar-nikolay 103 25.09.12 18:30 Сейчас в теме
(3) Жолтокнижниг, ведь написал же, почему /Execute не подойдет, повторюсь!
/Execute выполняется после отработки ПриНачалеРаботыСистемы(). В БП 2.0 в процедуре ПриНачалеРаботыСистемы() вылетают 2 панели, где необходимо вмешательство пользователя (что бы нажали на ту или иную кнопку). /Execute выполнится только после этого:
1) панель интернет-соединения, которую можно отключить (обработки можно найти тут же на Инфостарте, штатных средств не придумано).
2) панель расчета границ итогов, для отключения которой необходимо со всех регистров убрать галочку с прав "Рассчитывать итоги", т.е. полные права не подойдут. А значит нужно создать новую роль - типа полные права без галочки "Рассчитывать итоги" на регистрах и таскать эту роль по релизам. Выбирая между тасканием роли или внесением нескольких строк в конфигурацию - выбрал второе, поскольку второе решение дало новый функционал - теперь можно выполнять любые строки кода при запуске 1с, указав их в строке запуска, например, - те же самые внешние обработки и т.д., причем эти строки будут выполняться до появления панелей 1) и 2).

Поскольку вмешательство пользователя для решения данной задачи недопустимо (нужно через бат-файл выполнить операцию обмена РИБ без вмешательства пользователя), то самое простое - выполнить нужные строки кода до появления панелек 1) и 2), что и делается.

Вы меня лучше поймете, если сами в БП 2.0 попробуете через /Execute запустить обработку, выводящую надпись: "Hello, World!!!". Не кликнув по кнопкам вылетевших панелек - вы эту надпись не увидите!
5. Жолтокнижниг 258 25.09.12 19:14 Сейчас в теме
Хм а попробуй такую штуку: параметр /CРазрешитьРаботуПользователей, (БП 2.0 у меня нет под рукой, но думаю механизмы 1с унифицированы) имхо это даст тот же результат, но без изменения конфиги
6. ikar-nikolay 103 25.09.12 20:02 Сейчас в теме
(5) Жолтокнижниг, к сожалению, нет! )))
Я же не блокирую базу. Во время запуска обмена РИБ - остальные пользователи могут спокойно работать. 1с запускается в фоне и не видна пользователю. О её существовании можно узнать только в Диспетчере задач, появлением нового процесса 1с.
7. Жолтокнижниг 258 25.09.12 20:13 Сейчас в теме
Таки я понимаю шо вы не блокируете, но пожалуйста посмотрите что делает конфига при обработке этого параметра. И о чудо, она завершает работу, и выполняется событие "ПриЗавершенииРаботыСистемы". Причем предприятию до одного места, установлена была блокировка али нет.
9. ikar-nikolay 103 25.10.12 09:23 Сейчас в теме
(7) Жолтокнижниг, не работает. Процедура обмена не включается. (((
8. ikar-nikolay 103 25.09.12 20:43 Сейчас в теме
Я в шоке!!!

// Обработать параметры запуска, связанные с завершение и разрешение соединений ИБ.
//
// Параметры
//  ЗначениеПараметраЗапуска  – Строка – главный параметр запуска
//  ПараметрыЗапуска          – Массив – дополнительные параметры запуска, разделенные
//                                       символом ";".
//
// Возвращаемое значение:
//   Булево   – Истина, если требуется прекратить выполнение запуска системы.
//
Функция ОбработатьПараметрыЗапуска(Знач ЗначениеПараметраЗапуска, Знач ПараметрыЗапуска) Экспорт

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

	ИначеЕсли ЗначениеПараметраЗапуска = Врег("ЗавершитьРаботуПользователей") Тогда
...
...
Показать


И вызывается обработка параметра запуска до открытия форм.
И ЗавершитьРаботуСистемы(Ложь) - не должна вывести вопросов о закрытии, т.к. у нас ничего не модифицировалось...

Получается, что колесо изобрел ))))))))
В шоке!!!
Не знал про обработку параметров - буду знать! Спасибо!!!
10. hasan-rusel 11 01.11.12 04:45 Сейчас в теме
Интересная статья !
Может подскажете мне ? У меня нетиповая конфигурация, после обмена в батнике выполняю:
"C:\Program Files\1cv82\common\1cestart.exe" CONFIG /F "C:\Sklad" /N"Admin" /P"8160" /UpdateDBCfg

Но если есть изменения в конфигурации, то выходит окно
Реорганизация информации. Изменена ...... Принять. Отмена.

И команда
/UpdateDBCfg
не выполняется, как быть ?! :(
11. ikar-nikolay 103 01.11.12 10:01 Сейчас в теме
(10) hasan-rusel, попробуйте ещё прописать ключ:
/DisableStartupMessages
может поможет.
Кстати, спасибо за идею! Завтра попробуем с удаленным программистом после описанного в статье обмена РИБ прикрутить сохранение конфигурации (которое необходимо, если вносились изменения в главном узле и эти изменения ушли по РИБу в подчиненный узел). Если победим - то перевыложу .bat файл.
12. hasan-rusel 11 01.11.12 12:04 Сейчас в теме
(11) Если получиться, то отпишите пожалуйста строку с сохранением конфигурации!
Оставьте свое сообщение