Имя: Пароль:
1C
1С v8
Цикл табличной части с условием
0 kolp821
 
25.09.12
17:13
Здравствуйте, есть некая табличная часть справочнике, ТабЧасть имеет несколько реквизитов (Пільга, Документ), эти реквизиты могут быть не заполнены. Вот что нужно, если заплненый реквизит Документ, вывести его в ТабДок, а также Документ и Пільга. Если только Пільга то не нужно.

Вот что есть на данный момент:

   

// Табличная часть - Пільги :
   Запрос3 = Новый Запрос;
   
   Запрос3.Текст =
   "ВЫБРАТЬ
   | АбітурієнтТабличнаяЧастьПільг.Документ КАК Документ
   | ИЗ
   |    Справочник.Абітурієнт.ТабличнаяЧастьПільг КАК АбітурієнтТабличнаяЧастьПільг
   |ГДЕ
   |    АбітурієнтТабличнаяЧастьПільг.Ссылка = &Абітурієнт";

   Запрос3.Параметры.Вставить("Абітурієнт", Ссылка.Получить(0).Абітурієнт);
   
   ВыборкаПільг = Запрос3.Выполнить().Выбрать();
   
   // Вивод табличної частини - пільги :
   
   ТабЧаст2 = Макет.ПолучитьОбласть("ТабЧаст2");
   
   Пока ВыборкаПільг.Следующий()
   Цикл    
     ТабЧаст2.Параметры.Заполнить(ВыборкаПільг);
     ТабДок.Вывести(ТабЧаст2, ВыборкаПільг.Уровень());
   КонецЦикла ;
1 DrShad
 
25.09.12
17:14
круто
2 ДенисЧ
 
25.09.12
17:16
И шо, ви таки думаете, шо эту "собачачью мову" будет кто-то читать?
3 kolp821
 
25.09.12
17:16
(2) без политики и попрошу уважать мой родной язык.
4 kolp821
 
25.09.12
17:17
(2) это не ой код, но то что вы написали меня затронуло...
5 Deon
 
25.09.12
17:17
А что такое Пiльга? Прикольное слово )
6 ОператорПК
 
25.09.12
17:17
"ВЫБРАТЬ
   | АбітурієнтТабличнаяЧастьПільг.Документ КАК Документ
   | ИЗ
   |    Справочник.Абітурієнт.ТабличнаяЧастьПільг КАК АбітурієнтТабличнаяЧастьПільг
   |ГДЕ
   |    АбітурієнтТабличнаяЧастьПільг.Ссылка = &Абітурієнт и не АбітурієнтТабличнаяЧастьПільг.Документ.Ссылка = Null";
типа того..
7 pessok
 
25.09.12
17:17
(3) твой родной язык - русский. а про мову, это молодежи, при союзе не жившей, Ваши бешеные политики в уши нассали. Или Гоголь на мове писал?
8 Alex S D
 
25.09.12
17:18
(5)+1
9 pessok
 
25.09.12
17:19
теперь по делу:

одним запросом, там добавь доп.реквизит булевый. если пыльга твоя не заполнена, то ложь, если заполнена, то истина. а потом, при обходе результата запроса, проверяй пыльгу и суй в нужную таблицу. а еще лучше сделать итоги по пыльге и обходя по группировкам сувать куда надо
10 Иешуа
 
25.09.12
17:19
(5) это "Льгота"
11 ДенисЧ
 
25.09.12
17:20
(3) А если я сейчас на татарском буду вопросы задавать? Многие меня поймут?
12 pessok
 
25.09.12
17:22
(11) соревнования у нас были профильные. Пятак 2012. Девочки-татарки ехидно хихикали, когда видели мальчиков с ружжами с надписью на куртке "ПЯТАК"
13 Deon
 
25.09.12
17:22
(11) Да тут каждый день больше половины вопросов на тарабарском )) телепат.длл
14 V_V_V
 
25.09.12
17:22
(0) Что у тебя ТабЧасть, а что ТабДок???
(5) Пiльга - льгота.
(7) Поржал. Жил при союзе. Родной язык - украинский. Пушкин тоже не на мове писал - и что?
15 Иешуа
 
25.09.12
17:24
(11) зачем вопросы?
у него не вопрос а переменая на нерусском. или одинэсникам можно переменные только на русском именовать?
16 pessok
 
25.09.12
17:24
(15) на его вопрос уже ответилил. дальше - полемика и флуд)
17 pessok
 
25.09.12
17:24
ответилИ*
18 Alex S D
 
25.09.12
17:25
(16) срач вернее
19 kolp821
 
25.09.12
17:27
(14) ТабЧаст2 эта Наименование ячейки в табличном документе, он же ТабДок
20 vudo
 
25.09.12
17:27
Да ладно языковой закон приняли. Пусть пишет. Вот только правда никто читать не станет. В 1С общепринятый язык программирования русский. Хотя может на компе вообще не быть установлен русский язык ;)

А если по теме, то в (6) не сработает, сравнение c NULL так не пишут (ЕСТЬNULL)

надо как-то так:
и не ВЫРАЗИТЬ(АбітурієнтТабличнаяЧастьПільг.Документ КАК Документ.<ВидДокумента>) =  Документ.<ВидДокумента>.ПустаяСсылка
21 pessok
 
25.09.12
17:28
(18) тю. а чего срацца? каждый волен считать родным языком тот, который ему больше нравится. родной и государственный - разные вещи. просто меня умиляет, что люди сами выбирают родным языком тот, на котором нет ни одного мало-мальски приличного литературного произведения даже... я уж не говорю о том, что никто в мире кроме них самих его не знает...
22 ОператорПК
 
25.09.12
17:29
(19) то что в (6) нацарапано, не канает?
23 pessok
 
25.09.12
17:29
(19) сделать как в (9)
24 V_V_V
 
25.09.12
17:30
(21) Жаль белорусский... Жаль грузинский... И кто их знает? В мире-то???
25 kolp821
 
25.09.12
17:30
(23) поподробнее пожалуйста. Я сам админ, 1С только учусь.
26 pessok
 
25.09.12
17:30
+ если надо сравнивать с пустой ссылкой, то юзайте ЗНАЧЕНИЕ(Документ.ИмяДокумента.ПустаяСсылка), если с NULL, то (НЕ) ПсевдонимТаблицы.ИмяПоля ЕСТЬ NULL
27 pessok
 
25.09.12
17:31
(24) кому их жаль? мне не жаль
28 V_V_V
 
25.09.12
17:32
(27) Даже не сомневался.
29 vudo
 
25.09.12
17:33
(26) +100
(27) ты на грузинском или украинском читать не умеешь вот тебе и не жаль ;)

(23) я не понял зачем ему еще один реквизит, если можно уменьшить количество в выборке
30 pessok
 
25.09.12
17:35
(29) не умею, потому и не жаль. жаль будет программистов, которые будут искать помощи с кодом на грузинском :)

а по поводу поля. чтобы по итогам потом легко разбросать саму выборку
31 pessok
 
25.09.12
17:35
ему ж надо в две разных таблицы разбросать, или я плохо читал (0)
32 ОператорПК
 
25.09.12
17:36
(20) я ж написал "типа того" - точн осинтаксис не помню.... значит так должно канать:
"ВЫБРАТЬ
   | АбітурієнтТабличнаяЧастьПільг.Документ КАК Документ
   | ИЗ
   |    Справочник.Абітурієнт.ТабличнаяЧастьПільг КАК АбітурієнтТабличнаяЧастьПільг
   |ГДЕ
   |    АбітурієнтТабличнаяЧастьПільг.Ссылка = &Абітурієнт и не ЕстьNull(АбітурієнтТабличнаяЧастьПільг.Документ.Ссылка.0) = 0";
33 ОператорПК
 
25.09.12
17:36
"ВЫБРАТЬ
   | АбітурієнтТабличнаяЧастьПільг.Документ КАК Документ
   | ИЗ
   |    Справочник.Абітурієнт.ТабличнаяЧастьПільг КАК АбітурієнтТабличнаяЧастьПільг
   |ГДЕ
   |    АбітурієнтТабличнаяЧастьПільг.Ссылка = &Абітурієнт и не ЕстьNull(АбітурієнтТабличнаяЧастьПільг.Документ.Ссылка,0) = 0";
34 pessok
 
25.09.12
17:36
ЕстьNull(АбітурієнтТабличнаяЧастьПільг.Документ.Ссылка.0) = 0"
эта пять!
35 ОператорПК
 
25.09.12
17:37
(34) уже исправилсо
36 pessok
 
25.09.12
17:37
ВЫБРАТЬ
ТаблицаЛьгот.Документ КАК Документ
ИЗ
   Справочник.Абитуриенты.ТаблицаЛьгот КАК ТаблицаЛьгот
ГДЕ
ТаблицаЛьгот.Ссылка = &Абитуриент И НЕ ТаблицаЛьгот.Льгота ЕСТЬ NULL
ИТОГИ ПО СЛьготой
37 pessok
 
25.09.12
17:37
итоги убрать, итоги нинада. это я невнимательно читал (0) )))
38 ОператорПК
 
25.09.12
17:38
(36) так работать не будет. отличник...
39 pessok
 
25.09.12
17:39
с чего не будет то?
40 vudo
 
25.09.12
17:39
(32) Ты хотел сказать
"ЕстьNull(АбітурієнтТабличнаяЧастьПільг.Документ.Ссылка,0) = 0"
АбітурієнтТабличнаяЧастьПільг.Документ.Ссылка не будет NULL, а будет  Документ.<ВидДокумента>.ПустаяСсылка условие не работает!
41 pessok
 
25.09.12
17:39
ну там пыльгу на документ поменять, смотря что отобрать хочет. я в его переменных уже запутался
42 ОператорПК
 
25.09.12
17:40
во первых сам проверь... во вторых твой запрос 9если бы даже работал) вернул не то что требуется ТП. накладывать ограничения надо не на Льготу а на поле "Документ"
43 pessok
 
25.09.12
17:41
(42) это да, это я в (41) написал. а работать будет. если не нравится NULL, проверять на И Документ <> ЗНАЧЕНИЕ(Документ.Пыльги.ПустаяСсылка)
44 ОператорПК
 
25.09.12
17:42
(40) кто сказал что известен Тип документа?
45 ОператорПК
 
25.09.12
17:42
(43) см (44)
46 ОператорПК
 
25.09.12
17:45
(39) ну как проверил свой мегакод?
47 vudo
 
25.09.12
17:45
(44) А что ты знаешь документы без типов?
Не ну конечно если умозаключительно, то можно что-то придумать и без типов... Хотя может быть в принципе любого типа...
Но на NULL не взлетит в любом случае...
48 pessok
 
25.09.12
17:46
(46) пыльг нет, чтоб проверять. а код к ТЧ я не пишу, этим пусть чукчи занимаются. код рабочий. конечно,

Не ЕстьNull(АбітурієнтТабличнаяЧастьПільг.Документ.Ссылка,0) = 0

тоже отработает, но это абзац
49 ОператорПК
 
25.09.12
17:46
(47) слышал что нибуть про реквизиты составного типа?
50 ОператорПК
 
25.09.12
17:47
(48) твой рабочий код по любому не отработает
51 vudo
 
25.09.12
17:48
(49) Не умничай , я писал: "Хотя может быть в принципе любого типа... " ;) Но твой IS NULL тоже не взлетает ;)
52 vudo
 
25.09.12
17:49
(51) Где автор?
53 ОператорПК
 
25.09.12
17:51
(51) я проверил (не на базе АбітурієнтТабличнаяЧастьПіль конечно :)) но взлетает еще как.
54 pessok
 
25.09.12
17:51
(48) ну, вообще, да, не отработает. нулла там быть не может без соединения, согласен
55 pessok
 
25.09.12
17:52
чем ЭТО

ЕстьNull(АбітурієнтТабличнаяЧастьПільг.Документ.Ссылка,0) = 0

отличается от ЭТОГО

НЕ ТаблицаЛьгот.Льгота ЕСТЬ NULL
???
кроме количества букв?
56 pessok
 
25.09.12
17:52
ну и типа переменной, ессна
57 pessok
 
25.09.12
17:53
ты ж понимаешь, что это одно и тоже, просто одно написано нормально, а другое, кхм... не очень?
58 ОператорПК
 
25.09.12
17:53
(57) это не одно и тоже ключевое различие это "Ссылка"
59 ОператорПК
 
25.09.12
17:54
+(58) именно по этому твой код не отработает ни когда
60 pessok
 
25.09.12
17:54
ссылку, забыл, гы, да :)

писал прям в теме)
61 ОператорПК
 
25.09.12
17:55
(60) предлагаю закончить на этой оптиместической ноте, автар красава задал вопрос и свалил...
62 pessok
 
25.09.12
17:59
(61) плюсую
63 AkeHayc
 
25.09.12
18:00
Здоровеньки Булы!)
64 Stim
 
25.09.12
18:15
что там? с автора долги за газ еще не требуют?
65 kolp821
 
26.09.12
09:45
(60) Автор не свалил, он пытается разобраться в коде и вчера был конец рабочего дня. Извиняюсь что тема вышла слишком "острая" для сообщества.
66 kolp821
 
26.09.12
09:46
сори не (60), а (61)
67 pessok
 
26.09.12
09:46
(65) нормальная тема, славянская, гыгы) результата добился, самое главное?
68 kolp821
 
26.09.12
09:49
(65) пока нет,

ЕстьNull(АбітурієнтТабличнаяЧастьПільг.Документ.Ссылка,0) = 0

или

НЕ ТаблицаЛьгот.Льгота ЕСТЬ NULL

не дают того результата, выводится все льготы...
69 pessok
 
26.09.12
09:51
(68) ты забыл НЕ
70 pessok
 
26.09.12
09:52
НЕ АбітурієнтТабличнаяЧастьПільг.Документ.Ссылка ЕСТЬ NULL
71 kolp821
 
26.09.12
10:10
(70) возникает ошибка

{Документ.Договір(515)}: Ошибка при вызове метода контекста (Выполнить)
   ВыборкаПільг = Запрос3.Выполнить().Выбрать();
по причине:
{(7, 97)}: Поле не найдено "АбітурієнтТабличнаяЧастьПільг.Документ.Ссылка"
АбітурієнтТабличнаяЧастьПільг.Ссылка = &Абітурієнт И НЕ АбітурієнтТабличнаяЧастьПільг.Документ.<<?>>Ссылка ЕСТЬ NULL

Если убрать "Ссылка" то не дает того результата, выводится все льготы.
72 pessok
 
26.09.12
10:15
ну разверни АбітурієнтТабличнаяЧастьПільг.Документ и поищи там упоминания о ссылке
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан