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

10.02.16

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Пример файла выгрузки РИБ
.bat 0,23Kb
25
25 Скачать (1 SM) Купить за 1 850 руб.

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

Решения без изменения конфигурации мне найти не удалось... Уже вижу, как как в меня полетели помидоры - ведь при запуске 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Выполнить=". )))

См. также

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

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

35000 руб.

23.07.2020    56042    257    73    

212

SALE! 10%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27660 руб.

12.06.2017    145631    846    299    

438

SALE! 10%

Перенос данных 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 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

55778 50200 руб.

15.04.2019    74189    198    155    

136

SALE! 10%

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

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

55778 50200 руб.

04.08.2015    170600    355    282    

390

SALE! 10%

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

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

53111 47800 руб.

03.12.2020    38296    108    70    

102

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

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

120000 руб.

19.08.2020    26594    26    1    

28

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

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

35000 руб.

15.12.2021    26073    185    56    

142

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

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

16260 руб.

18.02.2016    189084    614    534    

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

А править конфигу ох как универсально. /Execute и пусть юзеры подождут.
В чем минусы то?Время на старт обработок?
4. ikar-nikolay 104 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. Жолтокнижниг 259 25.09.12 19:14 Сейчас в теме
Хм а попробуй такую штуку: параметр /CРазрешитьРаботуПользователей, (БП 2.0 у меня нет под рукой, но думаю механизмы 1с унифицированы) имхо это даст тот же результат, но без изменения конфиги
6. ikar-nikolay 104 25.09.12 20:02 Сейчас в теме
(5) Жолтокнижниг, к сожалению, нет! )))
Я же не блокирую базу. Во время запуска обмена РИБ - остальные пользователи могут спокойно работать. 1с запускается в фоне и не видна пользователю. О её существовании можно узнать только в Диспетчере задач, появлением нового процесса 1с.
7. Жолтокнижниг 259 25.09.12 20:13 Сейчас в теме
Таки я понимаю шо вы не блокируете, но пожалуйста посмотрите что делает конфига при обработке этого параметра. И о чудо, она завершает работу, и выполняется событие "ПриЗавершенииРаботыСистемы". Причем предприятию до одного места, установлена была блокировка али нет.
9. ikar-nikolay 104 25.10.12 09:23 Сейчас в теме
(7) Жолтокнижниг, не работает. Процедура обмена не включается. (((
8. ikar-nikolay 104 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 104 01.11.12 10:01 Сейчас в теме
(10) hasan-rusel, попробуйте ещё прописать ключ:
/DisableStartupMessages
может поможет.
Кстати, спасибо за идею! Завтра попробуем с удаленным программистом после описанного в статье обмена РИБ прикрутить сохранение конфигурации (которое необходимо, если вносились изменения в главном узле и эти изменения ушли по РИБу в подчиненный узел). Если победим - то перевыложу .bat файл.
12. hasan-rusel 11 01.11.12 12:04 Сейчас в теме
(11) Если получиться, то отпишите пожалуйста строку с сохранением конфигурации!
Оставьте свое сообщение