Обращение к подчиненному справочнику

Тема в разделе "1C и всё что с ней связано", создана пользователем Dzo, 13 апр 2009.

  1. Dzo

    Dzo Active Member

    Регистрация:
    13 апр 2009
    Сообщения:
    38
    Симпатии:
    0
    Всем доброго дня!
    Платформа 1с Торговля 7.7 (9.2)
    Значит проблема в следующем:
    Необходимо в документе заполнить табличную часть из разных справочников.
    Есть следующие колонки: Товар, Единица измерения, Цена Розничная, Цена Закупочная.

    Чтобы Заполнить колонки товар и Единица использую следующее:
    Тов=СоздатьОбъект("Справочник.Номенклатура");
    Тов.НайтиЭлемент(ВыбТовар);
    НоваяСтрока();
    Товар=Тов.ТекущийЭлемент();
    Единица=Товар.БазоваяЕдиница;

    Далее я рассуждаю так

    Цен=СоздатьОбъект("Справочник.Цены");
    Цен.ИспользоватьВладельца(Товар);

    Что необходимо написать дальше что бы заполнить колонки Цена Закупочная и Цена Розничная?


    Всем заранее спасибо..
     
  2. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    а где эти цены хранятся или же по какой формуле расчитываются?
     
  3. Dzo

    Dzo Active Member

    Регистрация:
    13 апр 2009
    Сообщения:
    38
    Симпатии:
    0
    Цены Хранятся в Справочнике Цены и не рассчитываются, а задаются руками.
    Вот картинка.
     

    Вложения:

    • __________.JPG
      __________.JPG
      Размер файла:
      122,5 КБ
      Просмотров:
      25
  4. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    А дальше так же как и перед этим
    Код (Text):
    Цен.НайтиПоНаименованию("Рознечная");
    Рознечная = Цен.ТекущийЭлемент();
    Цен.НайтиПоНаименованию("Закупочная");
    Закупочная = Цен.ТекущийЭлемент();
    Как-то так. а вообще синтакс-помощник погляди
     
  5. Dzo

    Dzo Active Member

    Регистрация:
    13 апр 2009
    Сообщения:
    38
    Симпатии:
    0
    Так не получилось ) И даже если бы и получилось, то он бы скорее всего выводил бы не саму цену, а Тип цены..
    Ребята очень прошу помощи..
     
  6. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    посмотри в глобальном модуле, как устроена функция глВернутьЦену
     
  7. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    ну тады можешь запросом тащить всю строку
     
  8. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Цены в справочнике цены периодические, надо использовать

    Цен=СоздатьОбъект("Справочник.Цены");
    Цен.ИспользоватьВладельца(Товар);
    Цен.ИспользоватьДату(ДатаДок);// ну или какая ему нужна

    И плюс там есть заморочь на единицу измерения - для каждой единицы цены свои.
    так что как задал владельца-выбирай цены по реквизиту Единица,а уже среди них -ту что тебе надо по наименованию.
     
  9. Renat11111

    Renat11111 Well-Known Member

    Регистрация:
    20 апр 2008
    Сообщения:
    123
    Симпатии:
    0
    мне когда надо было в форме элемента справочника в реквизитах отображать и записывать закупочную и розничную цену... вот тебе пример может поможет:

    Процедура ЗаписатьТипыЦен()

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

    спрЕдиницы = СоздатьОбъект("Справочник.Единицы");
    спрЕдиницы.ИспользоватьВладельца(ТекущийЭлемент());


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

    Если спрЕдиницы.НайтиПоРеквизиту("ОКЕИ", спрОкеи.ТекущийЭлемент(),1)=1 Тогда
    // ничего не делаем
    Иначе
    спрЕдиницы.Новый();
    спрЕдиницы.ОКЕИ = спрОкеи.ТекущийЭлемент();
    спрЕдиницы.Коэффициент =1 ;
    спрЕдиницы.Записать();
    КонецЕсли;


    Если СпрЦены.НайтиПоРеквизиту("ТипЦен", РознЦена,0)=1 Тогда
    СпрЦены.Цена = РозничнаяЦена;
    СпрЦены.Записать();
    Иначе
    СпрЦены.Новый();
    СпрЦены.Валюта = Константа.ВалютаБухУчета;
    СпрЦены.Единица = спрЕдиницы.ТекущийЭлемент() ;
    СпрЦены.ТипЦен = РознЦена;
    СпрЦены.Цена = РозничнаяЦена ;
    СпрЦены.Записать();
    КонецЕсли;

    Если СпрЦены.НайтиПоРеквизиту("ТипЦен", ЗакупЦена,0)=1 Тогда
    СпрЦены.Цена = ЗакупочнаяЦена;
    СпрЦены.Записать();
    Иначе
    СпрЦены.Новый();
    СпрЦены.Валюта = Константа.ВалютаБухУчета;
    СпрЦены.Единица = спрЕдиницы.ТекущийЭлемент() ;
    СпрЦены.ТипЦен = ЗакупЦена;
    СпрЦены.Цена = ЗакупочнаяЦена;
    СпрЦены.Записать();
    КонецЕсли;

    КонецПроцедуры // ЗаписатьТипыЦен
     
  10. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    и что, недостаточно использовать метод, примененный в
    глВернутьЦену ?
     
  11. Dzo

    Dzo Active Member

    Регистрация:
    13 апр 2009
    Сообщения:
    38
    Симпатии:
    0

    Вы имеете ввиду этот цикл?
     
  12. kaa

    kaa Гость

    ЦенаРозничная = Рознечная.Цена.Получить(ДатаДок);
    ЦенаЗакупочная = Закупочная.Цена.Получить(ДатаДок);
     
  13. Dzo

    Dzo Active Member

    Регистрация:
    13 апр 2009
    Сообщения:
    38
    Симпатии:
    0
    Метод который применяется в ГлВернутьЦену не работает:

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


    Ничего не происходит ((
    Ошибок нет нигде.. я не понимаю почему так..
     
  14. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Лови через отладчик или сообщить() нашелся ли товар, пустой-ли выбтовар,Нашлась ли цена с таким наименованием - а то одна латинская буква в кирилице много крови попортить может. Как нашел где затык - разбирайся с ним.
     
  15. kaa

    kaa Гость

    ТипЦен = СоздатьОбъект("ТипыЦен");
    Если ТипЦен.НайтиПоНаименованию("Закупочные") = 1 Тогда
    НайденыйТип = ТипЦен.ТекущийЭлемент();
    Иначе
    Сообщить("Нету ти ни фига такого типа цен!!","!!!");
    Возврат;
    КонецЕсли;

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


    //У справочника Цены в Торговле наименования нет
     
  16. Renat11111

    Renat11111 Well-Known Member

    Регистрация:
    20 апр 2008
    Сообщения:
    123
    Симпатии:
    0

    А зачем используете ИспользоватьДату(РабочаяДата()); и метод получить? может в этом и ошибка?
     
  17. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Тебе ж написали, как надо :
     
  18. Dzo

    Dzo Active Member

    Регистрация:
    13 апр 2009
    Сообщения:
    38
    Симпатии:
    0
    Благодарю всех кто откликнулся! Все заработало. Всем еще раз огромное спасибо.
     
Загрузка...
Похожие Темы - Обращение подчиненному справочнику
  1. Bafomet
    Ответов:
    18
    Просмотров:
    133
  2. Shouldercannon
    Ответов:
    1
    Просмотров:
    146
  3. proteam
    Ответов:
    7
    Просмотров:
    789
  4. Вовкин
    Ответов:
    0
    Просмотров:
    723
  5. Вовкин
    Ответов:
    0
    Просмотров:
    684

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