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

Публикация № 295282

Разработка - Практика программирования

Чтобы не формировать несколько отчетов выставляя фильтры по организации/складам/номенклатуре/документу-регистратору и не сводить потом всю эту информацию воедино пытаясь оценить эффективность и рентабельность предполагаемой продажи по конкретному документу заказа покупателя предлагаю встроить в документ вызов отчета по валовой прибыли, с подменой запроса чтобы увидеть данные по себестоимости и рассчитать прибыль/эффективность/рентабельность с уже настроенными фильтрами по данным из заказа покупателя. Доработка разрабатывалась для УПП 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);

	

	

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

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



Специальные предложения

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

См. также

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо

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

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    4479    comol    22    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

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

30.08.2020    11078    quazare    33    

Форма выбора (подбор) в управляемых формах

Практика программирования v8 v8::УФ 1cv8.cf Россия Бесплатно (free)

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    36410    user5300    16    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    39583    ids79    26    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    38487    unichkin    74    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    30747    John_d    22    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    23417    kuzyara    38    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    18921    YPermitin    60    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    32103    tormozit    104    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    9884    Sibars    19    

Полезные процедуры и функции для программиста

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

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

07.10.2019    33286    HostHost    41    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    40433    Yashazz    50    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    79354    tormozit    131    

О программе Postman для тестирования API и для чего она нужна 1С-нику

Практика программирования Программное обеспечение (software) v8 Бесплатно (free)

Для чего нужна программа Postman для тестирования API и какая от него польза для 1С-программиста.

24.09.2019    14693    budidich    28    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    67945    rpgshnik    68    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    58583    ids79    55    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    50115    tormozit    48    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    33385    YPermitin    24    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    27098    YPermitin    80    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    35652    ids79    16    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    46817    tormozit    74    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    107807    ids79    63    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019    44266    avalakh    26    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    29426    json    15    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    16437    m-rv    2    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    76600    ids79    14    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    40055    ids79    27    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    28449    YPermitin    14    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    20980    m-rv    17    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    20418    SeiOkami    50    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Варианты отчетов, работа с настройками вариантов: структура группировок, поля отчета, отборы, сортировка, условное оформление, другие настройки, настройки отображения диаграмм.

02.07.2019    59733    ids79    17    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    60694    ids79    26    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    32361    m-rv    21    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    27072    dmurk    146    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    49930    YPermitin    30    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    37958    ellavs    126    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

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

05.12.2017    28866    itriot11    34    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    28661    ellavs    90    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    34592    YPermitin    53    

Ошибки при работе с хранилищем конфигурации и способы их решения

Практика программирования v8 Бесплатно (free)

В статье собраны наиболее распространенные ошибки при работе с хранилищем конфигурации и способы их обхода и решения.

01.03.2019    48842    Смешной 1С    31    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    78450    Serginio    113    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    24231    Vladimir Litvinenko    28    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    46601    ids79    11    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    37479    ids79    40    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    29061    ids79    31    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    45928    ids79    75    

Тестер: частые вопросы Промо

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    30169    grumagargler    31    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    40046    ids79    49