Имя: Пароль:
1C
1С v8
УТ 11. ДопРеквизиты. Кода нет. По какому полю искать?
0 SeiOkami
 
07.01.13
14:10
Задача проста - печатная форма которая выводит номенклатуру и её некоторые доп.реквизиты. Теперь вопросик:
По какому полю искать нужный доп реквизит в планах видов характеристик, если нет кода? Понимаю, что можно по наименованию, просто может есть другой способ, о котором я не знаю. И даже дело не в конкретно этой задаче, а вообще, ведь еще не раз столкнусь с подобным. Хочется сразу делать, так сказать, по "правильному" =)
1 SeiOkami
 
07.01.13
14:25
Есть какие нить идеи ?
2 Галахад
 
гуру
07.01.13
14:31
Непонятно при чем тат код? Почему не искать по ссылке?
3 SeiOkami
 
07.01.13
14:33
(2) ну... чтобы искать по ссылке, то нужно уже её при этом иметь ;)

Поясню, видимо, я просто непонятно выразился.

Вот кусок кода:


ДопРеквизитНомерДокумента    = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("НомерДокумента");
ДопРеквизитРегНомер            = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("РегНомер");
ДопРеквизитУчНомер            = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("УчНомер");
ДопРеквизитДатаРег            = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ДатаРег");  
ДопРеквизитДействПо            = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ДействПо");  
ДопРеквизитВетСвидетельство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ВетСвидетельство");


           ДопРеквизиты = ВыборкаПоТоварам.ДопРеквизиты.Выгрузить();
           
           _НомерДокумента    = ДопРеквизиты.Найти(ДопРеквизитНомерДокумента, "Свойство");
           _РегНомер           = ДопРеквизиты.Найти(ДопРеквизитРегНомер, "Свойство");
           _УчНомер            = ДопРеквизиты.Найти(ДопРеквизитУчНомер, "Свойство");
           _ДатаРег            = ДопРеквизиты.Найти(ДопРеквизитДатаРег, "Свойство");
           _ДействПо           = ДопРеквизиты.Найти(ДопРеквизитДействПо, "Свойство");
           _ВетСвидетельство   = ДопРеквизиты.Найти(ДопРеквизитВетСвидетельство, "Свойство");
           
           ОбластьМакета.Параметры.НомерДока         = ?(_НомерДокумента = Неопределено, "", _НомерДокумента.Значение);        
           ОбластьМакета.Параметры.РегНомер         = ?(_РегНомер = Неопределено, "", _РегНомер.Значение);
           ОбластьМакета.Параметры.УчНомер             = ?(_УчНомер = Неопределено, "", _УчНомер.Значение);
           ОбластьМакета.Параметры.ДатаРег             = ?(_ДатаРег = Неопределено, "", Формат(_ДатаРег.Значение, "ДЛФ=Д"));
           ОбластьМакета.Параметры.ДействПо         = ?(_ДействПо = Неопределено, "", Формат(_ДействПо.Значение, "ДЛФ=Д"));
           ОбластьМакета.Параметры.ВетСвидетельство = ?(_ВетСвидетельство = Неопределено, "", Формат(_ВетСвидетельство.Значение, "ДЛФ=Д"));
4 SeiOkami
 
07.01.13
14:34
Сейчас я ищу по наименованию. Как можно искать иначе?
5 Klesk
 
07.01.13
14:37
лучше не использовать доп реквизиты, если они используются в отчетах, сделай реквизит. а так только по наименованию.
6 Галахад
 
гуру
07.01.13
14:38
(4) А, понятно. Фиг знает, я по наименованию ищу.
7 SeiOkami
 
07.01.13
14:40
(5), в каком смысле  "если они используются в отчетах" ?
8 Klesk
 
07.01.13
14:45
(7) имеется ввиду в коде.

если уж ковыряешь конфиг, лучше сделай обычный реквизит справочника или документа, если программно его используешь. А то например пользователь переименует доп реквизит - концов не найдешь.
9 Klesk
 
07.01.13
14:49
а по доп реквизитам  вообще лучше используе типовую функцию

УправленияСвойствами.ПолучитьСписокСвойств

// Возвращает свойства владельца.
//
// Параметры:
//  ВладелецСвойств      - Ссылка на владелеца свойств.
//  ПолучатьДопРеквизиты - Булево - в результат включать дополнительные реквизиты.
//  ПолучатьДопСведения  - Булево - в результат включать дополнительные сведения.
//
// Возвращаемое значение:
//  Массив значений типа ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения.
//
Функция ПолучитьСписокСвойств(ВладелецСвойств, ПолучатьДопРеквизиты = Истина, ПолучатьДопСведения = Истина) Экспорт
10 SeiOkami
 
07.01.13
14:57
(8), я конфу не трогаю, в этом то и суть
(9), а смысл?

// Возвращаемое значение:

//  Массив значений типа ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения

Я так понял - вернется массив с перечнем доп.свойств. Зачем, если я в запросе их не плохо получаю. Кстати, запросом даже лучше. Лучше один раз получить все в одном запросе, чем по каждой номенклатуре отдельно обращаться к функции. При том, что функция все равно будет искать так же.

А вот по поводу поиска. Выходит кроме как ПоНаименованию идей больше нет ?(
11 banco
 
07.01.13
15:34
создай форму например настройки и там выбери ссылки на эти доп реквизиты, сохраняй настройку и используй уже ссылки
12 SeiOkami
 
07.01.13
16:06
(11), Это типовая УТ и внешняя печатная форма. Можно, конечно, хранить настройки в ИБ, однако, это уже как удалять гланды через прямую кишку =]
13 Новиков
 
07.01.13
18:14
твой способ в (3) при некоторых допущениях вполне нормальный.
14 banco
 
07.01.13
20:24
(12) какие гланды? какая кишка? наверное ты не понял. вообще то есть стандартное хранилище настроек. при печати загружаешь оттуда настройки, если пусто, открываешь форму настроек твоих доп характеристик, устанавливаешь настройки и после этого работаешь со ссылками и хоть пользователи будут меняь наименование, твоя обработка будет работать корректно
15 SeiOkami
 
08.01.13
16:04
(14), и что в этом нормального? Как я и сказал: "это уже как удалять гланды через прямую кишку"

Вот если бы в 11 УТ не жадничали на коды для объектов...
16 banco
 
08.01.13
19:27
(15) ок, продолжай искать по коду или по наименованию.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.