|
v7: Вытянуть для каждого товара оптовую и розничную цену | ☑ | ||
---|---|---|---|---|
0
san4ez1008
07.09.16
✎
09:10
|
Добрый день! Сделал обработку поиска товара по ключу, выводит товар, путь к товару в справочнике, остатки, теперь нужно получить закупочную и оптовую цены.. Не понимаю, откуда их надо вытянуть, потому что в справочнике "Цены" пусто, а в справочнике "Типы цен" 4 типа, и никакого отношения к номенклатуре нет..
|
|||
1
_stay true_
07.09.16
✎
09:12
|
Продолжайте вести наблюдение!
|
|||
2
Ёпрст
07.09.16
✎
09:13
|
Цена - периодический реквизит справочника цены, хранится в разрезе типов цен
|
|||
3
_stay true_
07.09.16
✎
09:14
|
(2) Что за конфа-то хоть?)) А то ванговать нет настроения)))
|
|||
4
Джордж1
07.09.16
✎
09:15
|
(0)Ну если в справочнике Цены действительно пусто и это Бух 7.7 - тогда из реквизитов товара и надо тянуть
|
|||
5
Ёпрст
07.09.16
✎
09:16
|
(3) если там есть ТипЦен - то очевидно, что ТиС/Комплексная.
|
|||
6
Джордж1
07.09.16
✎
09:17
|
(5)в бухе тоже есть
|
|||
7
Ёпрст
07.09.16
✎
09:17
|
(6) тип цен в бухне ?
|
|||
8
Ёпрст
07.09.16
✎
09:18
|
не помню ужо, вроде там этого не было.
|
|||
9
Джордж1
07.09.16
✎
09:18
|
(7)да
|
|||
10
Ёпрст
07.09.16
✎
09:19
|
(9) ну, принцип то один и тот-же поди - цена в периодике и реквизит типцен в справочнике + Цены подчинён Номенклатуре
|
|||
11
Джордж1
07.09.16
✎
09:25
|
(10)не там 2 варианта - в реквизитах товара цена хранится (в периодике наверное) или по типам цен в справочнике цены
|
|||
12
san4ez1008
07.09.16
✎
09:50
|
(3) ТиС 9.2 (2) как к нему обратиться, чтобы для каждого элемента получить значений цены?
|
|||
13
Ёпрст
07.09.16
✎
09:53
|
(12)
глВернутьЦену глПолучитьЦену |
|||
14
san4ez1008
07.09.16
✎
09:56
|
(13) можно поподробнее? Запросом я выбрал элементы в справочнике, выгрузил в ТЗ,обработал данные и выгрузил в новую ТЗ.
Запрос=СоздатьОбъект("Запрос"); СтрокаПоиска1=Нрег(СокрЛП(СтрокаПоиска)); ТекстЗапроса = "//{{ЗАПРОС(Серийник) |Обрабатывать НеПомеченныеНаУдаление; |Товар=Справочник.Номенклатура.ТекущийЭлемент; |Наименование=Справочник.Номенклатура.Наименование; |ЦенаЗакуп=Справочник.Цены; |Код=Справочник.Номенклатура.Код; |Склад = Регистр.ОстаткиТМЦ.Склад; |Условие(Склад в ВыбСклад); |Группировка Товар упорядочить по Товар.Наименование; |"//}}ЗАПРОС ; //------Собираем строку условия в запросе------ ТекстУсловия="Условие("; Для i=1 по Ключи.РазмерСписка() Цикл ТекстУсловия=ТекстУсловия+"((Найти(Нрег(СокрЛП(Наименование)),СокрЛП(Ключи.ПолучитьЗначение("+СокрЛП(i)+")))>0))"; //Добавили ключ в строку поиска Если i<>Ключи.РазмерСписка() Тогда ТекстУсловия=ТекстУсловия+"И";КонецЕсли; //После последнего ключа "И" не ставим КонецЦикла; ТекстУсловия=ТекстУсловия+");"; ТекстЗапроса=ТекстЗапроса+ТекстУсловия; ТекстЗапроса=ТекстЗапроса+"Без итогов;"; //-------------Выполняем запрос----------- //+" "+СокрЛП(КодВендора)+" "+СокрЛП(ОписаниеТов) Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Запрос.Выгрузить(ТЗ); Если ТЗ.КоличествоСтрок()=0 Тогда Предупреждение("Товар не найден!");Возврат;КонецЕсли; //----------------------Выгрузка справочника в таблицу------------------- ТабВыгр.Очистить(); ТабВыгр.НоваяКолонка("Код" ,,,,"Код" ,4,,); ТабВыгр.НоваяКолонка("Товар" ,,,,"Товар",30,); ТабВыгр.НоваяКолонка("Остаток",,,,"Остаток",4,); ТабВыгр.НоваяКолонка("Путь",,,,"Путь к товару",30); ТабВыгр.НоваяКолонка("ЦенаЗакуп",,,,"Закупочная Цена",10); ТабВыгр.НоваяКолонка("ЦенаОпт",,,,"Оптовая Цена",10); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 Цикл Если ТЗ.Товар.ЭтоГруппа()=1 Тогда продолжить;//ТабВыгр.Товар = "..\\ "+Строка(ТЗ.Товар); Иначе ТабВыгр.НоваяСтрока(); ТабВыгр.Код = Строка(ТЗ.Товар.Код); ТабВыгр.Товар = Строка(ТЗ.Товар); Остаток = Регистр.ОстаткиТМЦ.Остаток(ТЗ.Товар,ВыбСклад,ТЗ.Товар.Цена,"Количество"); ТабВыгр.Остаток =?(Остаток>0,Остаток,""); ТабВыгр.Путь = Строка(ТЗ.Товар.Родитель.ПолноеНаименование()); РозничнаяЦена = глПолучитьЦену(Ном.ТекущийЭлемент(),Цен., ТекущаяДата(), Ном.БазоваяЕдиница, глРубли); ТабВыгр.ЦенаЗакуп = РозничнаяЦена; КонецЕсли; КонецЦикла; НомСтроки=0; |
|||
15
san4ez1008
08.09.16
✎
02:58
|
мне к справочнику Цены вообще надо обращаться,или как?
|
|||
16
welwel
08.09.16
✎
03:12
|
(14) Запрос некорректный. Остатки и цены не выберет.
(13) подразумевается (5) |
|||
17
welwel
08.09.16
✎
03:22
|
(16) +
В запросе (черном) все пути к данным должны начинаться с Регистр.ОстаткиТМЦ. Можно тогда выбрать запросом остатки, а цены получить, используя (13) |
|||
18
san4ez1008
08.09.16
✎
03:54
|
(16) Остатки то мне не нужны, я их вывел уже, только с условием, что выбран склад =(
(17) Не пойму, как пользоваться (13).. Какие параметры передавать, исходя из кода? |
|||
19
san4ez1008
08.09.16
✎
04:05
|
ТабВыгр.ЦенаЗакуп = глВернутьЦену(ТЗ.Товар,"Закупочные");
Выдает Рассчетная = ТипЦены.Рассчитывается; {Глобальный модуль(1344)}: Значение не представляет агрегатный объект (Рассчитывается) |
|||
20
welwel
08.09.16
✎
04:16
|
Параметр ТипЦены должен быть типа Справочник.ТипыЦен
|
|||
21
welwel
08.09.16
✎
04:17
|
И судя по контексту нужно
ГлПолучитьЦену |
|||
22
san4ez1008
08.09.16
✎
04:57
|
РозничнаяЦена = глПолучитьЦену(ТЗ.Товар,Цены.Рассчитывается, ТекущаяДата(),Цены.БазовыйТипЦен, глРубли);
Снова ошибка Рассчетная = ТипЦены.Рассчитывается; {Глобальный модуль(1344)}: Значение не представляет агрегатный объект (Рассчитывается) |
|||
23
Antony8x
08.09.16
✎
05:00
|
(3) ))
|
|||
24
san4ez1008
08.09.16
✎
05:17
|
ТабВыгр.Путь = Строка(ТЗ.Товар.Родитель.ПолноеНаименование());
ТабВыгр.ЦенаЗакуп = глПолучитьЦену(ТЗ.Товар,Цены.БазовыйТипЦен, ТекущаяДата()); В колонке пусто... |
|||
25
Смотрящий
08.09.16
✎
06:32
|
А полный код своего творения можешь привести ?
|
|||
26
san4ez1008
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
|
почту глянь
|
|||
28
varelchik
08.09.16
✎
08:24
|
(0) А цены вообще-то есть?
Для начала. Мож их и нет вообще, а в документах устанавливают явно. |
|||
29
DrZombi
гуру
08.09.16
✎
08:45
|
(0) Прямым запросом можно сделать в один запрос :)
|
|||
30
san4ez1008
19.09.16
✎
08:06
|
Ребят,я штрихкод не могу вытянуть.. Реквизит находится в справочнике Единицы, в запросе к нему обращаюсь, а он выдает:
Поле агрегатного объекта не обнаружено (ШтрихКод). |ШтрихКод = Справочник.Номенклатура.БазоваяЕдиница.ШтрихКод; ТабВыгр.ШтрихКод = Строка(Таб.ШтрихКод); |
|||
31
san4ez1008
19.09.16
✎
08:07
|
Справочник Единицы - подчиненный справочник Номенклатура
|
|||
32
san4ez1008
19.09.16
✎
11:27
|
О,все ништяк,заработало
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |