Имя: Пароль:
1C
 
Значения свойств
0 antokarpo
 
05.08.09
08:03
Помогите, пожалуйста!!!
Очень надо вывести в отчет значения свойств. Например для номенклатуры нужно выводить такие значения, как срок хранения, состав и т.п. Пытаюсь делать так:


ПрочитатьЗаполнитьСвойстваИЗначения();

ОбластьМакета = Макет.ПолучитьОбласть("Строка");
Пока Строка.Следующий() Цикл
ОбластьМакета.Параметры.Наименование = Строка.Номенклатура;
ОбластьМакета.Параметры.ЕдИзм        = Строка.ЕдиницаИзмерения;
ОбластьМакета.Параметры.Колво        = Строка.Количество;
ОбластьМакета.Параметры.КолвоМест    = Строка.КоличествоМест;
Для каждого Прмн из СвойстваИЗначения цикл
     
Если Прмн.Свойство.Наименование = "СрокХранения10С" Тогда
ОбластьМакета.Параметры.СрХр10 = Прмн.Значение;
КонецЕсли;

Если Прмн.Свойство.Наименование = "СрокХранения18С" Тогда
ОбластьМакета.Параметры.СрХр18 = Прмн.Значение;
КонецЕсли;

Если Прмн.Свойство.Наименование = "Жир" Тогда
ОбластьМакета.Параметры.Жир    = Прмн.Значение;
КонецЕсли;

Если Прмн.Свойство.Наименование = "Фарш" Тогда
ОбластьМакета.Параметры.Фарш   = Прмн.Значение;
КонецЕсли;

Если Прмн.Свойство.Наименование = "ХлорНатрий" Тогда
ОбластьМакета.Параметры.ХлорНатр = Прмн.Значение;
КонецЕсли;

Если Прмн.Свойство.Наименование = "СухиеВва" Тогда
ОбластьМакета.Параметры.СухВещ   = Прмн.Значение;
КонецЕсли;

КонецЦикла;
ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;

Но, увы, ничего из этого не выходит. Значения не выводятся! Хотя, в самом справочнике они сохраняются и при следующем открытии их значения снова видны в форме элемента. Помогите, кто может. ОЧЕНЬ надо срочно!
1 Defender aka LINN
 
05.08.09
08:06
Это точо 7.7?
2 antokarpo
 
05.08.09
08:19
Это, вообще-то, 8.1
3 lxndr
 
05.08.09
08:20
(0) Пиши человечий запрос.
4 Mitriy
 
05.08.09
08:21
назови параметры СрыХры9, СрыХры10 и т.п., а потом пользуйся методом ОбластьМакета.Параметры.Заполнить(Прмн)... только язык не сломай...
5 antokarpo
 
05.08.09
08:22
запрос человечнее некуда :-)
от самих, так сказать 1С.

Вот Он:
Запрос.Текст = "
   |ВЫБРАТЬ РАЗЛИЧНЫЕ РАЗРЕШЕННЫЕ
   |    СвойстваОбъектов.ПометкаУдаления                            КАК ПометкаУдаления,
   |    СвойстваОбъектов.Ссылка                                     КАК Свойство,
   |    РегистрСведений.ЗначенияСвойствОбъектов.Значение            КАК Значение
   |
   |ИЗ
   |// Отбираются свойства, предназначенные для заданного типа объектов.
   |    (
   |    ВЫБРАТЬ
   |        ПланВидовХарактеристик.СвойстваОбъектов.Ссылка          КАК Ссылка,
   |        ПланВидовХарактеристик.СвойстваОбъектов.Наименование    КАК Наименование,
   |        ПланВидовХарактеристик.СвойстваОбъектов.ПометкаУдаления КАК ПометкаУдаления
   |
   |    ИЗ
   |        ПланВидовХарактеристик.СвойстваОбъектов
   |
   |    ГДЕ
   |        ПланВидовХарактеристик.СвойстваОбъектов.НазначениеСвойства В ( &НазначениеСвойств )
   |
   |    )                                                           КАК СвойстваОбъектов
   |
   |ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
   |// Присоединяются значения свойств, назначенные для заданного объекта.
   |    РегистрСведений.ЗначенияСвойствОбъектов
   |ПО
   |    РегистрСведений.ЗначенияСвойствОбъектов.Свойство = СвойстваОбъектов.Ссылка
   |    И
   |    РегистрСведений.ЗначенияСвойствОбъектов.Объект = &ОбъектОтбораЗначений
   |
   |ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
   |// Присоединяются группы, которым назначено свойство, для отбора свойств.
   |// Если свойству назначено значение, оно отбирается в любом случае.
   |    РегистрСведений.НазначенияСвойствОбъектов
   |ПО
   |    РегистрСведений.НазначенияСвойствОбъектов.Свойство = СвойстваОбъектов.Ссылка
   |    И
   |    РегистрСведений.ЗначенияСвойствОбъектов.Значение ЕСТЬ NULL
   |
   |ГДЕ
   |// Если значение свойства не задано, свойство должно быть назанчено
   |// или всем объектам, или одной из групп - родителей объекта.
   |    РегистрСведений.НазначенияСвойствОбъектов.Объект ЕСТЬ NULL
   |    ИЛИ
   |    РегистрСведений.НазначенияСвойствОбъектов.Объект В ( &СписокНазначенийСвойств )
   |
   |УПОРЯДОЧИТЬ ПО
   |    СвойстваОбъектов.Наименование
   |";
6 Mitriy
 
05.08.09
08:23
хотя, может чо и напутал... в общем, будь проще...
7 antokarpo
 
05.08.09
08:25
назови параметры СрыХры9, СрыХры10 и т.п., а потом пользуйся методом ОбластьМакета.Параметры.Заполнить(Прмн)... только язык не сломай...

А подробнее, на примерах, так сакзать, можно?
8 lxndr
 
05.08.09
08:38
(5) нее, получай все свойства сразу, чтонить вроде этого:

ВЫБРАТЬ
   Свойства1.Значение КАК Значение1,
   Свойства2.Значение КАК Значение2,
   Свойства3.Значение КАК Значение3
ИЗ
   РегистрСведений.ЗначенияСвойствОбъектов КАК Свойства1
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК Свойства2
           ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК Свойства3
           ПО Свойства1.Объект = Свойства2.Объект
       ПО Свойства1.Объект = Свойства2.Объект
ГДЕ
   Свойства1.Свойство = &Свойство1
   И Свойства2.Свойство = &Свойство2
   И Свойства3.Свойство = &Свойство3
   И Свойства1.Объект = &Номенклатура
   И Свойства2.Объект = &Номенклатура
   И Свойства3.Объект = &Номенклатура
9 antokarpo
 
05.08.09
08:57
lxndr

а чем уже существующий запрос плох? я просто вообще не разобрался в 8.1. вот, на 7.7 было проще. а тут лажа какая-то.
10 antokarpo
 
05.08.09
09:02
вообщем, я еще долго так разбираться буду...

сразу скажу. как программер на 1с8.1 я еще никакой.
может кто-нибудь дать сюда текст работающей проги согласно поставленной задачи?
буду оччень признателен за помощь.
11 hhhh
 
05.08.09
09:29
(9)

Если Прмн.Свойство.Наименование = "СрокХранения10С" Тогда

наименования свойств у тебя получаются отдельными запросами к базе, будет тормозить. Лучше загружать сразу наименования в основном запросе, чтобы были под рукой.
12 antokarpo
 
06.08.09
06:04
Наверное Вы не заметили, но проблема не в том, что прога тормозит. Проблема в том, что результата ее работы, который должен быть, нет. Кто какими соображениями может поделиться?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn