Пример доработки типового отчета в БП 3.0 (Ограничение доступности поля в отборе, группировке) без снятия с поддержки

24.09.18

Задачи пользователя - Адаптация типовых решений

Доработка типового отчета в БП 3.0. Пример, как можно внести изменения в типовой отчет "Бухгалтерии предприятия" 3.0 без снятия конфигурации с поддержки. Снять ограничение доступности нужного поля в отборе, группировке.

Доработка типового отчета в БП 30
1С:Предприятие 8.3 (8.3.10.2561)
Бухгалтерия предприятия, редакция 3.0 (3.0.64.29)

Пример, как можно внести изменения в типовой отчет Бухгалтерии предприятия 30 без снятия конфигурации с поддержки

Задача: Добавить возможность отбора, группировки по Регистратору(Документу) в типовой отчет "Регистры налогового учета"
1. Добавляем расширение в конфигурацию 1с

Меню -Конфигурация - Расширение конфигурации 

Расш_1

Добавим расширение

Расш_2

Снимем признак "Безопасный режим в расширение"

Расш_3

2. Добавил форму отчета в расширение

Находим требуемый отчет в конфигурации , щелкам правой кнопкой мышки по форме отчета, выполняем команду "Добавить в расширение"

ФормаОтчета_1

3. Определяем место инициализации компоновщика и его настроек.

В рамках текущей задачи это процедура "ИзменениеСхемыКомпоновкиДанныхНаСервере" в форме отчета.
Можно понять, если найти в коде использования реквизита формы "СхемаКомпоновкиДанных" и момент инициализации настроек для компоновщика отчета.
В данном реквизите типа "Строка" сохраняется схема компоновки данных. Далее она может изменятся в процессе выполнения программного кода. Используется для источника доступных настроек компоновщика данных.

4. Добавляем процедуру  в расширение 

Выделяем процедуру в основной форме отчета, щелкаем правой кнопкой мыши  и выполняем команду "Добавить в расширение"

Процедура_1
Выбираем в какой момент времени она будет вызвана. В нашем случаи после выполнения изначальной до изменений.
Процедура_2
Так отображается добавленная процедура в коде формы отчета расширения.
Процедура_3
5. Определяем по данным отчета, что нам нужно изменить, что бы можно было наложить отбор по требуемому полю

В данном случаи, нужно изменить "Ограничение использования реквизитов" в схеме компоновки данных
ОграничениеРеквизитов_1
6. Снимаем ограничение использования реквизитов для условия и группировки

В процедуре "ИзменениеСхемыКомпоновкиДанныхНаСервере" добавляем программный код:
 

&НаСервере
&После("ИзменениеСхемыКомпоновкиДанныхНаСервере")
Процедура Расшир_ИзменениеСхемыКомпоновкиДанныхНаСервере(Знач Схема)
	// Определяем необходимость инициализации 
	ИнициализироватьКомпНастроек=ложь;
	Если Схема = Неопределено Тогда
		Схема = ПолучитьИзВременногоХранилища(СхемаКомпоновкиДанных);
	КонецЕсли;
	
	// Найдем набор данных для изменения
	ДанныеПервичныхДокументов=Схема.НаборыДанных.найти("ДанныеПервичныхДокументов");
	
	Если ДанныеПервичныхДокументов<> неопределено тогда
		
		// Найдем в наборе данных поле для изменения
		ПолеРегистраторНаборДанных=ДанныеПервичныхДокументов.Поля.найти("Регистратор");
		Если ПолеРегистраторНаборДанных <> неопределено тогда
			
			// Меняем значение настройки поля
			ПолеРегистраторНаборДанных.ОграничениеИспользованияРеквизитов.Условие =ложь;
			ПолеРегистраторНаборДанных.ОграничениеИспользованияРеквизитов.Группировка =ложь;
			ИнициализироватьКомпНастроек=истина;
			
		КонецЕсли;
		
	КонецЕсли;
	
	Если ИнициализироватьКомпНастроек тогда
		// Обновим значение СКД
		СхемаКомпоновкиДанных = ПоместитьВоВременноеХранилище(Схема, СхемаКомпоновкиДанных);
		// Инициализируем компоновщик настроек 
		Отчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
	КонецЕсли;
	
КонецПроцедуры

7. Поле "Регистратор" все равно не доступно ?
Проводим отладку и выясняем, что дополнительно при открытии формы настройки отчета отрабатывает ограничение по доступности некоторых полей в процедуре "ПолучитьЗапрещенныеПоля". Для других типовых отчетов не обязательно наличие данной процедуры.
Процедура  "ПолучитьЗапрещенныеПоля"
Выдержка из типовой процедуры 

&НаКлиенте
Функция ПолучитьЗапрещенныеПоля(Режим = "") Экспорт
	
	СписокПолей = Новый Массив;
	
	//Если список субконто задан
	Если Отчет.СписокВидовСубконто.Количество() > 0 Тогда
		СписокПолей.Добавить("Субконто1");
		СписокПолей.Добавить("Субконто2");
		СписокПолей.Добавить("Субконто3");
	КонецЕсли;
	
	Для Каждого Субконто Из Отчет.СписокВидовСубконто Цикл
		СписокПолей.Удалить(0);			
	КонецЦикла;
	
	СписокПолей.Добавить("UserFields");
	СписокПолей.Добавить("DataParameters");
	СписокПолей.Добавить("SystemFields");
	СписокПолей.Добавить("Показатели");
	СписокПолей.Добавить("Период");
	СписокПолей.Добавить("БухТипРесурса");
	СписокПолей.Добавить("ДатаОперации");
	СписокПолей.Добавить("ДоляЕНВД");
	СписокПолей.Добавить("Содержание");
	СписокПолей.Добавить("Организация");
	СписокПолей.Добавить("ОстатокБУ");
	СписокПолей.Добавить("ОстатокНУ");
	СписокПолей.Добавить("Регистратор");
.....

Добавляем ее по аналогу в расширение, внесем изменения для исключения поля "Регистратор" из списка ограничений.

&НаКлиенте
&Вместо("ПолучитьЗапрещенныеПоля")
Функция Расшир_ПолучитьЗапрещенныеПоля(Режим)
	
     // Результат - это поле табличного документа, заменяем на свое значение
	МассивСписокПолейФикс = ПродолжитьВызов(Режим);
	 
    // Сформируем новый фиксированный массив без ограничения на поле "Регистратор"
    СписокПолей= новый Массив;

	Для Каждого Эл из  МассивСписокПолейФикс цикл
		Если    Эл = "Регистратор" тогда
			Продолжить;
		КонецЕсли;
		СписокПолей.Добавить(Эл);
	КонецЦикла;
	// Вернем новый фикс. массив
	Возврат Новый ФиксированныйМассив(СписокПолей);

КонецФункции

8. Проверяем результат
Поле и реквизиты доступны для группировки

Регистратор_Группировка
Поле и реквизиты доступны для отбора

Регистратор_Отбор

Пример доработки типового отчета по ограничению доступности поля в отчете

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4452    9    4    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    2953    4    0    

19

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1282    dimanich70    6    

13

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Доработка типового отчета "Связанные документы" позволяет просто и быстро расширять состав объектов для построения структуры подчиненности документов, используя объекты основной конфигурации и любых расширений.

1 стартмани

27.10.2023    1994    13    avmartynov    10    

43

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2071    21    progmaster    7    

3
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. user619273_alevtina 30.12.18 17:27 Сейчас в теме
2. German_Tagil 42 16.02.19 21:27 Сейчас в теме
3. MonteCriZto 112 08.02.21 04:54 Сейчас в теме
Добрый день, пытался по образу и подобию воспользоваться вашими соображениями на современном релизе Бухгалтерии . (3.0.88.32)
Процедуры на форме
ИзменениеСхемыКомпоновкиДанныхНаСервере. Нет.. и я немного в замешательстве ) Если поможете буду благодарен )
4. aleksey.kubovtsov 116 08.02.21 15:36 Сейчас в теме
(3)Добрый день, Коллега. Уточните , что вы хотите сделать? Опишите постановку задачи? В БП 30 с момента публикации статьи могло много чего измениться, как БСП методы в конфигурации.
5. MonteCriZto 112 09.02.21 01:18 Сейчас в теме
На самом деле постановка задачи аналогична названию публикации). Пытаюсь поставить ограничение прав работникам склада, даю менеджер по продажам (типовое). Открываю отчет продажи, ни группировки по документам ни группировке по контрагентам нет ). Попытался в расширении подпилить как вы рекомендовали, часть с запрещенными полями удалась, Однако споткнулся на процедуре, ИзменениеСхемыКомпоновкиДанныхНаСервере, она отсутствует в форме отчета продажи )
6. aleksey.kubovtsov 116 10.02.21 14:50 Сейчас в теме
(5)
ИзменениеСхемыКомпоновкиДанныхНаСервере

см. форму отчета данного отчета , в ней "ПодготовитьПараметрыОтчетаНаСервере "
.....
ПараметрыОтчета.СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(СхемаКомпоновкиДанных);
.....

Там же СКД и Ком. настроек .
В публикации была сказано , что для решения конкретной задачи в рамках конкретного отчета.
Разные отчеты формируются по разному, и решение одной и той же задачи можно сделать по разному.
Оставьте свое сообщение