Как в 1с подписаться на изменение файла
Работа в программном комплексе 1С осуществляется как одним человеком, так и группой людей. Соответственно, существует необходимость проверки вносимых в документы изменений. Речь идет о том, чтобы посмотреть кто, когда и какие корректировки вносил в определенный объект данных. Даже если пользователь всего один, но при этом абсолютный новичок, он может совершать ошибки. И в данном случае также необходима возможность просмотра истории изменений. Как и где это можно сделать в 1С рассмотрим в статье.
- Механизмы отслеживания изменения данных в базах 1С
- Настройки хранения история изменений
- Просмотр истории изменения в документе
- Сравнение версий объекта данных
- Переход на предыдущую версию
- Как включить версионирование в различных решениях 1С
- Как узнать кто менял документ с помощью журнала регистрации
- Как узнать с какими объектами данных работал пользователь?
- Групповое изменение данных (ГИД)
- Просмотр ранее измененных реквизитов
1. Механизмы отслеживания изменения данных в базах 1С
В рассматриваемом программном продукте существуют 3 механизма, которые помогают отследить корректировки:
- журнал регистрации;
- платформенный механизм истории данных;
- версионирование
Для того чтобы каждый из этих механизмов правильно работал необходимо изначально провести настройки.
2. Настройки хранения история изменений
Стоит отметить, что настройку можно включить как для всего объекта данных, так и выборочно для каких-то его частей. Например, только для реквизитов. Тем самым экономится место объема сохраненных данных. Для того, чтобы сохраненные корректировки не занимали места больше, чем сами объекты, с которыми производилась эта работа, необходимо грамотно настраивать механизм версионирования. В противном случае произойдет замедление работы всей программы. Включить сам механизм может либо сотрудник предприятия, работающий в системе, либо разработчик в конфигураторе.
Для того чтобы настроить хранение истории изменений, следует перейти в левом меню в раздел «Администрирование», далее в раздел «Общие настройки» и затем «История изменений».
В ходе решения различных задач пользователей иногда возникает необходимость уже сформированные движения документов (а именно определенные наборы регистров) подвергать какой-либо корректировке.
Например, возникла задача – нужно в платежные документы записывать определенные данные (информацию о направлениях деятельности компании) после формирования основных движений документа (сформированных в событии «ОбработкаПроведения»). Задача будем реализовывать на конфигурации «Управление производственным предприятием» ред. 1.3.
Давайте рассмотрим решение более подробно:
Создадим новую подписку на событие «ЗаписьНаправленияВПлатежки». У подписки существует ряд свойств, которые будут определять ее поведение:
Источник – это объект (например, документ или список документов) для которого будет вызываться действия. Для нашего случая – выберем Платежное поручение исходящее и Платежное поручение входящее
События – само действия, после которого будет выполняться наш код. Согласно условиям задачи, выберем ОбработкаПроведения
Обработчик – указание на процедуру, в которой будет происходить обработка. Выберем для этих целей общий модуль ОбщегоНазначения.
После вышеозначенных целей создается процедура, в которой необходимо поместить код для заполнения данных о направлении (предположим, что такая информация в платежках уже содержится).
Рассмотрим ее параметры:
Источник – этот объект вида СправочникОбъект или ДокументОбъект, для которого происходит действие.
Отказ – параметр, позволяющий отменить проведение документа при определенных условиях.
РежимПроведения – варианты проведения (оперативное или неоперативное), позволяющее по-разному строить алгоритмы обработки.
Остановимся на параметре Источник. Для нашей задачи тип этого параметра будет – ДокументОбъект. Для этого типа доступна коллекция Движения, которая содержит все наборы записей регистров, для которых данный документ является регистратором.
В данной коллекции содержится набор записей РасчетыСКонтрагентамиНаборЗаписей , который нас интересует. Допустим, что в регистре создано измерение Направление, которое нам необходимо заполнять из документа.
Напишем следующий код:
Плюсы данного подхода: обработка данных вне типовых алгоритмов, уменьшение объема работ по поиску и переносу изменений при обновлении, большая наглядность – весь код в одной процедуре.
Минус такого подхода: увеличение времени проведения документов и записи элементов справочников.
Надеюсь, данная информация будет полезна как начинающим программистам, так и их более опытным коллегам в качестве расширения кругозора.
Выдержка из описания новых возможностей платформы 8.2.14: "В модуле менеджера некоторых объектов реализовано событие "ОбработкаПолученияФормы", вызываемое на сервере при получении стандартной управляемой формы. С помощью данного события возможно переопределение открываемой формы. При явном указании открываемой формы событие не вызывается."
Подчеркнем еще раз, что обработчик этого события вызывается только для управляемых форм!
Выдержка из описания новых возможностей платформы 8.2.15: "Р еализована возможность создавать подписки на события модулей менеджеров".
Т.о. это дает возможность в случае необходимости внесения изменений в типовые формы прикладных объектов (или же полной их переделки) не вносить их непосредственно в сами типовые формы, а создавать свои собственные управляемые формы на основе типовых (или же с нуля) и уже в них производить поправки, предварительно создав необходимую подписку на событие, тем самым облегчая процедуру будущих обновлений конфигурации.
И наконец рассмотрим работу этого механизма на небольшои примере.
Создадим подписку на событие получения управляемой формы документа "Авансовый отчет". У общего модуля, в котором будет располагаться процедура-обработчик события, должны быть взведены флаги "Сервер" и "Вызов сервера", т.к. получение управляемой формы (как упоминалось выше) происходит на стороне сервера.
Процедура ОбработкаПолученияФормы ( Источник , ВидФормы , Параметры , ВыбраннаяФорма , ДополнительнаяИнформация , СтандартнаяОбработка ) Экспорт
Если ТипЗнч ( Источник ) = Тип ( "ДокументМенеджер.АвансовыйОтчет" ) И ВидФормы = "ФормаОбъекта" Тогда
СтандартнаяОбработка = Ложь;
ВыбраннаяФорма = "НетиповаяУправляемаяФормаДокумента" ;
КонецЕсли;
Использование подписок на событие " ОбработкаПолученияФормы " менеджеров прикладных объектов может значительно облегчить процедуру обновления конфигурации. Особенно актуальным их использование может быть для тех прикладных объектов, формы которых практически никогда серьезно не меняются от релиза к релизу программы (как например, рассмотренный выше документ "Авансовый отчет").
В 1С 8.3 (8.2) для работы с файлами существует два объекта: Файл и ДиалогВыбораФайла.
Рассмотрим каждый по отдельности.
Объект Файл служит для управления параметрами файлов.
Сразу стоит заметить, что данный объект не предназначен для чтения и записи из файлов.
Например, прочитаем параметры некоторого файла, находящегося на диске C:
В результате мы получим следующую информацию (если файл найден):
Параметры файла:
Полное имя файла: C:\Работа с файлами\статья.txt
Имя: статья.txt
Имя без расширения: статья
Расширение: .txt
Путь без имени: C:\Работа с файлами\
Размер: 899
Это файл: Да
Изменен: 18.05.2015 16:21:28
Только чтение: Нет
Невидимость: Нет
Запись в файл
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Теперь, когда мы выбрали и открыли файл, можно с ним работать, т.е. прочитать его содержимое или записать в него что-нибудь.
Рассмотрим пример:
Чтение файла в 1С
Часто бывает необходимо прочитать текст файла построчно, например, для анализа каждой строки. Для этого используем объект ЧтениеТекста.
Запись текста из 1С в файл
Заметим, что при записи текстового файла можно установить кодировку.
Копирование файла
Здесь все очень просто
Перемещение
Удаление
Диалог выбора файла
В указанных выше примерах есть одно неудобство. Путь к файлу прописан жестко в коде. Чтобы выбрать файл интерактивно, существует объект ДиалогВыбораФайла, о котором речь пойдет ниже.
Объект ДиалогВыбораФайла служит для открытия файла (файлов), сохранения файла или выбора каталога в диалоге специального вида.
Например, выберем и откроем некоторый файл с расширением txt:
Задаем режим диалога выбора. Доступны три варианта: ВыборКаталога, Открытие, Сохранение
В этой статье я покажу идеальный пример, когда программист 1С пришел к клиенту, а там ему дали какое-то задание по доработке конфигурации. Ситуация такая, что сделать эти изменения на рабочей базе по какой-то причине не представляется возможным: там или работают пользователи, или нет рабочего места у клиента, или ещё что-то. Поэтому программист 1С принимает решение взять конфигурацию с собой на свое рабочее место (домой или в офис), и уже на своем рабочем месте внести все изменения, а потом вернуться к клиенту и загрузить сделанные изменения в его рабочую базу.
Я разберу основные шаги внесения изменений в конфигурацию клиента, особенно она будет интересна начинающим программистам 1С.
Как сохранить конфигурацию 1с
В результате у вас получится cf-файл, который вы или зальете в облако, или скопируете на флешку, и отнесете на свое рабочее место (домой или в офис).
Как загрузить конфигурацию 1с
После того, как вы придете на свое рабочее место, необходимо создать пустую базу. Делается это достаточно просто.
В результате выполнения команды, откроется окно выбора файла с расширением cf, в котором вы выбираете ранее сохраненный у клиента cf-файл.
Включить возможность изменения конфигурации
Чтобы мы могли с ней работать, необходимо включить возможность изменения конфигурации.
Более подробно о поддержке конфигурации читайте в моей статье Поддержка конфигурации 1С.
Мы включим возможность изменения конфигурации, оставив для всех объектов правила «Объект поставщика не редактируется».
А также включим для справочника Номенклатура и документа ЧекККМ c основной формой документа правило «Объект поставщика редактируется с сохранением поддержки»
Внести изменения в конфигурацию 1С
Изменим справочник Номенклатура, добавив в него реквизит.
А также документ ЧекККМ: добавим реквизит и поместим его на форму в виде элемента Поле.
Сделав нужные изменения, сохраним cf-файл нашей измененной конфигурации, как мы это делали ране, предварительно протестировав изменения.
Объединение конфигурации 1с
После того, как вы всё сделаете на своем рабочем месте и придете к клиенту, необходимо загрузить ваши изменения в клиентскую конфигурацию.
И здесь две рекомендации:
- Обязательно сохраните базу клиента, перед тем, как вносить изменения;
Не используйте команду «Загрузить конфигурацию из файла».
Почему нельзя использовать команду «Загрузить конфигурацию из файла»? Потому что, если во время вашего отсутствия с клиентской конфигурацией что-то делали, то вы этой командой сотрете все ранее сделанные изменения.
Включим возможность изменения в клиентской базе так, как мы это делали выше в своей домашней копии, и выполним опять операцию сравнения-объединения. В этот раз замки с объектов исчезнут, мы оставляем флажки у тех объектов, изменения которых мы хотим внести в базу клиента, и нажав на кнопку «Выполнить» вносим изменения в клиентскую базу.
Сравнение конфигураций 1С
Иногда возникают ситуации, когда вам просто нужно сравнить основную конфигурацию с какой-то конфигурацией из файла, без выполнения процесса объединения.
После выполнения команды нужно будет выбрать, что с чем мы сравниваем.
И если мы сравниваем с конфигурацией из файла, то необходимо указать нужный cf-файл.
После выйдет окно, где будут показаны отличия одной конфигурации от другой.
Возврат на поддержку измененной конфигурации 1С
Редко, но бывают случаи, когда снимают полностью с поддержки измененную конфигурацию 1С, если мы в этом случае поставим обратно на поддержку при помощи команды «Загрузить конфигурацию из файла», то все изменения сделанные ранее затрутся.
Чтобы сохранить изменения нужно использовать уже знакомую команду «Сравнить объединить с конфигурацией из файла».
Во время возврата на поддержку нужно выбрать cf-файл типовой конфигурации 1С.
После выбора файла типовой конфигурации, выйдет предложение поставить конфигурацию на поддержку.
После нажатия кнопки «Выполнить», появится окно с настройками правил поддержки для объектов, в этом окне оставим всё по умолчанию.
Конфигурация встанет на поддержку с возможностью изменений.
Но наша конфигурация еще не полностью на поддержке.
Для того, чтобы она стала полностью на поддержке, необходимо в окне «Настройка поддержки» у всех объектов конфигурации, которые были изменены установить правило «Объект поставщика редактируется с сохранением поддержки», а также у самой конфигурации. Если в вашей конфигурации все объекты должны быть на поддержке, то чтобы не ставить каждый объект отдельно, можно во время установки правила для всей конфигурации, поставить флаг «Установить для подчиненных объектов», тогда это правило для всех объектов конфигурации установится автоматически. Иначе нужно будет к каждому объекту отдельно применять это правило.
Статьи по теме обновлений 1С:
Если по мимо задач по администрированию, перед вами стоят задачи по разработке в 1С, то рекомендую вам свою книгу «Программировать в 1С за 11 шагов», в которой подробно и основательно шаг за шагом даются основные знания по разработке в 1С.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Читайте также: