Как обновить модуль в справочнике 1с
В свое время не смог найти краткой инструкции по обновлению, поэтому пишу эту статью.
Помните анекдот про молодых охотников и медведя. Так вот – главное не бояться.
Статья предназначена для самых начинающих, коими все когда-то были.
Итак, у нас должна быть копия рабочей базы с идентичной конфигурацией, на которой мы и будем выполнять обновление с последующей загрузкой cf-файла в рабочую базу.
Выгружаем конфигурацию рабочей базы в cf-файл.
Сравниваем выгруженную рабочую конфигурацию с конфигурацией нашей копии – они должны быть идентичны. Если нет, то можем снять конфигурацию копии с поддержки и полностью загрузить конфигурацию из файла.
Подготавливаем файл обновления (скачиваем с сайта 1С и устанавливаем какую-нибудь свою папку).
В копии нажимаем: Конфигурация – Поддержка – Обновить конфигурацию.
Устанавливаем переключатель на «Выбор файла обновления» и указываем наш файл обновления. Нажимаем «Готово». Ждем, когда выполнится сравнение.
После того как появилось окно сравнения, первым делом снимаем галочку с корневого элемента конфигурации.
Потом заходим в настройки и ставим галочку разрешить удаление – это важно иначе можем получить ошибки после обновления
Потом заходим в фильтр и устанавливаем «Показывать отличия новой конфигурации поставщика от старой конфигурации поставщика».
При этом фильтре устанавливаем галку на корневом элементе конфигурации – у нас выберутся все необходимые объекты.
Заходим опять в фильтр, оставляем «Показывать отличия новой конфигурации поставщика от старой конфигурации поставщика», и устанавливаем галку «Показывать только дважды измененные свойства» - это те объекты поставщика, в которые вносили изменения мы и есть изменения в новой конфигурации поставщика – вот с ними нам и нужно разбираться.
Применяем фильтр – ну вот объектов значительно меньше и уже не так страшно (помним – главное не бояться).
У ролей и тех объектов, у которых изменен состав – устанавливаем «объединить с приоритетом новой конфигурации поставщика».
У модулей в колонке «Режим объединения и порядок подчинения» нажимаем «Открыть».
Анализируем процедуры и функции модуля и по каждой принимаем решение (см галочки и режим объединения). Зачастую бывает достаточно установки или снятия необходимых галочек - галочка снимается, если в процедуре только наши изменения (для этого и нужны комментарии) или оставляется, если в процедуре только изменения поставщика.
Если в новой конфигурации поставщика отсутствует типовая процедура (не наша) то нужно установить галочку (режим объединения – Удалить).
Если есть изменения и наши и поставщика – то нужно режим объединения установить «объединить». Записать в каком модуле, в какой процедуре, какие изменения и после объединения откорректировать соответствующий модуль. Т.е. например, ставим «объединить с приоритетом новой конфигурации», а потом снимаем комментарии с наших изменений (программа закомментирует наши изменения).
Самое неприятное – изменение форм. Для того чтобы понять что менялась сама форма а не просто модуль, делаем следующее: встаем на необходимый объект, нажимаем правую кнопку мыши и выбираем «Отчет о сравнении объектов».
Далее делаем настройку как показано на скриншоте. И анализируем изменения.
Возможно, достаточно будет объединить форму с приоритетом новой конфигурации поставщика или вовсе взять из файла, если модуль формы не менялся.
После всех корректировок нажимаем «Выполнить», игнорируем страшные предупреждения программы если они появляются и не соглашаемся на предложения включить дополнительные объекты в объединение (мы же до этого все делали правильно правда?) Делаем в итоговой конфигурации необходимые изменения. Сохраняем конфигурацию и обновляем конфигурацию базы данных. Запускаем 1С Предприятие и проводим обновление. Проверяем, что ключевые документы открываются и проводятся без ошибок. Сохраняем конфигурацию в файл.
Далее делаем копию рабочей базы. Копию нужно делать средствами SQL если база серверная или копированием соответствующей папки если файловая. Файл dt не подойдет. То, что вы выгрузите этот файл, еще не гарантия что вам удастся его загрузить, к тому же выгрузка/загрузка dt на больших базах занимает много времени.
Заходим в конфигуратор рабочей базы и через сравнение и объединение проверяем с файлом конфигурации, который мы выгружали из этой базы – конфигурации должны быть идентичны. Снимаем конфигурацию с поддержки (вы же помните – главное не бояться). Конфигурация – Поддержка – Настройка поддержки – Снять с поддержки. Сохраняем. Загружаем конфигурацию из файла (Конфигурация – Загрузить конфигурацию из файла – Выбираем наш файл конфигурации, который мы выгрузили из копии).
После загрузки сохраняем конфигурацию, обновляем информационную базу. Проводим обновление в режиме предприятия. Ждем отзывов от благодарных пользователей.
Так можно накатить сразу несколько релизов (на копии мы последовательно накатываем релизы с обновлением в режиме предприятия), а на рабочую базу накатываем общий получившийся в результате этого фай cf.
Под формой объекта данных в статье подразумевается форма ссылочного объекта (элемента справочника, документа и т.д.) или форма записи независимого регистра сведений.
Пусть в объекте есть строковый реквизит Наименование, длину значения которого мы хотим отображать на форме этого объекта. Добавляем в форму реквизит ДлинаСтроки типа Число и отображаем его в одноименное нередактируемое поле.
Также пусть в объекте есть реквизит типа ХранилищеЗначения, тип которого мы также хотим отображать в форме. Добавляем в форму реквизит ТипЗначенияВХранилище типа Строка и отображаем его в одноименное нередактируемое поле.
В каких же ситуациях нам потребуется обновлять эти косвенно связанные с объектом реквизиты?
Разумеется это нужно вызывать в событии ПриИзменении поля Наименование. А вот дальше многие ограничиваются только вызовом в ПриСозданииНаСервере[упр] и ПриОткрытии[обыч]. Тем самым они не учитывют
- Возможность выполнения пользователем команды "Перечитать" формы.
В управляемой форме она всегда вызывает событие ПриЧтенииНаСервере.
В обычной форме она вызывает событие ПриИзмененииДанных только в модифицированном состоянии формы. В немодифицированном состоянии команда делает ничего. - Возможность изменения объекта в событии ПередЗаписью объекта.
Форма отправляет на запись одно состояние объекта, а после выполнения записи получает другое.
Примеры использования команды "Перечитать"
Случай 1
Объект данных, отображаемый в форме, мог быть изменен в БД с момента его загрузки в форму. Типичные способы таких изменений
- в другой форме в этом же клиентском приложении
- этим же пользователем в другом клиентском приложении в этой же базе
- другим пользователем
- фоновым процессом
Тогда при попытке начать изменение любого поля формы, напрямую связанного с данными (флаг "Изменяет данные"), пользователь увидит предупреждение "Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)!"
Это результат срабатывания так называемой оптимистической объектной блокировки. Она гарантирует, что если пользователь изменяет объект, то его изменения не «затрут» изменения, сделанные другими сеансами или другими программными объектами этого же сеанса. И тогда, чтобы получить возможность редактировать объект, нужно будет его перечитать либо переоткрыть форму.
Случай 2
Пользователь изменил данные в форме и решил отменить сделанные изменения, но продолжить редактировать объект от его текущего состояния в БД.
В каких событиях обновлять форму?
Чтобы учесть все эти тонкости, нужно всю логику обновления косвенно связанных с объектом элементов формы поместить в процедуру ПриСозданииПриЧтенииНаСервере и вызывать ее из следующих обработчиков событий формы:
Управляемая форма
- ПриСозданииНаСервере - вызываем в конце тела обработчика, но имеем доступ только к объекту в реквизите формы
- ПриЧтенииНаСервере - имеем доступ ко всем данным объекта
- ПослеЗаписиНаСервере - имеем доступ ко всем данным объекта и вызываем потому, что объект мог измениться в событии ПередЗаписью объекта
Обычная форма
- ПриИзмененииДанных - событие вызывается и для нового и для существующего объекта
- ПослеЗаписи - вызываем потому, что объект мог измениться в событии ПередЗаписью объекта
Управляемая форма
В управляемой форме при открытии существующего объекта выполняются два обработчика: сначала ПриЧтенииНаСервере и затем ПриСозданииНаСервере. Поэтому процедура ПриСозданииПриЧтенииНаСервере будет вызываться 2 раза подряд и нужно не задублировать выполнение логики обновления формы. Элементы формы могут зависеть как от данных объекта, доступных через реквизит формы, так и от недоступных через него (реквизиты типа ХранилищеЗначений), которые доступны только одном из них (ПриЧтенииНаСервере). Поэтому в процедуре ПриСозданииПриЧтенииНаСервере надо предусмотреть оба вызова таким образом, чтобы при создании формы существующего объекта при ее вызове из ПриЧтенииНаСервере выполнилась только логика работы с хранилищами значений, а при последующем вызове из ПриСозданииНаСервере выполнилась только логика, зависящая от остальных данных объекта. При этом ее вызов из уже открытой формы (из ПриЧтенииНаСервере и ПослеЗаписиНаСервере) должен выполнять все действия. Для этого создадим в общем модуле функцию ЭтоВызовПослеОткрытияФормы, где будем проверять наличие параметра ТолькоПросмотр у формы. Тогда процедура ПриСозданииПриЧтенииНаСервере будет выглядеть так
Из процедуры ПриСозданииПриЧтенииНаСервере можно выделить всю легкую клиентскую логику в процедуру НастроитьЭлементыФормы с директивой НаКлиентеНаСервереБезКонтекста. Такую легкую и доступную во всех контекстах формы процедуру можно звать при большинстве изменений реквизитов, которые должны менять косвенно связанные элементы формы.
Пример модуля управляемой формы
Обычная форма
В обычной форме благодаря наличию события ПриИзмененииДанных логику обновления формы можно помещать прямо в его обработчик. Здесь также стоит вынести всю легкую логику в процедуру НастроитьЭлементыФормы по аналогии с управляемой формой.
Пример модуля обычной формы
Применяю данную методику уже много лет.
Прикладываю выгрузку демонстрационной базы, где на примере справочника и регистра сведений показаны все описанные в статье проблемы и сама методика.
Перед обновлением рекомендуется сделать архивную копию базы (меню "Администрирование" – "Выгрузить информационную базу. ").
Обновление модуля обмена
1. Запустите базу "1С:Предприятие" в режиме "Конфигуратор", используя логин и пароль пользователя, обладающего полными правами. В случае, если дерево конфигурации не отображается, нажмите на кнопку "Открыть конфигурацию".
2. Выберите пункт "Сравнить, объединить с конфигурацией из файла…", указав файл обновления (*.cf)
Переход к сравнению и объединению конфигураций.
3. В дереве сравнения отключите флажок у ветки "Свойства", все остальные флажки оставьте как есть
Флаг "Свойства" необходимо снять.
Таким образом, флажки будут установлены для всех объектов "Первой Формы", которые подлежат обновлению. После этого нажмите кнопку Выполнить (внизу формы сравнения).
4. Обновите конфигурацию информационной базы.
Обновление конфигурации БД.
Отправка обновленной конфигурации БД.
Обновление модуля обмена, выпущенного в 2016 году и ранее
При обновлении модуля обмена, выпущенного в 2016 году или ранее, необходимо удалить устаревшие и ненужные объекты подсистемы обмена, в частности, операции web-сервиса rg1CTCService .
1. Запустите базу "1С:Предприятие" в режиме "Конфигуратор", используя логин и пароль пользователя, обладающего полными правами. В случае, если дерево конфигурации не отображается, нажмите на кнопку "Открыть конфигурацию".
2. Выберите пункт "Сравнить, объединить с конфигурацией из файла…", указав файл обновления (*.cf)
Переход к сравнению и объединению конфигураций.
3. В дереве сравнения отключите флажок у ветки "Свойства", все остальные флажки оставьте как есть.
Флаг "Свойства" необходимо снять.
4. В настройках включите флажок удаления объектов основной конфигурации.
Включить удаление объектов основной конфигурации.
В платформе "1С:Предприятие" версии ниже 8.3.6 кнопка настроек находится внизу окна сравнения.
Включить удаление объектов основной конфигурации на платформе"1С:Предприятие" версии ниже 8.3.6.
5. В дереве сравнения разверните ветку web-сервисы и включите флажок у корня ветки web-сервиса rg1CTCService.
Включить удаление веб-сервиса.
После этого нажмите кнопку Выполнить (внизу формы сравнения).
6. Обновите конфигурацию информационной базы.
Обновление конфигурации БД.
Для правильной работы необходима своевременная установка обновлений, которые отражают изменения законодательства, содержат новую функциональность, исправления возможных ошибок. Обновление производится по команде Администрирование – Обслуживание – Обновление программы – Установка обновлений .
Помощник установки обновлений позволяет провести обновление из файла обновления в локальном, сетевом каталоге (например, с диска 1С:ИТС) или выполнить автоматический поиск обновления в Интернете.
По гиперссылке Поиск и установка обновлений производится поиск обновлений в указанном месте, и если такое обновление найдено, то выводится информация об обновлении: номер версии, размер файла (Мб) и ссылка на описание нового в этой версии.
Если обновление найдено, для начала процедуры обновления необходимо выполнить команду Далее .
Прежде чем продолжить обновление конфигурации, необходимо выполнить следующие действия:
После завершения обновления конфигурации программа будет запущена заново. При первом запуске обновленной конфигурации будет выполнено обновление информационной базы в соответствии с изменившейся версией конфигурации.
9.2. Резервное копирование информационной базы
С целью уменьшения риска потери данных администратору системы необходимо регулярно выполнять резервное копирование ИБ. Частота создания резервных копий зависит от интенсивности ввода новых данных в ИБ.
Система позволяет создавать резервные копии ИБ в режиме 1С:Предприятие . Резервное копирование может выполняться как в автоматическом режиме, так и в ручном. Для автоматического режима предварительно необходимо выполнить настройки. В любой момент времени можно восстановить данные ИБ из созданной ранее резервной копии.
Использование данного функционала предусмотрено только для файлового варианта работы. В случае клиент-серверного варианта для создания резервных копий рекомендуется использовать средства СУБД.
Для работы с резервными копиями у администратора системы должна быть установлена роль Полные права .
В форме Создание резервной копии указывается каталог хранения архивов и выполняется команда Сохранить резервную копию .
9.2.1. Настройка автоматического резервного копирования
Помощник Настройка резервного копирования информационной базы открывается командой Настройка резервного копирования в разделе Администрирование – Обслуживание – Резервное копирование и восстановление .
На странице настройки резервного копирования можно задать способ резервного копирования: по расписанию или при завершении работы системы.
Если выбран пункт Выполнять резервное копирование по расписанию , то становятся доступны поле Расписание и команда Изменить . В поле Расписание можно выбрать одно из четырех расписаний, настроенных по умолчанию. Если предложенные варианты расписаний не устраивают администратора, то он с помощью команды Изменить может настроить свое, взяв за основу существующее и наиболее подходящее расписание. Если к моменту запуска резервного копирования система не будет запущена, то резервное копирование не выполнится.
Если выбран пункт Выполнять резервное копирование при завершении работы , то при каждом выходе из системы администратору будет предлагаться выполнить резервное копирование ИБ. Если в ИБ одновременно работают два и более администратора с ролью Полные права , то предложение о резервном копировании будет выдано последнему администратору, который выходит из системы.
На этой же странице помощника необходимо указать каталог, куда будут сохраняться резервные копии ИБ. Для того чтобы со временем не возникало переполнения дискового пространства из-за большого количества старых резервных копий, в помощнике можно установить флажок Хранить ограниченное количество резервных копий и задать либо число резервных копий, либо период, за который они будут храниться (например, за последний месяц).
9.2.2. Процедура резервного копирования
При наступлении времени выполнения резервного копирования система установит блокировку ИБ и завершит работу всех пользователей. При этом будет открыта форма, в которой по гиперссылке Активные пользователи можно открыть список подключений к ИБ. Более подробную информацию о блокировке ИБ, завершении работы пользователей и о списке Активные пользователи можно найти в разделе «Завершение работы пользователей».
Если система не сможет завершить работу всех пользователей, то примерно через 5 минут она предложит выполнить резервное копирование при подключенных к ИБ пользователях. С предложением системы можно согласиться, если администратор уверен в том, что подключенные пользователи не вводят данные в ИБ (например, если пользователи в конце рабочего дня забыли выйти из системы). В противном случае необходимо завершить сеансы пользователей на их рабочих местах.
После завершения работы всех пользователей система выполнит резервное копирование.
Для того чтобы войти в информационную базу, если резервное копирование не выполнилось, необходимо запустить «1С:Предприятие» с параметрами:
ENTERPRISE /F <путь к информационной базе> /CРазрешитьРаботуПользователей /UC РезервноеКопирование.
9.2.4. Восстановление данных из резервной копии
В любой момент времени можно восстановить данные ИБ из созданной ранее резервной копии. Все данные в восстановленной ИБ будут актуальны на момент создания копии. Данные, введенные в ИБ после создания резервной копии, будут отсутствовать в восстановленной ИБ.
Для восстановления данных из резервной копии используется помощник Восстановление данных информационной базы из резервной копии .
В помощнике необходимо указать путь к файлу с резервной копией. Помощник позволяет перед восстановлением данных создать резервную копию. Если установить соответствующий флажок, то потребуется указать папку, в которую помощник сохранит резервную копию.
После восстановления система будет перезапущена, поэтому если у администратора для авторизации в системе задан пароль, то на последней странице помощника необходимо его указать. Нажав на кнопку Готово , можно завершить работу помощника. После этого система установит блокировку ИБ и завершит работу всех пользователей, выполнит резервное копирование (если это задано пользователем) и восстановит данные ИБ из указанной резервной копии.
9.3. Тестирование и исправление информационной базы
В процессе работы системы «1С:Предприятие 8» могут возникать различные нештатные ситуации: отключение питания компьютера, «зависание» операционной системы, сбои оборудования и прочее. Такие ситуации, возникшие в процессе записи изменений в информационную базу системы «1С:Предприятие 8», могут привести к ее некорректному состоянию. Внешние проявления некорректного состояния информационной базы могут быть различными, вплоть до невозможности открыть информационную базу в режиме 1С:Предприятие .
Для диагностики и устранения ошибочных состояний информационных баз предназначена процедура Тестирование и исправление информационных баз , которая запускается в режиме Конфигуратор выбором главного меню Администрирование – Тестирование и исправление .
9.4. Автономное исправление информационной базы
В комплект поставки входит утилита восстановления файлового варианта базы данных chdbfl.exe . Утилита предназначена для автономной проверки и исправления файла информационной базы 1Cv8.1CD (то есть без запуска программы «1С:Клиент ЭДО 8»).
Перед использованием утилиты рекомендуется сделать резервную копию информационной базы. Необходимо закрыть программу «1С:Клиент ЭДО 8».
На экран будет выведено окно утилиты.
1. В окне утилиты в поле Имя файла БД нужно указать путь к файлу информационной базы.
2. Чтобы обнаруженные при проверке ошибки сразу исправлялись, установить флажок Исправлять обнаруженные ошибки .
3. Нажать кнопку Выполнить .
9.5. Завершение работы пользователей
Для администратора в программе предусмотрена возможность завершать работу пользователей и блокировать вход в программу на определенный период времени. Такая возможность востребована для проведения профилактических или срочных работ в программе. Обычно такие работы проводят в ночные часы, для того чтобы не затруднять работу в программе других пользователей. Однако бывают различные внеплановые ситуации. Например, необходимость провести обновление версии программы, восстановление после сбоя электроснабжения, резервное копирование информационной базы. Большинство этих работ не могут быть проведены, если пользователи продолжают работать в программе.
Также имеется возможность просмотра списка активных пользователей и перехода к записям журнала регистрации по интересующему пользователю. При работе в клиент-серверном варианте возможно отключение пользовательских сеансов непосредственно из списка активных пользователей, а также блокировка работы регламентных заданий.
9.5.1. Блокировка работы пользователей
В разделе Администрирование – Обслуживание необходимо перейти по ссылке Блокировка работы пользователей .
Заполнить необходимые для блокировки параметры:
Для включения возможности управления блокировкой регламентных заданий необходимо перейти по одноименной ссылке.
В открывшемся окне Управление блокировкой регламентных заданий ввести:
После ввода параметров администрирования ИБ нажать кнопку OK для возврата в окно Блокировка работы пользователей .
Далее нажать кнопку Установить блокировку , для того чтобы заблокировать работу пользователей. Предварительно программа запрашивает подтверждение администратора.
Открывается окно Блокировка работы пользователей . Нажав на кнопку Остановить , администратор может отменить блокировку.
При наступлении времени блокировки будет автоматически предпринята попытка завершить сеансы работы всех пользователей. Перед блокировкой программа выдает запросы о необходимости сохранения данных и завершения работы. Войти в программу с этого момента будет невозможно, блокировка будет продолжаться до указанного администратором времени. При этом будут выполнены стандартные действия при завершении работы – запрос на завершение (если пользователь настроил себе подтверждение закрытия).
Нужно иметь в виду, что к моменту начала блокировки в программе могут существовать «зависшие» сеансы (например, если пользователи в конце рабочего дня забыли выйти из программы, программа зависла или был запущен сложный отчет). Посмотреть данные о текущих сеансах работы с программой можно в списке Активные пользователи (подробнее см. раздел «Список активных пользователей»). Гарантированное завершение всех пользовательских сеансов возможно только в клиент-серверном варианте программы. В файловом варианте программы требуется завершить «зависшие» сеансы пользователей на их рабочих местах, а также, если необходимо, завершить другие программы, которые подключены к базе по внешнему соединению (COM) или с помощью веб-сервисов.
При попытке войти в программу в период действия блокировки появится предупреждение с инструкцией для администратора. Для того чтобы разрешить работу пользователей, администратору предлагается произвести запуск программы с параметрами. Подробнее см. раздел «Снятие блокировки работы пользователей».
Нужно нажать кнопку Выполнить запуск , чтобы попытаться еще раз запустить программу, или кнопку Отмена , для того чтобы прекратить попытки и закрыть программу.
9.5.2. Снятие блокировки работы пользователей
После наступления указанного администратором срока блокировка работы пользователей снимается автоматически.
Снять блокировку сеансов досрочно можно следующим способом: не завершая работу в программе, после окончания запланированных работ перейти по ссылке Блокировка работы пользователей в разделе Администрирование – Обслуживание , нажать кнопку Снять блокировку .
9.5.3. Список активных пользователей
С помощью ссылки Активные пользователи раздела Администрирование – Поддержка и обслуживание можно перейти к списку пользователей, которые в настоящий момент времени работают в программе. В списке также отображаются внешние пользователи, сеансы, установленные в других режимах подключения (например, соединения, которые производились из других программ через внешние соединения (СОМ) или веб-сервисы). Режим подключения можно увидеть в колонке Приложение . Кроме этого в списке указаны сетевое имя компьютера, с которого выполнен вход в программу, время начала работы и номер сеанса, а также разделение данных.
В клиент-серверном варианте работы имеется возможность Завершить сеанс любого выбранного пользователя (кроме текущего) с помощью кнопки панели навигации или команды меню Еще .
С помощью команд меню Еще можно выполнить сортировку пользователей в списке (по возрастанию и убыванию), а также обновить список.
Для анализа работы выбранного пользователя в списке Активные пользователи необходимо нажать кнопку Журнал регистрации .
Читайте также: