-
Зачем это было нужно
Существует очень сильно не типовая конфигурация, обновлять которую, сущая мука. Конфигурация стала таковой в результате самоотверженной работы моих предшественников, не сумевших противостоять натиску пользователей. В конфигурации присутствует документ Принятие к учету ОС с добавленными реквизитами для хранения состава комиссии (комиссия выводится в печатную форму ОС-1). В каждом новом документе заполнять состав комиссии, не меняющейся годами бухгалтерам не удобно. Добавлять кнопочки сохранения, восстановления на форму, и соответствующий код в модуль формы не удобно программистам, потому что при очередном обновлении придется эту красоту руками снова перерисовывать. Возникла идея доверить этот функционал подключаемой внешней обработке.
Как это работает
СОЗДАТЬ ШАБЛОН КОМИССИИ
- Чтобы создать шаблон комиссии нужно
- открыть документ с заполненным составом комиссии,
- нажать кнопку Печать,
- выбрать пункт Комиссия Сохранить настройки,
- нажать кнопку Печать в форме выбора,
- отметить нужную настройку (создать по кнопке +, если ни одной настройки не создано),
- нажать кнопку Выбрать,
- закрыть документ.
Настройка сохранена.
ЗАПОЛНИТЬ КОМИССИЮ ИЗ ШАБЛОНА
- Чтобы в документе заполнить комиссию из шаблона нужно:
- открыть (или создать) документ,
- нажать кнопку Печать,
- выбрать пункт Комиссия Сохранить настройки,
- нажать кнопку Печать в форме выбора,
- отметить ранее сохраненную настройку,
- нажать кнопку Выбрать,
- записать документ.
Как создать обработку
Обработка создается аналогично внешней печатной форме:
Внешняя обработка с реквизитом СсылкаНаОбъект типа ДокументСсылка.ПринятиеКУчетуОС
В модуле обработки код:
// Что сохраняем в настройках
Перем мТекущаяНастройка Экспорт;
Перем мСохраняемыеРеквизиты;
Функция Печать() Экспорт
мСохраняемыеРеквизиты = Новый Структура;
мСохраняемыеРеквизиты.Вставить("ПредседательКомиссии");
мСохраняемыеРеквизиты.Вставить("ЧленКомиссии1");
мСохраняемыеРеквизиты.Вставить("ЧленКомиссии2");
мСохраняемыеРеквизиты.Вставить("ДолжностьПредседателя");
мСохраняемыеРеквизиты.Вставить("ДолжностьЧлКомиссии1");
мСохраняемыеРеквизиты.Вставить("ДолжностьЧлКомиссии2");
Если ДополнительныеПараметры = Неопределено Тогда
СохраняемНастройки = Ложь;
Иначе
СохраняемНастройки = ДополнительныеПараметры.Сохранение;
КонецЕсли;
Если СохраняемНастройки Тогда
СохранитьНастройки();
Иначе
ВосстановитьНастройки();
Форма=СсылкаНаОбъект.ПолучитьФорму("ФормаДокумента");
Для каждого ОднаНастройка Из мТекущаяНастройка.СохраненнаяНастройка Цикл
Форма.ЭлементыФормы[ОднаНастройка.Ключ].Значение = ОднаНастройка.Значение;
КонецЦикла;
КонецЕсли;
//Печать
КонецФункции
//////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ СОХРАНЕНИЯ И ВОССТАНОВЛЕНИЯ НАСТРОЕК //
//////////////////////////////////////////////////////////////
Функция ВосстановитьНастройки() Экспорт
Перем СохраненнаяНастройка;
СтруктураНастройки = Новый Структура;
СтруктураНастройки.Вставить("Пользователь", глЗначениеПеременной("глТекущийПользователь"));
СтруктураНастройки.Вставить("ИмяОбъекта", "ДокументОбъект." + СсылкаНаОбъект.Метаданные().Имя);
СтруктураНастройки.Вставить("НаименованиеНастройки", ?(мТекущаяНастройка = Неопределено, Неопределено, мТекущаяНастройка.НаименованиеНастройки));
Результат = УниверсальныеМеханизмы.ВосстановлениеНастроек(СтруктураНастройки);
Если Результат <> Неопределено Тогда
мТекущаяНастройка = Результат;
ВосстановитьНастройкиИзСтруктуры(Результат.СохраненнаяНастройка);
Иначе
мТекущаяНастройка = СтруктураНастройки;
КонецЕсли;
// ВосстановитьНастройки()
КонецФункции
Процедура СохранитьНастройки() Экспорт
Перем СохраненнаяНастройка;
СформироватьСтруктуруДляСохраненияНастроек(СохраненнаяНастройка);
СтруктураНастройки = Новый Структура;
СтруктураНастройки.Вставить("Пользователь", глЗначениеПеременной("глТекущийПользователь"));
СтруктураНастройки.Вставить("ИмяОбъекта", "ДокументОбъект." + СсылкаНаОбъект.Метаданные().Имя);
СтруктураНастройки.Вставить("НаименованиеНастройки", ?(мТекущаяНастройка = Неопределено, Неопределено, мТекущаяНастройка.НаименованиеНастройки));
СтруктураНастройки.Вставить("СохраненнаяНастройка", СохраненнаяНастройка);
СтруктураНастройки.Вставить("ИспользоватьПриОткрытии", Истина);
СтруктураНастройки.Вставить("СохранятьАвтоматически", Истина);
Результат = УниверсальныеМеханизмы.СохранениеНастроек(СтруктураНастройки);
Если Результат <> Неопределено Тогда
мТекущаяНастройка = Результат;
Иначе
мТекущаяНастройка = СтруктураНастройки;
КонецЕсли;
// СохранитьНастройки()
КонецПроцедуры
Процедура СформироватьСтруктуруДляСохраненияНастроек(СтруктураСНастройками) Экспорт
Если ТипЗнч(СтруктураСНастройками) <> Тип("Структура") Тогда
СтруктураСНастройками = Новый Структура;
КонецЕсли;
Для каждого ОдинРеквизит Из мСохраняемыеРеквизиты Цикл
СтруктураСНастройками.Вставить(ОдинРеквизит.Ключ, СсылкаНаОбъект[ОдинРеквизит.Ключ]);
КонецЦикла;
// СформироватьСтруктуруДляСохраненияНастроек()
КонецПроцедуры
Функция ВосстановитьНастройкиИзСтруктуры(СтруктураСНастройками) Экспорт
Если ТипЗнч(СтруктураСНастройками) <> Тип("Структура") Тогда
Возврат Ложь;
КонецЕсли;
Объект = СсылкаНаОбъект.ПолучитьОбъект();
Для каждого ОдинРеквизит Из мСохраняемыеРеквизиты Цикл
СтруктураСНастройками.Свойство(ОдинРеквизит.Ключ, Объект[ОдинРеквизит.Ключ]);
КонецЦикла;
Возврат Истина;
// ВосстановитьНастройкиИзСтруктуры()
КонецФункции
Как подключить обработку
Внешняя обработка подключается, как печатная форма: Сервис - дополнительные внешние отчеты и обработки - Печатные формы.
Обработка имеет два режима работы:
Наименование Вид обработки Код Комментарий Комиссия Восстановить настройки Печатная форма 000000108 Документ Принятие к учету ОС заполнить состав комиссии пользовательскими настройками Комисси
Сохранить настройкиПечатная форма 000000107 Документ Принятие к учету ОС сохранить пользовательский состав комиссии
Комиссия Восстановить настройки
N Представление объекта Отбор Файл печатной формы Заменяемая печатная форма Параметры обработки 1 Документ "Принятие к учету ОС"
параметры
Имя Значение Сохранение Нет
Комиссия Сохранить настройки
N Представление объекта Отбор Файл печатной формы Заменяемая печатная форма Параметры обработки 1 Документ "Принятие к учету ОС"
параметры
Имя Значение Сохранение Да -
Внешняя обработка на кнопке Печать для сохранения пользовательских настроек документа
04.10.13
Задачи пользователя - Мастера заполнения
Внешняя обработка подключается, как печатная форма. Вызвать ее можно по кнопке Печать. Сохраняет для каждого пользователя вариант заполнения указанных реквизитов документа.
Скачать файл
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Наименование | По подписке [?] | Купить один файл | |
---|---|---|---|
Внешняя обработка на кнопке Печать для сохранения пользовательских настроек документа
.epf 132,87Kb
2
|