Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Вытянуть для каждого товара оптовую и розничную цену

v7: Вытянуть для каждого товара оптовую и розничную цену
Я
   san4ez1008
 
07.09.16 - 09:10
Добрый день! Сделал обработку поиска товара по ключу, выводит товар, путь к товару в справочнике, остатки, теперь нужно получить закупочную и оптовую цены.. Не понимаю, откуда их надо вытянуть, потому что в справочнике "Цены" пусто, а в справочнике "Типы цен" 4 типа, и никакого отношения к номенклатуре нет..
 
 
   _stay true_
 
1 - 07.09.16 - 09:12
Продолжайте вести наблюдение!
   Ёпрст
 
2 - 07.09.16 - 09:13
Цена - периодический реквизит справочника цены, хранится в разрезе типов цен
   _stay true_
 
3 - 07.09.16 - 09:14
(2) Что за конфа-то хоть?)) А то ванговать нет настроения)))
   Джордж1
 
4 - 07.09.16 - 09:15
(0)Ну если в справочнике Цены действительно пусто и это Бух 7.7 - тогда из реквизитов товара и надо тянуть
   Ёпрст
 
5 - 07.09.16 - 09:16
(3) если там есть ТипЦен - то очевидно, что ТиС/Комплексная.
   Джордж1
 
6 - 07.09.16 - 09:17
(5)в бухе тоже есть
   Ёпрст
 
7 - 07.09.16 - 09:17
(6) тип цен в бухне ?
   Ёпрст
 
8 - 07.09.16 - 09:18
не помню ужо, вроде там этого не было.
   Джордж1
 
9 - 07.09.16 - 09:18
(7)да
   Ёпрст
 
10 - 07.09.16 - 09:19
(9) ну, принцип то один и тот-же поди - цена в периодике и реквизит типцен в справочнике + Цены подчинён Номенклатуре
 
 Рекламное место пустует
   Джордж1
 
11 - 07.09.16 - 09:25
(10)не там 2 варианта - в реквизитах товара цена хранится (в периодике наверное) или по типам цен в справочнике цены
   san4ez1008
 
12 - 07.09.16 - 09:50
(3) ТиС 9.2 (2) как к нему обратиться, чтобы для каждого элемента получить значений цены?
   Ёпрст
 
13 - 07.09.16 - 09:53
(12)
глВернутьЦену
глПолучитьЦену
   san4ez1008
 
14 - 07.09.16 - 09:56
(13) можно поподробнее? Запросом я выбрал элементы в справочнике, выгрузил в ТЗ,обработал данные и выгрузил в новую ТЗ.

Запрос=СоздатьОбъект("Запрос");
    СтрокаПоиска1=Нрег(СокрЛП(СтрокаПоиска));
    ТекстЗапроса = 
    "//{{ЗАПРОС(Серийник)     

    |Обрабатывать НеПомеченныеНаУдаление;
    |Товар=Справочник.Номенклатура.ТекущийЭлемент;
    |Наименование=Справочник.Номенклатура.Наименование;
    |ЦенаЗакуп=Справочник.Цены;
    |Код=Справочник.Номенклатура.Код;
    |Склад = Регистр.ОстаткиТМЦ.Склад;
    |Условие(Склад в ВыбСклад);
    |Группировка Товар упорядочить по Товар.Наименование;
    |"//}}ЗАПРОС

    ;
    //------Собираем строку условия в запросе------

    ТекстУсловия="Условие(";
    Для i=1 по Ключи.РазмерСписка() Цикл
        ТекстУсловия=ТекстУсловия+"((Найти(Нрег(СокрЛП(Наименование)),СокрЛП(Ключи.ПолучитьЗначение("+СокрЛП(i)+")))>0))";    //Добавили ключ в строку поиска

        Если i<>Ключи.РазмерСписка() Тогда ТекстУсловия=ТекстУсловия+"И";КонецЕсли;    //После последнего ключа "И" не ставим

    КонецЦикла;
    ТекстУсловия=ТекстУсловия+");";
    ТекстЗапроса=ТекстЗапроса+ТекстУсловия;
    ТекстЗапроса=ТекстЗапроса+"Без итогов;";
    //-------------Выполняем запрос-----------

    //+" "+СокрЛП(КодВендора)+" "+СокрЛП(ОписаниеТов)

    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
    Запрос.Выгрузить(ТЗ);
    Если ТЗ.КоличествоСтрок()=0 Тогда Предупреждение("Товар не найден!");Возврат;КонецЕсли;
    //----------------------Выгрузка справочника в таблицу-------------------

    ТабВыгр.Очистить();
    ТабВыгр.НоваяКолонка("Код"   ,,,,"Код"   ,4,,);
    ТабВыгр.НоваяКолонка("Товар" ,,,,"Товар",30,);
    ТабВыгр.НоваяКолонка("Остаток",,,,"Остаток",4,);
    ТабВыгр.НоваяКолонка("Путь",,,,"Путь к товару",30);
    ТабВыгр.НоваяКолонка("ЦенаЗакуп",,,,"Закупочная Цена",10);
    ТабВыгр.НоваяКолонка("ЦенаОпт",,,,"Оптовая Цена",10);
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
        Если ТЗ.Товар.ЭтоГруппа()=1 Тогда
            продолжить//ТабВыгр.Товар   = "..\\ "+Строка(ТЗ.Товар);

        Иначе
            ТабВыгр.НоваяСтрока();
            ТабВыгр.Код      = Строка(ТЗ.Товар.Код);
            ТабВыгр.Товар    = Строка(ТЗ.Товар);
            Остаток         = Регистр.ОстаткиТМЦ.Остаток(ТЗ.Товар,ВыбСклад,ТЗ.Товар.Цена,"Количество");
            ТабВыгр.Остаток =?(Остаток>0,Остаток,"");
            ТабВыгр.Путь     = Строка(ТЗ.Товар.Родитель.ПолноеНаименование());
            РозничнаяЦена = глПолучитьЦену(Ном.ТекущийЭлемент(),Цен., ТекущаяДата(), Ном.БазоваяЕдиница, глРубли);
            ТабВыгр.ЦенаЗакуп = РозничнаяЦена;
        КонецЕсли;
    КонецЦикла;
    НомСтроки=0;
   san4ez1008
 
15 - 08.09.16 - 02:58
мне к справочнику Цены вообще надо обращаться,или как?
   welwel
 
16 - 08.09.16 - 03:12
(14) Запрос некорректный. Остатки и цены не выберет.
(13) подразумевается (5)
   welwel
 
17 - 08.09.16 - 03:22
(16) +
В запросе (черном) все пути к данным должны начинаться с Регистр.ОстаткиТМЦ.
Можно тогда выбрать запросом остатки, а цены получить, используя (13)
   san4ez1008
 
18 - 08.09.16 - 03:54
(16) Остатки то мне не нужны, я их вывел уже, только с условием, что выбран склад =(
(17) Не пойму, как пользоваться (13).. Какие параметры передавать, исходя из кода?
   san4ez1008
 
19 - 08.09.16 - 04:05
ТабВыгр.ЦенаЗакуп = глВернутьЦену(ТЗ.Товар,"Закупочные");

Выдает 

Рассчетная        = ТипЦены.Рассчитывается;
{Глобальный модуль(1344)}: Значение не представляет агрегатный объект (Рассчитывается)
   welwel
 
20 - 08.09.16 - 04:16
Параметр ТипЦены должен быть типа Справочник.ТипыЦен
   welwel
 
21 - 08.09.16 - 04:17
И судя по контексту нужно
ГлПолучитьЦену
   san4ez1008
 
22 - 08.09.16 - 04:57
РозничнаяЦена = глПолучитьЦену(ТЗ.Товар,Цены.Рассчитывается, ТекущаяДата(),Цены.БазовыйТипЦен, глРубли);



Снова ошибка
Рассчетная = ТипЦены.Рассчитывается;
{Глобальный модуль(1344)}: Значение не представляет агрегатный объект (Рассчитывается)
   Antony8x
 
23 - 08.09.16 - 05:00
(3) ))
   san4ez1008
 
24 - 08.09.16 - 05:17
ТабВыгр.Путь      = Строка(ТЗ.Товар.Родитель.ПолноеНаименование());
ТабВыгр.ЦенаЗакуп = глПолучитьЦену(ТЗ.Товар,Цены.БазовыйТипЦен, ТекущаяДата());
В колонке пусто...
   Смотрящий
 
25 - 08.09.16 - 06:32
А полный код своего творения можешь привести ?
   san4ez1008
 
26 - 08.09.16 - 07:18
(25)
Процедура НайтиПоСтроке(СтрокаПоиска) 
Цены = СоздатьОбъект("Справочник.ТипыЦен");
Ключи=СоздатьОбъект("СписокЗначений");
ТЗ=СоздатьОбъект("ТаблицаЗначений");
    //-------------Парсим ключи поиска----------------

    стр=СтрЗаменить(Нрег(СтрокаПоиска)," ",РазделительСтрок);    //Разбили на строку на подстроки

    Для i=1 по СтрКоличествоСтрок(Стр) Цикл                //Перебираем подстроки

        х=СтрПолучитьСтроку(Стр,i);
        Если ПустаяСтрока(х)=0 Тогда                    //Пропускаем пустые строки

            Если СтрДлина(х)>=3 Тогда                    //Пропускаем ключи меньше 3х символов

                Ключи.ДобавитьЗначение(х,);
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    Если Ключи.РазмерСписка()=0 Тогда Сигнал();Предупреждение("Задайте хотя бы один ключ поиска не менее 3-х символов");КонецЕсли;
    //--------------Формирование Запроса--------------

Запрос=СоздатьОбъект("Запрос");
    СтрокаПоиска1=Нрег(СокрЛП(СтрокаПоиска));
    ТекстЗапроса = 
    "//{{ЗАПРОС(Серийник)     

    |Обрабатывать НеПомеченныеНаУдаление;
    |Товар=Справочник.Номенклатура.ТекущийЭлемент;
    |Наименование=Справочник.Номенклатура.Наименование;
    |ЦенаЗакуп=Справочник.Цены;
    |Код=Справочник.Номенклатура.Код;
    |Склад = Регистр.ОстаткиТМЦ.Склад;
    |Условие(Склад в ВыбСклад);
    |Группировка Товар упорядочить по Товар.Наименование;
    |"//}}ЗАПРОС

    ;
    //------Собираем строку условия в запросе------

    ТекстУсловия="Условие(";
    Для i=1 по Ключи.РазмерСписка() Цикл
        ТекстУсловия=ТекстУсловия+"((Найти(Нрег(СокрЛП(Наименование)),СокрЛП(Ключи.ПолучитьЗначение("+СокрЛП(i)+")))>0))";    //Добавили ключ в строку поиска

        Если i<>Ключи.РазмерСписка() Тогда ТекстУсловия=ТекстУсловия+"И";КонецЕсли;    //После последнего ключа "И" не ставим

    КонецЦикла;
    ТекстУсловия=ТекстУсловия+");";
    ТекстЗапроса=ТекстЗапроса+ТекстУсловия;
    ТекстЗапроса=ТекстЗапроса+"Без итогов;";
    //-------------Выполняем запрос-----------

    //+" "+СокрЛП(КодВендора)+" "+СокрЛП(ОписаниеТов)

    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
    Запрос.Выгрузить(ТЗ);
    Если ТЗ.КоличествоСтрок()=0 Тогда Предупреждение("Товар не найден!");Возврат;КонецЕсли;
    //----------------------Выгрузка справочника в таблицу-------------------

    ТабВыгр.Очистить();
    ТабВыгр.НоваяКолонка("Код"   ,,,,"Код"   ,4,,);
    ТабВыгр.НоваяКолонка("Товар" ,,,,"Товар",30,);
    ТабВыгр.НоваяКолонка("Остаток",,,,"Остаток",4,);
    ТабВыгр.НоваяКолонка("Путь",,,,"Путь к товару",30);
    ТабВыгр.НоваяКолонка("ЦенаЗакуп",,,,"Закупочная Цена",8);
    ТабВыгр.НоваяКолонка("ЦенаОпт",,,,"Оптовая Цена",8);
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
        Если ТЗ.Товар.ЭтоГруппа()=1 Тогда
            продолжить//ТабВыгр.Товар   = "..\\ "+Строка(ТЗ.Товар);

        Иначе
            ТабВыгр.НоваяСтрока();
            ТабВыгр.Код       = Строка(ТЗ.Товар.Код);
            ТабВыгр.Товар     = Строка(ТЗ.Товар);
            Остаток           = Регистр.ОстаткиТМЦ.Остаток(ТЗ.Товар,ВыбСклад,ТЗ.Товар.Цена,"Количество");
            ТабВыгр.Остаток   = ?(Остаток>0,Остаток,"");
            ТабВыгр.Путь      = Строка(ТЗ.Товар.Родитель.ПолноеНаименование());
            ТабВыгр.ЦенаЗакуп = глПолучитьЦену(Запрос.Товар,Цены.БазовыйТипЦен, ТекущаяДата());
        КонецЕсли;
    КонецЦикла;
    НомСтроки=0;
КонецПроцедуры
   Смотрящий
 
27 - 08.09.16 - 07:33
почту глянь
   varelchik
 
28 - 08.09.16 - 08:24
(0) А цены вообще-то есть?
Для начала.
Мож их и нет вообще, а в документах устанавливают явно.
   DrZombi
 
29 - 08.09.16 - 08:45
(0) Прямым запросом можно сделать в один запрос :)
   san4ez1008
 
30 - 19.09.16 - 08:06
Ребят,я штрихкод не могу вытянуть.. Реквизит находится в справочнике Единицы, в запросе к нему обращаюсь, а он выдает:
Поле агрегатного объекта не обнаружено (ШтрихКод).
|ШтрихКод = Справочник.Номенклатура.БазоваяЕдиница.ШтрихКод;
ТабВыгр.ШтрихКод    = Строка(Таб.ШтрихКод);
   san4ez1008
 
31 - 19.09.16 - 08:07
Справочник Единицы - подчиненный справочник Номенклатура
   san4ez1008
 
32 - 19.09.16 - 11:27
О,все ништяк,заработало


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует