Имя: Пароль:
1C
 
Передать таблицуЗначений на клиент
0 Muwahhid
 
16.11.19
10:21
Подскажите, как передать эту ТЗ на клиент, чтоб там я уже мог обойти ее циклом, и вытаскивать нужные мне значения?

Функция ПолучитьФайлыКартинки(ТекТовар)
Запрос = Новый Запрос;
Запрос.Текст = "
    |ВЫБРАТЬ
    |    ВладелецФайла.Ссылка,
    |    Ссылка
    |ИЗ
    |    Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы
    |ГДЕ
    |    НоменклатураПрисоединенныеФайлы.ВладелецФайла.Ссылка = &АБВ";
Запрос.УстановитьПараметр("АБВ", ТекТовар);
ТЗ = Запрос.Выполнить().Выгрузить();


    
КонецФункции
1 dmpl
 
16.11.19
10:26
(0) В этом нет смысла. На клиенте через точку все равно не получится реквизиты получить.
2 ДенисЧ
 
16.11.19
10:26
Вытаскивай нужные значения на сервере. Зачем эти бессмысленные телодвижения туда-сюда? Это только на качелях приятно...
3 acht
 
16.11.19
10:26
(0) Никак.
Таблица значений на клиенте не существует.
Используй, например, массив стурктур или создавай реквизит формы типа ДанныеФормыКоллекция и заполняй его контекстным вызовом.
4 acht
 
16.11.19
10:28
(2) Детей не люблю. Люблю процесс. (:
5 Muwahhid
 
16.11.19
13:07
Сделал через массив, все отлично передается.

МассивФайлов = Новый Массив;
Для каждого Стр из ТЗ цикл
    МассивФайлов.Добавить(Стр.Ссылка)
КонецЦикла;

Возврат МассивФайлов;
6 dmpl
 
16.11.19
13:34
(5) Ну и что с этим потом на клиенте делать?
7 palsergeich
 
16.11.19
13:43
(3) Существует.
Запрещена сериализация/десериализация на клиенте и основной конструктор - Новый ТаблицаЗначений.
Но если ты почитаешь в синтакс помошнике описание Новый, то догадаешься как 2м способом таки получить ТЗ на клиенте)
Есть еще несколько способов)
8 fyn
 
16.11.19
13:55
(7) Если имеентся в виду


ТЗ = Новый(Тип("ТаблицаЗначений"))


то оно не работает по причине Тип не определен (ТаблицаЗначений)
9 acht
 
16.11.19
13:57
(7) А давай ты без выпендривания напишешь здесь текст процедуры, создающей переменную этого типа, и завершающийся строкой Сообщить(ТипЗнч());

А мы позапускаем и оценим.
10 Мимохожий Однако
 
16.11.19
14:14
(9) Погугли "таблица значений из массива"
11 acht
 
16.11.19
14:15
(10) На тонком клиенте, угу.
Напиши, пожалуйста, фрагмент кода, не будь трындежником!
12 acht
 
16.11.19
14:17
Хуже фузинцев, чесслово...
13 Мимохожий Однако
 
16.11.19
14:19
14 fyn
 
16.11.19
14:21
(13) речь-то шла о существовании ТЗ на клиенте, а не про её эмуляцию в виде массива структур или подобного )
15 acht
 
16.11.19
14:22
(13) Этачо?
Разверни, пожалуйста, какую именно мыссль ты пытаешся высказать. На примере первой же ссылки.
А потом - какое это имеет отношение к обсуждаемому.
16 Радим1987
 
16.11.19
14:48
ОбщегоНазначения.ТаблицаЗначенийВМассив(ТаблицаЗначений)
17 novichok79
 
16.11.19
15:03
(16) только написать хотел ))
18 fyn
 
16.11.19
15:04
Ребят. Про массив структур всем известно. В (7) уверялось о существовании ТЗ на клиенте
19 Радим1987
 
16.11.19
15:08
(18) Тз существует на форме в виде данные формы коллекция)))
20 fyn
 
16.11.19
15:13
(19) спасибо, КЭП ) про это тоже известно.
Все-таки хочется понять, что имел в виду оратор из (7)
21 Радим1987
 
16.11.19
15:34
(20) Он скорее всего работает на толстом клиенте вот и у него существует
22 palsergeich
 
16.11.19
15:39
(9) (8) половину сделал, а до второй не догадался, всё вот разжевать надо
И да прекрасно работает на тонком клиенте.
ОписаниеТипа = Новый ОписаниеТипов("ТаблицаЗначений");
ТЗ = Новый(ОписаниеТипа.Типы()[0]);

Я знаю еще минимум 2 способа это сделать, но извините, не скажу.
Думаю этого достаточно что бы вы поверили что я не шучу
23 palsergeich
 
16.11.19
15:43
ссылка для лентяеф.
https://yadi.sk/d/4ddQJJ_cbWxoBQ
24 Радим1987
 
16.11.19
15:44
ОписаниеТипа = Новый ОписаниеТипов("ТаблицаЗначений");
    ТЗ = Новый(ОписаниеТипа.Типы()[0]);
    
    ТЗ.Колонки.Добавить("Строка", Новый ОписаниеТипов("Строка"));
    
    Строка = ТЗ.Добавить();
    Строка.Строка = "вавыапав";
Че за херня
25 palsergeich
 
16.11.19
15:45
(24) Ну работает же)
26 Радим1987
 
16.11.19
15:48
(25) Угу
27 palsergeich
 
16.11.19
15:51
именно это и имелось в виду в (7)
Я на одном форуме увидел что чел хвастался что через ВК создает ТЗ на клиенте со скриншотами.
Ну и подумал нельзя ли как нибудь без ВК, за вечер нашел 2 способа, позже нашел 3ий)
28 dmpl
 
16.11.19
16:01
(25) Это бага, ее в любой момент могут поправить ;)
29 palsergeich
 
16.11.19
16:01
(28) У этой баги борода с 82
30 fyn
 
16.11.19
16:04
(29) мерси, реально работает, но мягко говоря нетривиально до этого додуматься.
31 palsergeich
 
16.11.19
16:04
(29) В любом случае использовать недокументированные возможности всегда на свой страх и риск.
32 fyn
 
16.11.19
16:06
(31) это очевидно. Но подобные фичи в 7.7 так и не пофиксили, а помогали они часто
33 dmpl
 
16.11.19
16:21
(32) Помню я как-то форматную строку написал не так, как в описании. Оно работало, но при определенных условиях выдавало другую дату. Так что нельзя исключать, что и тут есть какие-то глюки, из-за которых ТЗ официально в тонком клиенте недоступна.
34 Iгор76
 
16.11.19
16:22
(33)>> Никак.
Таблица значений на клиенте не существует.

Як дети! Давно уже существует и примеров в Инете полно.
1. Структура массивов - где каждой колонке - имя в структуре и массив
2. Массив массивов.

проще 1.
работать идентично ТЗ
35 Iгор76
 
16.11.19
16:22
(34)-->(3)
36 Iгор76
 
16.11.19
16:23
Я помню чрез структуру массивов делал - так там и обращения идентичны
37 Muwahhid
 
16.11.19
16:34
(6) Ну я использую это значение, для вывода Картинки, на форму Список Номенклатуры. https://1drv.ms/u/s!AjuGDoKdKWA3kcVBWIrjdIGJNSRjsA
Массив нужен был, чтоб приделать кнопку следующее фото, то есть, просматривать не только заглавную, но и остальные.

Наверное, как то проще и быстрее, все можно сделать, но я слабо знаю 1с, и поэтому делаю как могу, и заодно учусь.
Советы с форума, дают понять куда копать дальше.

https://1drv.ms/u/s!AjuGDoKdKWA3kcVBWIrjdIGJNSRjsA
38 RomanYS
 
16.11.19
16:40
(37) Яснее не стало. За самой картинкой ты всё равно на сервер пойдешь. Достаточно иметь реквизит формы типа индекс картинки, никаких массивов/ТЗ на клиенте для этого не надо
39 Muwahhid
 
16.11.19
17:16
(38) у меня есть на форме реквизит АдресКартинки с типом Поле Картинки. Ей присваиваю значение, и она выводит картинку.

Отправляю параметры с клиента, 1.ФайлКартинки, 2.УИ

АдресКартинки = НавигационнаяСсылкаКартинки(КартинкаИмя, УникальныйИдентификатор);

Далее на сервере все, это обрабатывается и возвращается мне в виде Двоичных данных.

&НаСервереБезКонтекста
Функция НавигационнаяСсылкаКартинки(ФайлКартинки, ИдентификаторФормы)
    
    АдресКартинки = ПрисоединенныеФайлы.ПолучитьДанныеФайла(ФайлКартинки, ИдентификаторФормы).СсылкаНаДвоичныеДанныеФайла;
    Возврат АдресКартинки;
КонецФункции    
___________
И работает. Я это подсмотрел в Форме Объекта, так сделано в типовой УТ 11.3.

Через ПолучитьНавигационнуюСсылку, у меня ничего не вышло, хотя во многих примерах так и делают. Но разница с примерами, что реквизит с типом ХранилищеЗначений лежит у меня в другом справочники (НоменклатураПрисоединенныеФайлы),а в справочнике Номенклатура, ссылочный тип этого реквизита, а у них в самом справочнике Номенклатура. Вообще пришел к выводу, что из-за этого у меня не выходит, а побороть не смог, поэтому сделал, тк сделано в форме Объекта.
40 Мимохожий Однако
 
16.11.19
17:21
Только последнее сообщение к сабжу никак не соотносится. )
Да и ладно.
41 Muwahhid
 
16.11.19
17:30
(40) У меня два случая, первый наводишь (приАктивизацииСтроки) и выходит фото.
Второй случай при клике СледФото, просматриваю не только заглавное, но след фото. У товаров где их соответственно, больше чем одно.
Для этого мне и нужно было несколько ФайловКартинки получить за раз, чтоб там же их перебрать и передать в функцию след. файл.
42 RomanYS
 
16.11.19
17:40
(41) можно не получать несколько, а получить 1 следующий (Выбрать первые 1). Хотя оптимально может и все сразу получить
43 craxx
 
16.11.19
17:45
(0) Преобразовать ТЗ в массив структур, и в таком виде передать
44 Muwahhid
 
16.11.19
17:46
(42) Как из Функции получать именно след ФайлКартинки я не знаю, если подскажешь, буду благодарен.
У меня так получилось, только первые два фото перебирать.
45 RomanYS
 
16.11.19
17:50
(44) я про такой вариант:
Запрос.Текст = "
    |ВЫБРАТЬ первые 1
    |    ВладелецФайла.Ссылка,
    |    Ссылка
    |ИЗ
    |    Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы
    |ГДЕ
    |    НоменклатураПрисоединенныеФайлы.ВладелецФайла.Ссылка = &АБВ и Ссылка > &СсылкаНаТекущуюКартинку";

Вместо ссылки можно использовать любое поле по которому хотим упорядочивать картинки
46 Сияющий в темноте
 
16.11.19
18:30
если владелец задан,то чем вам массив ссылок не подошел?
если для всех владельцев,то сгруппировать по оным и в соответствие владелец=>массив ссылок,запрос по группировкам в такое без проблем превращается

и это,данные формы коллекция-это таблица значений на клиенте,но там индексирования нет

если хочется именно таблицу,то внешнее соединение к базе и в нем таблицу значений-будет работать без проблем.
47 acht
 
16.11.19
18:40
(24) Круто. А в веб клиенте работает?
48 Сияющий в темноте
 
17.11.19
00:07
в web-клиенте язык 1с переводится в javascript и именно там таблицы значений,в принципе,нет - поэтому 1с решила ее спрятать везде,но,видимо,не очень хорошо спрятала.
49 Сияющий в темноте
 
17.11.19
00:21
кроме того,в толстом клиенте в управляемом режиме ТаблицаЗначений прекрасно существует
и создавать ее можно просто через Новый ТаблицаЗначений
и ТЗ.ВыбратьСтроку прекрасно работает.
50 Сияющий в темноте
 
17.11.19
00:25
прикольно то,что в тонком клиенте ВыбратьСтроку тоже отрабатывает,хотя таблицу приходится создавать через (24)
51 Сияющий в темноте
 
17.11.19
00:31
Но,передать таблицу на сервер с тонкого клиента не вышло:отсутствует отображение для типа
хотя,с толстого улетела на сервер без вопросов.
52 Надо работать
 
17.11.19
01:50
Если ТЗ можно передать как массив структур - то какой смысл был запрещать сериализацию? Чтобы прогам больше за строки кода платили?

Все таки 1С нелогичный зверек
53 Рэйв
 
17.11.19
07:10
(0)Сталкивался с этой херней.
Возвращай массив структур,с ключами именами колонок..
Могу скинуть код если не соображаешь.
54 Сияющий в темноте
 
17.11.19
10:49
В бсп,насколько я помню,есть функция преобразования.
55 Сияющий в темноте
 
17.11.19
10:51
Просто,если бы таблицу значений в тонком разрешили,то в web можно было и не заглядывать,большинство решений бы писало "не поддерживается"
56 dmpl
 
17.11.19
12:34
(55) А в чем проблема реализовать ТЗ в web-клиенте? Разве что с индексами немного повозиться. Но ведь можно же и просто заглушку поставить.
57 Cthulhu
 
17.11.19
13:07
(52): "какой смысл" - как раз очень даже понятно.
попытка охватить веб -> трансляция через тонкого в жаво-клиент с вырезанием из функционала всего, что не есть кошерным для жавы.
58 dmpl
 
17.11.19
14:25
(51)(52) ТЗ, кстати, отлично сериализуется в том же web-сервисе, например. Так что ограничение тут чисто искусственное.

(57) JS не умеет создавать такие простые объекты?
59 Cthulhu
 
17.11.19
16:59
(58): "тание простые" - нет, "настолько простые" - да.
60 Cthulhu
 
17.11.19
17:01
(58): +(оборвалось на абзаце):
д аналогия "на пальцах", несомненно страдающая кривизной - но по сути: охват англоговорящей аудитории подразумевает умение изъясняться на арглийском понятным этой аудитории образом - а не даже частичное ее переучивание на понимание понятных актору терминов понятным актором образом
61 acht
 
17.11.19
17:21
(60) Я упрощу, пожалуй:
Проще научить негров английскому, чем локализовать софт на язык ибибио.
62 Сияющий в темноте
 
19.11.19
00:33
у меня в javascript прекрасно индексированная таблица живет и работает,да большое количество строк она переварить не может,но работает
А 1с решила,что не надо.

у меня,правда и mdi-интерыейс в браузере работал пока всем не надоело окна по рабочему столу раскидывать.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший