Валовая прибыль из документа "Заказ покупателя" для оценки эффективности предполагаемой продажи

07.08.14

Разработка - Универсальные функции

Чтобы не формировать несколько отчетов выставляя фильтры по организации/складам/номенклатуре/документу-регистратору и не сводить потом всю эту информацию воедино пытаясь оценить эффективность и рентабельность предполагаемой продажи по конкретному документу заказа покупателя предлагаю встроить в документ вызов отчета по валовой прибыли, с подменой запроса чтобы увидеть данные по себестоимости и рассчитать прибыль/эффективность/рентабельность с уже настроенными фильтрами по данным из заказа покупателя. Доработка разрабатывалась для УПП 1.3, но может быть встроена и в УТ 10.3.  Может кому пригодится.
В другой моей статье рассматривается подобная доработка для вызова типового отчета по валовой прибыли из документа реализации. 
Там действительно вызывался типовой отчет, только задавался фильтр по документу-регистратору.

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

Предполагается, что кнопку для вызова прилагаемой процедуры сумеете встроить сами :)



Процедура ДействияФормыВаловаяПрибыльПоДокументу(Кнопка)

	    Попытка

	 

	        ИмяОтчета = "ВаловаяПрибыль";

	

	        ОтчетОбъект = Отчеты[ИмяОтчета].Создать();

	

	        ФормаОтчета = ОтчетОбъект.ПолучитьФорму();

	

	        // Содержит название отчета, которое будет выводиться в шапке.

	        // Тип: Строка.

	        // Пример:

	        // УниверсальныйОтчет.мНазваниеОтчета = "Название отчета";

	        ОтчетОбъект.УниверсальныйОтчет.мНазваниеОтчета = "Валовая прибыль по документу (Не меняйте настройки этого отчета ! Это не типовой отчет по валовой прибыли.)";

	        ОтчетОбъект.УниверсальныйОтчет.ПоказыватьЗаголовок = Истина;

	

	        Попытка

	            ФормаОтчета.СпособОтображенияОкна = ВариантСпособаОтображенияОкна.Максимизированное;

	        Исключение

	        КонецПопытки;

	        ФормаОтчета.УниверсальныйОтчет.ВариантОформления = СтандартноеОформление.Камень;

	

	

	        ОтчетОбъект.УниверсальныйОтчет.мВосстанавливатьНастройкиПриОткрытии = Ложь;

	

	        ФормаОтчета.УниверсальныйОтчет.ДатаНач = Дата;

	        ФормаОтчета.УниверсальныйОтчет.ДатаКон = Дата;

	        ФормаОтчета.УниверсальныйОтчет.ОтрицательноеКрасным    = Истина;

	        ФормаОтчета.УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Ложь;

	        ФормаОтчета.УниверсальныйОтчет.ВыводитьОбщиеИтоги      = Истина;

	

	    Исключение

	        Предупреждение("Отчет не обнаружен. Возможно у Вас его нет или он не включен в состав программы.");

	        Возврат;

	    КонецПопытки;

	

	        ФормаОтчета.Открыть();

	

	        ПостроительОтчета = ФормаОтчета.УниверсальныйОтчет.ПостроительОтчета;

	        УниверсальныйОтчет = ФормаОтчета.УниверсальныйОтчет;

	

	        // Описание исходного текста запроса.

	        ТекстЗапроса =

	        "ВЫБРАТЬ РАЗРЕШЕННЫЕ

	        |   ЗаказПокупателяТовары.Номенклатура КАК Номенклатура,

	        |   ЗаказПокупателяТовары.Ссылка.Организация КАК Организация,

	        |   ВЫБОР

	        |       КОГДА НЕ ТИПЗНАЧЕНИЯ(ЗаказПокупателяТовары.Размещение) = ТИП(Справочник.Склады)

	        |               ИЛИ ЗаказПокупателяТовары.Размещение = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)

	        |           ТОГДА ""По всем складам""

	        |       ИНАЧЕ ЗаказПокупателяТовары.Размещение

	        |   КОНЕЦ КАК Склад,

	        |   ВЫБОР

	        |       КОГДА НЕ ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.КоличествоОстаток ЕСТЬ NULL

	        |           ТОГДА ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.КоличествоОстаток

	        |       КОГДА НЕ ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.КоличествоОстаток ЕСТЬ NULL

	        |           ТОГДА ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.КоличествоОстаток

	        |       ИНАЧЕ 0

	        |   КОНЕЦ КАК КоличествоОстаток,

	        |   ВЫБОР

	        |       КОГДА ЗаказПокупателяТовары.Номенклатура.ЕдиницаДляОтчетов.Коэффициент > 0

	        |           ТОГДА ЗаказПокупателяТовары.Количество * ЗаказПокупателяТовары.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЗаказПокупателяТовары.Номенклатура.ЕдиницаДляОтчетов.Коэффициент

	        |       ИНАЧЕ 0

	        |   КОНЕЦ КАК ЗаказПокупателяКоличествоВЕдиницахДляОтчетов,

	        |   ВЫБОР

	        |       КОГДА ЗаказПокупателяТовары.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент > 0

	        |           ТОГДА ЗаказПокупателяТовары.Количество * ЗаказПокупателяТовары.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент

	        |       ИНАЧЕ 0

	        |   КОНЕЦ КАК ЗаказПокупателяКоличествоВБазовыхЕдиницах,

	        |   ВЫБОР

	        |       КОГДА НЕ ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.КоличествоОстаток ЕСТЬ NULL

	        |           ТОГДА ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.СтоимостьОстаток / ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.КоличествоОстаток

	        |       КОГДА НЕ ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.КоличествоОстаток ЕСТЬ NULL

	        |           ТОГДА ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.СтоимостьОстаток / ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.КоличествоОстаток

	        |       ИНАЧЕ 0

	        |   КОНЕЦ КАК СебестоимостьНачальныйОстатоток,

	        |   ВЫБОР

	        |       КОГДА НЕ ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.СтоимостьОстаток ЕСТЬ NULL

	        |           ТОГДА ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.СтоимостьОстаток

	        |       КОГДА НЕ ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.СтоимостьОстаток ЕСТЬ NULL

	        |           ТОГДА ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.СтоимостьОстаток

	        |       ИНАЧЕ 0

	        |   КОНЕЦ КАК СтоимостьОстаток,

	        |   ЗаказПокупателяТовары.Количество КАК ЗаказПокупателяКоличество,

	        |   ВЫБОР

	        |       КОГДА НЕ ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.СтоимостьОстаток ЕСТЬ NULL

	        |               И ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.СтоимостьОстаток > 0

	        |               И НЕ ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.КоличествоОстаток ЕСТЬ NULL

	        |               И ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.КоличествоОстаток > 0

	        |           ТОГДА ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.СтоимостьОстаток / ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.КоличествоОстаток * ЗаказПокупателяТовары.Количество

	        |       КОГДА НЕ ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.СтоимостьОстаток ЕСТЬ NULL

	        |               И ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.СтоимостьОстаток > 0

	        |               И НЕ ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.КоличествоОстаток ЕСТЬ NULL

	        |               И ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.КоличествоОстаток > 0

	        |           ТОГДА ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.СтоимостьОстаток / ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.КоличествоОстаток * ЗаказПокупателяТовары.Количество

	        |       ИНАЧЕ 0

	        |   КОНЕЦ КАК СебестоимостьЗакупки,

	        |   ЗаказПокупателяТовары.Сумма КАК ЗаказПокупателяСумма,

	        |   ВЫБОР

	        |       КОГДА НЕ ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.СтоимостьОстаток ЕСТЬ NULL

	        |               И ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.СтоимостьОстаток > 0

	        |               И НЕ ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.КоличествоОстаток ЕСТЬ NULL

	        |               И ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.КоличествоОстаток > 0

	        |           ТОГДА ЗаказПокупателяТовары.Сумма - ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.СтоимостьОстаток / ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.КоличествоОстаток * ЗаказПокупателяТовары.Количество

	        |       КОГДА НЕ ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.СтоимостьОстаток ЕСТЬ NULL

	        |               И ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.СтоимостьОстаток > 0

	        |               И НЕ ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.КоличествоОстаток ЕСТЬ NULL

	        |               И ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.КоличествоОстаток > 0

	        |           ТОГДА ЗаказПокупателяТовары.Сумма - ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.СтоимостьОстаток / ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.КоличествоОстаток * ЗаказПокупателяТовары.Количество

	        |       ИНАЧЕ 0

	        |   КОНЕЦ КАК ВаловаяПрибыль,

	        |   ВЫБОР

	        |       КОГДА НЕ ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.СтоимостьОстаток ЕСТЬ NULL

	        |               И ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.СтоимостьОстаток > 0

	        |               И НЕ ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.КоличествоОстаток ЕСТЬ NULL

	        |               И ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.КоличествоОстаток > 0

	        |           ТОГДА (ЗаказПокупателяТовары.Сумма - ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.СтоимостьОстаток / ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.КоличествоОстаток * ЗаказПокупателяТовары.Количество) / (ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.СтоимостьОстаток / ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.КоличествоОстаток * ЗаказПокупателяТовары.Количество) * 100

	        |       КОГДА НЕ ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.СтоимостьОстаток ЕСТЬ NULL

	        |               И ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.СтоимостьОстаток > 0

	        |               И НЕ ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.КоличествоОстаток ЕСТЬ NULL

	        |               И ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.КоличествоОстаток > 0

	        |           ТОГДА (ЗаказПокупателяТовары.Сумма - ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.СтоимостьОстаток / ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.КоличествоОстаток * ЗаказПокупателяТовары.Количество) / (ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.СтоимостьОстаток / ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.КоличествоОстаток * ЗаказПокупателяТовары.Количество) * 100

	        |       ИНАЧЕ 0

	        |   КОНЕЦ КАК Эффективность

	        |{ВЫБРАТЬ

	        |   Номенклатура.*,

	        |   Организация,

	        |   Склад,

	        |   СебестоимостьНачальныйОстатоток КАК ЦенаЗакупочная,

	        |   СтоимостьОстаток,

	        |   ЗаказПокупателяКоличество,

	        |   СебестоимостьЗакупки КАК СебестоимостьЗакупки,

	        |   ЗаказПокупателяСумма КАК ЗаказПокупателяСумма,

	        |   ВаловаяПрибыль КАК ВаловаяПрибыль,

	        |   ЗаказПокупателяКоличествоВЕдиницахДляОтчетов,

	        |   ЗаказПокупателяКоличествоВБазовыхЕдиницах,

	        |   Эффективность}

	        |ИЗ

	        |   Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары

	        |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ПозицияДокумента {(&ПозицияДокумента)}, {(Номенклатура).* КАК Номенклатура, (Организация).* КАК Организация, (Склад).* КАК Склад}) КАК ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация

	        |       ПО ЗаказПокупателяТовары.Номенклатура = ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.Номенклатура

	        |           И ЗаказПокупателяТовары.Размещение = ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.Склад

	        |           И ЗаказПокупателяТовары.Ссылка.Организация = ПартииТоваровНаСкладахСвязьНоменклатураСкладОрганизация.Организация

	        |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ПозицияДокумента {(&ПозицияДокумента)}, {(Номенклатура).* КАК Номенклатура, (Организация).* КАК Организация, (Склад).* КАК Склад}) КАК ПартииТоваровНаСкладахСвязьНоменклатураОрганизация

	        |       ПО ЗаказПокупателяТовары.Номенклатура = ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.Номенклатура

	        |           И ЗаказПокупателяТовары.Ссылка.Организация = ПартииТоваровНаСкладахСвязьНоменклатураОрганизация.Организация

	        |ГДЕ

	        |   ЗаказПокупателяТовары.Ссылка = &ЗаказПокупателя

	        |{ГДЕ

	        |   ЗаказПокупателяТовары.Номенклатура.*,

	        |   ЗаказПокупателяТовары.Ссылка.Организация,

	        |   (ВЫБОР

	        |           КОГДА НЕ ТИПЗНАЧЕНИЯ(ЗаказПокупателяТовары.Размещение) = ТИП(Справочник.Склады)

	        |                   ИЛИ ЗаказПокупателяТовары.Размещение = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)

	        |               ТОГДА ""По всем складам""

	        |           ИНАЧЕ ЗаказПокупателяТовары.Размещение

	        |       КОНЕЦ) КАК Склад}

	        |{УПОРЯДОЧИТЬ ПО

	        |   Номенклатура.*,

	        |   Организация,

	        |   Склад}

	        |ИТОГИ

	        |   СУММА(КоличествоОстаток),

	        |   СУММА(ЗаказПокупателяКоличествоВЕдиницахДляОтчетов),

	        |   СУММА(ЗаказПокупателяКоличествоВБазовыхЕдиницах),

	        |   МАКСИМУМ(СебестоимостьНачальныйОстатоток),

	        |   СУММА(СтоимостьОстаток),

	        |   СУММА(ЗаказПокупателяКоличество),

	        |   СУММА(СебестоимостьЗакупки),

	        |   СУММА(ЗаказПокупателяСумма),

	        |   СУММА(ВаловаяПрибыль),

	        |   СУММА(Эффективность)

	        |ПО

	        |   ОБЩИЕ

	        |{ИТОГИ ПО

	        |   Номенклатура.*,

	        |   Организация,

	        |   Склад}";

	

	

	        // Инициализация текста запроса построителя отчета

	        ПостроительОтчета.Текст = ТекстЗапроса;

	

	        //Заполним параметры запроса

	        ПостроительОтчета.Параметры.Вставить("ЗаказПокупателя", ЭтотОбъект.Ссылка);

	        ПостроительОтчета.Параметры.Вставить("ПозицияДокумента", Новый Граница(ЭтотОбъект.МоментВремени(), ВидГраницы.Исключая));

	

	        // Представления полей отчета.

	        // Необходимо вызывать для каждого поля запроса.

	        // УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить(<ИмяПоля>, <ПредставлениеПоля>);

	

	        УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Номенклатура", "Номенклатура");

	        УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Организация", "Организация");

	        УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Склад", "Склад");

	

	        УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ЗаказПокупателяКоличество","Количество (ед. хранения)");

	        УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ЗаказПокупателяКоличествоВБазовыхЕдиницах","Количество (базовых ед.)");

	        УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ЗаказПокупателяКоличествоВЕдиницахДляОтчетов","Количество (ед. отчетов)");

	        УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("СебестоимостьЗакупки","Себестоимость");

	        УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ЗаказПокупателяСумма","Сумма продажи");

	        УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ВаловаяПрибыль","Валовая прибыль");

	        УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Эффективность", "Эффективность, %");

	

	        // Добавление показателей

	        ВалютаУпр = глЗначениеПеременной("ВалютаУправленческогоУчета");

	        // Необходимо вызывать для каждого добавляемого показателя.

	        // УниверсальныйОтчет.ДобавитьПоказатель(<ИмяПоказателя>, <ПредставлениеПоказателя>, <ВключенПоУмолчанию>, <Формат>, <ИмяГруппы>, <ПредставлениеГруппы>);

	        УниверсальныйОтчет.ДобавитьПоказатель("ЗаказПокупателяКоличество","Количество", Истина, "ЧЦ=15; ЧДЦ=3", "Количество", "Количество");

	        УниверсальныйОтчет.ДобавитьПоказатель("ЗаказПокупателяКоличествоВБазовыхЕдиницах", "Базовых ед.", Истина, "ЧЦ=15; ЧДЦ=3", "Количество", "Количество");

	        УниверсальныйОтчет.ДобавитьПоказатель("ЗаказПокупателяКоличествоВЕдиницахДляОтчетов", "Ед. отчетов", Истина, "ЧЦ=15; ЧДЦ=3", "Количество", "Количество");

	        УниверсальныйОтчет.ДобавитьПоказатель("СебестоимостьЗакупки", "Себестоимость (" + ВалютаУпр + ")", Истина, "ЧЦ=15; ЧДЦ=2");//, "Стоимость", "Стоимость (" + ВалютаУпр + ")");

	        УниверсальныйОтчет.ДобавитьПоказатель("ЗаказПокупателяСумма", "Стоимость продажи (" + ВалютаУпр + ")", Истина, "ЧЦ=15; ЧДЦ=2"); //, "Стоимость", "Стоимость (" + ВалютаУпр + ")");

	        УниверсальныйОтчет.ДобавитьПоказатель("ВаловаяПрибыль", "Валовая прибыль (" + ВалютаУпр + ")", Истина, "ЧЦ=15; ЧДЦ=2");

	        УниверсальныйОтчет.ДобавитьПоказатель("Эффективность", "Эффективность, %", Истина, "ЧЦ=15; ЧДЦ=2");

	

	

	        // Добавление предопределенных группировок строк отчета.

	        // Необходимо вызывать для каждой добавляемой группировки строки.

	        // УниверсальныйОтчет.ДобавитьИзмерениеСтроки(<ПутьКДанным>);

	        УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Номенклатура");

	        УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Организация");

	        УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Склад");

	

	        // Добавление предопределенных группировок колонок отчета.

	        // Необходимо вызывать для каждой добавляемой группировки колонки.

	        // УниверсальныйОтчет.ДобавитьИзмерениеКолонки(<ПутьКДанным>);

	

	        // Добавление предопределенных отборов отчета.

	        // Необходимо вызывать для каждого добавляемого отбора.

	        // УниверсальныйОтчет.ДобавитьОтбор(<ПутьКДанным>);

	        УниверсальныйОтчет.ДобавитьОтбор("Номенклатура");

	        УниверсальныйОтчет.ДобавитьОтбор("Организация");

	        УниверсальныйОтчет.ДобавитьОтбор("Склад");

	

	

	        // Установка представлений полей

	        УниверсальныйОтчет.УстановитьПредставленияПолей(УниверсальныйОтчет.мСтруктураПредставлениеПолей, УниверсальныйОтчет.ПостроительОтчета);

	

	        // Заполнение начальных настроек универсального отчета

	        УниверсальныйОтчет.УстановитьНачальныеНастройки(Ложь);

	

	        ФормаОтчета.ОбновитьОтчет();

	        //ФормаОтчета.ЭлементыФормы.ПолеТабличногоДокументаРезультат.ПоказатьУровеньГруппировокСтрок(0);

	

	

	    //КонецЕсли;

	КонецПроцедуры



См. также

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    4322    atdonya    22    

41

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    3883    ke.92@mail.ru    16    

60

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    8561    YA_418728146    6    

139

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

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

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

2 стартмани

22.08.2023    2021    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

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

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16014    131    sapervodichka    112    

129

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7200    quazare    8    

108
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. makas 44 09.08.14 00:37 Сейчас в теме
А как внешнюю печатную форму почему нельзя сделать отчёт?
2. Поручик 4670 08.08.14 22:53 Сейчас в теме
(0) Гораздо полезнее будет оформить вызов отчета из внешней печатной формы.
3. Tapochki-tmn 43 11.08.14 05:28 Сейчас в теме
Руководство захотело кнопку в документе. Им так нагляднее. Но если переделаю, выложу как внешнюю печатную форму.
4. Merlin12042009 13.08.14 12:22 Сейчас в теме
Очень хорошая статья.Мне пригодилась. И вообще,когда наберется достаточное количество статей с конкретными нужными, а не надуманными примерами, можно напечатать книгу.
5. sobeyko2008 17 13.08.14 10:17 Сейчас в теме
6. Поручик 4670 13.08.14 11:14 Сейчас в теме
(5) УТ 10.3? В ней в РегистрНакопления.ПартииТоваровНаСкладах нет измерения Организация.
7. Поручик 4670 13.08.14 13:17 Сейчас в теме
(0) Встроить в УТ 10.3 можно только после доработки текста запроса.
8. sobeyko2008 17 13.08.14 14:20 Сейчас в теме
Автор доработай пожалуйста, а то я далеко не программист!
9. sobeyko2008 17 13.08.14 18:52 Сейчас в теме
Вобщем кому нужно для 10.3 пользуйтесь:

Процедура ДействияФормыВаловаяПрибыльПоДокументу(Кнопка)

        Попытка

            ИмяОтчета = "ВаловаяПрибыль";
            ОтчетОбъект = Отчеты[ИмяОтчета].Создать();
            ФормаОтчета = ОтчетОбъект.ПолучитьФорму();

            // Содержит название отчета, которое будет выводиться в шапке.
            // Тип: Строка.
            // Пример:
            // УниверсальныйОтчет.мНазваниеОтчета = "Название отчета";
            ОтчетОбъект.УниверсальныйОтчет.мНазваниеОтчета = "Валовая прибыль по документу (Не меняйте настройки этого отчета ! Это не типовой отчет по валовой прибыли.)";
            ОтчетОбъект.УниверсальныйОтчет.ПоказыватьЗаголовок = Истина;

            Попытка

                ФормаОтчета.СпособОтображенияОкна = ВариантСпособаОтображенияОкна.Максимизированное;

            Исключение

            КонецПопытки;

            ФормаОтчета.УниверсальныйОтчет.ВариантОформления = СтандартноеОформление.Камень;

	

	

            ОтчетОбъект.УниверсальныйОтчет.мВосстанавливатьНастройкиПриОткрытии = Ложь;

	

            ФормаОтчета.УниверсальныйОтчет.ДатаНач = Дата;

            ФормаОтчета.УниверсальныйОтчет.ДатаКон = Дата;

            ФормаОтчета.УниверсальныйОтчет.ОтрицательноеКрасным    = Истина;

            ФормаОтчета.УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Ложь;

            ФормаОтчета.УниверсальныйОтчет.ВыводитьОбщиеИтоги      = Истина;

	

        Исключение

            Предупреждение("Отчет не обнаружен. Возможно у Вас его нет или он не включен в состав программы.");

            Возврат;

        КонецПопытки;

	

            ФормаОтчета.Открыть();

	

            ПостроительОтчета = ФормаОтчета.УниверсальныйОтчет.ПостроительОтчета;

            УниверсальныйОтчет = ФормаОтчета.УниверсальныйОтчет;

	

            // Описание исходного текста запроса.

            ТекстЗапроса =

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

	

	

            // Инициализация текста запроса построителя отчета

            ПостроительОтчета.Текст = ТекстЗапроса;

	

            //Заполним параметры запроса

            ПостроительОтчета.Параметры.Вставить("ЗаказПокупателя", ЭтотОбъект.Ссылка);

            ПостроительОтчета.Параметры.Вставить("ПозицияДокумента", Новый Граница(ЭтотОбъект.МоментВремени(), ВидГраницы.Исключая));

	

            // Представления полей отчета.

            // Необходимо вызывать для каждого поля запроса.

            // УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить(<ИмяПоля>, <ПредставлениеПоля>);

	

            УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Номенклатура", "Номенклатура");

            УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Организация", "Организация");

            УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Склад", "Склад");

	

            УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ЗаказПокупателяКоличество","Количество (ед. хранения)");

            УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ЗаказПокупателяКоличествоВБазовыхЕдиницах","Количество (базовых ед.)");

            УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ЗаказПокупателяКоличествоВЕдиницахДляОтчетов","Количество (ед. отчетов)");

            УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("СебестоимостьЗакупки","Себестоимость");

            УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ЗаказПокупателяСумма","Сумма продажи");

            УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ВаловаяПрибыль","Валовая прибыль");

            УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Эффективность", "Эффективность, %");

	

            // Добавление показателей

            ВалютаУпр = глЗначениеПеременной("ВалютаУправленческогоУчета");

            // Необходимо вызывать для каждого добавляемого показателя.

            // УниверсальныйОтчет.ДобавитьПоказатель(<ИмяПоказателя>, <ПредставлениеПоказателя>, <ВключенПоУмолчанию>, <Формат>, <ИмяГруппы>, <ПредставлениеГруппы>);

            УниверсальныйОтчет.ДобавитьПоказатель("ЗаказПокупателяКоличество","Количество", Истина, "ЧЦ=15; ЧДЦ=3", "Количество", "Количество");

            УниверсальныйОтчет.ДобавитьПоказатель("ЗаказПокупателяКоличествоВБазовыхЕдиницах", "Базовых ед.", Истина, "ЧЦ=15; ЧДЦ=3", "Количество", "Количество");

            УниверсальныйОтчет.ДобавитьПоказатель("ЗаказПокупателяКоличествоВЕдиницахДляОтчетов", "Ед. отчетов", Истина, "ЧЦ=15; ЧДЦ=3", "Количество", "Количество");

            УниверсальныйОтчет.ДобавитьПоказатель("СебестоимостьЗакупки", "Себестоимость (" + ВалютаУпр + ")", Истина, "ЧЦ=15; ЧДЦ=2");//, "Стоимость", "Стоимость (" + ВалютаУпр + ")");

            УниверсальныйОтчет.ДобавитьПоказатель("ЗаказПокупателяСумма", "Стоимость продажи (" + ВалютаУпр + ")", Истина, "ЧЦ=15; ЧДЦ=2"); //, "Стоимость", "Стоимость (" + ВалютаУпр + ")");

            УниверсальныйОтчет.ДобавитьПоказатель("ВаловаяПрибыль", "Валовая прибыль (" + ВалютаУпр + ")", Истина, "ЧЦ=15; ЧДЦ=2");

            УниверсальныйОтчет.ДобавитьПоказатель("Эффективность", "Эффективность, %", Истина, "ЧЦ=15; ЧДЦ=2");

	

	

            // Добавление предопределенных группировок строк отчета.

            // Необходимо вызывать для каждой добавляемой группировки строки.

            // УниверсальныйОтчет.ДобавитьИзмерениеСтроки(<ПутьКДанным>);

            УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Номенклатура");

            УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Организация");

            УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Склад");

	

            // Добавление предопределенных группировок колонок отчета.

            // Необходимо вызывать для каждой добавляемой группировки колонки.

            // УниверсальныйОтчет.ДобавитьИзмерениеКолонки(<ПутьКДанным>);

	

            // Добавление предопределенных отборов отчета.

            // Необходимо вызывать для каждого добавляемого отбора.

            // УниверсальныйОтчет.ДобавитьОтбор(<ПутьКДанным>);

            УниверсальныйОтчет.ДобавитьОтбор("Номенклатура");

            УниверсальныйОтчет.ДобавитьОтбор("Организация");

            УниверсальныйОтчет.ДобавитьОтбор("Склад");

	

	

            // Установка представлений полей

            УниверсальныйОтчет.УстановитьПредставленияПолей(УниверсальныйОтчет.мСтруктураПредставлениеПолей, УниверсальныйОтчет.ПостроительОтчета);

	

            // Заполнение начальных настроек универсального отчета

            УниверсальныйОтчет.УстановитьНачальныеНастройки(Ложь);

	

            ФормаОтчета.ОбновитьОтчет();

            //ФормаОтчета.ЭлементыФормы.ПолеТабличногоДокументаРезультат.ПоказатьУровеньГруппировокСтрок(0);

	

	

        //КонецЕсли;

КонецПроцедуры
Показать
10. sobeyko2008 17 13.08.14 18:55 Сейчас в теме
Но есть один недостаток этого отчета - если товара нет в наличии, но он заказан у поставщика не мешало бы тоже высчитывать себестоимость, но как я понимаю это уже совершенно другой отчет!
11. Tapochki-tmn 43 14.08.14 07:36 Сейчас в теме
(10) sobeyko2008,
Почти другой :)
Запускаешь в блокноте или прямо в 1С через меню "Правка" пункт "Заменить" и заменяешь "ЗаказПокупателя" на "ЗаказПоставщику" и вуаля! Легким движением руки "брюки превращаются..." :)
Суть-то одна: из документа берем только номенклатуру и организацию. Все остальное из регистра себестоимости или из регистра сведений "цены номенклатуры", ну или из "цены номенклатуры поставщика"
Оставьте свое сообщение