Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
13 Дек 2017, 16:08
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Реализация и цены в ТиС  (Прочитано 2007 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн hellburund

  • *
  • Сообщений: 1
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-04-05
  • Сайт: 
  • Профессия: Программист 1С
Платформа 7.70.027
Конфигурация "Торговля + склад" 7.70.935

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

В данный момент это выглядит вот так (пока что без проверки валют):
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб, Стр;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(НайтиДоки)
|Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
|НомерДок = Документ.Реализация.НомерДок;
|Реализация = Документ.Реализация.ТекущийДокумент;
|Группировка Реализация;
|"//}}ЗАПРОС
;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Пока Запрос.Группировка("Реализация") = 1 Цикл 
Стр = "";       
ДокР = СоздатьОбъект("Документ.Реализация");
ДокР = Запрос.Реализация;
ДокР.ВыбратьСтроки();
Пока ДокР.ПолучитьСтроку() = 1 Цикл
Стр = Стр + ДокР.Номенклатура.Код + " по цене " + ДокР.Цена + "; ";
спрНом = СоздатьОбъект("Справочник.Номенклатура");
спрНом.НайтиПоКоду(ДокР.Номенклатура.Код);
спрЦены = СоздатьОбъект("Справочник.Цены");
спрЦены.ИспользоватьВладельца(спрНом.ТекущийЭлемент());
Сообщить("Закупочная цена товара " + ДокР.Номенклатура.Код + " равна " + спрЦены.Цена);
КонецЦикла;
Сообщить("По документу №" + ДокР.НомерДок + " проданы товары: " + " " + Стр);
КонецЦикла;
КонецПроцедуры

При работе данного кода в спрЦены.Цена ничего нет (выводится "НеизвестныйОбъект"). Реквизит периодический.
Отладчик показывает, что пустым остается весь объект спрЦены после выполнения "спрЦены.ИспользоватьВладельца(спрНом.ТекущийЭлемент());"

Надеюсь на вашу помощь.


Оффлайн sergejK74

  • *****
  • Сообщений: 1093
  • РЕПУТАЦИЯ: 458
  • КПД: 42%
  • Всегда готов помочь!
  • Регистрация: 2011-07-08
  • Сайт: 
  • Профессия: Ученик 1С
Создавать объект в цикле - плохой тон.
Одному элементу номенклатуры может быть подчинено несколько цен (розничная, закупочная). Надо выбирать нужную
Реквизит цена - периодический. Нужно указывать дату цен.
Вообще лучше пользоваться гоговыми функциями глобального модуля
	Процедура Сформировать()
        Перем Запрос, ТекстЗапроса, Таб, Стр;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(НайтиДоки)
|Период с ВыбНачПериода по ВыбКонПериода;
    |Обрабатывать НеПомеченныеНаУдаление;
    |НомерДок = Документ.Реализация.НомерДок;
    |Реализация = Документ.Реализация.ТекущийДокумент;
    |Группировка Реализация;
    |"//}}ЗАПРОС
    ;
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
КонецЕсли;

спрЦены = СоздатьОбъект("Справочник.ТипыЦен");
спрЦены.НайтиПоНаименованию("Закупочная");

    Пока Запрос.Группировка("Реализация") = 1 Цикл 
        Стр = "";       
        //ДокР = СоздатьОбъект("Документ.Реализация");
        ДокР = Запрос.Реализация;
        ДокР.ВыбратьСтроки();
        Пока ДокР.ПолучитьСтроку() = 1 Цикл
            Стр = Стр + ДокР.Номенклатура.Код + " по цене " + ДокР.Цена + "; ";
            //спрНом = СоздатьОбъект("Справочник.Номенклатура");
            //спрНом.НайтиПоКоду(ДокР.Номенклатура.Код);
            //спрЦены = СоздатьОбъект("Справочник.Цены");
            //спрЦены.ИспользоватьВладельца(спрНом.ТекущийЭлемент());
            //Сообщить("Закупочная цена товара " + ДокР.Номенклатура.Код + " равна " + спрЦены.Цена);
Сообщить("Закупочная цена товара " + ДокР.Номенклатура.Код + " равна " + глПолучитьЦену(ДокР.Номенклатура, спрЦены.ТекущийЭлемент(),ДокР.ДатаДок));
        КонецЦикла;
        Сообщить("По документу №" + ДокР.НомерДок + " проданы товары: " + " " + Стр);
    КонецЦикла;
КонецПроцедуры 
Кнопочка Спасибо - слева!


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
172 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
39 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 870
  • Точка Скрытых: 0
  • Точка Пользователей: 10
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal