Имя: Пароль:
1C
1С v8
УФ. Глюк или магия?
0 SeiOkami
 
16.02.13
21:03
УТ 11. В общем вывел в динамический список табличной части реализации Код из номенклатуры... Вывел, а теперь хочу использовать в переборе на клиенте. Но 1с не видит это поле. При этом, если открыть в отладке и глянуть строку, из которой его пытаюсь вытянуть, то он есть. Но когда копирую путь к нему и снова вставляю, то не выдает. Объяснить не могу, лучше покажу:

Скрин строки: http://s4.hostingkartinok.com/uploads/images/2013/02/a87a8e483cc4b49e9450ba836e04dba8.png

Скрин, когда я пытаюсь обратиться из строки: http://s4.hostingkartinok.com/uploads/images/2013/02/1f9c36bcd8197250db1199c1da3e5bd1.png

А теперь я копирую строку выражения, и заново вставляю: http://s2.hostingkartinok.com/uploads/images/2013/02/0d1775d871882389137f2b30301e67f6.png


Я понимаю, что это из-за точки после номенклатуры. Но у меня два вопроса. Во-первых как у 1с выходит такие противоречащие выводы? А второй: как это исправить?
Точка - это не Имя. Это путь к данным.
1 Сниф
 
16.02.13
21:08
Не очень понятно, что хотите сделать. И что такое (и зачем) "перебор на клиенте".
2 SeiOkami
 
16.02.13
21:08
У меня сейчас вот так:

   Для Каждого Стр из Элементы.СписокРеализацииТоваровУслуг.ТекущиеДанные.Товары Цикл
       Файл.Добавить();
       Файл.NNUM = Стр.Номенклатура.Код;
       Файл.KOLVO = Стр.Количество;
       Файл.Записать();
   КонецЦикла;
3 SeiOkami
 
16.02.13
21:09
Это на клиенте.
4 GANR
 
16.02.13
21:10
(2) что за переменная Файл?
5 SeiOkami
 
16.02.13
21:10
Я могу изменить запрос динамического списка, однако, неужели нельзя иначе? И даже просто интересно как так может быть
6 SeiOkami
 
16.02.13
21:11
(4), файл dbf, но не в этом суть. Просто, как стукнуться в переборе к моему полю?
7 GANR
 
16.02.13
21:11
(5) не НУЖНО иначе, ДС он на то и ДС
8 SeiOkami
 
16.02.13
21:13
(7), не понял
9 GANR
 
16.02.13
21:17
(8) в динамическом списке не надо менять каждую строчку кодом - сразу запросом и все
(2) полагаю, за этими данными на сервер надо обратиться
10 GANR
 
16.02.13
21:17
Стр.Номенклатура.Код
11 GANR
 
16.02.13
21:17
в тонком клиенте, вообще более чем через 1 точку нельзя обращаться - только сервер
12 GANR
 
16.02.13
21:21
Элементы.СписокРеализацииТоваровУслуг.ТекущиеДанные.Ссылка загнать на сервер, запросом вынуть таблицу в МАССИВ СТРУКТУР (Код, Количество), вернуть на клиент, и загнать в DBF
13 SeiOkami
 
16.02.13
21:23
(12),зачем? у меня файл dbf на клиенте. Смысл мне гнать ради кода, который я могу получить из клиента, гнать все на сервер?

Да и вообще. В чем соль сабжа? Я не могу понять почему поле то доступно, то нет. И неужели нельзя простым перетягиванием добавить  в ДС код номенклатуры, чтобы потом с ним оперировать?
14 vvp91
 
16.02.13
21:27
Покажи скрин дерева элементов формы в части таблицы формы Товары.
15 SeiOkami
 
16.02.13
21:32
(14), http://s2.hostingkartinok.com/uploads/images/2013/02/b5914400d9df36922425811eea6e5173.png

Это часть. Все не вместится =)

Через НоменклатураКод пробовал. Толку нет.
16 Сниф
 
16.02.13
21:33
(13) за простое перетягивание не скажу, но попробуй "Все действия"- "Изменить форму" и там для списка Rод добавить.
17 i-rek
 
16.02.13
21:34
(0) я не понял. ты перебираешь строчки динамического списка ?
а КАК ? это невозможно сделать
18 i-rek
 
16.02.13
21:35
Для Каждого Стр из Элементы.СписокРеализацииТоваровУслуг.ТекущиеДанные.Товары
чё это за хрень ? что именно ты делаешь тут ?
это действительно работает ?
19 SeiOkami
 
16.02.13
21:37
(18), конечно. Не ссы, Слайк, я сто раз так делал! =)
20 i-rek
 
16.02.13
21:37
похоже чел вывел в динамический список в качестве колонки - табличную часть.
то ли секретная функция то ли бага
21 SeiOkami
 
16.02.13
21:38
(20), ась?
22 SeiOkami
 
16.02.13
21:38
в качестве колонки у меня строка
23 i-rek
 
16.02.13
21:39
(22) ты скажи что за хрень ТекущиеДанные.Товары  ?
24 SeiOkami
 
16.02.13
21:39
Скрин привел
25 SeiOkami
 
16.02.13
21:40
может это не ДС? ...
26 i-rek
 
16.02.13
21:43
охренеть. это нечто недокументированное
27 SeiOkami
 
16.02.13
21:43
Я добыл так:

Сначала перетянул с формы списка реализаций СписокРализаций, а из нее вытянул ТЧ Товары. Чтобы можно было в списке слева выбрать реализацию, а в списке справа сразу бы отобразился список товаров в её ТЧ. Вот
28 i-rek
 
16.02.13
21:43
просто никому в здравом рассудке не пришло бы в голову сделать такое
так и совершаются открытия - сумасшедшими
29 SeiOkami
 
16.02.13
21:44
(28), возможно... только почему ?)
30 GANR
 
16.02.13
21:46
(13) у меня, например, такое было, когда в коллекции были группировки и строки. (25) скрины - верхушка айсберга.
31 SeiOkami
 
16.02.13
21:48
Так это у меня ДС или нет... Я в УФ не сильно втыкаю =)
32 ИсчадиеADO
 
16.02.13
22:54
(31) у тебя в скрине написано стр = данные формы элемент коллекции, о каком динамич. списке ты говоришь?
33 i-rek
 
16.02.13
22:55
(32) он вытащил на динамический список табличную часть
и даже сам не понял что сделал
и даже мы не поняли
34 i-rek
 
16.02.13
22:56
глюки и магия одновременно ёпти
35 ИсчадиеADO
 
16.02.13
22:56
(33) да это обычная табличка на формочке
36 i-rek
 
16.02.13
22:57
(35) а откуда там Номенклатура.Код к примеру ?
37 ИсчадиеADO
 
16.02.13
22:59
В реквизитах тч Номенклатура.Код нету. Есть НоменклатураКод, что вполне можно сделать. А то что он в толстом(!) клиенте вычисляет выражение через точку - ну дык...
38 i-rek
 
16.02.13
22:59
(0) автор, дай скринов ещё
дай скрин где ты настраиваешь запррос динамического списка или свойства динамического списка
39 ИсчадиеADO
 
16.02.13
23:00
да он хитро ваще скрины обрезал :)
40 ИсчадиеADO
 
16.02.13
23:03
ща наверное еще болт забъет, пойдет спать..
41 ИсчадиеADO
 
16.02.13
23:06
(36) там скорее всего в таблице на форме был выведен доп. реквизит (там не обязательно только реквизиты из ТЧ объекта могут быть), и формочку делал не он, и что он пытается сделать нифига не понял
42 ИсчадиеADO
 
16.02.13
23:10
тем более форма документа. Какой там динамич. список на табличную часть? :)
43 ИсчадиеADO
 
16.02.13
23:10
ТС спит, наверное
44 ИсчадиеADO
 
16.02.13
23:20
Понял: короче ТС добавил на саму формочку (левое окно реквизит в существующую ТЧ, но этот реквизит увязал через точку по ссылке, а это не правильно. У него в отладчике показывается результат, т.к. он вычисляет его в толстом клиенте в отладке. Нужно же в правой части создать реквизит ТЧ НоменклатураКод (без точки) и при создании формы на сервере, а так же при изменении номенклатуры писать туда код: Стр.НоменклатураКод = ВызовСервераБезКонтекстаПолучитьКодНоменклатуры(стр.Номенклатура)
45 SeiOkami
 
16.02.13
23:20
Да, видимо, это не ДС(((
Говорю, же, что не втыкаю в УФ. Как сделал описал в (27)

А почему тогда (0)? Даже если это не ДС
46 ИсчадиеADO
 
16.02.13
23:21
(45) - (44) не?
47 SeiOkami
 
16.02.13
23:21
(44), неужели нельзя простым перетягиванием???
48 SeiOkami
 
16.02.13
23:22
(44), я не добавлял реквизит вручную. Я просто перетянул с ТЧ из номенклатуры код. 1с все сама сделала)
49 ИсчадиеADO
 
16.02.13
23:22
в тонком и веб клиенте ссылка - это всего лишь 2 поля: представление ссылки и ее уник.идентификатор
50 ИсчадиеADO
 
16.02.13
23:23
+(47)программер сам должен делать вызовы к серверу
51 SeiOkami
 
16.02.13
23:24
(49), дело в том, что все прекрасно отображается, но когда стукаюсь в переборе, то такая хрень (0)
52 ИсчадиеADO
 
16.02.13
23:25
+(50) т.к. может ты его оптимизируешь: например, у тебя при смене номенклатуры нужнопоменять код, цену, ставку ндс, еще кучу полей. Может ты их объединишь в структуру и сделаешь 1 серверный вызов заместо 100500?! Платформа за тебя этого не сделает
53 SeiOkami
 
16.02.13
23:26
(50), зачем? у меня в строке есть уже код. Он на клиенте уже отображен. Тогда какого хрена, я не могу к нем стукнуться (((
54 SeiOkami
 
16.02.13
23:26
(52), вопрос сейчас не в оптимизации.
55 ИсчадиеADO
 
16.02.13
23:30
(54) ща погодь
56 ИсчадиеADO
 
16.02.13
23:45
(54) не пойму как у тебя скрин, где показывает в составе Номенклатура.Код получился
57 ИсчадиеADO
 
16.02.13
23:45
приведи нормальный скрин, а не урезанный
58 ИсчадиеADO
 
16.02.13
23:46
или дай по тиму к те подключусь на пару минут
59 ИсчадиеADO
 
16.02.13
23:46
аська, если что, у меня в профиле
60 SeiOkami
 
16.02.13
23:51
61 ИсчадиеADO
 
16.02.13
23:51
у меня, если даже перетянуть код из реквизита тч, он не отображается в составе строки, как у тебя на картинке
62 SeiOkami
 
16.02.13
23:51
Полнее некуда =)
63 SeiOkami
 
16.02.13
23:52
справа - это то от куда я перетянул код
64 SeiOkami
 
16.02.13
23:53
и, кстати, я под тонким клиентом
65 SeiOkami
 
16.02.13
23:53
ну, правда. база файловая
66 SeiOkami
 
16.02.13
23:57
Вот раскрыл справа список, затем ТЧ Товары, затем номенклатуру, а затем вытянул код

http://s4.hostingkartinok.com/uploads/images/2013/02/9074fcaaebfd9cae89ca5f7a91c9a41c.png
67 ИсчадиеADO
 
17.02.13
00:01
да, действительно, динамич. список :)
68 SeiOkami
 
17.02.13
00:03
ну, список доков динамический, а вот ТЧ - таблица значений, которую я перетягиваю на форму. фиг поймешь чего это)
69 SeiOkami
 
17.02.13
00:03
УФ - вообще не привычно. Вроде и удобно, а вроде и...
70 SeiOkami
 
17.02.13
00:04
А можешь подсказать в этой теме по УФ: v8: УФ. Как растянуть кнопку по горизонтали?
71 i-rek
 
17.02.13
00:05
(67) чё он тут делает то ? ))
Для каждого из Элементы.СписокРеализацииТоваровУслуг.ТекущиеДанные.Товары
в тонком то клиенте ?
72 SeiOkami
 
17.02.13
00:07
73 SeiOkami
 
17.02.13
00:07
я уж устал заливать)
74 ИсчадиеADO
 
17.02.13
00:08
(70) ну да, там не в %. Вообще-то должно растягиваться
75 i-rek
 
17.02.13
00:09
(73) кароч не выноси нам мозг, получи ссылку текущего документа и определи серверную процедуру которая вынет нужные данные табличной части.
ибо это будет правильно. Хреновина которую ты делаешь если и работает частично - она супротив всей идеологии УФ
76 SeiOkami
 
17.02.13
00:10
Блин, выпил то всего одну бутылочку тихорецкого, а уже со столькими непонятками 1с столкнулся...
77 SeiOkami
 
17.02.13
00:13
(75), да не логично это. какой смысл получать кодом то, что получаю интерфесным конструктором. Может тогда вообщ программно формы прописывать ?)
78 ИсчадиеADO
 
17.02.13
00:16
(72) (71)имел ввиду (11) и (12)
79 SeiOkami
 
17.02.13
00:22
Короче, сделал гениальную функцию, вызывающуюся при создании дбф:

&НаСервереБезКонтекста
Функция ПолучитьКодНоменклатуры(Номенклатура)
   
   Возврат Номенклатура.Код;
   
КонецФункции



Всё, задолбала меня 1с! Иду в верстальщики!
80 Dethmont
 
17.02.13
03:51
Вот так будет работать на тонком клиенте
Для Каждого Стр из Элементы.СписокРеализацииТоваровУслуг.ТекущиеДанные.Товары Цикл
       Файл.Добавить();
       Файл.NNUM = Стр["Номенклатура.Код"];
       Файл.KOLVO = Стр.Количество;
       Файл.Записать();
   КонецЦикла;
81 Dethmont
 
17.02.13
03:53
Походу баг...

Кстати в Толстом клиенте и так работает
А = Стр.Номенклатура.Код;
82 Dethmont
 
17.02.13
04:51
Это все объясняет

&НаКлиенте
Процедура Команда1(Команда)
   
   Мас = ПолучитьИменаКолонокНаФорме(Элементы.МойСписок.ТекущиеДанные.ПереченьНоменклатуры);
   Для Каждого Стр Из Элементы.МойСписок.ТекущиеДанные.ПереченьНоменклатуры Цикл
       Для Каждого Имя из Мас Цикл
           Сообщить("Имя колонки: "+Имя+" Значение в колонке: "+Стр[Имя]);
       КонецЦикла;    
   КонецЦикла;    
   
КонецПроцедуры

&НаСервере
Функция ПолучитьИменаКолонокНаФорме(Знач ДанныеФорм)

   ТЗ = ДанныеФормыВЗначение(ДанныеФорм,Тип("ТаблицаЗначений"));
   Массив = Новый Массив;
   Для Каждого Колонка Из ТЗ.Колонки Цикл
       Массив.Добавить(Колонка.Имя);
   КонецЦикла;
   Возврат Массив;
   
КонецФункции
83 SeiOkami
 
17.02.13
10:41
(80), серьезно? Это  в тонком клиенте? сразу как смогу - гляну
84 SeiOkami
 
17.02.13
11:02
(80), огромное спасибо, реально работает.

Я уж подумал. что простым перетягиванием не имеет смысла реквизиты доставать. Хотя, все же, это какой-сь 1с-баг
85 Vertalex
 
17.02.13
12:38
В клиентской функции нельзя получить доступ к реквизитам ссылки. Я так понял ТС пытался именно это сделать...
(80)      " Файл.NNUM = Стр["Номенклатура.Код"];" - а что вот эта конструкция реально рабочая на ТК? Платформа делает неявное обращение к серверу (за реквизитом)?
86 Vertalex
 
17.02.13
12:54
Кажется нет, мне показалось :)
87 Dethmont
 
17.02.13
23:01
(86) Обращение к серверу не происходит,данные уже получены, косяк именно с именем Колонки "Номенклатура.Код" - это имя колонки в тонком клиенте, но еще есть колонка "Номенклатура" что не позволяет обратиться через точку на клиенте.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн