Имя: Пароль:
1C
1С v8
В отчете "Функциональная опция не найдена"
0 LastSoldier
 
18.01.16
22:12
Всем привет!
Пытаюсь переделать внешний отчет "Остатки товаров" (Где есть цена, сумма и количество).
Была версия УТ 11.1.10.153, а стала 11.2.3.66 и в ней перестал работать отчет. Которые были ошибки я подправил, а когда появилась эта, то не знаю и куда смотреть.
Это модуль объетка
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    ДокументРезультат.Очистить();
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    
    Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры") Тогда
        
        СхемаКомпоновкиДанных = Отчеты.ВедомостьПоТоварамОрганизацийВЦенахНоменклатуры.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
        ТекстЗапроса = СхемаКомпоновкиДанных.НаборыДанных[0].Запрос;
        
        ЗаменяемыйТекст =
        "    ВЫБОР
        |        КОГДА ЦеныНоменклатурыА.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
        |                ИЛИ ЕСТЬNULL(ЦеныНоменклатурыА.Упаковка.Знаменатель, 0) = 0
        |            ТОГДА ЦеныНоменклатурыА.Цена
        |        ИНАЧЕ ЦеныНоменклатурыА.Цена / ЦеныНоменклатурыА.Упаковка.Знаменатель
        |    КОНЕЦ КАК Цена,
        |    ВЫБОР
        |        КОГДА ЦеныНоменклатурыБ.Цена ЕСТЬ NULL
        |            ТОГДА 0
        |        КОГДА ЦеныНоменклатурыБ.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
        |                ИЛИ ЕСТЬNULL(ЦеныНоменклатурыБ.Упаковка.Знаменатель, 0) = 0
        |            ТОГДА ЦеныНоменклатурыБ.Цена
        |        ИНАЧЕ ЦеныНоменклатурыБ.Цена / ЦеныНоменклатурыБ.Упаковка.Знаменатель
        |    КОНЕЦ КАК СтараяЦена,
        |    ВЫБОР
        |        КОГДА ЦеныНоменклатурыА.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
        |                ИЛИ ЕСТЬNULL(ЦеныНоменклатурыА.Упаковка.Знаменатель, 0) = 0
        |            ТОГДА ЦеныНоменклатурыА.Цена
        |        ИНАЧЕ ЦеныНоменклатурыА.Цена / ЦеныНоменклатурыА.Упаковка.Знаменатель
        |    КОНЕЦ - ВЫБОР
        |        КОГДА ЦеныНоменклатурыБ.Цена ЕСТЬ NULL
        |            ТОГДА 0
        |        КОГДА ЦеныНоменклатурыБ.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
        |                ИЛИ ЕСТЬNULL(ЦеныНоменклатурыБ.Упаковка.Знаменатель, 0) = 0
        |            ТОГДА ЦеныНоменклатурыБ.Цена
        |        ИНАЧЕ ЦеныНоменклатурыБ.Цена / ЦеныНоменклатурыБ.Упаковка.Знаменатель
        |    КОНЕЦ КАК Дельта";
        
        Если Найти(ТекстЗапроса, ЗаменяемыйТекст) = 0 Тогда
            ВызватьИсключение НСтр("ru = 'Некорректный текст запроса'");
        КонецЕсли;
        
        ТекстЗамены =
        "    ЦеныНоменклатурыА.Цена КАК Цена,
        |    ВЫБОР
        |        КОГДА
        |            ЦеныНоменклатурыБ.Цена ЕСТЬ NULL
        |        ТОГДА
        |            0
        |        ИНАЧЕ
        |            ЦеныНоменклатурыБ.Цена
        |    КОНЕЦ КАК СтараяЦена,
        |        ЦеныНоменклатурыА.Цена
        |        - ВЫБОР
        |            КОГДА
        |                ЦеныНоменклатурыБ.Цена ЕСТЬ NULL
        |            ТОГДА
        |                0
        |            ИНАЧЕ
        |                ЦеныНоменклатурыБ.Цена
        |        КОНЕЦ
        |         КАК Дельта";
        
        ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ЗаменяемыйТекст, ТекстЗамены);
        СхемаКомпоновкиДанных.НаборыДанных[0].Запрос = ТекстЗапроса;
        
    КонецЕсли;
    
    СегментыСервер.ВключитьОтборПоСегментуНоменклатурыВСКД(КомпоновщикНастроек);
    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(
        СхемаКомпоновкиДанных,
        КомпоновщикНастроек.ПолучитьНастройки(),
        ДанныеРасшифровки);

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(
        МакетКомпоновки,
        ,
        ДанныеРасшифровки);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

    ПроцессорВывода.НачатьВывод();
    ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
    ПроцессорВывода.ЗакончитьВывод();
    
КонецПроцедуры

#КонецЕсли

////////////////////////////////////////////////////////////////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС

// Возвращает сведения о внешней обработке.
Функция СведенияОВнешнейОбработке() Экспорт
    
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.1.3.1");
    
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
    ПараметрыРегистрации.Версия = "1.0";
    ПараметрыРегистрации.БезопасныйРежим = Истина;
    
    Возврат ПараметрыРегистрации;
    
КонецФункции

////////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
1 LastSoldier
 
18.01.16
22:12
А вот сама ОсновнаяСхемаКомпоновкиДанных

ВЫБРАТЬ РАЗЛИЧНЫЕ
    Сегменты.Номенклатура,
    Сегменты.Характеристика,
    ИСТИНА КАК ИспользуетсяОтборПоСегментуНоменклатуры
ПОМЕСТИТЬ ОтборПоСегментуНоменклатуры
ИЗ
    РегистрСведений.НоменклатураСегмента КАК Сегменты
{ГДЕ
    Сегменты.Сегмент.* КАК СегментНоменклатуры,
    Сегменты.Номенклатура.* КАК Номенклатура,
    Сегменты.Характеристика.* КАК Характеристика}

ИНДЕКСИРОВАТЬ ПО
    Сегменты.Номенклатура,
    Сегменты.Характеристика,
    ИспользуетсяОтборПоСегментуНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ТоварыНаСкладах.ПериодСекунда КАК Период,
    ТоварыНаСкладах.Регистратор КАК Регистратор,
    ТоварыНаСкладах.Номенклатура КАК Номенклатура,
    ТоварыНаСкладах.Характеристика КАК Характеристика,
    ТоварыНаСкладах.Склад КАК Склад,
    ТоварыНаСкладах.Помещение КАК Помещение,
    ТоварыНаСкладах.ВНаличииНачальныйОстаток КАК КоличествоНачальныйОстаток,
    ТоварыНаСкладах.ВНаличииПриход КАК КоличествоПриход,
    ТоварыНаСкладах.ВНаличииРасход КАК КоличествоРасход,
    ТоварыНаСкладах.ВНаличииКонечныйОстаток КАК КоличествоКонечныйОстаток
ПОМЕСТИТЬ ОстаткиИОбороты
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , Авто, , {(Номенклатура).* КАК Номенклатура, (Характеристика).* КАК Характеристика, (Склад).* КАК Склад, ((Номенклатура, Характеристика) В
                (ВЫБРАТЬ
                    ОтборПоСегментуНоменклатуры.Номенклатура,
                    ОтборПоСегментуНоменклатуры.Характеристика
                ИЗ
                    ОтборПоСегментуНоменклатуры
                ГДЕ
                    ОтборПоСегментуНоменклатуры.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры))}) КАК ТоварыНаСкладах
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ТаблицаЦен.Период КАК Период,
    ТаблицаЦен.Регистратор КАК Регистратор,
    ТаблицаЦен.Номенклатура КАК Номенклатура,
    ТаблицаЦен.Характеристика КАК Характеристика,
    ВЫБОР
        КОГДА ЦеныНоменклатурыА.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
                ИЛИ ЕСТЬNULL(ЦеныНоменклатурыА.Упаковка.Знаменатель, 0) = 0
            ТОГДА ЦеныНоменклатурыА.Цена
        ИНАЧЕ ЦеныНоменклатурыА.Цена / ЦеныНоменклатурыА.Упаковка.Знаменатель
    КОНЕЦ КАК Цена,
    ВЫБОР
        КОГДА ЦеныНоменклатурыБ.Цена ЕСТЬ NULL
            ТОГДА 0
        КОГДА ЦеныНоменклатурыБ.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
                ИЛИ ЕСТЬNULL(ЦеныНоменклатурыБ.Упаковка.Знаменатель, 0) = 0
            ТОГДА ЦеныНоменклатурыБ.Цена
        ИНАЧЕ ЦеныНоменклатурыБ.Цена / ЦеныНоменклатурыБ.Упаковка.Знаменатель
    КОНЕЦ КАК СтараяЦена,
    ВЫБОР
        КОГДА ЦеныНоменклатурыА.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
                ИЛИ ЕСТЬNULL(ЦеныНоменклатурыА.Упаковка.Знаменатель, 0) = 0
            ТОГДА ЦеныНоменклатурыА.Цена
        ИНАЧЕ ЦеныНоменклатурыА.Цена / ЦеныНоменклатурыА.Упаковка.Знаменатель
    КОНЕЦ - ВЫБОР
        КОГДА ЦеныНоменклатурыБ.Цена ЕСТЬ NULL
            ТОГДА 0
        КОГДА ЦеныНоменклатурыБ.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
                ИЛИ ЕСТЬNULL(ЦеныНоменклатурыБ.Упаковка.Знаменатель, 0) = 0
            ТОГДА ЦеныНоменклатурыБ.Цена
        ИНАЧЕ ЦеныНоменклатурыБ.Цена / ЦеныНоменклатурыБ.Упаковка.Знаменатель
    КОНЕЦ КАК Дельта
ПОМЕСТИТЬ ИзмененияЦен
ИЗ
    (ВЫБРАТЬ
        МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период,
        МАКСИМУМ(ЦеныДоИзменения.Период) КАК ДатаПрошлогоИзменения,
        ЦеныНоменклатуры.Регистратор КАК Регистратор,
        ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
        ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
        ЦеныНоменклатуры.Характеристика КАК Характеристика
    ИЗ
        РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныДоИзменения
            ПО ЦеныНоменклатуры.Период > ЦеныДоИзменения.Период
                И ЦеныНоменклатуры.Номенклатура = ЦеныДоИзменения.Номенклатура
                И ЦеныНоменклатуры.Характеристика = ЦеныДоИзменения.Характеристика
                И (&ВидЦены = ЦеныДоИзменения.ВидЦены)
    ГДЕ
        ЦеныНоменклатуры.ВидЦены = &ВидЦены
    {ГДЕ
        (ЦеныНоменклатуры.Период <= &КонецПериода),
        ЦеныНоменклатуры.Номенклатура.* КАК Номенклатура,
        ЦеныНоменклатуры.Характеристика.* КАК Характеристика}
    
    СГРУППИРОВАТЬ ПО
        ЦеныНоменклатуры.Регистратор,
        ЦеныНоменклатуры.ВидЦены,
        ЦеныНоменклатуры.Номенклатура,
        ЦеныНоменклатуры.Характеристика) КАК ТаблицаЦен
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатурыА
        ПО ТаблицаЦен.Период = ЦеныНоменклатурыА.Период
            И ТаблицаЦен.Номенклатура = ЦеныНоменклатурыА.Номенклатура
            И ТаблицаЦен.Характеристика = ЦеныНоменклатурыА.Характеристика
            И ТаблицаЦен.ВидЦены = ЦеныНоменклатурыА.ВидЦены
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатурыБ
        ПО ТаблицаЦен.ДатаПрошлогоИзменения = ЦеныНоменклатурыБ.Период
            И ТаблицаЦен.Номенклатура = ЦеныНоменклатурыБ.Номенклатура
            И ТаблицаЦен.Характеристика = ЦеныНоменклатурыБ.Характеристика
            И ТаблицаЦен.ВидЦены = ЦеныНоменклатурыБ.ВидЦены
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ИзмененияЦен.Период КАК Период,
    ИзмененияЦен.Регистратор КАК Регистратор,
    ИзмененияЦен.Дельта КАК Дельта,
    ИзмененияЦен.Цена КАК Цена,
    ИзмененияЦен.СтараяЦена КАК СтараяЦена,
    ИзмененияЦен.Номенклатура КАК Номенклатура,
    ИзмененияЦен.Характеристика КАК Характеристика,
    ТоварыОрганизацийОстаткиИОбороты.Склад КАК Склад,
    ТоварыОрганизацийОстаткиИОбороты.Помещение КАК Помещение,
    МАКСИМУМ(ТоварыОрганизацийОстаткиИОбороты.Период) КАК ПериодМаксимум
ПОМЕСТИТЬ БлижайшиеОстаткиПоНоменклатуреПодготовка
ИЗ
    ИзмененияЦен КАК ИзмененияЦен
        ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиИОбороты КАК ТоварыОрганизацийОстаткиИОбороты
        ПО ИзмененияЦен.Период > ТоварыОрганизацийОстаткиИОбороты.Период
            И ИзмененияЦен.Номенклатура = ТоварыОрганизацийОстаткиИОбороты.Номенклатура
            И ИзмененияЦен.Характеристика = ТоварыОрганизацийОстаткиИОбороты.Характеристика
{ГДЕ
    ИзмененияЦен.Номенклатура.* КАК Номенклатура,
    ИзмененияЦен.Характеристика.* КАК Характеристика}

СГРУППИРОВАТЬ ПО
    ИзмененияЦен.Период,
    ИзмененияЦен.Регистратор,
    ИзмененияЦен.Дельта,
    ИзмененияЦен.Цена,
    ИзмененияЦен.СтараяЦена,
    ИзмененияЦен.Номенклатура,
    ТоварыОрганизацийОстаткиИОбороты.Склад,
    ТоварыОрганизацийОстаткиИОбороты.Помещение,
    ИзмененияЦен.Характеристика

ИМЕЮЩИЕ
    НЕ МАКСИМУМ(ТоварыОрганизацийОстаткиИОбороты.Период) ЕСТЬ NULL
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    МАКСИМУМ(Т.Регистратор) КАК Регистратор,
    Т.Период,
    Т.Номенклатура,
    Т.Характеристика,
    Т.Склад,
    Т.Помещение
ПОМЕСТИТЬ РегистраторМаксимумПоПериоду
ИЗ
    ОстаткиИОбороты КАК Т
ГДЕ
    (Т.Период, Т.Номенклатура, Т.Характеристика, Т.Склад, Т.Помещение) В
            (ВЫБРАТЬ
                Т.ПериодМаксимум,
                Т.Номенклатура,
                Т.Характеристика,
                Т.Склад,
                Т.Помещение
            ИЗ
                БлижайшиеОстаткиПоНоменклатуреПодготовка КАК Т)

СГРУППИРОВАТЬ ПО
    Т.Период,
    Т.Номенклатура,
    Т.Характеристика,
    Т.Склад,
    Т.Помещение
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Т.Период,
    Т.Регистратор,
    Т.Дельта,
    Т.Цена,
    Т.СтараяЦена,
    Т.Номенклатура,
    Т.Характеристика,
    Т.Склад,
    Т.Помещение,
    Т.ПериодМаксимум,
    РегистраторМаксимумПоПериоду.Регистратор КАК РегистраторМаксимум
ПОМЕСТИТЬ БлижайшиеОстаткиПоНоменклатуре
ИЗ
    БлижайшиеОстаткиПоНоменклатуреПодготовка КАК Т
        ЛЕВОЕ СОЕДИНЕНИЕ РегистраторМаксимумПоПериоду КАК РегистраторМаксимумПоПериоду
        ПО (РегистраторМаксимумПоПериоду.Номенклатура = Т.Номенклатура)
            И (РегистраторМаксимумПоПериоду.Характеристика = Т.Характеристика)
            И (РегистраторМаксимумПоПериоду.Склад = Т.Склад)
            И (РегистраторМаксимумПоПериоду.Помещение = Т.Помещение)
            И (РегистраторМаксимумПоПериоду.Период = Т.ПериодМаксимум)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВидыЦен.ВалютаЦены КАК Валюта,
    ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения КАК ПериодСекунда,
    НАЧАЛОПЕРИОДА(ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения, МИНУТА) КАК ПериодМинута,
    НАЧАЛОПЕРИОДА(ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения, ЧАС) КАК ПериодЧас,
    НАЧАЛОПЕРИОДА(ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения, ДЕНЬ) КАК ПериодДень,
    НАЧАЛОПЕРИОДА(ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения, НЕДЕЛЯ) КАК ПериодНеделя,
    НАЧАЛОПЕРИОДА(ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения, МЕСЯЦ) КАК ПериодМесяц,
    НАЧАЛОПЕРИОДА(ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения, КВАРТАЛ) КАК ПериодКвартал,
    НАЧАЛОПЕРИОДА(ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения, ГОД) КАК ПериодГод,
    ТаблицаТоварыНаСкладахМаксимальныйПериод.Регистратор КАК Регистратор,
    ТаблицаТоварыНаСкладахМаксимальныйПериод.Склад КАК Склад,
    ТаблицаТоварыНаСкладахМаксимальныйПериод.Помещение КАК Помещение,
    ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура КАК Номенклатура,
    ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаХранения,
    ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.ЕдиницаДляОтчетов КАК ЕдиницаДляОтчетов,
    ТаблицаТоварыНаСкладахМаксимальныйПериод.Характеристика КАК Характеристика,
    ВЫБОР
        КОГДА &ЕдиницыКоличества = 0
            ТОГДА ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоНачальныйОстаток, 0)
        КОГДА &ЕдиницыКоличества = 1
            ТОГДА ВЫБОР
                    КОГДА ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.КоэффициентЕдиницыДляОтчетов <> 0
                        ТОГДА ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоНачальныйОстаток, 0) / ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.КоэффициентЕдиницыДляОтчетов
                    ИНАЧЕ 0
                КОНЕЦ
    КОНЕЦ КАК КоличествоНачальныйОстаток,
    ВЫБОР
        КОГДА &ЕдиницыКоличества = 0
            ТОГДА ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоКонечныйОстаток, 0)
        КОГДА &ЕдиницыКоличества = 1
            ТОГДА ВЫБОР
                    КОГДА ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.КоэффициентЕдиницыДляОтчетов <> 0
                        ТОГДА ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоКонечныйОстаток, 0) / ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.КоэффициентЕдиницыДляОтчетов
                    ИНАЧЕ 0
                КОНЕЦ
    КОНЕЦ КАК КоличествоКонечныйОстаток,
    ВЫБОР
        КОГДА &ЕдиницыКоличества = 0
            ТОГДА ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоПриход, 0)
        КОГДА &ЕдиницыКоличества = 1
            ТОГДА ВЫБОР
                    КОГДА ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.КоэффициентЕдиницыДляОтчетов <> 0
                        ТОГДА ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоПриход, 0) / ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.КоэффициентЕдиницыДляОтчетов
                    ИНАЧЕ 0
                КОНЕЦ
    КОНЕЦ КАК КоличествоПриход,
    ВЫБОР
        КОГДА &ЕдиницыКоличества = 0
            ТОГДА ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоРасход, 0)
        КОГДА &ЕдиницыКоличества = 1
            ТОГДА ВЫБОР
                    КОГДА ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.КоэффициентЕдиницыДляОтчетов <> 0
                        ТОГДА ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоРасход, 0) / ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.КоэффициентЕдиницыДляОтчетов
                    ИНАЧЕ 0
                КОНЕЦ
    КОНЕЦ КАК КоличествоРасход,
    ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоНачальныйОстаток, 0) * ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.ВесЗнаменатель КАК НачальныйОстатокВес,
    ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоКонечныйОстаток, 0) * ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.ВесЗнаменатель КАК КонечныйОстатокВес,
    ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоПриход, 0) * ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.ВесЗнаменатель КАК ПриходВес,
    ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоРасход, 0) * ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.ВесЗнаменатель КАК РасходВес,
    ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоНачальныйОстаток, 0) * ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.ОбъемЗнаменатель КАК НачальныйОстатокОбъем,
    ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоКонечныйОстаток, 0) * ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.ОбъемЗнаменатель КАК КонечныйОстатокОбъем,
    ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоПриход, 0) * ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.ОбъемЗнаменатель КАК ПриходОбъем,
    ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоРасход, 0) * ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура.ОбъемЗнаменатель КАК РасходОбъем,
    ЕСТЬNULL(ЦеныНоменклатуры.Цена * ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоНачальныйОстаток, 0) КАК СуммаНачальныйОстаток,
    ЕСТЬNULL(ЦеныНоменклатуры.Цена * ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоПриход, 0) КАК СуммаПриход,
    ЕСТЬNULL(ЦеныНоменклатуры.Цена * ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоРасход, 0) КАК СуммаРасход,
    ЕСТЬNULL(ЦеныНоменклатуры.Цена * ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоКонечныйОстаток, 0) КАК СуммаКонечныйОстаток
ИЗ
    (ВЫБРАТЬ
        ТоварыНаСкладах.Период КАК ПериодДвижения,
        ТоварыНаСкладах.Регистратор КАК Регистратор,
        ТоварыНаСкладах.Номенклатура КАК Номенклатура,
        ТоварыНаСкладах.Характеристика КАК Характеристика,
        ТоварыНаСкладах.Склад КАК Склад,
        ТоварыНаСкладах.Помещение КАК Помещение,
        ТоварыНаСкладах.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
        ТоварыНаСкладах.КоличествоПриход КАК КоличествоПриход,
        ТоварыНаСкладах.КоличествоРасход КАК КоличествоРасход,
        ТоварыНаСкладах.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
        МАКСИМУМ(ЦеныНоменклатуры.Период) КАК ПериодМаксимум
    ИЗ
        ОстаткиИОбороты КАК ТоварыНаСкладах
            ЛЕВОЕ СОЕДИНЕНИЕ ИзмененияЦен КАК ЦеныНоменклатуры
            ПО ТоварыНаСкладах.Номенклатура = ЦеныНоменклатуры.Номенклатура
                И ТоварыНаСкладах.Характеристика = ЦеныНоменклатуры.Характеристика
                И ТоварыНаСкладах.Период >= ЦеныНоменклатуры.Период
    {ГДЕ
        ТоварыНаСкладах.Номенклатура.* КАК Номенклатура,
        ТоварыНаСкладах.Характеристика.* КАК Характеристика}
    
    СГРУППИРОВАТЬ ПО
        ТоварыНаСкладах.Период,
        ТоварыНаСкладах.Регистратор,
        ТоварыНаСкладах.Номенклатура,
        ТоварыНаСкладах.Характеристика,
        ТоварыНаСкладах.Склад,
        ТоварыНаСкладах.Помещение,
        ТоварыНаСкладах.КоличествоНачальныйОстаток,
        ТоварыНаСкладах.КоличествоПриход,
        ТоварыНаСкладах.КоличествоРасход,
        ТоварыНаСкладах.КоличествоКонечныйОстаток) КАК ТаблицаТоварыНаСкладахМаксимальныйПериод
        ЛЕВОЕ СОЕДИНЕНИЕ ИзмененияЦен КАК ЦеныНоменклатуры
        ПО ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодМаксимум = ЦеныНоменклатуры.Период
            И ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура = ЦеныНоменклатуры.Номенклатура
            И ТаблицаТоварыНаСкладахМаксимальныйПериод.Характеристика = ЦеныНоменклатуры.Характеристика
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
        ПО (ВидыЦен.Ссылка = &ВидЦены)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВидыЦен.ВалютаЦены,
    БлижайшиеОстаткиПоНоменклатуре.Период,
    НАЧАЛОПЕРИОДА(БлижайшиеОстаткиПоНоменклатуре.Период, МИНУТА),
    НАЧАЛОПЕРИОДА(БлижайшиеОстаткиПоНоменклатуре.Период, ЧАС),
    НАЧАЛОПЕРИОДА(БлижайшиеОстаткиПоНоменклатуре.Период, ДЕНЬ),
    НАЧАЛОПЕРИОДА(БлижайшиеОстаткиПоНоменклатуре.Период, НЕДЕЛЯ),
    НАЧАЛОПЕРИОДА(БлижайшиеОстаткиПоНоменклатуре.Период, МЕСЯЦ),
    НАЧАЛОПЕРИОДА(БлижайшиеОстаткиПоНоменклатуре.Период, КВАРТАЛ),
    НАЧАЛОПЕРИОДА(БлижайшиеОстаткиПоНоменклатуре.Период, ГОД),
    БлижайшиеОстаткиПоНоменклатуре.Регистратор,
    БлижайшиеОстаткиПоНоменклатуре.Склад,
    БлижайшиеОстаткиПоНоменклатуре.Помещение,
    БлижайшиеОстаткиПоНоменклатуре.Номенклатура,
    БлижайшиеОстаткиПоНоменклатуре.Номенклатура.ЕдиницаИзмерения,
    БлижайшиеОстаткиПоНоменклатуре.Номенклатура.ЕдиницаДляОтчетов,
    БлижайшиеОстаткиПоНоменклатуре.Характеристика,
    ВЫБОР
        КОГДА &ЕдиницыКоличества = 0
            ТОГДА ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0)
        КОГДА &ЕдиницыКоличества = 1
            ТОГДА ВЫБОР
                    КОГДА БлижайшиеОстаткиПоНоменклатуре.Номенклатура.КоэффициентЕдиницыДляОтчетов <> 0
                        ТОГДА ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) / БлижайшиеОстаткиПоНоменклатуре.Номенклатура.КоэффициентЕдиницыДляОтчетов
                    ИНАЧЕ 0
                КОНЕЦ
    КОНЕЦ,
    ВЫБОР
        КОГДА &ЕдиницыКоличества = 0
            ТОГДА ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0)
        КОГДА &ЕдиницыКоличества = 1
            ТОГДА ВЫБОР
                    КОГДА БлижайшиеОстаткиПоНоменклатуре.Номенклатура.КоэффициентЕдиницыДляОтчетов <> 0
                        ТОГДА ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) / БлижайшиеОстаткиПоНоменклатуре.Номенклатура.КоэффициентЕдиницыДляОтчетов
                    ИНАЧЕ 0
                КОНЕЦ
    КОНЕЦ,
    0,
    0,
    ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток, 0) * БлижайшиеОстаткиПоНоменклатуре.Номенклатура.ВесЗнаменатель,
    ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) * БлижайшиеОстаткиПоНоменклатуре.Номенклатура.ВесЗнаменатель,
    0,
    0,
    ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток, 0) * БлижайшиеОстаткиПоНоменклатуре.Номенклатура.ОбъемЗнаменатель,
    ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) * БлижайшиеОстаткиПоНоменклатуре.Номенклатура.ОбъемЗнаменатель,
    0,
    0,
    ЕСТЬNULL(БлижайшиеОстаткиПоНоменклатуре.СтараяЦена * ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0),
    ВЫБОР
        КОГДА БлижайшиеОстаткиПоНоменклатуре.Дельта > 0
            ТОГДА ЕСТЬNULL(БлижайшиеОстаткиПоНоменклатуре.Дельта * ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0)
        ИНАЧЕ 0
    КОНЕЦ,
    ВЫБОР
        КОГДА БлижайшиеОстаткиПоНоменклатуре.Дельта < 0
            ТОГДА ЕСТЬNULL(-БлижайшиеОстаткиПоНоменклатуре.Дельта * ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0)
        ИНАЧЕ 0
    КОНЕЦ,
    ЕСТЬNULL(БлижайшиеОстаткиПоНоменклатуре.Цена * ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0)
ИЗ
    БлижайшиеОстаткиПоНоменклатуре КАК БлижайшиеОстаткиПоНоменклатуре
        ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
        ПО БлижайшиеОстаткиПоНоменклатуре.ПериодМаксимум = ТоварыНаСкладахОстаткиИОбороты.Период
            И БлижайшиеОстаткиПоНоменклатуре.РегистраторМаксимум = ТоварыНаСкладахОстаткиИОбороты.Регистратор
            И БлижайшиеОстаткиПоНоменклатуре.Склад = ТоварыНаСкладахОстаткиИОбороты.Склад
            И БлижайшиеОстаткиПоНоменклатуре.Помещение = ТоварыНаСкладахОстаткиИОбороты.Помещение
            И БлижайшиеОстаткиПоНоменклатуре.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
            И БлижайшиеОстаткиПоНоменклатуре.Характеристика = ТоварыНаСкладахОстаткиИОбороты.Характеристика
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
        ПО (ВидыЦен.Ссылка = &ВидЦены)
ГДЕ
    ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток <> 0
{ГДЕ
    (ТоварыНаСкладахОстаткиИОбороты.Период <= &КонецПериода)}
2 LastSoldier
 
18.01.16
22:15
я заменил УпаковкиНоменклатуры=УпаковкиЕдиницыИзмерения
Коэффициент=Знаменатель
Вес=ВесЗнаменатель
Объем=ОбъемЗнаменатель
3 MadJhey
 
18.01.16
22:30
ты бы еще Войну и Мир запостил.
Проверь ИспользоватьУпаковкиНоменклатуры в функциональных опцих есть?
4 MadJhey
 
18.01.16
22:31
Скорее всего удалили/переименовали ФО.
5 Cyberhawk
 
18.01.16
22:32
Я что-то текста ошибки так и не вижу
6 LastSoldier
 
18.01.16
22:35
(3) да я тебя полностью про "Войну и Мир", но я сидел и обновлял базы все выходные и перенес все свои доработки и сторонние доработки кроме этого отчета. Я уже замучился и хочу отдохнуть )
Простите за такое количество кода, думал что будет информативнее.
Если нужны какие скриншоты по ошибке могу выложить
7 LastSoldier
 
18.01.16
22:37
(3) https://yadi.sk/i/9MLZ-Rd-nHwEa
Это я проверял, такая опция осталась
8 MadJhey
 
18.01.16
22:39
(4) остается в силе.
9 LastSoldier
 
18.01.16
22:39
а вот сама ошибка https://yadi.sk/i/SAw-udyQnHwh8
10 MadJhey
 
18.01.16
22:40
В журнале регистрации смотрел?
11 MadJhey
 
18.01.16
22:44
Проверь ФО, которые начинаются с удалить. Ну и, на крайняк,  сделай сравнение релизов.
12 LastSoldier
 
18.01.16
22:45
(10) неа
13 LastSoldier
 
18.01.16
22:46
Вот ошибка из журнала регистрации
Ошибка при формировании:
{ОбщийМодуль.ВариантыОтчетов.Модуль(1914)}: Ошибка при вызове метода контекста (СкомпоноватьРезультат)
    ОтчетОбъект.СкомпоноватьРезультат(Результат.ТабличныйДокумент, Результат.Расшифровка);
по причине:
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
{ВнешнийОтчет.ОстаткиТоваровДополнительный.МодульОбъекта(13)}: Ошибка при вызове метода контекста (ПолучитьФункциональнуюОпцию)
    Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиЕдиницыИзмерения") Тогда
по причине:
Функциональная опция не найдена
14 LastSoldier
 
18.01.16
22:48
(11) их всего две
УдалитьИспользоватьАктыОРасхожденияхПриПоступленииТоваров
УдалитьИспользоватьАктыПриемкиТоваров
15 MadJhey
 
18.01.16
22:49
прикольно. (7) точно из этой же базы?
16 MadJhey
 
18.01.16
22:50
Чисти кэш.
17 LastSoldier
 
18.01.16
22:50
(15) ага
18 MadJhey
 
18.01.16
22:55
Если не поможет: убери
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиЕдиницыИзмерения") Тогда
19 LastSoldier
 
18.01.16
22:55
(16) после чистки то же самое
20 LastSoldier
 
18.01.16
22:57
(18) убрал, ошибка осталась
21 MadJhey
 
18.01.16
22:58
ИспользоватьУпаковкиНоменклатуры
ИспользоватьУпаковкиЕдиницыИзмерения
22 MadJhey
 
18.01.16
23:02
иди спать :)
23 LastSoldier
 
18.01.16
23:03
(21) ошибка осталась
Вот из тех. журнала
Ошибка при формировании:
{ОбщийМодуль.ВариантыОтчетов.Модуль(1914)}: Ошибка при вызове метода контекста (СкомпоноватьРезультат)
    ОтчетОбъект.СкомпоноватьРезультат(Результат.ТабличныйДокумент, Результат.Расшифровка);
по причине:
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
{ВнешнийОтчет.ОстаткиТоваровДополнительный.МодульОбъекта(13)}: Ошибка при вызове метода контекста (ПолучитьФункциональнуюОпцию)
    Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиЕдиницыИзмерения") Тогда
по причине:
Функциональная опция не найдена
24 LastSoldier
 
18.01.16
23:04
(22) с радостью ) только завтра можно на работе тогда не появляться) взять внеплановый отпуск)
25 MadJhey
 
18.01.16
23:08
точно (22). Я же написал в (21) в чем проблема: они переименовали ФО из
ИспользоватьУпаковкиЕдиницыИзмерения в ИспользоватьУпаковкиНоменклатуры. Поменяй или удали условие.
26 LastSoldier
 
18.01.16
23:17
(25) так я уже удалял условие по твоему сообщению (18)
и переименовывал из ИспользоватьУпаковкиНоменклатуры в ИспользоватьУпаковкиНоменклатуры. Только у меня нет в списке ИспользоватьУпаковкиНоменклатуры.
https://yadi.sk/i/Ti8au2LpnJ65n
https://yadi.sk/i/bxJlN-18nJ67c
27 LastSoldier
 
18.01.16
23:17
из ИспользоватьУпаковкиНоменклатуры в ИспользоватьУпаковкиЕдиницыИзмерения , но у меня в скиске нету ФО ИспользоватьУпаковкиЕдиницыИзмерения
28 LastSoldier
 
18.01.16
23:28
Если удалять условие, то появляется другая ошибка
{ОбщаяФорма.ФормаОтчета.Форма(857)}: Ошибка при вызове метода контекста (ФоновоеЗаданиеЗапустить)
    ТребуетсяОбработчик = ФоновоеЗаданиеЗапустить(ПеременныеКлиента.ФормированиеПриОткрытии);
по причине:
Неизвестный идентификатор формы
29 ВРедная
 
18.01.16
23:30
(26) Даешь в студию скрин конфигуратора с ИспользоватьУпаковкиНоменклатуры и ошибкой отчета, в которой также есть слова "ИспользоватьУпаковкиНоменклатуры".

А с (28) продолжай разбираться. Когда победишь первую вторая все равно вылезет, они не связаны.
30 LastSoldier
 
18.01.16
23:42
(29) https://yadi.sk/i/RcoRxLcRnJACq
А в журнале почему-то пишет "ИспользоватьУпаковкиЕдиницыИзмерения"


Ошибка при формировании:
{ОбщийМодуль.ВариантыОтчетов.Модуль(1914)}: Ошибка при вызове метода контекста (СкомпоноватьРезультат)
    ОтчетОбъект.СкомпоноватьРезультат(Результат.ТабличныйДокумент, Результат.Расшифровка);
по причине:
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
{ВнешнийОтчет.ОстаткиТоваровДополнительный.МодульОбъекта(13)}: Ошибка при вызове метода контекста (ПолучитьФункциональнуюОпцию)
    Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиЕдиницыИзмерения") Тогда
по причине:
Функциональная опция не найдена
31 ВРедная
 
18.01.16
23:50
(30) Сделай копию внешнего отчета и открывай его. С этим что-то не так.
32 LastSoldier
 
18.01.16
23:58
(31) Кеш чистил.
а ошибка осталась (30)
33 LastSoldier
 
18.01.16
23:59
(31) и копию делал, открывал ошибка осталась (30)
34 ВРедная
 
19.01.16
00:03
(33) ну пили ее. чудес то не бывает. надо чтобы исполнялся тот код, который написан.
35 MadJhey
 
19.01.16
00:07
(32) поменяй имя отчета. Кэш сбойнул.
36 LastSoldier
 
19.01.16
00:11
УРААААААААААА.
Ребят, это было из-за того что я не удалил из базы старый отчет и когда я добавлял измененный просто переносом в 1с, они походу конфликтовали.
Спасибо всем большое.
(35) вот как раз про поменять имя отчета я думаю то же бы помогло
37 LastSoldier
 
19.01.16
00:16
Только я вот не могу понят, я сегодня пробовал этот отчет удалить из базы, но у меня не получилось, пишет что он предопределенный (на работа база клиен-серверная и пользователи в ней работали когда я хотел удалить), а дома в фойловом варианте и все сразу удалилось
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс