Имя: Пароль:
1C
 
Передача таблицы таблицы значений с сервера на клиент
0 Мисти
 
19.05.16
21:12
Похоже, невозможна.
{Документ.АР_АктСнятияПоказанийСчетчика.Форма.ФормаСписка.Форма(75)}: Ошибка при вызове метода контекста (НайтиТипы)
    МассивТипов = НайтиТипы(Элементы.Список.ВыделенныеСтроки[0]);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'
Чтобы долго не гадать, а что возможно?
Массив? список значений?
1 Остап Сулейманович
 
19.05.16
21:13
(0) Табличная часть, Структура.
2 Мисти
 
19.05.16
21:14
А в структуру запихать массив можно?
3 Defender aka LINN
 
19.05.16
21:15
(0) "Похоже, невозможна".
Угу. Подлая 1С же об этом НИГДЕ не написала.

А вообще - на для зачем тебе на клиенте ТЗ? Что ты там с ней намерена делать?
4 Мисти
 
19.05.16
21:19
Вопросы задавать.
5 Pistol
 
19.05.16
21:20
(2) Можно, баб Юль, можно. Только работать все равно не будет. Не мучайся ты уже и нас не мучай, а? Цветочки там, грядки, внуки...
6 Мисти
 
19.05.16
21:20
Так массив тоже нельзя?
7 Мисти
 
19.05.16
21:22
Я могу строку вернуть, а на клиенте из нее сделать массив?
"ВУ~БУ~"
8 Pistol
 
19.05.16
21:22
(6) Сереализуемые объекты, в описании которых написано "возможен обмен с сервером" - можно.
9 Мисти
 
19.05.16
21:23
Pistol, мне еще даже до официальной пенсии 6 лет, а то еще и возраст пенсионный увеличат... И внуков нет пока, эхх!
10 Pistol
 
19.05.16
21:25
(9) Вот за внуками - это точно не ко мне, и не на форум :)
11 Defender aka LINN
 
19.05.16
21:26
(4) Ну задавай. Как с этим связана ТЗ?
ТЗ - это данные.
Данные - дело сервера.
12 Мисти
 
19.05.16
21:27
Как из таблицы красиво сделать массив?
Pistol, я даже знаю, к кому.
Defender aka LINN - запрос мне выдает список префиксов, я хочу спросить, какой из префиксов взять.
13 Pistol
 
19.05.16
21:31
(12) Вот у тебя метания - от ошибки обмена клиент-сервер, до выбора префиксов. Бери третий префикс, не ошибаешься!
14 Мисти
 
19.05.16
21:34
Массив, вроде, дает. Чего бы сразу не сказать?
Как-то ведь массив получается сам  из таблицы значений?
15 Defender aka LINN
 
19.05.16
21:35
(12) ТЗ - это таблица. Список - это, как несложно догадаться, список. Несколько разные вещи, не?
16 Pistol
 
19.05.16
21:36
(14) Классика. Мы же еще и виноваты, чо раньше не сказать.

Давай еще косички, бантик и яркий макияж.
17 H A D G E H O G s
 
19.05.16
21:36
Массив структур.
18 Defender aka LINN
 
19.05.16
21:37
(17) Et tu, Brute?
19 Мисти
 
19.05.16
21:39
Запрос.Выполнить().Выгрузить() Дает таблицу хошь-не хошь, а так-то там одна колонка.
20 Defender aka LINN
 
19.05.16
21:40
(19) Ну, тогда тебе дорога к ДенисЧ
Он, вроде, еще СП барыжит иногда.
21 Мисти
 
19.05.16
21:41
ДенисЧ обзывается всё время.
22 hhhh
 
19.05.16
21:42
(19) делайте таблицу как реквизит формы. Тогда она будет видна одновременно и на клиенте и на сервере. И передавать никуда ничего не нужно.
23 H A D G E H O G s
 
19.05.16
21:42
Функция ТаблицуЗначенийВМассивСтруктур(ТаблицаДанных)
    МассивВозврата=Новый Массив;
    СтрокаСтруктурыКолонок="";
    Суффикс="";
    Для Каждого Колонка Из ТаблицаДанных.Колонки Цикл
        СтрокаСтруктурыКолонок=СтрокаСтруктурыКолонок+Суффикс+Колонка.Имя;
        Суффикс=",";
    КонецЦикла;
    
    Для Каждого СтрокаТаблицы Из ТаблицаДанных Цикл
        СтруктураДанных=Новый Структура(СтрокаСтруктурыКолонок);
        ЗаполнитьЗначенияСвойств(СтруктураДанных,СтрокаТаблицы);
        МассивВозврата.Добавить(СтруктураДанных);
    КонецЦикла;
    Возврат МассивВозврата;
КонецФункции
24 Defender aka LINN
 
19.05.16
21:43
25 Мисти
 
19.05.16
21:44
Красота, спасибо!
У меня проще, только одна колонка.
В цикле я уже сделала массив, мне казалось, можно как-то одной строчкой.
26 Defender aka LINN
 
19.05.16
21:45
(25) Не казалось. Но пусть будет так.
27 H A D G E H O G s
 
19.05.16
21:46
(24) Пусть ее. Ей там не Деловые линии запускать.
28 hhhh
 
19.05.16
21:48
(25) Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(ИмяКолонки);

так что ДенисЧ в чем-то прав, когда насмехается.
29 FIXXXL
 
19.05.16
21:57
(25) ВыгрузитьКолонку()
30 Pistol
 
19.05.16
21:58
(28) Раньше Мисти была mdv92. Если полистать форум тех времен, то ничего   поменялось.
31 Мисти
 
19.05.16
21:58
Да, ничего не поменялось.
32 Pistol
 
19.05.16
21:59
(31) оно и заметно
33 Мисти
 
19.05.16
22:00
hhhh, ну я, честно, не могу запомнить - когда получается массив, а когда список значений.
смотрю в отладчике. А потом еще и не помню, какие с объектом методы работают! смотрю в синтаксис-помощнике.
34 Мисти
 
19.05.16
22:02
Короче, всё получилось.
ВыгрузитьКолонку - массив получится?
А мне уже список значений нужен!
35 Pistol
 
19.05.16
22:02
(33) ... но там такая фигня написана:)
36 Pistol
 
19.05.16
22:03
(34) да все уже, спасибо за вечер!
37 Мисти
 
19.05.16
22:10
Теперь задача номер 2 - я стою в списке актов счетчика, определилась с типом услуг и мне надо создать счет.
Аналогичная проблема решается, когда счет создается "на основании", но это отдельная команда, не типовая "на основании". Как теперь вырулить на ввод на основании? Или вообще счет создать?
38 Pistol
 
19.05.16
22:14
(37) Подходим, мальчики, подходим!
39 hhhh
 
19.05.16
22:15
Счет = Документы.Счет.СоздатьДокумент();
Счет.Заполнить(Акт);
40 Мисти
 
19.05.16
22:18
А мне бы его открыть, не записывая?
41 FIXXXL
 
19.05.16
22:22
(40) форму получи и открй
42 Cyberhawk
 
19.05.16
22:30
43 Cyberhawk
 
19.05.16
22:30
Как (41) делай в крайнем случае...
44 Мисти
 
19.05.16
22:33
&НаСервере
Процедура СоздатьПоТипуУслугНаСервере(Префикс)
    Док = Документы.АР_СчетНаАренду.СоздатьДокумент();
    Док.ЗаполнитьПоДокументуОснованию(Элементы.Список.ВыделенныеСтроки[0],Префикс);//ПолучитьФорму(    

Создался документ на сервере, а открывать-то надо наклиенте?
45 Мисти
 
19.05.16
22:36
Вот я себе пример нарыла -
    ФормаДаты = ПолучитьФорму("Документ.УведомлениеОСпецрежимахНалогообложения.Форма.ФормаВыбораДаты", ПараметрыДаты, ЭтотОбъект, ЭтотОбъект);
    ФормаДаты.Заголовок = ИмяФормы;
    Результат = Неопределено;
    ДополнительныеПараметры = Новый Структура("ИмяОбласти, ФормаДаты", ИмяОбласти, ФормаДаты);
    ОписаниеОповещения = Новый ОписаниеОповещения("НестандартнаяОбработкаДатыЗавершение", ЭтотОбъект, ДополнительныеПараметры);
    ФормаДаты.ОписаниеОповещенияОЗакрытии = ОписаниеОповещения;
    ФормаДаты.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
    ФормаДаты.Открыть();
46 Мисти
 
19.05.16
22:39
Вот еще проще примерчик -
    Форма = ПолучитьФорму("Документ.ТребованиеНакладная.ФормаОбъекта",, ЭтаФорма);
    ДанныеФормы = Форма.Объект;
    СоздатьДокументТННаСервере(ДанныеФормы);
    КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
    Форма.ЗакрыватьПриВыборе = Ложь;
    Форма.Открыть();
47 Cyberhawk
 
19.05.16
22:40
Если у тебя есть возможность изменить модуль объекта документа, тогда тем более Я б не стал делать через ПолучитьФорму + КопироватьДанныеФормы...
48 Мисти
 
19.05.16
23:04
Так есть, конечно! Там уже такой огород!
Так как открыть?
Главное, я не пойму - как мне теперь попасть "на клиент"?
Ведь на сервере не открыть никак?
А на клиенте - не создать документ?
49 Defender aka LINN
 
19.05.16
23:09
(37) "счет создается "на основании", но это отдельная команда, не типовая "на основании". Как теперь вырулить на ввод на основании?"
Тут 3 разных ввода на основании упомянуто. При этом в 1С есть только один.
50 Cyberhawk
 
19.05.16
23:16
С клиента вызываешь

ОткрытьФорму(<ИмяФормы>, Новый Структура("... , ЗначенияЗаполнения", ... , Новый Структура(...)))

В модуле документа ОбработкаЗаполнения точкой останова ловишь код, смотришь на тип и пишешь ветку кода для заполнения твоего объекта
51 Мисти
 
19.05.16
23:20
Так я его уже, считай, заполнила!
Счет = Документы.Счет.СоздатьДокумент();
Счет.Заполнить(Акт); - как в 39 примерно.
Теперь бы только открыть!
52 Мисти
 
19.05.16
23:21
И у ОбработкаЗаполнения нет "Экспорт", наверное, это не случайно?
53 Pistol
 
19.05.16
23:45
(49) (50) ой, мальчики, а у вас ручки грязные :)
54 Мисти
 
20.05.16
00:52
Cyberhawk, спасибо, получилось!