Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 18:36

Как добраться до подчинённого справочника в 1С?

Автор mark2011, 30 июн 2011, 12:04

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

mark2011

Здравствуйте,

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

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

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

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

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

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

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

prog1c7.7

подчиненный справочник однако, программирование изучать по конфигуратору.
такой же интерпритатор (а не компиллятор) как и все вэбки твои.
интерфейсные окна  и взаимосвязи между объектами,и методы исполнения, и панели, и добавочные панели окон, и компоненты очень
похожи  (прямой закос)  - на дельфи  шестерку старенькую - все интуитивно , и понятно,а остальное из книжки почитай пожалуйста,
если программист то догонять быстро будешь, связи между элементами подчиненными - структурно в базе данных первичные знаешь если - мозги под 1с допилишь не напрягаясь, если раша не устраивает, можешь использовать
англ. версию операторов - операторы, построение языка и синтаксис - очень очень очень на делфу похож (я сам немного дельфин - так пописываю для души и по небольшим заказам)

mark2011

Спасибо, Модератор, за помощь!  ui;;t;
Большое! Человеческое!! Спасибо!!!  ui;;t; ui;;t; ui;;t;

mark2011

ВыбЦены = СоздатьОбъект(Справочник.Цены) - я правильно понимаю?
По поводу владельца - вот здесь есть это упоминание, но непонятно какой параметр передаётся, что это такое...

mark2011

Вот накопал на просторах инета процедурку:



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



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

mark2011

Твой код в принципе работает, но выдаёт строку "руб." вместо цены....
Там так-то табличный элемент, т.е. оптовая и розничная цена, вот.... мне просто нужно получить их значения, чтобы впоследствии записать их в XML. Проблема состоит только в получении значений, как бы так.... Но цены там точно есть, я смотрел в сам справочник.

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


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


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

mark2011

Делаю вот так:


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

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

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

КонецЕсли;


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


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

prog1c7.7

Во первых создаешь в диалоге поле с выбором
ТипЦеныТек в свойствах в "тип"  указываешь "справочник.ТипыЦен"

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


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

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

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


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

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

prog1c7.7

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

prog1c7.7

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск