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

08.09.14

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Обработка обновления конфигурации ИБ
.epf 6,90Kb
19
19 Скачать (1 SM) Купить за 1 850 руб.
Первоисточник: Автоматическое обновление конфигурации в узлах РИБ

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

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

...

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

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

...	

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


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

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

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

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


РИБ

См. также

Перенос данных 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    57077    266    75    

221

SALE! 15%

Перенос данных 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    146491    861    300    

443

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    74810    202    156    

140

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    171639    365    283    

394

Перенос данных 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    26731    192    56    

146

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    38760    108    70    

103

SALE! 10%

Перенос данных 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    189715    618    534    

537

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

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

12000 руб.

25.09.2016    83190    346    254    

295
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. premierex 207 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 207 13.09.14 10:49 Сейчас в теме
Автор комментария очень внимательно изучил предложенный вариант обмена с распределённой базой и, поскольку не один раз приходилось организовывать такой обмен, написал комментарий потому, что небольшая доработка типового функционала позволяет полностью автоматизировать процесс обмена. Велосипед уже изобрели, надо только его немного усовершенствовать! Я понимаю, конечно, что критика, а именно она больше всего присутствовала в моём комментарии, не всегда воспринимается авторами публикаций в позитивном плане. Ну что же, все варианты имеют право на существование, согласен.
А в полемику, действительно, вступать нет смысла... Я всего лишь хотел обратить внимание автора публикации на то, что задачи программиста, как правило, нацелены на автоматизацию бизнес-процессов организации и снижение трудозатрат пользователей, чего я не увидел в предложенном варианте.

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

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

Есть ли возможность такая как получить логин и праоль админ. учетки в 1С и потом уже под этими данными входить для обновления?
6. VZhulanov 5 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 Сейчас в теме
Всем Спасибо. Ушел я от батников.))
Оставьте свое сообщение