Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
17 Дек 2017, 18:31
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Как добраться до подчинённого справочника в 1С?  (Прочитано 14147 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mark2011

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-18
  • Сайт: 
  • Профессия: Ученик 1С
Здравствуйте,

Создал аналогичную тему по ошибке в разделе с восьмёркой. Думаю, что будет лучше, если её модераторы оттуда удалят, а эта будет жить. :)

В общем объясняю суть. Есть справочник "Номенклатура". Там категории, подкатегории и товары. Вроде пока понятно. Я весь этот справочник экспортнул в XML затем на сайт в MySQL.

Когда тыкаешь на товар один раз, внизу есть кнопка "Справочники". Туда можно нажать, появляется выпадающий список, один из пунктов - "Цены". Туда нажимаю, появляется цена конкретного товара.

Отсюда у меня, как у программиста, возникает вопрос. Если цена каждого товара, значит имеется связь, скорее всего по ID товара. Но в форме цен я графу ID товара не наблюдаю. Соответственно вопрос - как до неё добраться?

И ещё один вопрос. В номенклатуре я перебирал список. Здесь табличные значения. Значит (размышляю как программист) они должны обрабатываться как-то по-другому. Вопрос - каким образом?

Если много вопросов, может кто-нибудь меня ткнёт носом в ссылку, где об этом можно почитать? Я сам вообще-то веб-программист, но приходится с 1С вот разбираться...

В общем буду благодарен за любую помощь. Всем заранее спасибо :)


Оффлайн prog1c7.7

  • Модератор
  • *****
  • Сообщений: 784
  • РЕПУТАЦИЯ: 260
  • КПД: 33%
  • ну - да , ну - да...
  • Регистрация: 2010-10-20
  • Сайт: 
  • Профессия: Программист 1С
подчиненный справочник однако, программирование изучать по конфигуратору.
такой же интерпритатор (а не компиллятор) как и все вэбки твои.
интерфейсные окна  и взаимосвязи между объектами,и методы исполнения, и панели, и добавочные панели окон, и компоненты очень
похожи  (прямой закос)  - на дельфи  шестерку старенькую - все интуитивно , и понятно,а остальное из книжки почитай пожалуйста,
если программист то догонять быстро будешь, связи между элементами подчиненными - структурно в базе данных первичные знаешь если - мозги под 1с допилишь не напрягаясь, если раша не устраивает, можешь использовать
англ. версию операторов - операторы, построение языка и синтаксис - очень очень очень на делфу похож (я сам немного дельфин - так пописываю для души и по небольшим заказам)

Оффлайн mark2011

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-18
  • Сайт: 
  • Профессия: Ученик 1С
Спасибо, Модератор, за помощь!  ui;;t;
Большое! Человеческое!! Спасибо!!!  ui;;t; ui;;t; ui;;t;

Оффлайн mark2011

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-18
  • Сайт: 
  • Профессия: Ученик 1С
ВыбЦены = СоздатьОбъект(Справочник.Цены) - я правильно понимаю?
По поводу владельца - вот здесь есть это упоминание, но непонятно какой параметр передаётся, что это такое...

Оффлайн mark2011

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-18
  • Сайт: 
  • Профессия: Ученик 1С
Вот накопал на просторах инета процедурку:


Процедура Пример2()
    Рсч=СоздатьОбъект("Справочник.РасчетныеСчета");
    рсч.ВыбратьЭлементы(0);//теперь открываем выборку
    //Ноль означает, что выбираем без учета иерархии
    //это все-равно, что отключить иерархический список в меню "Действия"
    Пока рсч.ПолучитьЭлемент()=1 цикл//получаем из выборки новый элемент
        сообщить(+рсч.Наименование+" №"+рсч.Номер);// выводим имя и номер счета
    конецЦикла;
КонецПроцедуры


Для моего случая получается аналогично в принципе?

Оффлайн mark2011

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-18
  • Сайт: 
  • Профессия: Ученик 1С
Твой код в принципе работает, но выдаёт строку "руб." вместо цены....
Там так-то табличный элемент, т.е. оптовая и розничная цена, вот.... мне просто нужно получить их значения, чтобы впоследствии записать их в XML. Проблема состоит только в получении значений, как бы так.... Но цены там точно есть, я смотрел в сам справочник.

Если делать так:

Сообщить(СпрЦены.Цена)

то выдаёт "Неизвестный объект".

Оффлайн mark2011

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-18
  • Сайт: 
  • Профессия: Ученик 1С
Делаю вот так:

 Пока СпрЦены.ПолучитьЭлемент() = 1 Цикл   

Если ТипЦен.НайтиПоНаименованию("Оптовые")=1 Тогда

Сообщить(СпрЦены.Цена.Получить(РабочаяДата()));

КонецЕсли;


Цена.Значение = СпрЦены.Цена.Получить(РабочаяДата());
                //Сообщить(""+СпрЦены.Цена.Получить(РабочаяДата()) + " " +  СпрЦены.Валюта);
            КонецЦикла;

Этим надеюсь получить толькооптовую цену, но всё равно выводятся две цены. Почему так?

Оффлайн prog1c7.7

  • Модератор
  • *****
  • Сообщений: 784
  • РЕПУТАЦИЯ: 260
  • КПД: 33%
  • ну - да , ну - да...
  • Регистрация: 2010-10-20
  • Сайт: 
  • Профессия: Программист 1С
Во первых создаешь в диалоге поле с выбором
ТипЦеныТек в свойствах в "тип"  указываешь "справочник.ТипыЦен"

дальше ставишь в отчете или обработке в процедуре
выполнить:


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

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

      
       ИначеЕсли ТипЦеныТек.Рассчитывается <> 1 Тогда
         Если Цены.ТипЦен <> ТипЦеныТек Тогда
             Продолжить;
          КонецЕсли;
           РеалЦенаОб = Цены.ТекущийЭлемент();
            РеалЦена = РеалЦенаОб.Цена.Получить(ДатаОтчета);
//            Сообщить("РеалЦена  !!! " + РеалЦена);
   
       КонецЕсли;   
   КонецЦикла;


Так вытягиваешь то что тебе надо по ЛЮБОМУ ТИПУ ЦЕН выйдет значение которое на определенную дату (периодический по владельцу справочника)
Во ВТОРЫХ (ЗАРАНЕЕ ИЗВИНЯЮСЬ ЗА МАТ)
Чо за нагонялово в личку? Наезд? Я так понял?
Часом не ох...л?
Я тебя не блокировал - это ррраз,
Блокирую как могу порнуху -это два.
Вопрос уже подымался - это не ко мне САЙТ НЕ МОЙ - полномочий от движка не давали, удаляют по пользователю, темы удаляют у нас только
глобальные модеры и ВЫШЕ, сами с ума сходим, прав просим,а нам не дают, знач пока не считают нужным,
структуру сайта не мы разрабатывали - допер?
В ТРЕТЬИХ  задачу правильно конечную пиши
В ЧЕТВЕРТЫХ не знаешь человека, не дерзи
В ПЯТЫХ УВАЖАЕМЫЙ - ПРАВИЛА ЧИТАЙ - КОНФИГУРАЦИЮ НАДО УКАЗЫВАТЬ

Извиняюсь перед всем форумом за грубость, а то в личку пишут,и винят не разобравшись.
Постараюсь грубостей больше не допускать.
   

Оффлайн prog1c7.7

  • Модератор
  • *****
  • Сообщений: 784
  • РЕПУТАЦИЯ: 260
  • КПД: 33%
  • ну - да , ну - да...
  • Регистрация: 2010-10-20
  • Сайт: 
  • Профессия: Программист 1С
ТипЦеныТек  - не константа какая нибудь, это для примера, чтобы обозначить в диалоге например нужный тип цены
и на дату отчета (не забудь прикрепить реквизит диалога датаотчета - "тип" - дата) какую ты в диалоге укажешь вывести тебе цены на номенклатуру с таким то типом цены, от такого то числа - актуальности.

Оффлайн prog1c7.7

  • Модератор
  • *****
  • Сообщений: 784
  • РЕПУТАЦИЯ: 260
  • КПД: 33%
  • ну - да , ну - да...
  • Регистрация: 2010-10-20
  • Сайт: 
  • Профессия: Программист 1С
ну и еще в перебор по номенклатуре в цикл загони,
СпрНом1 = СоздатьОбъект("Справочник.Номенклатура")
СпрНом1.ВыбратьЭлементы();
Пока Спрном1.ПолучитьЭлемент() = 1 Цикл
...
Потом что я там написал
...
КонецЦикла;


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
145 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
61 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
42 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
28 Сообщений
alexandr_ll
24 Сообщений

* Кто онлайн

  • Точка Гостей: 281
  • Точка Скрытых: 0
  • Точка Пользователей: 5
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal