Имя: Пароль:
1C
1С v8
Реквизит справочника в ресурсы СКД
, ,
0 chingiz
 
07.09.11
17:10
Делаю отчет, в котором нужно адреса доставки(реквизит справочника) отобразить в двух колонках по разным условиям(конкретно в городе и за городом).

Дак вот я не могу задать Поле с условием, т.к. нет предопределенных элементов и насколько понял без них нельзя применить, так бы я задал условие и после ТОГДА поставил 1, которую мне и нужно отображать в одной из двух колонок.
ВЫБОР
   КОГДА <Выражение> ТОГДА <Выражение>
   ИНАЧЕ <Выражение>
КОНЕЦ

Выходит устанавливать поля нужно программно...как?

зы если не понятно объяснил - спрашивайте, могу еще путаться в терминах и прочем :)
1 Рэйв
 
07.09.11
17:18
ВЫБОР
   КОГДА Вид=&ЗаГородом ТОГДА Адрес
   ИНАЧЕ ""
КОНЕЦ КАК ЗаГородом,

ВЫБОР
   КОГДА Вид=&ВГороде ТОГДА Адрес
   ИНАЧЕ ""
КОНЕЦ КАК ВГороде


А в ресурсы идут только числовые данные.
2 unregistered
 
07.09.11
17:19
(0) >> отобразить в двух колонках по разным условиям

Условия сформулируй конкретнее.
3 chingiz
 
07.09.11
17:26
(2) Ну в справочнике есть адреса. В одной колонке нужно отобразить все кроме аэропорта(в городе), в другой только аэропорт(считается за городом).

(1) самое смешное, что нужно выбирать по аэропорту, но его в предопределенных нет и заносить туда запрещено. Так что так не выйдет :\
4 unregistered
 
07.09.11
17:29
(3) Сформулируй как определить аэропорт/не аэропорт.

Что такое "аэропорт" - строка, элемент справочника (какого).
5 chingiz
 
07.09.11
17:32
Строка(заполнено пользователем) справочника ТипыМест(перечень видов адресов - аэропорт, вокзал, автомойка и т.д.)
6 chingiz
 
07.09.11
17:34
Ну и чтобы понятнее было - когда документ формируется, там выбирается конкретный адрес и его "ТипыМест". И выводя данные регистра накоплений я беру это поле через регистратор.
7 unregistered
 
07.09.11
17:43
В справочнике ТипыМест добавиь реквизит ЗаГородом тип булево. проставить эту галку у всех типов мест, которые загородом.

Стопудово потом кроме аэропорта появятся новые загородные места.
8 unregistered
 
07.09.11
17:49
Можно конечно попытаться через ТипМеста.Наименование ПОДОБНО "аэропорт", но достаточно будет какому-нибудь пользователь пусть даже случайно поменять наименование типа места, отчет перестанет работать.
9 chingiz
 
07.09.11
17:55
(7) в том и соль, что нельзя ничего не менять...это учебное задание. А про (8) это где применять?
10 chingiz
 
07.09.11
17:59
Вот наглядно кому лень разбираться. ХарактерПоездок - как раз наше поле, только нужно его разделить как нарисова в пеинте :Р

http://photo.qip.ru/show/3oyyb-1k9ww5/full_image/
11 Fragster
 
гуру
07.09.11
18:08
(1) про только числовые ресурсы ты пошутил?
12 unregistered
 
07.09.11
18:13
(9) Например:

ВЫБОР
  КОГДА ТипМеста.Наименование ПОДОБНО "аэропорт"
    ТОГДА 1
  ИНАЧЕ 0
КОНЕЦ КАК ЗаГородом,
ВЫБОР
  КОГДА ТипМеста.Наименование ПОДОБНО "аэропорт"
    ТОГДА 0
  ИНАЧЕ 1
КОНЕЦ КАК Город,
13 Fragster
 
гуру
07.09.11
19:13
почему бы не сделать то, что хочет автор, пользовательским полем в режиме предприятия?
14 chingiz
 
08.09.11
09:50
(12) подобно не работает, пишет неверные параметры...по ходу нужно в скобках, но тогда поле не найдено.
(13) не подскажешь как? Вчера потерял 3 часа на этом и сегодня опять сижу...
15 asady
 
08.09.11
09:56
(1) в ресурсы идут только числовые выражение - это не так.
16 chingiz
 
09.09.11
09:09
Отчет уже практически доделал и остались только эти колонки, так что все еще актуально :\
17 chingiz
 
09.09.11
14:18
В принципе разобрался как решить, но поля почему-то не появляются в доступных :\
НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1;
   
   Запрос=Новый Запрос;
   Запрос.Текст=
   "ВЫБРАТЬ
   |    ТипыМестПодачи.Ссылка
   |ИЗ
   |    Справочник.ТипыМестПодачи КАК ТипыМестПодачи";
   
   Выборка = Запрос.Выполнить().Выбрать();
   
   Пока Выборка.Следующий() Цикл        
       
       ПолеНов = Наборданных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
       ПолеНов.Поле = Выборка.Ссылка.Наименование;
       ПолеНов.ПутьКДанным = "ХарактерПоездок."+Выборка.Ссылка;
       ПолеНов.Заголовок = Выборка.Ссылка.Наименование;
       
   КонецЦикла;
   
   Настройки = КомпоновщикНастроек.Настройки;
   КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
