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

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Arikite, 10 апр 2013.

  1. TopicStarter Overlay
    Arikite
    Offline

    Arikite

    Регистрация:
    2 апр 2011
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    День добрый, Почтеннейшие гуру!

    Исходная: конфигурация УТ ред. 10.2
    Дабы сразу изложить суть вопроса прикладываю код (не уверен в том, что не нарушаю правил форума большим листингом, но еже ли так прошу прощения низко кланяясь :)

    Отмечу ваше внимание на том, факте что я в этом интересном деле новичок - поэтому прошу Вас сильно не пинать ))

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

    Код:
    Процедура ПриОткрытии()
    Если ЗначениеЗаполнено(СсылкаНаОБъект) Тогда
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |	РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
    |	РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
    |	РеализацияТоваровУслугТовары.СерияНоменклатуры КАК СерияНоменклатуры,
    |	СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество,
    |	СРЕДНЕЕ(РеализацияТоваровУслугТовары.Цена) КАК Цена,
    |	СУММА(РеализацияТоваровУслугТовары.Сумма) КАК Сумма,
    |	РеализацияТоваровУслугТовары.Ссылка.ВалютаДокумента,
    |	РеализацияТоваровУслугТовары.НомерСтроки
    |ПОМЕСТИТЬ ВТ_Реализация
    |ИЗ
    |	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    |ГДЕ
    |	РеализацияТоваровУслугТовары.Ссылка = &Ссылка
    |	И РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
    |
    |СГРУППИРОВАТЬ ПО
    |	РеализацияТоваровУслугТовары.Ссылка,
    |	РеализацияТоваровУслугТовары.Номенклатура,
    |	РеализацияТоваровУслугТовары.СерияНоменклатуры,
    |	РеализацияТоваровУслугТовары.Ссылка.ВалютаДокумента,
    |	РеализацияТоваровУслугТовары.НомерСтроки
    |
    |ИНДЕКСИРОВАТЬ ПО
    |	Номенклатура,
    |	СерияНоменклатуры,
    |	Ссылка
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    
    |ВЫБРАТЬ
    |	ПоступлениеТоваровУслугТовары.Ссылка.ВалютаДокумента,
    |	ПоступлениеТоваровУслугТовары.Ссылка.КурсВзаиморасчетов,
    |	ПоступлениеТоваровУслугТовары.Ссылка.Дата,
    |	ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
    |	ПоступлениеТоваровУслугТовары.СерияНоменклатуры КАК СерияНоменклатуры,
    |	СРЕДНЕЕ(ПоступлениеТоваровУслугТовары.Цена) КАК Цена,
    |	СУММА(ПоступлениеТоваровУслугТовары.Сумма) КАК Сумма,
    |	ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка,
    |	СУММА(ПоступлениеТоваровУслугТовары.Количество) КАК Количество
    |ПОМЕСТИТЬ ВТ_Поступление
    |ИЗ
    |	Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    |ГДЕ
    |	ПоступлениеТоваровУслугТовары.Номенклатура В
    |			(ВЫБРАТЬ
    |				ВТ_Реализация.Номенклатура
    |			ИЗ
    |				ВТ_Реализация КАК ВТ_Реализация)
    |	И ПоступлениеТоваровУслугТовары.СерияНоменклатуры В
    |			(ВЫБРАТЬ
    |				ВТ_Реализация.СерияНоменклатуры
    |			ИЗ
    |				ВТ_Реализация КАК ВТ_Реализация)
    |	И ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
    |
    |СГРУППИРОВАТЬ ПО
    |	ПоступлениеТоваровУслугТовары.Ссылка,
    |	ПоступлениеТоваровУслугТовары.Номенклатура,
    |	ПоступлениеТоваровУслугТовары.СерияНоменклатуры,
    |	ПоступлениеТоваровУслугТовары.Ссылка.ВалютаДокумента,
    |	ПоступлениеТоваровУслугТовары.Ссылка.КурсВзаиморасчетов,
    |	ПоступлениеТоваровУслугТовары.Ссылка.Дата
    |
    |ИНДЕКСИРОВАТЬ ПО
    |	Номенклатура,
    |	СерияНоменклатуры,
    |	Ссылка
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    
    |ВЫБРАТЬ
    |	МАКСИМУМ(КурсыВалют.Период) КАК Период,
    |	КурсыВалют.Валюта КАК Валюта,
    |	ПоступлениеТоваровУслуг.Ссылка КАК Ссылка
    |ПОМЕСТИТЬ ВТ_ДатыКурсов
    |ИЗ
    |	Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
    |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
    |		ПО (КурсыВалют.Валюта = ПоступлениеТоваровУслуг.ВалютаДокумента)
    |			И (КурсыВалют.Период <= ПоступлениеТоваровУслуг.Дата)
    |ГДЕ
    |	ПоступлениеТоваровУслуг.Ссылка В
    |			(ВЫБРАТЬ
    |				ВТ_Поступление.Ссылка
    |			ИЗ
    |				ВТ_Поступление КАК ВТ_Поступление)
    |
    |СГРУППИРОВАТЬ ПО
    |	ПоступлениеТоваровУслуг.Ссылка,
    |	КурсыВалют.Валюта
    |
    |ИНДЕКСИРОВАТЬ ПО
    |	Валюта,
    |	Ссылка
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    
    |ВЫБРАТЬ
    |	КурсыВалют.Курс,
    |	КурсыВалют.Валюта КАК Валюта,
    |	ВТ_ДатыКурсов.Ссылка КАК Ссылка,
    |	КурсыВалют.Кратность
    |ПОМЕСТИТЬ ВТ_КурсыВалютПоДокументам
    |ИЗ
    |	РегистрСведений.КурсыВалют КАК КурсыВалют
    |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ДатыКурсов КАК ВТ_ДатыКурсов
    |		ПО КурсыВалют.Период = ВТ_ДатыКурсов.Период
    |			И КурсыВалют.Валюта = ВТ_ДатыКурсов.Валюта
    |
    |ИНДЕКСИРОВАТЬ ПО
    |	Ссылка,
    |	Валюта
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    
    |ВЫБРАТЬ
    |	ВТ_Реализация.Номенклатура.Артикул КАК Артикул,
    |	ВТ_Реализация.Номенклатура,
    |	ВТ_Реализация.СерияНоменклатуры КАК Серия,
    |	ВТ_Реализация.Количество,
    |	ВТ_Поступление.Цена,
    |	ВТ_Поступление.Цена * ВТ_Реализация.Количество КАК СуммаВВалюте,
    |	ВТ_Поступление.ВалютаДокумента КАК Валюта,
    |	ВТ_КурсыВалютПоДокументам.Курс,
    |	ВТ_Поступление.Цена * ВТ_Реализация.Количество * ВТ_КурсыВалютПоДокументам.Курс КАК СуммаВРублях,
    |	ВТ_Реализация.Цена КАК ЦенаПродажи,
    |	ВТ_Реализация.Сумма КАК СуммаПродажи,
    |	ВТ_Реализация.ВалютаДокумента КАК ВалютаПродажи,
    |	ВТ_Поступление.Ссылка КАК Поступление
    |ИЗ
    |	ВТ_Реализация КАК ВТ_Реализация
    |		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Поступление КАК ВТ_Поступление
    |			ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_КурсыВалютПоДокументам КАК ВТ_КурсыВалютПоДокументам
    |			ПО (ВТ_КурсыВалютПоДокументам.Ссылка = ВТ_Поступление.Ссылка)
    |		ПО ВТ_Реализация.Номенклатура = ВТ_Поступление.Номенклатура
    |			И ВТ_Реализация.СерияНоменклатуры = ВТ_Поступление.СерияНоменклатуры
    |
    |УПОРЯДОЧИТЬ ПО
    |	ВТ_Реализация.НомерСтроки";
    //
    
    Запрос.УстановитьПараметр("Ссылка",СсылкаНаОБъект );
    Результат = Запрос.Выполнить();
    ЭлементыФормы.ТП_Результат.Значение=Результат.Выгрузить();
    ЭлементыФормы.ТП_Результат.СоздатьКолонки();
    ЭлементыФормы.ТП_Результат.Колонки.ЦенаПродажи.Видимость=Ложь;
    ЭлементыФормы.ТП_Результат.Колонки.СуммаПродажи.Видимость=Ложь;
    ЭлементыФормы.ТП_Результат.Колонки.ВалютаПродажи.Видимость=Ложь;
    ЭлементыФормы.ТП_Результат.Колонки.Количество.Ширина=15;
    ЭлементыФормы.ТП_Результат.Колонки.Цена.Ширина=15;
    
    ЭлементыФормы.ТП_Результат.Колонки.СуммаВВалюте.Ширина=15;
    ЭлементыФормы.ТП_Результат.Колонки.СуммаВРублях.Ширина=15;
    ЭлементыФормы.ТП_Результат.Колонки.СуммаВВалюте.ТекстШапки="Сумма в вал.";
    ЭлементыФормы.ТП_Результат.Колонки.СуммаВРублях.ТекстШапки="Сумма в руб.";
    
    ЭлементыФормы.ТП_Результат.Колонки.Валюта.Ширина=15;
    ЭлементыФормы.ТП_Результат.Колонки.Поступление.ЭлементУправления.Доступность=Ложь;
    ЭлементыФормы.НадписьВсего.Значение="Всего сумма в руб.: "+Строка(ТП_Результат.Итог("СуммаВРублях"));
    ЭлементыФормы.ТП_Результат.Колонки.Номенклатура.ЭлементУправления.КнопкаОткрытия=Истина;
    ЭлементыФормы.ТП_Результат.Колонки.Номенклатура.ЭлементУправления.КнопкаВыбора=Ложь;
    КонецЕсли;
    КонецПроцедуры[/color]
    [color=#000000]Процедура ТП_РезультатВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    Если Колонка.Имя="Поступление" Тогда
    ТекСтрока=Элемент.ТекущиеДанные.Поступление;
    Форма =ТекСтрока.ПолучитьФорму("ФормаДокумента",,);
    Форма.Открыть();
    Если Форма.Открыта() Тогда
    Форма.Активизировать();
    КонецЕсли;
    КонецЕсли;
    
    КонецПроцедуры[/color]
    [color=#000000]Процедура ТП_РезультатПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    ЦветСтрокиКрасный = Новый Цвет(255, 0, 0);
    Если ДанныеСтроки.Цена=0 Тогда
    ОформлениеСтроки.ЦветТекста=ЦветСтрокиКрасный;  
    КонецЕсли;
    //Сообщить("");
    
    КонецПроцедуры


    При решении этой задачи не известным мне программистом не был учтен НДС по поставке. Себестоимость рассчитывалась как результат умножения количества на цену в документе поставки.

    Собственно вопрос каким образом подключить в этот расчет сумму НДС отраженного в документе поставки. При этом НДС ведь может быть и включенным в сумму.

    Прекрасно понимаю, что Вы ни чем не обязаны, но буду очень признателен за Ваши полезные мысли!
  2. Неназываемый
    Offline

    Неназываемый Опытный в 1С Команда форума

    Регистрация:
    2 фев 2007
    Сообщения:
    507
    Симпатии:
    7
    Баллы:
    29
    Неужели в 10.2 нет регистра партий и себестоимости, что предыдущему программисту пришлось так извращаться?

Поделиться этой страницей