Автоматическое обновление конфигурации периферийной ИБ

08.09.14

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

По мотивам публикации "Автоматическое обновление конфигурации в узлах РИБ" от автора fixin. Еще один вариант облегчить жизнь администратора по обновлению конфигурации в узлах РИБ. Избавлен от ряда недостатков первоисточника.

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

Наименование Файл Версия Размер
Обработка обновления конфигурации ИБ
.epf 6,90Kb
19
.epf 6,90Kb 19 Скачать
Первоисточник: Автоматическое обновление конфигурации в узлах РИБ

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

Перем глОтображеноПредупреждениеКонфРИБ Экспорт;

...

// Проверка на обновление конфигурации РИБ для кассиров с выдачей предупреждения
Функция ПроверкаНаОбновлениеКонфигурации() Экспорт
	Если КонфигурацияИзменена() И НЕ глОтображеноПредупреждениеКонфРИБ Тогда
		глОтображеноПредупреждениеКонфРИБ = Истина;
		
		Предупреждение(
			"ВНИМАНИЕ!!! ПРИНЯТО ИЗМЕНЕНИЕ КОНФИГУРАЦИИ." + Символы.ПС + Символы.ПС +
			
			"Закройте 1С на всех компьютерах и запустить программу с полными правами" + Символы.ПС + 
			"После запуска необходимо согласиться на обновление конфигурации." + Символы.ПС + 
			"В противном случае обмен с учетной системой офиса производиться не будет!", 30, "Обновление конфигурации"
		);
		
		глОтображеноПредупреждениеКонфРИБ = Ложь;
	КонецЕсли;
КонецФункции

// Обновление конфигурации в узле
Функция ОбновитьКонфигурациюБазыДанныхРИБ() Экспорт
	//Если конфигурация изменена, тогда нужно выполнить ее обновление...
	
	флОбновлять = Ложь;
	
	Если КонфигурацияИзменена() И НЕ глОтображеноПредупреждениеКонфРИБ Тогда    
		глОтображеноПредупреждениеКонфРИБ = Истина;
		
		Если Вопрос(
			"ВНИМАНИЕ!!! ПРИНЯТО ИЗМЕНЕНИЕ КОНФИГУРАЦИИ. РЕКОМЕНДУЕТСЯ ИХ ПРИНЯТЬ." + Символы.ПС + Символы.ПС +
			
			"Закройте 1С на всех компьютерах торговой точки и нажмите ""ДА"" для обновления." + Символы.ПС +
			"Если вы хотите продолжать работу без обновления (не рекомендуется) нажмите ""НЕТ""." + Символы.ПС +
			"При отказе от немедленного обновления, обязательно сделайте его в ближайшее время."+ Символы.ПС +
			"В противном случае обмен с учетной системой офиса производиться не будет!"+ Символы.ПС + Символы.ПС +
			
			"ОБНОВИТЬ КОНФИГУРАЦИЮ?", РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Нет, "Обновление кнфигурации", КодВозвратаДиалога.Нет) = КодВозвратаДиалога.Да 
		Тогда
			флОбновлять = Истина;
		КонецЕсли;
		
		Если НЕ флОбновлять Тогда
			Сообщить(Формат(ТекущаяДата(), "ДЛФ=В")+", отказ от обновления конфигурации");
			глОтображеноПредупреждениеКонфРИБ = Ложь;
			
			Возврат Ложь;
		КонецЕсли;
		
		//Смотрим, чтобы в базе никого не сидело
		Попытка
			УстановитьМонопольныйРежим(Истина); 
		Исключение
			Предупреждение("Ошибка захвата базы в монопольном режиме!" + Символы.ПС + ОписаниеОшибки());
			глОтображеноПредупреждениеКонфРИБ = Ложь;
			
			Возврат Ложь;
		КонецПопытки;
		
		Предупреждение(
			"Работа системы будет завершена для обновления конфигурации" + Символы.ПС + Символы.ПС +
			
			"ВНИМАНИЕ!!!" + Символы.ПС +
			"После обновления конфигурации НЕОБХОДИМО ПОВТОРНО ПРОИЗВЕСТИ ОБМЕН!!!" + Символы.ПС + 
			"В противном случае все изменения, полученные из центральной ИБ, обработаны не будут!",30, "Завершение обновления"
		);
		
		глОтображеноПредупреждениеКонфРИБ = Ложь;
		
		ЗавершитьРаботуСистемы(Ложь, Истина, " CONFIG /UpdateDBCfg /Visible ");
	КонецЕсли;
	
	Возврат флОбновлять;
