Меню

1с сохранение настроек внешних обработок

Сохранить настройки внешней обработки 1С 8.2 Толстый клиент

Добрый день!
Я конечно извиняюсь, вопрос очень простой, но я что-то даже погуглив ничего не нашел.
Есть внешняя обработка толстый клиент.
Нужно нажатием кнопочки получить стандартное окошко сохранения настроек, выбрать или задать новую настройку и туда сохранить список значений с произвольными данными.
Также нужно чтобы нажав кнопочку могли получить стандартное окно выбора сохраненных настроек и выбрать оттуда по имени.

По факту сохранить надо содержимое нескольких таблиц значений, которые пользователем в обработке заполнены руками. (понятно что сериализовать можно и запихнуть в хранилище значений)

Всё это во внешней обработке толстый клиент неуправляемые формы 8.2

Будьте так добры, подскажите как это сделать.
Не хочется дополнительные формы для выбора сохраняемого значения и сохранения делать, формы сохранения и выбора при восстановлении хочу стандартные использовать.

источник

Guesto.ru

Guesto notes

1С. Сохранение настроек обработки

Пользователи работают с обработкой, в которой часть параметров меняется очень редко, но параметры у каждого пользователя свои. Необходимо организовать сохранение настроек и их восстановление для определенных реквизитов. Сохранение и восстановление выполнять только по кнопкам на форме.

Решение

Для сохранения настроек воспользуемся хранилищем настроек. Если конфигурация позволяет, то можно создать свое хранилище, или же воспользоваться одним из системных. Считаем, что конфигурация типовая(не редактируется), в качестве хранилища будем использовать ХранилищеНастроекДанныхФорм.

В форме определим команду Сохранить настройки, в которой вызовем метод Сохранить() указав ключ объекта, ключ настроек, сами настройки и пользователя:

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

В итоге у каждого пользователя есть возможность сохранить определенные настройки и при необходимости восстановить их. Можно реализовать сохранение нескольких настроек, если дать возможность указания имени настройки и передавать его при сохранении/восстановлении как ключ настроек.

источник

Сохранение (чтение) настроек внешней обработки в файл (управляемые формы)

Иногда требуется создать внешнюю обработку с большим количеством реквизитов (в том числе и с табличной частью), первое, что мы делаем для сохранения настроек в этом случае — устанавливаем свойство формы АвтоматическоеСохранениеДанныхВНастройках в Использовать. Затем ставим напротив всех нужных реквизитов галочки «Сохранение» и наслаждаемся результатом.

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

То, что это возможно легко понять по намёкам на форумах, однако ни одного законченного решения найти не удалось. Что ж, к этому нам не привыкать, начинаем придумывать велосипед.

Читайте также:  lenovo s580 программы для установки

Пробуем сначала сохранить значения всех реквизитов формы в файл. Поиски в интернете приводят нас к процедуре ЗначениеВФайл и функции ЗначениеВСтрокуВнутр, приём последней пользоваться как бы не рекомендуется, якобы она предназначена для обмена с 7.7. Обе конструкции языка доступны только на сервере и толстом клиенте, поэтому возникает вопрос, как бы обойти значения всех реквизитов формы &НаСервере.

выдаст вполне ожидаемую не для всех ошибку: Итератор для значения не определен.

Тоже самое ожидает нас и с переменными ЭтаФорма, ЭтотОбъект. На такую простую вещь можно потратить пару часов, однако отладчик и поисковики творят чудеса — получить значения всех реквизитов формы внешней обработки на сервере можно с помощью следующего кода:

Казалось бы, теперь всё просто, однако не совсем. Табличная часть, как и таблица значений имеют не совсем ожидаемый тип значений, их тип ДанныеФормыКоллекция. А ведь они должны быть обязательно выгружены для сохранения, иначе в файле получим только их уникальные индификаторы.

В результате этого знания получаем:

Это даже работает, но радоваться рано — этот код неправильный! Мы допустили одну из самых распространенных ошибок при написании кода на управляемых формах. Выбрав имя файла на клиенте, а потом передав его на сервер, мы забыли, что при клиент-серверном режиме работы код, выполняемый на стороне сервера, будет запущен под другим пользователем. И далеко не факт, что этот пользователь будет иметь доступ туда (например, локальный диск терминальной сессии по RDP), куда мы сохраняем файл.

Поэтому переписываем код, сохраняем файл теперь на клиенте, правда придётся воспользоваться не очень рекомендуемой функцией ЗначениеВСтрокуВнутр:

Теперь перейдём к загрузке из файла. Мы не будем использовать, как мы уже выяснили, следующий неправильный код с передачей только имени файла на сервер:

А напишем другой вариант, например, используя временное хранилище:

Если внимательно посмотреть код, то легко заметить, что после получения данных из временного хранилища (с типом ДвоичныеДанные) мы вынуждены записать их во временный файл. Другого нормального способа получить данные с типом Строка из временного хранилища попросту нет.

Чтобы не насиловать файловую систему временными файлами, давайте перепишем код, без использования временного хранилища, но с использованием не очень рекомендуемой функции ЗначениеИзСтрокиВнутр:

Как видно, вариантов сохранения настроек в файл и чтения настроек из файла очень много, даже в этой статье мы рассмотрели далеко не все, однако эти варианты рабочие и должны сэкономить вам время, когда у вас возникнет такая необходимость.

В прикрепленной ниже внешней обработке используется последний вариант сохранения и чтения настроек через файл из этой статьи, ну и, конечно, автосохранение штатными средствами в информационной базе.

Читайте также:  настройка вспышки nissin di866

источник

Сохранение настроек обработки/отчета во внешних файлах. Пакетная обработка с разными вариантами настроек.

Столкнулся с необходимостью сохранить настройки внешней обработки. В интеренете, в основном, есть варианты с использованием СохранитьЗначение. Так как мне нужно было в обработке сохранить несколько значений настроек, а потом их в определенной последовательности загрузить и выполнить обработку (пакетное задание), то данный вариант мне не совсем подходил. Сделал следующий вариант:

Родители, Родители1 и Товары это табличные части обработки. Может их тоже можно не отдельно сохранять, а перебором как реквизиты (быстро не нашел как и сделал с именами табличных частей. Уверен, что должен быть вариан с получением списка табличных частей. Если кто знает такой вариант, — напишите в комментариях. Позже тоже хочу поискать, чтобы получить универсальных механизм для сохранения.).

Пользователь у меня сохраняет настройки обработки в определенную папку (C:\set\Х), где Х цифра от 1 до 30. Настройки перебираются последовательно с папки 1 до папки 30, если встречается папка где нет настроек, то обработка останавливается.

источник

Сохранение настроек внешней обработки

Есть внешняя обработка табличных частей. И она должна быть внешней.
В ней есть компоновщик настроек СКД. и есть схема.

Но в тоже время в конфигурации будет изменение — подписка на событие для документа.
Где я буду эту обработку тоже использовать.

Так вот думаю как прасивее и правильнее нужно сделать чтобы схема настроек которую задаст пользователь из внешней обработки, сохранилась в базу и была доступна.

Хм. а вот интересная фигня.

Подписка на событие при записи. Меняем обьект. Но изменения не записываются) Это чо прикол такой. что нужно записать() еще в подписке вызывать?

(8) чувак если ты хочешь ответить на вопрос. то конкретно как бы и отвечай на него.
А не скидывай километровую документацию в которой НЕТ поставленного вопроса!

И читал бы внимательно. А то пришел. лишь бы ляпнуть что попало. а ты слышал. и ссылка на ТОМ документации..
ипанутся советчики.

источник

Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download

В работе службы сопровождения 1С нередко возникают ситуации, когда нужно обеспечить отсутствие пользователей в базе для проведения каких-то регламетных процедур или сервисных работ. Некоторые такие процедуры должны выполняться регулярно, и было бы удобно настроить расписание установки блокировки на вход в информационную базу.

1) Создание обработки «Блокировка работы пользователей» для запуска по расписанию

Не секрет, что с некоторых пор в типовых конфигурациях 1С появилась возможность запуска дополнительных обработок по расписанию.

Читайте также:  посмотреть настройки dns ubuntu

Для этого в модуле внешней обработки в процедуре СведенияОВнешнейОбработке добавляем команду с вариантом использования «ВызовСерверногоМетода»

Также добавляем в модуль процедуру «ВыполнитьКоманду(ИдентификаторКоманды)», которая будет обрабатывать вызов нашего серверного метода

В процедуре «ВыполнитьУстановку» будем заполнять необходимые реквизиты блокировки и затем вызывать процедуру глобального контекста «УстановитьБлокировкуСеансов».

Теперь все готово для того, чтобы зарегистировать нашу обработку в списке дополнительных отчетов и обработок и настроить расписание запуска

Итак, теперь у нас есть обработка, которая запускается по расписанию и устанавливает блокировку работы пользователей.
Все здорово, кроме одного: параметры нашей блокировки (время начала, время окончания, текст сообщения для пользователей и т.д.) нам пришлось прописать непосредственно в коде обработки, соответственно, когда появится необходимость эти параметры поменять — нам придется менять код обработки и заново регистрировать ее.
Не очень красивое решение. Для решения этой проблемы создадим механизм, который позволит сохранять для нашей обработки произвольный набор параметров.

2) Сохранение произвольных параметров для дополнительных обработок

Для сохранения настроек воспользуемся объектом «ХранилищеОбщихНастроек» и его методом

По умолчанию (если параметр не задан) настройки сохраняются для текущего пользователя. Однако, если у пользователя, вызвашего этот метод
есть права «АдминистрированиеДанных» он может работать с настройками других пользователей и к тому же ИмяПользователя это просто строка — этим-то мы и воспользуемся для решения своей задачи:
мы будем сохранять настройки для «пользователя» ДополнительныеОбработки(естественно никакого пользователя ДополнительныеОбработки у нас в базе нет, это просто ключ, в разрезе которого мы будем хранить настройки для внешних обработок)

в нашем случае ключом будет Имя внешней обработки для которой сохраняем настройки, а — строка «ДополнительныеНастройки»(имя можно придумать любое).
Сами настройки передаются в параметре тип параметра произвольный. Для нашей задачи мы будем использовать, структуру.

Вот собственно и все. Теперь создаем еще одну внешнюю обработку «СохранениеНастроекДопОбработок» и делаем в ней удобную форму для работы с нашим методом «Сохранить».
На форме будем выбирать внешнюю обработку из списка зарегистрированных в базе, а в табличной части будем указывать настройки, которые хотим сохранить в виде «ИмяНастройки-ЗначениеНастройки».

Теперь остается в обработке блокировки пользователей считать сведения о настройках для нашей обработки

прочитать настройки на основании полученных сведений и заполнить реквизиты обработки полученными значениями

В качестве примера реализации описанного выше подхода во вложении приведены обработки:

1. Внешняя обработка «Сохранение настроек доп.обработок» — сохраняет произвольный перечень параметров для выбранной на форме дополнительной обработки.

2. Внешняя обработка «Блокировка пользователей (автозапуск)» — позволяет запускать обработку блокировки по расписанию и считывать сохраненные для обработки настройки.

источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *