Для контроля за исполнительской дисциплиной сотрудников полезно регулярно анализировать статистику текущих, выполненных и просроченных задач по каждому сотруднику. Для этих целей в 1С:Документооборот создадим рассылку отчета «Справка об исполнительской дисциплине» еженедельно (каждый понедельник утром в 9:00) или ежемесячно (в 23:00 за этот месяц) для каждого руководителя по своему отделу.
В 1С:Документооборот открываем раздел «Настройка и администрирование», «Рассылки отчетов».
Создаем новую рассылку. Будем отправлять для каждого руководителя свой отчет об исполнительской дисциплине. Вариант называется «По исполнителям».
Предварительно посмотрим, как в 1С:Документооборот называется вариант отчета «Справка об исполнительской дисциплине».
Нажимаем в рассылке отчетов кнопку «Подобрать» и ищем вариант отчета «По исполнителям». Выбираем его.
Указываем период прошлая неделя для еженедельных отправлений или этот месяц для ежемесячных.
Настраиваем расписание рассылки отчетов 1С:Документооборотом. Для еженедельных отчетов будем отправлять отчет по понедельникам в 9:00.
Указываем получателей отчета на закладке «Доставка» группу пользователей «Руководители подразделений». Предварительно надо в 1С:Документообороте всех руководителей добавить в группу пользователей «Руководители подразделений». Отправку целесообразно осуществлять с системной учетной записи.
На закладке «Дополнительно» указываем форматы отправляемых отчетов и необходимость отправки пустых отчетов.
Настройка рассылки в 1С:Документооборот завершена. Запишем данную рассылку и нажмем кнопку «Выполнить сейчас».
В почтовых ящиках сотрудников Генерального директора и Руководителя отдела мы увидим, что им пришли абсолютно одинаковые отчеты. Так как отчет формируется без учета прав доступа каждого пользователя в рассылке. Будьте внимательны!!!
Чтобы каждый руководитель получил отчет только по своему подразделению нам нужно модернизировать отчет «Справка об исполнительской дисциплине» в 1С:Документооборот — добавить туда поле-фильтр по Руководителю подразделения, чтобы в рассылке можно было использовать этот параметр.
В 1С:Документооборот открываем отчет «Справка об исполнительской дисциплине». Изменяем вариант.
На закладке «Отбор» добавляем поле отбора «Подразделение.Руководитель».
Завершаем редактирование. Сохраняем вариант отчета под названием «По исполнителям — с отбором по руководителю».
Проверим как работает отчет «Справка об исполнительской дисциплине» в 1С:Документооборот. Поставим фильтр по руководителю отдела.
Возвращаемся в настройку рассылки. Удалим вариант отчета «по исполнителям» и добавим вариант отчета «По исполнителям — с отбором по руководителю». В настройках отчета укажем в качестве получателя отчета руководителя подразделения.
Теперь каждый руководитель будет видеть отчет только по своему подразделению. Сохраним настройку рассылки. И проверим отправку данной рассылки в 1С:Документооборот.
Подробнее узнать про исполнительскую дисциплину и контроль можно в статье «Процедура контроля исполнительской дисциплины».
Miss1C
13.09.12
✎
10:45
Создала отчет сохранила настройку, загружаю а она пустая, при чем если сохранить настройку из внешнего отчета она отрабатывает нормально, если с внутреннего, сохраняет с пустыми данными в чем может быть ошибка?
Miss1C
13.09.12
✎
10:52
Ап
чувак
13.09.12
✎
10:54
Скриншот покажи
Kashemir
13.09.12
✎
10:55
Слабовата вводная — есть тысяча и один способ хранить настройку.
Miss1C
13.09.12
✎
10:57
(3)Типовая
Kashemir
13.09.12
✎
10:59
(4) Через СохранитьНастройки() ? — там для каждого реквизита отчета проставляется признак возможности сохранять настройки.
Miss1C
13.09.12
✎
11:00
Процедура ДействияФормыВосстановитьЗначения(Кнопка)
СохранениеНастроек.ВыбратьНастройкуФормы(СохраненнаяНастройка, ЭтаФорма, «ОтчетОбъект.» + ОтчетОбъект.Метаданные().Имя, Ложь);
ТиповыеОтчеты.ОбновитьФормуТиповогоОтчетаПоКомпоновщику(ОтчетОбъект, ЭтаФорма);
ТиповыеОтчеты.ОбновитьЗаголовокТиповогоОтчета(ОтчетОбъект, ЭтаФорма);
КонецПроцедуры
Процедура ДействияФормыСохранитьЗначения(Кнопка)
СохранениеНастроек.ВыбратьНастройкуФормы(СохраненнаяНастройка, ЭтаФорма, «ОтчетОбъект.» + ОтчетОбъект.Метаданные().Имя, Истина);
ТиповыеОтчеты.ОбновитьЗаголовокТиповогоОтчета(ОтчетОбъект, ЭтаФорма);
КонецПроцедуры
Kashemir
13.09.12
✎
11:14
Чего сохраняет функционал типового:
// Возвращает структуру параметров отчета для сохранения
Функция ПолучитьСтруктуруПараметровТиповогоОтчета(ОтчетОбъект) Экспорт
СтруктураПараметров = Новый Структура;
Для каждого Реквизит Из ОтчетОбъект.Метаданные().Реквизиты Цикл
Если Реквизит.Имя = «СхемаКомпоновкиДанных»
ИЛИ Реквизит.Имя = «ДатаВерсииИсточникаДанных»
ИЛИ Реквизит.Имя = «ИсточникДанныхОтчета»
ИЛИ Реквизит.Имя = «Описание»
ИЛИ Реквизит.Имя = «ПодлежитПередачеВПодчиненныеУзлыПриОбменеПоОрганизации» Тогда
Продолжить;
КонецЕсли;
СтруктураПараметров.Вставить(Реквизит.Имя, ОтчетОбъект[Реквизит.Имя])
КонецЦикла;
СтруктураПараметров.Вставить(«НастройкиКомпоновщика», ОтчетОбъект.КомпоновщикНастроек.ПолучитьНастройки());
Если СтруктураПараметров.Свойство(«Версия») тогда
СтруктураПараметров.Версия = РабочаяВерсияНастройкиОтчетов();
Иначе
СтруктураПараметров.Вставить(«Версия», РабочаяВерсияНастройкиОтчетов());
КонецЕсли;
Возврат СтруктураПараметров;
КонецФункции
Процедура СохранитьНастройку() Экспорт
СтруктураНастроек = ТиповыеОтчеты.ПолучитьСтруктуруПараметровТиповогоОтчета(ЭтотОбъект);
СохранениеНастроек.СохранитьНастройкуОбъекта(СохраненнаяНастройка, СтруктураНастроек);
КонецПроцедуры
Kashemir
13.09.12
✎
11:17
(6) Ты бы хоть отладчиком глянула, не сохраняются или не восстанавливаются настройки.
sanja26
13.09.12
✎
11:18
Может сначала надо одну настройку создать..
Miss1C
13.09.12
✎
11:18
(8) Не сохраняются
Miss1C
13.09.12
✎
11:27
Miss1C
13.09.12
✎
11:39
Не хочет сохранять новую настройку, если на старую сохранить, сохраняет нормально
sanja26
13.09.12
✎
11:50
(12) настройка — это элемент справочника Сохраненные настройки
sanja26
13.09.12
✎
11:51
Процедура СохранитьНастройкуОбъекта(СохраненнаяНастройка, СохраняемыеНастройки) Экспорт
ОбъектСохраненнаяНастройка = СохраненнаяНастройка.ПолучитьОбъект();
Если СохраненнаяНастройка.Предопределенный тогда
СохраняемыеНастройки.Вставить(«Изменялась», истина);
КонецЕсли;
ОбъектСохраненнаяНастройка.ХранилищеНастроек = Новый ХранилищеЗначения(СохраняемыеНастройки);
Попытка
ОбъектСохраненнаяНастройка.Записать();
Исключение
ОбщегоНазначения.СообщитьОбОшибке(«Настройка формы не записана:» + Символы.ПС + «- » + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Т.е. передать надо уже ссылку
sanja26
13.09.12
✎
11:54
из БП
Процедура ДействияФормыСохранитьНастройку(Кнопка)
ТиповыеОтчеты.СохранитьТекущуюНастройку(ЭтотОбъект, ЭтаФорма);
КонецПроцедуры
Процедура ДействияФормыСохранитьНастройкуКак(Кнопка)
ТиповыеОтчеты.СохранитьТекущуюНастройкуКак(ЭтотОбъект, ЭтаФорма);
КонецПроцедуры
Процедура КнопкаСписокВариантовНажатие(Кнопка)
СохранениеНастроек.ВыбратьНастройкуФормы(СохраненнаяНастройка, ЭтаФорма, ТиповыеОтчеты.ПолучитьИдентификаторОбъекта(ОтчетОбъект), Ложь);
Если Не РежимРедактированияНастройки Тогда
ТиповыеОтчеты.ОбновитьТаблицуДоступныхНастроекПользователю(ЭтотОбъект);
ТиповыеОтчеты.ОбновитьКнопкиВыбораНастроек(ЭтаФорма, ЭтотОбъект, ПредставлениеНастройки, РежимРедактированияНастройки);
КонецЕсли;
Модифицированность = Ложь;
КонецПроцедуры
sanja26
13.09.12
✎
11:54
Процедура ДействияФормыСохранитьНастройку(Кнопка)
ТиповыеОтчеты.СохранитьТекущуюНастройку(ЭтотОбъект, ЭтаФорма);
КонецПроцедуры
sanja26
13.09.12
✎
11:56
Процедура ДействияФормыВосстановитьЗначения(Кнопка)
СохранениеНастроек.ВыбратьНастройкуФормы(СохраненнаяНастройка, ЭтаФорма, ТиповыеОтчеты.ПолучитьИдентификаторОбъекта(ОтчетОбъект), Ложь);
ТиповыеОтчеты.ОбновитьФормуТиповогоОтчетаПоКомпоновщику(ОтчетОбъект, ЭтаФорма);
ТиповыеОтчеты.ОбновитьЗаголовокТиповогоОтчета(ОтчетОбъект, ЭтаФорма);
КонецПроцедуры
Miss1C
13.09.12
✎
12:04
Мой отчет проверяли?
Miss1C
13.09.12
✎
12:05
(16)Нет такой процедуры, у меня УПП 8.1
sanja26
13.09.12
✎
12:14
(19) в КА есть..
sanja26
13.09.12
✎
12:18
Если СохраненнаяНастройка = Неопределено Тогда
СохраненнаяНастройка = Справочники.СохраненныеНастройки.ПустаяСсылка();
КонецЕсли;
в конце модуля объекта добавь
Наверное вам приходилось сталкиваться с тем, что при подключении внешнего отчета в типовых конфигурациях 1С получаем такое сообщение:
Свойство отчета "Хранилище вариантов" не заполнено.
Сохранение (выбор) вариантов отчета будет работать в ограниченном режиме.
Обратитесь к разработчику дополнительного (внешнего) отчета.
Ошибка при подключении внешнего отчета 1С
Для чего нужно хранилище вариантов отчета
Между тем, типовые конфигурации 1С (далее рассмотрим на примере 1С: Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.15.40)) имеют удобный механизм хранилища вариантов отчетов. Он позволяет сохранять варианты отчетов, а также сделать их доступными другим пользователям. Доступные варианты отчета будут видны как в самой форме отчета, так и в типовой разделе «Отчеты». Ниже пример вывода в форме «Кадровые отчеты» различных настроек для отчета «Личные данные сотрудников». Теперь каждый пользователь имеющий право использования данного отчета сможет открыть нужную настройку отчета и сформировать его.
Пример сохраненных вариантов отчетов 1С
Настраиваем свойство «Хранилище вариантов» для внешних отчетов
1С позаботилась о разработчиках и предоставила им возможность без лишних доработок использовать данный механизм в своих внешних отчетах.
1. Открываем палитру свойств нашего внешнего отчета как показано на картинке ниже:
2. В свойстве «Хранилище вариантов» выбираем хранилище настроек с именем «ХранилищеВариантовОтчетов»
Выбираем хранилище вариантов
Сохраняем вариант отчета для других пользователей
После подключения нашего внешнего отчета в конфигурацию, открываем его. Например, вы внесли какие-то изменения в структуру отчета в пользовательском режиме и хотим поделиться этим вариантом с другими пользователями.
1. Для этого, выбираем типовую команду «Сохранить вариант отчета»:
Сохранение варианта отчета для других пользователей
2. Указываем наименование нашей настройки отчета «Отчет о передаче мероприятий СЗВ-ТД — без уволенных». Ставим переключатель «Доступен» в положение «Всем пользователям». Нажимаем кнопку «Далее».
3. Указываем раздел, в который хотим поместить нашу настройку отчета, например, «Кадры». Пишем описание для варианта отчета, если надо и сохраняем.
4. Теперь наш вариант отчета доступен другим пользователям как в самом отчете:
Пример выбора настройки внешнего отчета 1С
Так и в разделе «Отчеты» в ветке «Кадры»
Вариант внешнего отчета 1С в разделе Отчеты
Итоги
После нехитрых настроек наш внешний отчет теперь может работать с типовым хранилищем вариантов отчетов. Это позволит сохранять различные настройки внешнего отчета в хранилище и давать доступ к ним для других пользователей 1С.
Денис Мусин
Заглянувший
Сообщений: 3
Авторитет:
0
Регистрация: 11.09.2013
Альфа-авто 8.2 Редакция 4.1 (4.1.01.20)
После завершения работы, настройки заказов, таблиц, отчеты не сохраняются.
Отчеты сохраняю при помощи функции «действия-сохранить значения». После этого выхожу и захожу снова в 1С и отчеты пропадают.
Кроме того не сохраняются настройки журналов (выбранные столбцы, ширина)
И как настроить например в журнале — заказ поставщика, чтобы подразделение всегда была выбрано определенное, чтобы при каждом заходе в 1С не приходилось выбирать вручную подразделение?
Как я уже писал ранее, сделал клиенту в УТ отчет, где подменил схему компоновки данных. Все работало хорошо, но не сохранялись настройки в варианте.
Проявлялось это так — если в настройках добавить поле «Остаток», то отчет формировался. Если сохранить вариант, потом переключиться на другой, потом вернуться на сохраненный, поле тоже показывалось.
Но если закрыть отчет и открыть сохраненный вариант, поля не было.
Я предполагал, что разбирательства будут долгими, так оно и оказалось. Работы были гарантийными, но мне было интересно, в чем проблема. Так можно было просто подменить макет через расширение макета, но хотелось докопаться до истины.
Вообще, был интересен вопрос — вариант сохраняется криво, без моего поля или же при восстановлении варианта происходит сбой.
Сейчас я понимаю, что надо было просто проверить, есть ли поле в настройках компоновщика при компоновке отчета из сохраненного варианта.
Но я пошел другим путем, не самым быстрым.
Я сделал замер производительности при сохранении варианта и нашел, где создается схема компоновки данных:
И вот тут я увидел, что в тексте запроса компоновки нет поля «Остаток», который я добавил (смотрите табло внизу):
Я отладил и нашел, где создается объект отчета:
В итоге я решил добавить событие, чтобы при создании отчета обновлялась компоновка данных.
В модуле ВариантыОтчетов:
&Вместо("ПодключитьОтчетОбъект") Функция дор_ПодключитьОтчетОбъект(СсылкаОтчета, ПолучатьМетаданные) Результат = ПродолжитьВызов(СсылкаОтчета, ПолучатьМетаданные); //Осипов - вызываем при создании, если возможно Попытка Результат.Объект.дор_ПриСозданииОтчета(); Исключение КонецПопытки; Возврат Результат; КонецФункции
В модуле отчета ВыручкаИСебестоимостьПродаж:
&Перед("ПередЗагрузкойНастроекВКомпоновщик") Процедура дор_ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) //Меняем на доработанную схему компановки дор_ПодменитьСхему(); КонецПроцедуры Процедура дор_ПодменитьСхему() СхемаКомпоновкиДанных = ПолучитьМакет("дор_ОсновнаяСхемаКомпоновкиДанных"); КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); //важно КонецПроцедуры Процедура дор_ПриСозданииОтчета() Экспорт дор_ПодменитьСхему(); КонецПроцедуры
После этого в компоновке появилось мое поле остаток:
Дальше я решил проверить, как загружаются настройки при открытии отчета, нашел вот эту функцию, где опять же создавался объект отчета, похоже со стандартной схемой компоновки (не измененной):
По стеку сложно было привязаться к каким либо событиям:
Поэтому я решил привязаться к событию ЗагрузитьНастройкиВКомпоновщик:
Код выглядел примерно так:
&НаСервере &Перед("ЗагрузитьНастройкиВКомпоновщик") Процедура дорЗагрузитьНастройкиВКомпоновщик(ПараметрыЗагрузки) //Перед вызываем ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); Попытка ОтчетОбъект.дорПриСозданииОтчета(); Исключение КонецПопытки; //ЗначениеВРеквизитФормы(ОтчетОбъект, "Отчет"); ЗначениеВДанныеФормы(ОтчетОбъект, Отчет); КонецПроцедуры
Однако почему-то ЗначениеВРеквизитФормы выдавало ошибку, ругаясь на второй параметр. В общем, отладка показала, что ничего в запросе схемы компоновки не меняется, он остается без поля остаток.
Но тут я все же отладил загрузку варианта. Чтобы отлаживать не в фоновом режиме, я использовал запуск 1С с параметром РежимОтладки.
Я обнаружил, что настройка варианта загружается нормально, т.е. в списке полей настройки есть поле Остаток. Т.е. все предыдущие доработки были зря, потому что и без них вариант сохранялся и загружался нормально.
Настройки пропадают где-то при формировании отчета в коде самого отчета:
Дальнейшая проверка показала, где пропадает настройка:
Вот в этом коде настройки корректные:
КомпоновщикНастроек.Настройки.Выбор.Элементы
А вот в этом коде поля Остаток уже нет:
КомпоновщикНастроек.ПолучитьНастройки().Выбор.Элементы
Я добавил строчку для подмены настроек и отчет сформировался корректно:
Но мне не нравилось, что приходится менять код отчета. Поэтому я немножко поэкспериментировал и обнаружил, как можно привести настройки в адекватное состояние.
По сути, проблема сохранения варианта решается одной дополнительной строчкой кода в расширении, вот она:
&Перед("ПриКомпоновкеРезультата") Процедура дор_ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) КомпоновщикНастроек.ЗагрузитьНастройки(КомпоновщикНастроек.Настройки); КонецПроцедуры
Почему сбоят настройки, т.е. почему ПолучитьНастройки и Настройки одного и того же объекта выдают разные значения, я так и не понял. Я пробовал и метод ВосстановитьНастройки и добавлял инициализацию настроек в компоновщике настроек после подмены схемы компоновки, ничего не помогло. Видимо, это фича 1С.
Ошибкой было еще предположение, что где-то схема используется не измененная, поэтому настройки не сохраняются. Нужно было проверить настройки при компоновке отчета, тогда бы я увидел, что они уже там правильные, но сбрасываются из-за этой фичи.
Дело в том, что 1С всегда вызывает событие перед загрузкой настроек отчета, а там уже моё изменение схемы есть. Поэтому я по сути большую часть времени потратил на поиски фантомной ошибки, которой на самом деле не было.
UPD 2021-08-15: Обратились пользователи, решение не работало — поле остаток сохранялось, но нельзя было поменять период отчета.
Разборки показали, что проблема в пользовательских настройках, именно они при старте отчета не содержат поля остаток.
Я попробовал так, но не помогло:
Поле ДоступныеНастройки.ПользовательскиеНастройки.Элементы[3].Элементы не содержит поле Остаток:
Похоже, что пользовательские настройки отчета были модифицированы ранее.
Более детальный анализ показал, что настройки загружаются в событии формы перед загрузкой пользовательских настроек:
Поэтому нужно при создании формы отчета подменить схему компоновки.
Вот так заработало:
Но так не годится — это вмешательство в код.
Поэтому переношу код в расширение, таким образом, в расширении формы отчета достаточно такого кода (достаточно вызвать только при создании):
&НаСервере &Перед("ПриСозданииНаСервере") Процедура дор_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //Перед вызываем ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); Попытка ОтчетОбъект.дор_ПриСозданииОтчета(); Исключение КонецПопытки; ЗначениеВДанныеФормы(ОтчетОбъект, Отчет); КонецПроцедуры
Ну и в расширении модуля отчета по валовой прибыли необходимый код такой:
&Перед("ПередЗагрузкойНастроекВКомпоновщик") Процедура дор_ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) //Меняем на доработанную схему компановки дор_ПодменитьСхему(); КонецПроцедуры Процедура дор_ПодменитьСхему() Экспорт СхемаКомпоновкиДанных = ПолучитьМакет("дор_ОсновнаяСхемаКомпоновкиДанных"); КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); //важно КонецПроцедуры Процедура дор_ПриСозданииОтчета() Экспорт дор_ПодменитьСхему(); КонецПроцедуры
Перед загрузкой настроек в компоновщик тоже надо обрабатывать, иначе не срабатывает.
Время факт: 3 час. Среда: УТ 11.4.13.46