КонецФункции
   
// Процедура выполняется перед нначалом работы системы
//
Процедура ПриНачалеРаботыСистемы()
	// Проверка обновления конфы в РИБ
	глОтображеноПредупреждениеКонфРИБ = Ложь;
	Если ПланыОбмена.ГлавныйУзел() <> Неопределено И ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
		Если РольДоступна(Метаданные.Роли.ПолныеПрава) Тогда
			Если ОбновитьКонфигурациюБазыДанныхРИБ() Тогда
				Возврат;
			КонецЕсли;
			
			// Проверка обновления в узле РИБ раз в 5 минут под полными правами
			ПодключитьОбработчикОжидания("ОбновитьКонфигурациюБазыДанныхРИБ", 300);
		Иначе
			// Проверка обновления в узле РИБ раз в 30 минут под кассирами
			ПодключитьОбработчикОжидания("ПроверкаНаОбновлениеКонфигурации", 1800);
		КонецЕсли;
	КонецЕсли;
...
Для стандартных конфигураций дополнительно можно вставить проверку изменения конфигурации после завершения интерактивного обмена в общем модуле "ПроцедурыОбменаДанными":
// регистрирует что обмен был произведен и фиксирует информацию в протоколе
Процедура ЗафиксироватьЗавершениеОбмена(СтруктураДанныхНастройкиОбмена, Знач СтрокаСообщенияОбОшибке = "", 

...	

	#Если Клиент Тогда
		Если 
			СтруктураДанныхНастройкиОбмена.РучнойРежимЗапуска И 
			СтруктураДанныхНастройкиОбмена.ДанныеНастройкиАвтообмена = Неопределено	
		Тогда
			// для On Line обменов показываем отдельную форму завершения обмена
			ФормаПоказа = ПолучитьОбщуюФорму("ФормаРезультатOnLineОбмена");
			ФормаПоказа.НаборЗаписейИстории = НаборЗаписейИстории;
			ФормаПоказа.Открыть();
			
			Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
				ОбновитьКонфигурациюБазыДанныхРИБ();
			КонецЕсли;
		КонецЕсли;
	#КонецЕсли
    	
КонецПроцедуры


Я прекрасно понимаю что фразы предупреждений и вопросов не универсальны. Но целью публикации было предложить не тиражное решение, а технологию для облегчения жизни администраторам РИБ. Да, самый важный вопрос: ЧЕМ ЭТО ЛУЧШЕ ЧЕМ В ПЕРВОИСТОЧНИКЕ? Считаю такой вариант предпочтительнее чем в Автоматическое обновление конфигурации в узлах РИБ по следующим причинам:

  1. В первоисточнике строка запуска предполагает заранее известные имя и пароль пользователя для обновления, что накладывает жесткие ограничения на тиражирование решения на различные ИБ, в данном случае решение универсально: запуск конфигуратора происходит от имени пользователя в сеансе которого запущена процедура обновления и повторной регистрации не требуется
  2. Мелочь, но! Черное окно запуска скрипта не эстетично смотрится :) в данном случае оно отсутствует
  3. Совсем мелочь, но! НУ НЕ НРАВИТСЯ МНЕ УСЛОВНЫЙ ПЕРЕХОД НА МЕТКУ!!! хоть автор и убеждает что дескать так надо... но глаз режет :)

Как пример работы процедуры, прилагаю обработку для обновления конфигурации ИБ в режиме enterprise

З.Ы. Мелкий совет: отключить надоедливое предупреждение при старте о том что конфигурация БД не соответствует сохраненной конфигурации можно при помощи параметра запуска /DisableStartupMessages. При использовании описанной в публикации технологии практический смысл такого предупреждения равен нулю!


РИБ

См. также

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    159265    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    134590    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    20086    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    231085    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    34031    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    68191    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    46015    194    64    

153
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. premierex 204 11.09.14 13:38 Сейчас в теме
1.
>> В первоисточнике строка запуска предполагает заранее известные имя и пароль пользователя для обновления, что
>> накладывает жесткие ограничения на тиражирование решения на различные ИБ
В первоисточнике, насколько я знаю, имя и пароль пользователя можно указать прямо на форме, а в скрипт они подставятся в момент его генерации.

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

2.
>> Мелочь, но! Черное окно запуска скрипта не эстетично смотрится :)
А кто мешает написать скрипт на другом языке (vbscript или jscript, например, и запускать его с помощью wscript)? Никаких чёрных окон!
"Черное окно запуска скрипта", между прочим, несёт пользователю информацию о стадиях процесса обновления и избавляет его от лишних действий в процессе обмена.
Кстати, альтернативное решение "черному окну" есть, например, в типовой БП 2.0 - обработка "ОбновлениеКонфигурации".

3.
>> Совсем мелочь, но! НУ НЕ НРАВИТСЯ МНЕ УСЛОВНЫЙ ПЕРЕХОД НА МЕТКУ!!! хоть автор и убеждает что дескать так надо... >> но глаз режет :)
Ну уж таков скриптовый язык bat-файлов. По мне - лишь бы работало и помогало автоматизировать рутинные процессы, а не возлагать их выполнение на пользователя.

4.
>> "После обновления конфигурации НЕОБХОДИМО ПОВТОРНО ПРОИЗВЕСТИ ОБМЕН!!!"
А в типовом варианте повторно производит обмен вышеуказанный скрипт с черным окном, а не пользователь.

Вопрос: а для чего же автор всё это писал? Для удобства работы пользователя или для себя, чтобы "глаз не резало"?
2. Berrimor 198 11.09.14 13:05 Сейчас в теме
(1) ВНИМАТЕЛЬНО!!! смотрите первоисточник практически по всем пунктам комментарии не по месту, и означают только то что автор коммента не разбирался в деталях предложенного fixin метода, хотел писать почему, но..... не вижу смысла вступать в полемику :) давайте демократично: приведенный мной вариант имеет право на существование, но это не означает что первоисточник не имеет
3. premierex 204 13.09.14 10:49 Сейчас в теме
Автор комментария очень внимательно изучил предложенный вариант обмена с распределённой базой и, поскольку не один раз приходилось организовывать такой обмен, написал комментарий потому, что небольшая доработка типового функционала позволяет полностью автоматизировать процесс обмена. Велосипед уже изобрели, надо только его немного усовершенствовать! Я понимаю, конечно, что критика, а именно она больше всего присутствовала в моём комментарии, не всегда воспринимается авторами публикаций в позитивном плане. Ну что же, все варианты имеют право на существование, согласен.
А в полемику, действительно, вступать нет смысла... Я всего лишь хотел обратить внимание автора публикации на то, что задачи программиста, как правило, нацелены на автоматизацию бизнес-процессов организации и снижение трудозатрат пользователей, чего я не увидел в предложенном варианте.

P.S.
>> ВНИМАТЕЛЬНО!!! смотрите первоисточник практически по всем пунктам комментарии не по месту, и означают только то >> что автор коммента не разбирался в деталях предложенного fixin метода, хотел писать почему...
Это, как я полагаю, обида на критику? Ещё раз соглашусь: все варианты имеют право на существование. Автор придумал новый вариант - молодец! Но на "плюс" не тянет.
4. jaroslav.h 180 27.12.14 13:38 Сейчас в теме
Попробовал ваш вариант, интересно и рабочий. Спасибо.
Но, это же нужно давать пользователям (в моем случаи кассирам пароль от админ. прав), а как раз то у нас специально и обрезаны права кассира, что бы он не видел некую информацию, а коль даем пароль от админ. учетки значит смысла нет в ограничениях.

И админы на всех РИБ не уникальны у меня ) капец ), что бы еще придумать можно было?

Есть ли возможность такая как получить логин и праоль админ. учетки в 1С и потом уже под этими данными входить для обновления?
6. VZhulanov 4 12.03.15 05:18 Сейчас в теме
(4) myr4ik07, (1) premier
Во первых, вы оба не совсем внимательно, по моему, смотрели код. Там указано
Если РольДоступна(Метаданные.Роли.ПолныеПрава) Тогда
...


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


Ну а при завершении работы просто указывать в параметрах этого пользователя:
ЗавершитьРаботуСистемы(Истина,Истина,"CONFIG /UpdateDBCfg /Visible /NAuto_Exchange /Ppassword");


И все ваши проблемы с правами исчезли, так как даже кассир может запустить обновление системы, даже не подозревая о существовании служебного пользователя и пароля.
5. Berrimor 198 28.12.14 07:51 Сейчас в теме
нет, такой возможности нет
7. nic_sanyy 19.02.20 07:07 Сейчас в теме
Всем Спасибо. Ушел я от батников.))
Оставьте свое сообщение