Так как показатель привязывается к партии товара, то хранить СтоимостьУПР будем в регистре накопления «ПартииТоваровНаСкладах» (добавить ресурс). В документе «ПоступлениеТоваровУслуг» этот показатель вводится вручную в отдельную колонку табличной части. Для того, чтобы управлять видимостью колонки необходимо существования отдельного права пользователя, получая которое будем устанавливать видимость и доступность колонки. При проведении документа необходимо также делать движение по регистру и этого показателя. Также нужно не забыть списывать этот показатель при списании партий. Изменение отчетов сводится к изменению макетов, по которым формируется отчет.
Решения:
1. В регистр накопления «ПартииТоваровНаСкладах» добавляем ресурс «СтоимостьУПР».
2. В табличную часть документа «ПоступлениеТоваровУслуг» добавляем реквизит «СтоимостьУПР».
3. В форме документа «ПоступлениеТоваровУслуг» в табличную часть добавляем колонку «СтоимостьУПР».
4. В модуле документа «ПоступлениеТоваровУслуг», процедура «ПодготовитьТаблицыДокумента» в структуру полей добавляем информацию о управленческой стоимости партии товара. Тем самым осуществляется движение по ресурсу «СтоимостьУПР»:
СтруктураПолей.Вставить("СтоимостьУПР", "СтоимостьУПР");
5. Добавляем механизм движения «в минус» по этому ресурсу. Для этого в общем модуле «УправлениеЗапасамиПартионныйУчет» в процедуре «ПолучитьТаблицуПартийНаСкладах» в тексте запроса выбираем и «СтоимостьУПР» из регистра:
Текст =
"ВЫБРАТЬ
| ""ПолучитьТаблицуПартийНаСкладах"" КАК QuieryId,
| ДокументОприходования,
| ДокументОприходования.Дата КАК ДокументОприходованияДата,
| Номенклатура,
| Склад,
| ХарактеристикаНоменклатуры,
| СерияНоменклатуры,
| Качество,
| Заказ,
| КоличествоОстаток КАК Количество,
| СтоимостьОстаток КАК Стоимость,
| СтоимостьУПРОстаток КАК СтоимостьУПР";
Также, списываем СтомиостьУПР в зависимости от коэффициента списания партии:
// Ресурсы
Движение.Количество = Окр(СтрокаПартии.Количество * КоэффСписания,3,1);
Движение.Стоимость = Окр(СтрокаПартии.Стоимость * КоэффСписания,2,1);
// начало добавления
Движение.СтоимостьУПР = Окр(СтрокаПартии.СтоимостьУПР * КоэффСписания,2,1);
// конец добавления
СтрокаПартии.Количество = СтрокаПартии.Количество - Движение.Количество;
СтрокаПартии.Стоимость = СтрокаПартии.Стоимость - Движение.Стоимость;
// начало добавления
СтрокаПартии.Стоимость = СтрокаПартии.Стоимость - Движение.Стоимость;
// конец добавления
6. Для того, чтобы в документе «ПоступлениеТоваровУслуг» можно было управлять видимостью колонки «СтоимостьУПР» необходимо:
• В ПланВидовХарактеристик «ПраваПользователей» добавить предопределенное право «ПросмотрСтоимостиУПР» типа «Булево».
• В общем модуле «Пользователи» добавить функцию, которая получает это право пользователя и возвращает «ложь» или «истину» исходя из концепции 1С по правам пользователя: «Действие разрешено, если оно разрешено хотя бы в одной роли, назначенной пользователю. Действие запрещено, если оно запрещено во всех ролях».
Функция РазрешитьПросмотрСтоимостиУПР(Пользователь) Экспорт
РазрешенПросмотр=ПолучитьЗначениеПраваПользователя(ПланыВидовХарактеристик.ПраваПользователей.ПросмотрСтоимостиУПР,ложь,Пользователь);
Если РазрешенПросмотр.НайтиПоЗначению(истина)=Неопределено Тогда
возврат ложь;
иначе
Возврат истина;
КонецЕсли;
КонецФункции
• Вызов этой функции рекомендуется разместить в модуле формы документа «ПоступлениеТоваровУслуг» в типовой процедуре «УстановитьВидимоть» и в зависимости от возвращаемого значения управлять видимостью и доступностью колонки «СтоимостьУПР»:
Если РазрешитьПросмотрСтоимостиУПР(глТекущийПользователь) Тогда
ЭлементыФормы.Товары.Колонки.СтоимостьУПР.Видимость=истина;
ЭлементыФормы.Товары.Колонки.СтоимостьУПР.Доступность=истина;
Иначе
ЭлементыФормы.Товары.Колонки.СтоимостьУПР.Видимость=ложь;
ЭлементыФормы.Товары.Колонки.СтоимостьУПР.Доступность=ложь;
КонецЕсли;
7. Переделать 2-3 отчета. "ВедомостьТоварыНаСкладах", "ВедомостьПартииТоваровНаСкладах" и еще какой-то. Остальные можно не доделывать, т.к. вся доработка заключается в изменении макета отчета.