18 chingiz
 
12.09.11
11:10
Дамы и господа, подкиньте подсказку или линк на подобную тему. до сих пор не решено :\
19 PR
 
15.09.11
10:19
Правильный ответ в (1).
20 chingiz
 
15.09.11
10:28
(19) отличный ответ. Может тему для начала прочтете, прежде чем глупости писать и закрывать нужную тему?
21 PR
 
15.09.11
10:33
(20) Элемент не должен быть предопределенным, чтобы его запихнуть в параметр.
Тему прочел. Пост (17) говорит о том, что текст запроса генерится программно, зачем не понял, что мешает его сделать сразу?
Поля не появляются в доступных может из-за неопределенности типа поля.

А по поводу закрытия темы прочти https://1cers.ru/rules.php.
22 chingiz
 
15.09.11
10:41
(21) Извините, с 20 погорячился. Просто вместо советов по алгоритму тут иногда слышишь только подколы 8) Конечно кто-то мог сказать, что для программного добавления ДоступныхПолейВыбора нужно заменить запрос, добавить параметры, поля и поля итога...я потратил 3 дня на выяснение этого, и итоге разобрался сам....но сколько времени убил :(

Генерится программно, ну так сказали сделать. Если пользователь добавит еще элементы, то это все должно автоматически добавляться.

ВЫБОР
           КОГДА ВыполнениеЗаказовБортами.Регистратор.АдресПодачиМестоПодачи.ТипМестаПодачи <> &ТипМеста3
               ТОГДА КОЛИЧЕСТВО(ВыполнениеЗаказовБортами.Регистратор.АдресПодачиМестоПодачи.ТипМестаПодачи)
       КОНЕЦ КАК Город


Для истории мб кому пригодится. Запрос не скидывал, там просто вставляются поля выбора\группировки и соединения.

НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1;
       
   Запрос=Новый Запрос;
   Запрос.Текст=
   "ВЫБРАТЬ
   |    ТипыМестПодачи.Ссылка
   |ИЗ
   |    Справочник.ТипыМестПодачи КАК ТипыМестПодачи";
   
   Выборка = Запрос.Выполнить().Выбрать();
       
   ВремПоля="";
   ВремГрупп="";
   ВремЗапрос="";
   ВремВыбор="";
   НомерТекПеременной = 0;
   
   Пока Выборка.Следующий() Цикл        
       
       НомерТекПеременной = НомерТекПеременной + 1;
       ТекПеременнаяИмени = "ТипМеста" + НомерТекПеременной;
       
       ПараметрыСхемы  = СхемаКомпоновкиДанных.Параметры.Добавить();
       ПараметрыСхемы.Имя = ТекПеременнаяИмени;
       ПараметрыСхемы.Заголовок = ТекПеременнаяИмени;
       ПараметрыСхемы.Значение = Выборка.Ссылка;
       ПараметрыСхемы.ОграничениеИспользования = Истина;
       ПараметрыСхемы.ВключатьВДоступныеПоля = Ложь;
       
       НовоеПоле = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
       НовоеПоле.Поле = ТекПеременнаяИмени + "ТипМеста";
       НовоеПоле.ПутьКДанным = "ХарактерПоездок." + ТекПеременнаяИмени;
       НовоеПоле.Заголовок = Выборка.Ссылка.Наименование;
       
       ПолеИтоги =СхемаКомпоновкиДанных.ПоляИтога.Добавить();
       ПолеИтоги.ПутьКДанным = "ХарактерПоездок."+ТекПеременнаяИмени;
       ПолеИтоги.Выражение = "Количество(ХарактерПоездок."+ТекПеременнаяИмени+")";
       
       ВремПоля = ВремПоля + "," + Символы.ПС + ТекПеременнаяИмени + ".ТипМеста КАК " + ТекПеременнаяИмени + "ТипМеста";
       ВремГрупп = ВремГрупп + "," + Символы.ПС + ТекПеременнаяИмени + ".ТипМеста";
       ВремВыбор= ВремВыбор + "," + Символы.ПС + "ВыполнениеЗаказовБортами."+ ТекПеременнаяИмени + "ТипМеста";
       
       ВремЗапрос=ВремЗапрос+ "
       |            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
       |                ВыполнениеЗаказовБортами.Регистратор.АдресПодачиМестоПодачи.ТипМестаПодачи КАК ТипМеста,
       |                ВыполнениеЗаказовБортами.Регистратор.Ссылка КАК РегистраторСсылка
       |            ИЗ
       |                РегистрНакопления.ВыполнениеЗаказовБортами КАК ВыполнениеЗаказовБортами
       |            ГДЕ
       |                ВыполнениеЗаказовБортами.Регистратор.АдресПодачиМестоПодачи.ТипМестаПодачи = &" + ТекПеременнаяИмени + ") КАК " + ТекПеременнаяИмени + "
       |            ПО ВыполнениеЗаказовБортами.Регистратор.Ссылка = " + ТекПеременнаяИмени + ".РегистраторСсылка" ;
23 PR
 
15.09.11
10:51
(22) >>Если пользователь добавит еще элементы, то это все должно автоматически добавляться
Тогда да, программно. Хотя я бы в справочнике сделал новый реквизит, который при записи заполнялся бы нужным значением.
Закон Брукера: Даже маленькая практика стоит большой теории.