7.7 Изменение цен из документа

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем man37, 23 фев 2017.

  1. TopicStarter Overlay
    man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    238
    Симпатии:
    11
    Баллы:
    29
    Здравствуйте! Всех мужчин с праздником!
    Есть документ на форме многострочная часть и выбор типа цен.
    Код:
    Процедура ТипЦен
      Цены = СоздатьОбъект ("Справочник.Цены");
      ТипыЦен = СоздатьОбъект ("Справочник.ТипыЦен№);
    КодЦены = ТипЦен.Код;
    Док = ТекущийДокумент();
    Док.ВыбратьСтроки();
    Пока Док.ПолучитьСтроку() = 1 Цикл
         Цены.ИспользоватьДату(ТекущаяДата());
         Цены.ИспользоватьВладельца (Док.Товар);
         Цены.ВыбратьЭлементы();
               Пока Цены.ПолучитьЭлемент() = 1 Цикл
                       ТипыЦен.ВыбратьЗлементы();
                             Если ТипыЦен.НайтиПоКоду (КодЦены)=1  Тогда
                             Сообщить (Док.Товар + "           " + ТипЦен);
                             КонецЕсли;
                      КонецЦикла;
             КонецЦикла;
    КонецПроцедуры
    Писал в браузер, может и сделал ошибки.
    В итоге получаю только вывод Товара, в количестве типа цен, а ТипЦен не выводит.
    А мне бы получить Наименование товара и, к примеру, Розница.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.509
    Симпатии:
    533
    Баллы:
    204
    Сообщить (""+Док.Товар + " " + ТипЦен);
  3. TopicStarter Overlay
    man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    238
    Симпатии:
    11
    Баллы:
    29
    Ошибку свою понял и нашел!
    Код процедуры:
    Код:
    Процедура Сформировать()
        Цены = СоздатьОбъект ("Справочник.Цены");
        ТипыЦен = СоздатьОбъект ("Справочник.ТипыЦен");
        Товар1 = СоздатьОбъект ("Справочник.Номенклатура");
        Док = ТекущийДокумент();
        Док.ВыбратьСтроки();
        КодЦены = ТипЦен.Код;
        Пока Док.ПолучитьСтроку()=1 Цикл
            КодТовара = Док.Товар.Код; 
            Если Товар1.НайтиПоКоду (КодТовара) = 1 Тогда     
                Цены.ИспользоватьДату (ТекущаяДата());
                Цены.ИспользоватьВладельца (Док.Товар);
                Цены.ВыбратьЭлементы();
                Если Цены.ПолучитьЭлемент() = 1 Тогда
                    ТипыЦен.ВыбратьЭлементы();
                    Если ТипыЦен.НайтиПоКоду (КодЦены) = 1 Тогда
    
                        Сообщить ("Типы цен              " + ТипыЦен);
                        Сообщить ("Код Типа цен        " + КодЦены);
                        Сообщить ("Код Товара            " + КодТовара);
                        Сообщить ("Процент                "  + ТипЦен.Процент);
                        Сообщить ("Номенклатура       "  + Док.Товар);
                      
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
    КонецПроцедуры
    Другой вопрос: как теперь получить процент типа цен именно этого товара, у меня получается вывести только общий процент, записанный в типах цен!
    Т.е. если в типах цен "розница" = "закупка" + 25%, то она и выводится.
    А у меня "розница" для Товар1 имеет + 20%, для Товар2 - +30%, вот их мне и надо вывести..
    --- Объединение сообщений, 24 фев 2017 ---
    Т.е. что-то типа этого:
    Код:
    Сообщить (  Док.Товар.ТипЦен.Процент);
    Последнее редактирование: 24 фев 2017
  4. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.548
    Симпатии:
    59
    Баллы:
    54
    Сообщить ( Док.Товар.ТипЦен.Процент);
    и что выводит?
  5. TopicStarter Overlay
    man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    238
    Симпатии:
    11
    Баллы:
    29
    Ошибку: Поле агрегатного объекта не обнаружено (ТипЦен).
  6. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.548
    Симпатии:
    59
    Баллы:
    54
    конфа, я так понимаю, тис
    фсё равно ничё не понял
    давай скрин-шоты и объясняй чё хочешь
  7. TopicStarter Overlay
    man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    238
    Симпатии:
    11
    Баллы:
    29
    скрин.jpg
    Выбираю товар или группу товара, загружаю, устанавливаю наценку в %, и в ценах выбранного товара в выбранном тип цен меняется процент на выбранный, к примеру, сейчас наценка на выбранный товар по "Розничная" составляет 10%, выбираю на 10% и по всем этим товарам наценка "Розничная" будет уже в ценах этих товаров 20%. Сейчас получается только изменить саму цену на выбранный процент, а установить сам процент не получается.
  8. TopicStarter Overlay
    man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    238
    Симпатии:
    11
    Баллы:
    29
    Не могу найти выбранный тип цен, выбирается только первая.
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.509
    Симпатии:
    533
    Баллы:
    204
  10. TopicStarter Overlay
    man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    238
    Симпатии:
    11
    Баллы:
    29
    Код:
        Цены = СоздатьОбъект ("Справочник.Цены");
        Товар1 = СоздатьОбъект ("Справочник.Номенклатура");
        Док = ТекущийДокумент();
        Док.ВыбратьСтроки();
        КодЦены = ТипЦен.Код;
        Пока Док.ПолучитьСтроку()=1 Цикл
            КодТовара = Док.Товар.Код;
            Если Товар1.НайтиПоКоду (КодТовара)= 1 Тогда
       
                Цены.ИспользоватьДату (ТекущаяДата());
                Цены.ИспользоватьВладельца (Товар1);
                Цены.НайтиПоРеквизиту ("ТипЦен",ТипЦен,1);
               
                Если Цены.Выбран() > 0 Тогда   
                   
                    Сообщить ("Товар:                       " + КодТовара + "      "+ Док.Товар);  
                    Сообщить ("Выбранная цена:       " + Док.ТипЦен.Наименование + "        " + Док.ТипЦен.Процент +" %      " + Док.Цена + " руб.");
                    Сообщить ("Найденная цена:       " + Цены.ТипЦен + "        " + Цены.Процент + " %       " + Цены.Цена + " руб.");
                    Сообщить ("");
                   
                КонецЕсли;
            КонецЕсли;
        КонецЦикла; 
    В итоге получаю:
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.509
    Симпатии:
    533
    Баллы:
    204
    Не вижу ошибки. Но я бы сделал так
    Код:
                ;
              
                Если Цены.НайтиПоРеквизиту ("ТипЦен",ТипЦен,1)=1 Тогда  
                  
                    Сообщить ("Товар:                       " + КодТовара + "      "+ Док.Товар); 
                    Сообщить ("Выбранная цена:       " + Док.ТипЦен.Наименование + "        " + Док.ТипЦен.Процент +" %      " + Док.Цена + " руб.");
                    Сообщить ("Найденная цена:       " + Цены.ТипЦен + "        " + Цены.Процент + " %       " + Цены.Цена + " руб.");
                    Сообщить ("");
                  
                КонецЕсли;
    
  12. TopicStarter Overlay
    man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    238
    Симпатии:
    11
    Баллы:
    29
    Всё-равно выдаёт не правильно, также как и писал выше, Заказ 15% 1900 руб., нет такого процента в типах цен и такой цены, не понимаю откуда берёт!
  13. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.509
    Симпатии:
    533
    Баллы:
    204
    Ну выведите еще код справочника ТипыЦен..
    man37 нравится это.
  14. TopicStarter Overlay
    man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    238
    Симпатии:
    11
    Баллы:
    29
    Код совпадает, название тоже, а вот процент и цена (причем у всех выбранных товаров одинаковая, а на самом деле нет)!
  15. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.509
    Симпатии:
    533
    Баллы:
    204
    попробуй так
    Код:
    КодТовара = Док.Товар.Код; //зачем? проще брать просто ссылку
    Если Товар1.НайтиПоКоду (Док.Товар)= 1 Тогда
    
    Цены.ИспользоватьДату (Док.ДатаДок); //тут надо брать дату документа, т.к. цена может измениться
    Цены.ИспользоватьВладельца (Док.Товар);
    Нашли=0;
    Цены.ВыбратьЭлементы();
    Пока цены.ПолучитьЭлемент()=1 Цикл
    Если Цены.ТипЦен=ТипЦен Тогда
    Сообщить ("Товар: " + Док.Товар.Код+ " "+ Док.Товар);
    Сообщить ("Выбранная цена: " + Док.ТипЦен.Наименование + " " + Док.ТипЦен.Процент +" % " + Док.Цена + " руб.");
    Сообщить ("Найденная цена: " + Цены.ТипЦен + " " + Цены.Процент + " % " + Цены.Цена + " руб.");
    Сообщить ("");
    Нашли=1;
    Прервать;
    КонецЕсли;
    
    Если Нашли=0 Тогда
    Сообщить("Не нашли цену для "+Док.Товар);
    КонецКонец;
    man37 нравится это.
  16. TopicStarter Overlay
    man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    238
    Симпатии:
    11
    Баллы:
    29
    Спасибо, обязательно попробую!
    Сегодня решил продолжить, мой код не работает на строке:

    Цены.ИспользоватьВладельца (Товар1);

    При

    Сообщить (Цены.Владелец):

    Выдаёт совсем другую номенклатуру и, соответственно, и цену, и процент этого товара, но при выборе другого Типа Цен - Владелец меняется.
  17. TopicStarter Overlay
    man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    238
    Симпатии:
    11
    Баллы:
    29
    Ещё раз СПАСИБО, всё работает!
  18. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.509
    Симпатии:
    533
    Баллы:
    204

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