Создаем новый документ с минимальными изменениями БД

Задача: Создать новый документ "Реализация услуг" на базе документа "Акт об оказании производственных услуг". Поменять логику проведения и добавить в него несколько реквизитов.

Конфигурация: Бухгалтерия для Украины, редакция 2.0. (2.0.8.2)

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

Включаем возможность изменения в конфигурации

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

Конфигурация - Поддержка - Настройка поддержки - Включить возможность изменения

Меню Поддержка - Настройка поддержки

Подробнее тут

Мы не будем изменять существующие объекты конфигурации, а только добавлять новые. Для этого в открывшемся окне выбираем корень в дереве конфигурации и нажимаем "Установить правило поддержки"

Установить правило поддержки

Устанавливаем правило поддержки: "Объект поставщика редактируется с сохранением поддержки"

Объект поставщика редактируется с сохранением поддержки

Добавляем документ копированием и модифицируем его

Предварительная подготовка окончена. Теперь добавляем документ копированием в конфигурацию и модифицируем его механизм проведения.

1. В документ необходимо добавить несколько реквизитов с типом "ПланыСчетов.Хозрасчетный". В табличную часть необходимо добавить 2 реквизита "Контрагент" и "Себестоимость".

2. В процедуре "ОбработкаПроведения" реквизиты документа загружаются в структуру "СтруктураШапкиДокумента", а табличная часть в таблицу значений "ТаблицаПоУслугам". Чтобы в нее попали наши новые реквизиты табличной части, в процедуру "ПодготовитьТаблицыДокумента" добавляем:

СтруктураПолей.Вставить("Контрагент"    	   , "Контрагент");
СтруктураПолей.Вставить("Себестоимость"    	   , "Себестоимость");	

3. В процедуре "ДвиженияПоТабличнойЧастиУслуги" в цикл перебора строк ТЧ, вставляем:

Если ЗначениеЗаполнено(СтрокаТаблицы.Контрагент) И ЗначениеЗаполнено(СтрокаТаблицы.Себестоимость) Тогда		
	СформироватьДопПроводки(СтруктураШапкиДокумента, ТаблицаПоУслугам, ПроводкиБУ, СтрокаТаблицы);
КонецЕсли;

4. В процедуре "СформироватьДопПроводки" добавляем дополнительные проводки по нашим требованиям.

5. Создаем новый периодический регистр сведений "Данные для заполнения документа реализация услуг", в котором в качестве измерения указываем организацию, а в качестве ресурса все новые реквизиты документа. При создании нового документа мы будем выбирать из него данные на текущую дату и заполнять реквизиты значениями по умолчанию. Для этого в форме документа добавляем процедуру "ПриОткрытии".

&НаСервере
Процедура ПриОткрытииНаСервере() 
	
	ОтборПоОрганизации = Новый Структура("Организация", Объект.Организация);
	НачДанные = РегистрыСведений.ДанныеДляЗаполненияДокументаРеализацияУслуг.ПолучитьПоследнее(ТекущаяДата());
	
	Попытка
		ЗаполнитьЗначенияСвойств(Объект,НачДанные);
	Исключение
	КонецПопытки;
КонецПроцедуры


&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Если Параметры.Ключ.Пустая() Тогда //Если документ новый
		ПриОткрытииНаСервере();	
	КонецЕсли; 
КонецПроцедуры

Добавляем документ в подсистему

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

Новая подсистема

Создаем новую общую команду

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

Создаем копию общей команды

После чего в скопированном объекте "ПоказатьДвиженияДокументаКопия" добавляем наш документ в реквизит "Тип параметра команды"

Добавляем новый документ в тип параметра команды

Создадим новую роль, включим в нее подсистему и документ

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

Новая роль с правом просмотра новой подсистемы

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

Обновляем ИБ и вспомогательные данные

Обновляем конфигурацию БД 1С и в заключение нам необходимо обновить вспомогательные данные. Это можно сделать либо с помощью обработки, либо с помощью одноразового запуска платформы с ключем "ЗапуститьОбновлениеИнформационнойБазы". Подробнее тут, тут или тут.


Похожие материалы

Комментарии