Заказы на доработку 1С (сервис удаленной работы)

Хранилище

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

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Помогите изменить цену товара. , Нужно изменить Розничные цены в процентах используя Приходные цены.          
m16 Подменю пользователя
сообщение 04.12.10, 19:47
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Всем добрый!
Пожалуйста помогите решить проблемку.
1С:Предприятие 7.7 (7.70.027) ТиС для Украины (7.70.004)

Задача вот такая:
Нужно найти весь товар в определённом ценовом диапазоне , найти Приходную цену (каждого товара) и вычислить (для каждого товара) Розничную цену в процентах.
напр. Розничная=Приходная+%
Вот код:

//******************************************* 
Процедура Сформировать()
Спр = СоздатьОбъект("Справочник.Номенклатура");
Цены = СоздатьОбъект("Справочник.Цены");
Цены.ИспользоватьДату(ТекущаяДата());
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() > 0 Цикл
Если Спр.ЭтоГруппа()=0 Тогда
Цены.ИспользоватьВладельца(Спр.ТекущийЭлемент());
Если Цены.НайтиПоНаименованию("Приходная") = 1 Тогда
Закупка=Цены.Цена;
Если (Закупка>=9.76) и (Закупка<=9.78) Тогда
СуммаНаценки=Закупка*30/100;
Цены.Цена=Закупка+СуммаНаценки;
Сообщить("_____________________________________________");
Сообщить(Спр.ТекущийЭлемент());
Сообщить(Закупка);
Сообщить(Цены.Цена);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры


Этот код правильно отрабатывается только тогда, когда Приходная цена находится на 5 (или ниже) позиции в списке Цен

Подскажите, где в коде ошибка или что нужно добавить?

P.S. С готовой обработкой «формирование цен» пользуемся. Но немного неудобно с ней работать. Буху приходится 10 раз вызывать и 10 раз забивать диапазон цен От и До. Каждый раз забивать процент наценки. С округлением тоже проблема. Не хочет 1С гибко округлять цены в зависимости от остатка до 25 или 75 коп или округлять цену, так как решит директор.
Например, если цена имеет остаток 25коп., а директору захотелось, чтобы остаток был 75коп.
Также обработка не может определить, что если, после формирования цен Розничная цена имеет меньшую цену, то её нельзя изменять. Обработка просто тупо перепишет уже имеющуюся большую цену на новую меньшую цену.
Вот мне и пришлось написать обработку, где бух в один присест заносит 10 разных диапазонов Приходных цен, на каждый из диапазонов устанавливает процент наценки, желаемое округление и указывает, нужно ли перезаписывать большую цену на меньшую.
Все отлично работает, кроме этой проблемы, которую я описал.
Код который тут поместил, это упрощённый вариант, отвечающий за выборку Приходных цен и наценки.

Спасибо.

MATEVI Подменю пользователя
сообщение 04.12.10, 20:37
Сообщение #2

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

 Если Цены.НайтиПоНаименованию("Приходная",0,1) = 1 Тогда


Возможно тут если у Вас есть цена с названием например "Приходная на товар" она попадет в выборку смотрите синтаксис 1 - точное соответствие

Еще не хватает
 
Если Цены.ПометкаУдаления()=1 Тогда
   Продолжить;
КонецЕсли;

Если помеченая на удаление цена есть для этого товара она тоже попадает в выборку.

Спасибо сказали: m16,

m16 Подменю пользователя
сообщение 04.12.10, 21:34
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(MATEVI)
 Если Цены.НайтиПоНаименованию("Приходная",0,1) = 1 Тогда

Возможно тут если у Вас есть цена с названием например "Приходная на товар" она попадет в выборку смотрите синтаксис 1 - точное соответствие


К сожалению, не работает. Вообще ничего не находит. Сообщает: Поиск завершён!

Цитата
 
Если Цены.ПометкаУдаления()=1 Тогда
   Продолжить;
КонецЕсли;

Если помеченая на удаление цена есть для этого товара она тоже попадает в выборку.


А за это огромное спасибо.

MATEVI Подменю пользователя
сообщение 04.12.10, 21:58
Сообщение #4

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

Цитата(m16 @ 04.12.10, 22:34) *
К сожалению, не работает. Вообще ничего не находит. Сообщает: Поиск завершён!

Ну да провтыкал. Справочник подчиненный Цены.НайтиПоНаименованию("Приходная",1,1)

НайтиПоНаименованию(<?>,,);
Синтаксис:
НайтиПоНаименованию(<Наименование>,<Режим>,<ФлагПоиска>)
Назначение:
Найти элемент справочника по наименованию.
Возвращает: 1 - если действие выполнено;
0 - если действие не выполнено (элемент не найден).
Параметры:
<Наименование> - строка с наименованием искомого элемента справочника,
<Режим> - необязательный параметр. Число: 1 - поиск внутри установленного подчинения (родителя); 0 - поиск во всем справочнике вне зависимости от родителя. Значение по умолчанию - 1.
<ФлагПоиска> - необязательный параметр. Число: 1 - найти точное соответствие наименования; 0 - найти наименование по первым символам. Значение по умолчанию - 0.

m16 Подменю пользователя
сообщение 04.12.10, 22:09
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Всё равно находит только один товар.

MATEVI Подменю пользователя
сообщение 04.12.10, 22:28
Сообщение #6

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

Цитата(m16 @ 04.12.10, 23:09) *
Всё равно находит только один товар.

В смысле товар? Вы же цену ищете?
Есть несколько цен "Приходная"? Тогда наверно стоит использовать не если цикл

m16 Подменю пользователя
сообщение 04.12.10, 22:37
Сообщение #7

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Наверно я плохо описал проблему. Извините.
Мне нужно найти весь товар в определённом ценовом диапазоне , найти Приходную цену (каждого товара) и вычислить (для каждого товара) Розничную цену в процентах.

MATEVI Подменю пользователя
сообщение 04.12.10, 22:45
Сообщение #8

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

Цитата(m16 @ 04.12.10, 23:37) *
Наверно я плохо описал проблему. Извините.
Мне нужно найти весь товар в определённом ценовом диапазоне , найти Приходную цену (каждого товара) и вычислить (для каждого товара) Розничную цену в процентах.

То есть у товара может быть несколько закупочных цен и по разному называться?

m16 Подменю пользователя
сообщение 04.12.10, 22:52
Сообщение #9

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Нет.
"Приходная" только одна.
См. скрин.

MATEVI Подменю пользователя
сообщение 04.12.10, 23:15
Сообщение #10

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

Цитата(m16 @ 04.12.10, 23:52) *
Нет.
"Приходная" только одна.
См. скрин.


64000000.gif

m16 Подменю пользователя
сообщение 04.12.10, 23:38
Сообщение #11

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Создал два товара по цене 9.77: в существующей группе и в не групп. Приходная цена стоит первой по списку.
Код их подхватил.
Чёрт. А вот старые уже существующие записи (у меня их ещё две по этой цене) не хочет находить. Есть мысли?.

MATEVI Подменю пользователя
сообщение 04.12.10, 23:49
Сообщение #12

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

Цитата(m16 @ 05.12.10, 0:38) *
Создал два товара по цене 9.77: в существующей группе и в не групп. Приходная цена стоит первой по списку.
Код их подхватил.
Чёрт. А вот старые уже существующие записи (у меня их ещё две по этой цене) не хочет находить. Есть мысли?.

Открываем отладчик, если нет фильтра по ТМЦ то добавляем в обработку для отладки. Выбираем то что должно попадать и не попадает и смотрим в чем причина.

Либо какая то лажа с наименованием приходная. Поставил вместо русской а английскую a цены не находятся smile.gif

m16 Подменю пользователя
сообщение 04.12.10, 23:59
Сообщение #13

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Спасибо. Буду пробывать.
Что интересно, обработка "Формирование цен" видит все записи.

MATEVI Подменю пользователя
сообщение 07.12.10, 11:27
Сообщение #14

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

Цитата(m16 @ 05.12.10, 0:59) *
Спасибо. Буду пробывать.
Что интересно, обработка "Формирование цен" видит все записи.

Ищите проблему в наименовании. У вас 2 типа цен "Приходная" причем та первая , даже на картинке видно, не должна быть первой. Т.к. остальные отсортированиы по наименованию.
Она или на каком то "нерусском" языке или там какие то символы которые ставят ее первой.
Поэтому и не ищет по наименованию

igmig65 Подменю пользователя
сообщение 07.12.10, 12:54
Сообщение #15

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 613
Из: Донецкая обл
Спасибо сказали: 168 раз
Рейтинг: 140.9

Точно не скажу, но проверьте - "Приходная" - это наименование? Возможно это реквизит "Тип цены"? А само наименование скрыто?

MATEVI Подменю пользователя
сообщение 07.12.10, 13:17
Сообщение #16

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

Цитата(igmig65 @ 07.12.10, 13:54) *
Точно не скажу, но проверьте - "Приходная" - это наименование? Возможно это реквизит "Тип цены"? А само наименование скрыто?

СписокЦен.Ссылка= ЦеныТовара.ТекущийЭлемент(); Цены - основное представление - в виде наименования

igmig65 Подменю пользователя
сообщение 07.12.10, 15:46
Сообщение #17

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 613
Из: Донецкая обл
Спасибо сказали: 168 раз
Рейтинг: 140.9

Посмотрел ТиС. В спр.Цены наименование скрыто, его невидно не в списке, не в элементе. Рекв. Тип цены - это элемент спр. КатегорииЦен. А наименование записываться должно ПриЗаписи(): Наименование = КатегорияЦены.Наименование;
В принципе, если Цены формируются корректно, то и наименование в них должно заполняться корректно. Но, судя по тому что у вас, то скорей всего, у вас чтото неправильно. Возьмите временно в форму списка спр.Цены добавьте колонку наименование и проверьте как оно заполнено.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.04.24, 19:16
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!