1. Создал пустую базу и загрузил в нее каркасную конфигурацию.
2. Создал общий модуль РегистрацияВЖурнале с флагами сервер и вызов сервера. В котором поместил две процедуры:
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Товары = ДокОбъект.Товары;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Строка = Товары.Найти(ВыборкаДетальныеЗаписи.Номенклатура,"Номенклатура");
Если Строка.Цена<>ВыборкаДетальныеЗаписи.Цена Тогда
ЗафиксироватьИзменениеЦены(ДокОбъект,ВыборкаДетальныеЗаписи.Номенклатура,Строка.Цена,ВыборкаДетальныеЗаписи.Цена);
КонецЕсли;
КонецЦикла;
Все материалы этого сайта являются составной частью Базового / Продвинутого курсов по программированию - и являются объектами авторского и имущественного права.
Любое их распространение без письменного согласования с авторами запрещено.
1. Создал пустую базу и загрузил в нее каркасную конфигурацию.
2. Создал общий модуль РегистрацияВЖурнале с флагами сервер и вызов сервера. В котором поместил две процедуры:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровИУслугТовары.Номенклатура,
| РеализацияТоваровИУслугТовары.Цена
|ИЗ
| Документ."+ДокОбъект.Метаданные().Имя+".Товары КАК РеализацияТоваровИУслугТовары
|ГДЕ
| РеализацияТоваровИУслугТовары.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ДокОбъект.Ссылка);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Товары = ДокОбъект.Товары;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Строка = Товары.Найти(ВыборкаДетальныеЗаписи.Номенклатура,"Номенклатура");
Если Строка.Цена<>ВыборкаДетальныеЗаписи.Цена Тогда
ЗафиксироватьИзменениеЦены(ДокОбъект,ВыборкаДетальныеЗаписи.Номенклатура,Строка.Цена,ВыборкаДетальныеЗаписи.Цена);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ЗафиксироватьИзменениеЦены(ДокОбъект,Номенклатура,СтараяЦена,НоваяЦена)
МетаОбъека = ДокОбъект.Метаданные();
ЗаписьЖурналаРегистрации("ИзмЦен."+МетаОбъека.Имя,,МетаОбъека,ДокОбъект.Ссылка,"Товар: "+Номенклатура+", цена старая: "+СтараяЦена+", новая: "+НоваяЦена);
КонецПроцедуры
В модуле объекта документов в процедуре ПередЗаписью сделал вызов:
РегистрацияВЖурнале.ПроверитьИзменениеЦен(ЭтотОбъект);
КонецЕсли;
При изменении цен в проведенном документе происходит логирование.
3. В общий модуль РегистрацияВЖурнале добавил функцию:
Таблица = Новый ТаблицаЗначений;
МассивСобытий = Новый Массив;
МассивСобытий.Добавить("ИзмЦен.РеализацияТоваровИУслуг");
МассивСобытий.Добавить("ИзмЦен.ПоступлениеТоваровИУслуг");
Фильтр = Новый Структура("Событие",МассивСобытий);
ВыгрузитьЖурналРегистрации(Таблица,Фильтр);
Возврат Таблица;
КонецФункции
Создал отчет в функции СформироватьОтчетНаСервере() сделал вызов этой функции
Сделал сортировку по пользователю:
И вывел данные в отчет.