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

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. При использовании описанной в публикации технологии практический смысл такого предупреждения равен нулю!


РИБ

См. также

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 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

50722 45650 руб.

04.08.2015    165037    383    275    

369

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

26280 руб.

12.06.2017    140089    781    295    

408

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

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

28000 руб.

15.12.2021    23077    157    47    

116

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

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

84000 руб.

19.08.2020    24337    23    1    

25

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 | Можно проверить на вашем сервере перед покупкой

50722 45650 руб.

15.04.2019    71477    180    148    

120

SALE! 10%

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

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

50722 45650 руб.

24.04.2015    194115    148    242    

279

SALE! 10%

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

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

50722 45650 руб.

31.10.2014    235978    99    333    

304

SALE! 10%

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

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

48278 43450 руб.

03.12.2020    35990    90    62    

86
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 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 Сейчас в теме
Всем Спасибо. Ушел я от батников.))
Оставьте свое сообщение