Имя: Пароль:
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) Обращение к серверу не происходит,данные уже получены, косяк именно с именем Колонки "Номенклатура.Код" - это имя колонки в тонком клиенте, но еще есть колонка "Номенклатура" что не позволяет обратиться через точку на клиенте.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn