Ошибка отображения типов отсутствует отображение для типа данныеформыэлементдерева

передать дерево значений на сервер

Я
   seraf

21.12.19 — 15:25

Подскажите, есть дерево на форме.

Хочу в цикле узел ДанныеФормыКоллекцияЭлементовДерева передавать на сервер (не очень хорошо, но так надо для индикации прогресса)

Как передать для обработки этот тип?

   runoff_runoff

1 — 21.12.19 — 15:43

в процедуре формы &НаСервере

   runoff_runoff

2 — 21.12.19 — 15:48

пока код выполняется на сервере, на клиенте ничего не будет отображаться

нужно делать обработку ожидания в форме и опрашивать сервер

   seraf

3 — 21.12.19 — 15:49

(1) я понимаю что на сервере тоже дерево с формы обойду

а если хочу обходить на клиенте (для индикации) передавая каждый узел на обработку?

можно конечно структуру передавать, но вообще заморочено выглядит

   seraf

4 — 21.12.19 — 15:51

(2) пример есть? опрашивать сервер на предмет переменной в которой индикация прогресса?

мне хотелось чтобы гладко шло, а не рывками обновлялось, пусть дольше выполняется, но чтоб визуал был

   runoff_runoff

5 — 21.12.19 — 15:54

(3) можно

ДеревоДляПередачи = Объект.Дерево;

вызватьсервернуюпроцедуру(ДеревоДляПередачи);

   seraf

6 — 21.12.19 — 16:05

(5) не понял, дерево — реквизит формы

сейчас так

ДФКЭД = ДеревоЗначений.ПолучитьЭлементы();

    
Для Каждого УзелДерева Из ДФКЭД Цикл

    //Строки = УзелДерева.ПолучитьЭлементы();

    ОбновитьНаСервере(УзелДерева);

КонецЦикла;

Хочу узел обработав отрапортовать пользователю и продолжить, но тип не передается.

   seraf

7 — 21.12.19 — 16:06

Пока в лучшем случае структуру из структур со строками создать могу для обработки на сервере, но как-то тупо это

   runoff_runoff

8 — 21.12.19 — 16:10

УзелДерева1 = УзелДерева;

   seraf

9 — 21.12.19 — 16:18

(8) может не понимаю что сказать хочешь

ОбновитьНаСервере(УзелДерева);

Ошибка отображения типов:

Отсутствует отображение для типа ‘ДанныеФормыЭлементДерева’

   seraf

10 — 21.12.19 — 16:36

Короче передам туда массив структур со строками дерева узла, если других идей нет.. работать должно

   runoff_runoff

11 — 21.12.19 — 16:44

(9) в другую переменную присвоить и передать эту переменную

в БСП смотри ищи КопироватьДанныеФормы и смотри как они передают на сервер ДанныеФормы

   craxx

12 — 21.12.19 — 17:19

(3) у строки дерева значений есть идентификатор, вот его и перелавай

   seraf

13 — 21.12.19 — 18:16

(11) я мысль понял, попробовал, тот же результат

(3) ПолучитьИдентификатор? Попробую, спасибо

  

seraf

14 — 21.12.19 — 18:29

(12) да, вот это норм, спасибо

передать дерево значений на сервер

Я
   seraf

21.12.19 — 15:25

Подскажите, есть дерево на форме.

Хочу в цикле узел ДанныеФормыКоллекцияЭлементовДерева передавать на сервер (не очень хорошо, но так надо для индикации прогресса)

Как передать для обработки этот тип?

   runoff_runoff

1 — 21.12.19 — 15:43

в процедуре формы &НаСервере

   runoff_runoff

2 — 21.12.19 — 15:48

пока код выполняется на сервере, на клиенте ничего не будет отображаться

нужно делать обработку ожидания в форме и опрашивать сервер

   seraf

3 — 21.12.19 — 15:49

(1) я понимаю что на сервере тоже дерево с формы обойду

а если хочу обходить на клиенте (для индикации) передавая каждый узел на обработку?

можно конечно структуру передавать, но вообще заморочено выглядит

   seraf

4 — 21.12.19 — 15:51

(2) пример есть? опрашивать сервер на предмет переменной в которой индикация прогресса?

мне хотелось чтобы гладко шло, а не рывками обновлялось, пусть дольше выполняется, но чтоб визуал был

   runoff_runoff

5 — 21.12.19 — 15:54

(3) можно

ДеревоДляПередачи = Объект.Дерево;

вызватьсервернуюпроцедуру(ДеревоДляПередачи);

   seraf

6 — 21.12.19 — 16:05

(5) не понял, дерево — реквизит формы

сейчас так

ДФКЭД = ДеревоЗначений.ПолучитьЭлементы();

    

Для Каждого УзелДерева Из ДФКЭД Цикл

    //Строки = УзелДерева.ПолучитьЭлементы();

    ОбновитьНаСервере(УзелДерева);

КонецЦикла;

Хочу узел обработав отрапортовать пользователю и продолжить, но тип не передается.

   seraf

7 — 21.12.19 — 16:06

Пока в лучшем случае структуру из структур со строками создать могу для обработки на сервере, но как-то тупо это

   runoff_runoff

8 — 21.12.19 — 16:10

УзелДерева1 = УзелДерева;

   seraf

9 — 21.12.19 — 16:18

(8) может не понимаю что сказать хочешь

ОбновитьНаСервере(УзелДерева);

Ошибка отображения типов:

Отсутствует отображение для типа ‘ДанныеФормыЭлементДерева’

   seraf

10 — 21.12.19 — 16:36

Короче передам туда массив структур со строками дерева узла, если других идей нет.. работать должно

   runoff_runoff

11 — 21.12.19 — 16:44

(9) в другую переменную присвоить и передать эту переменную

в БСП смотри ищи КопироватьДанныеФормы и смотри как они передают на сервер ДанныеФормы

   craxx

12 — 21.12.19 — 17:19

(3) у строки дерева значений есть идентификатор, вот его и перелавай

   seraf

13 — 21.12.19 — 18:16

(11) я мысль понял, попробовал, тот же результат

(3) ПолучитьИдентификатор? Попробую, спасибо

  

seraf

14 — 21.12.19 — 18:29

(12) да, вот это норм, спасибо

TurboConf — расширение возможностей Конфигуратора 1С

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Тамика

Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

1

Отсутствует отображение для типа ‘ДанныеФормыЭлементКоллекции’

29.08.2017, 12:09. Показов 14526. Ответов 7

Метки нет (Все метки)


Что это за штука-то такая? И не могу даже отловить где ругается.

1C
1
2
3
4
5
6
7
8
9
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'cr':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/mngsrv/ws}cr
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'

Может кто сталкивался? Буду благодарна за помощь

Добавлено через 3 минуты
Нашла

0

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.08.2017, 12:10

2

Не по теме:

Цитата
Сообщение от Тамика
Посмотреть сообщение

Добавлено через 3 минуты
Нашла

Молодец) И быстро)

А что было-то?)

0

Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

29.08.2017, 12:12

 [ТС]

3

Цитата
Сообщение от GreenkA
Посмотреть сообщение

А что было-то?)

У меня тут была такая забавная строка в серверной процедуре:
Элементы.Работы.ТекущаяСтрока = Объект.Работы[0];

Если допилить Объект.Работы[0].ПолучитьИдентификатор() — то уже другая ошибка. ))

0

GreenkA

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.08.2017, 12:38

4

Тамика,

1C
1
Элементы.Работы.ТекущаяСтрока = 0;

Добавлено через 10 минут
Тамика, вообще ты правильно делаешь, на что ругается-то?
Покажи код. Такой?

1C
1
Элементы.Работы.ТекущаяСтрока = Объект.Работы[0].ПолучитьИдентификатор();

Добавлено через 25 секунд
быть может тч пустая?

0

Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

29.08.2017, 12:39

 [ТС]

5

GreenkA, не, я имела в виду под «другой ошибкой» — ошибка, которая уже не касается этого.

0

GreenkA

29.08.2017, 12:40

Не по теме:

Цитата
Сообщение от Тамика
Посмотреть сообщение

ошибка, которая уже не касается этого.

аа) ну ладно) будет новая тема?:D

0

Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

29.08.2017, 12:41

 [ТС]

7

Цитата
Сообщение от GreenkA
Посмотреть сообщение

аа) ну ладно) будет новая тема?

Сейчас чуток покопаюсь и создам, если ничего не выйдет

0

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.08.2017, 12:42

8

Цитата
Сообщение от Тамика
Посмотреть сообщение

Сейчас чуток покопаюсь и создам

как показывает практика — выжди минимум 3 минуты) велика вероятность, что ты сама все решишь

0

Ошибка отображения типов: Отсутствует отображение для типа ‘ЭлементСпискаЗначений’

Описание ошибки:
Ошибка при программировании, конфигурировании кода в 1С 8:

Ошибка отображения типов:
Отсутствует отображение для типа ‘ЭлементСпискаЗначений’
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘v’:
форма: Элемент
имя: {http://v8.1c.ru/8.2/uobjects}v
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘value’:
форма: Элемент
имя: {http://v8.1c.ru/8.1/data/core}value

Найденные решения:

1C 8 Ошибка отображения типов: Отсутствует отображение для типа ЭлементСпискаЗначений,

Нажатие на изображении увеличит его
1C 8, Отсутствует отображение для типа ЭлементСпискаЗначений, по причине, ошибка передачи данных между клиентом и сервером, значение недопустимого типа

Возникла при написании кода индивидуальной конфигурации. Но, как оказалось, может подстерегать программиста из-за его невнимательности и при конфигурировании в других конфигурациях. Итак, в чем же причина возникновения данной ошибки. В управляемой форме был создан реквизит типа «СписокЗначений». При открытии формы по коду срабатывает обработчик заполнения этого списка значений. Т.е. в коде создается переменная с помощью конструктора «Новый СписокЗначений», значение которой потом и устанавливается реквизиту формы. Но, перед тем как это происходит, в коде список значений изменяется — в частности выполняется его дополнительная сортировка. Конечно, ошибка «Ошибка отображения типов: Отсутствует отображение для типа ‘ЭлементСпискаЗначений’» может возникнуть у Вас не только в такой ситуации. Сейчас разберемся в чем ее суть.

1С 8, Ошибка для типа ЭлементСпискаЗначений, передачи данных между клиентом и сервером, значение недопустимого типа, по причине, ошибка преобразования данных XDTO

Как было отмечено в этой частной задаче выполняется сортировка исходного заполненного списка значений. Но, т.к. в этой частной задаче не подходило использование метода «СортироватьПоЗначению(<Направление>)«, т.к. сортировка более сложная (по текстовым данным с разделителями порядка, содержащих разделитель «.», пример: 1.1, 2.2, 2.2.1, 2.2.2, 3.1, 3.2, 3.3.1, 3.3.2). Поэтому сортировка выполнялась программно с созданием новой переменной типа «СписокЗначений» и ее заполнением по данным исходного списка.

После сохранения кода и попытки проверки появилась ошибка, текст которой приведен в начале страницы. Анализ данных через предмет отладки неявно, но показал ошибку.

Нажатие на изображении увеличит его

1C 8, как устранить, исправить ошибку, ошибка преобразования данных XDTO, отсутствует отображение для типа ЭлементСпискаЗначений

Не смотря на то, что в методической информации «Синтакс-помощника» 1С 8 указано, что значение элемента списка значений может быть любым (произвольным), все-таки для случая использования в управляемой форме в качестве реквизита накладывается ограничение по типу. И нельзя в значение такого списка значений поместить «ЭлементСискаЗначений» другого списка значений.

1С 8, какие значения могут быть у списказначений, исключения для управляемой формы

Т.е. для моего случая использования списка значений в управляемой форме в качестве реквизита ошибка была в коде, где происходило заполнение значений нового списка по данным исходного при сортировке.

Нажатие на изображении увеличит его

Было выполнено исправление в коде для обращения к значениям и передачи их в качестве значений нового списка значений. 

Нажатие на изображении увеличит его
1С 8, в чем причина ошибки в форме, отсутствует отображение для типа Элемент списка значений, ошибка отображения типов

В данном случае значениями списка были значения примитивного тип «Строка», поэтому дальнейшая работа доработанного кода стала возможной. И это все-таки позволило реализовать задачу. Если у Вас будут другие типы, например ссылки, то продумывайте заранее, как будете упорядочить, возможно придется через другие универсальные объекты, например использование таблицы значений, и потом заполнять конечный список значений. Другие примитивные типы не проверялись, но предполагаю, что они так же подойдут для корректной работы в управляемой форме. в качестве значений списка. Поэтому учитывайте это, если столкнетесь с данной ошибкой при Вашем конфигурировании — подбирайте по возможности простой тип для значений списка.

Нажатие на изображении увеличит его
1С 8, в чем, причина ошибки, как устранить, Ошибка передачи данных между клиентом и сервером, отсутствует отображение для типа элемент списка значений

Таким образом на примере данной частной ситуации возникновения ошибки при конфигурировании в 1С 8 «Отсутствует отображение для типа ЭлементСпискаЗначений, по причине, ошибка передачи данных между клиентом и сервером, значение недопустимого типа» извлекаем вывод о том, что нужно быть внимательным и не заполнять значения объекта «Список значений» элементами другого списка значений. А передавать значения элемента списка значений, если одна переменная типа «СписокЗначений» заполняется за счет другой подобной.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

16-03-2022

Журавлев А.С.
(Сайт azhur-c.ru)

  1. Вот программа обработчик

    &НаКлиенте
    Процедура ТабличнаяЧасть1КоличествоПриИзменении(Элемент)
    СтрокаТабличнойЧасти=Элементы.ТабличнаяЧасть1.ТекущиеДанные;
    //при вызове этой функции появляется ошибка см.в.конце Элементы.ТабличнаяЧасть1.ТекущиеДанные.Сумма=РаботаСДокументами.ВычислениеСуммы(СтрокаТабличнойЧасти);
    КонецПроцедуры

    Серверная часть
    &НаСервере
    Функция ВычислениеСуммы(Элемент) Экспорт
    ЗначениеСуммы=Элемент.Количество*Элемент.Цена;
    Сообщить(ЗначениеСуммы);
    Возврат ЗначениеСуммы;
    КонецФункции

    Текст Ошибки:
    Ошибка отображения типов:
    Отсутствует отображение для типа «ДанныеФормыЭлементКоллекции»

    Кто знает, что не так пишите. Буду рад.

  2. Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    Дело в том, что ТекущуюСтроку из ТЗ нельзя передавать на сервер. (У типа «ДанныеФормыЭлементКоллекции» отсутствует свойство «Возможен обмен с сервером»). Для того чтобы передать строку на сервер ее надо выгрузить в структуру, передать на сервер эту структуру, с этой структурой сделать то что надо, и вернуть ее на клиент, и заполнить из нее ТЧ.

    В вашем же конкретном примере — на сервер можно вообще ничего не передавать. Можно ведь все на клиенте выполнить.

  3. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54
    {Обработка.медАРМПриёмкиТовара.Форма.Форма.Форма(1022)}: Ошибка при вызове метода контекста (ОткрытьФорму)
            ОткрытьФорму("Обработка.медАРМПриёмкиТовара.Форма.ВыборНоменклатуры",ПараметрыФормы,ЭтаФорма,,,, ОбработчикОповещения, Режим);
    по причине:
    Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
    по причине:
    Ошибка преобразования данных XDTO:
    Запись значения свойства 'cr':
        форма: Элемент
        имя: {http://v8.1c.ru/8.2/mngsrv/ws}cr
    по причине:
    Ошибка отображения типов:
    Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'

    Ребята всё понимаю, но не понимаю какую я ему коллекцию сую? Передаю Структуру.. На что может ругаться?

  4. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104
  5. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    ПараметрыФормы Структура Структура
    АдресТоваровВХранилище «e1cib/tempstorage/ed0e045f-6c9a-43b2-a363-086808153749» Строка
    ТоварыДокумента «e1cib/tempstorage/61c0f15a-394e-4551-ab4a-4fffd87c3d74» Строка

  6. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Ничего не понял. Попробуй тоже самое, только вместо своих параметров что-нибудь по-проще типа
    «Новый структура(«пар1″,»пар1″)».
    Если тут проблем не будет — смотри еще раз свой отбор, может там не просто строки?
    Если проблема сохранится — возможно еще в обработчике оповещения что-то.

  7. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    В ПараметрахФормы два значения, оба типа строка.. передаётся адрес на временное хранилище..
    В ОбработкеОповещения передается структура в структуре, во внутренней структуре один параметр, тоже адрес типа строка.

  8. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Ну поэкспериментируй:
    1. Убери нафиг свои параметры =)
    2. Убери нафиг свой обработчик оповещения =)

  9. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    Самое интересное что падает при завершение процедуры создания.

    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
       
        // Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест".
        Если Параметры.Свойство("АвтоТест") Тогда
            Возврат;
        КонецЕсли;
       
        ДополнительныеКолонкиНоменклатуры = ЗначениеНастроекПовтИсп.ПолучитьЗначениеКонстанты("ДополнительнаяКолонкаПриОтображенииНоменклатуры");
       
        ТаблицаТоваров.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресТоваровВХранилище));
        СкрытьКолонкуУпаковка = Параметры.СкрытьКолонкуУпаковка;
        ТоварыДокументов.Загрузить(ПолучитьИзВременногоХранилища(Параметры.ТоварыДокумента));   
        Если Параметры.Свойство("ПередаватьШтрихкод") Тогда
            ПередаватьШтрихкод = Параметры.ПередаватьШтрихкод;
        КонецЕсли;
       
        Если Параметры.Свойство("ОтображатьОстатки") Тогда
            Элементы.ТаблицаТоваровОстаток.Видимость = Истина;
        КонецЕсли;
       
        ЭтотОбъект.ТекущийЭлемент = Элементы.ТаблицаТоваров;
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    ХарактеристикиДокумента.Характеристика
                       |ПОМЕСТИТЬ ХарактеристикиДокумента
                       |ИЗ
                       |    &ХарактеристикиДокумента КАК ХарактеристикиДокумента
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    НайденныеХарактеристики.Характеристика
                       |ПОМЕСТИТЬ НайденныеХарактеристики
                       |ИЗ
                       |    &НайденныеХарактеристики КАК НайденныеХарактеристики
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ХарактеристикиДокумента.Характеристика
                       |ИЗ
                       |    ХарактеристикиДокумента КАК ХарактеристикиДокумента
                       |        ПОЛНОЕ СОЕДИНЕНИЕ НайденныеХарактеристики КАК НайденныеХарактеристики
                       |        ПО ХарактеристикиДокумента.Характеристика = НайденныеХарактеристики.Характеристика";
        Запрос.Параметры.Вставить("НайденныеХарактеристики",ТаблицаТоваров.Выгрузить());
        Запрос.Параметры.Вставить("ХарактеристикиДокумента",ТоварыДокументов.Выгрузить());
       
        Выборка = Запрос.Выполнить().Выбрать();
        Если Выборка.Количество()>0 Тогда
            Выборка.Следующий();
            Характеристика = Выборка.Характеристика;
            ПараметрыПоиска = Новый Структура;
            ПараметрыПоиска.Вставить("Характеристика",Характеристика);
            МассивСтрок = ЭтотОбъект.ТаблицаТоваров.НайтиСтроки(ПараметрыПоиска);
            ЭтотОбъект.Элементы.ТаблицаТоваров.Текущ1аяСтрока = МассивСтрок[0];
        КонецЕсли;   
       
    КонецПроцедуры
  10. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Это в каком случае?
    Попробуй просто форму открыть без всего — может она вообще не откроется =)

  11. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54
  12. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Неужели вот это работает:
    ЭтотОбъект.Элементы.ТаблицаТоваров.Текущ1аяСтрока = МассивСтрок[0];
    или «1» — это опечатка?
    Оставь свои параметры, но убери обработчик оповещения, что будет?

  13. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    Ошибка, уже исправил, сейчас попробую… Но параметр не мой, он был, я просто в него добавил еще одно значение, адрес временного хранилища.

    — Объединение сообщений, 22 дек 2015

    Переписал процедуру ПриСозданииНаСервере

        // Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест".
        Если Параметры.Свойство("АвтоТест") Тогда
            Возврат;
        КонецЕсли;
       
        ДополнительныеКолонкиНоменклатуры = ЗначениеНастроекПовтИсп.ПолучитьЗначениеКонстанты("ДополнительнаяКолонкаПриОтображенииНоменклатуры");
       
        ТаблицаТоваров.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресТоваровВХранилище));
        СкрытьКолонкуУпаковка = Параметры.СкрытьКолонкуУпаковка;
        Если Параметры.Свойство("ПередаватьШтрихкод") Тогда
            ПередаватьШтрихкод = Параметры.ПередаватьШтрихкод;
        КонецЕсли;
       
        Если Параметры.Свойство("ОтображатьОстатки") Тогда
            Элементы.ТаблицаТоваровОстаток.Видимость = Истина;
        КонецЕсли;
       
        ЭтотОбъект.ТекущийЭлемент = Элементы.ТаблицаТоваров;
        Если Параметры.Свойство("ТоварыДокумента") Тогда
        ТоварыДокументов.Загрузить(ПолучитьИзВременногоХранилища(Параметры.ТоварыДокумента));   
    
            Запрос = Новый Запрос;
            Запрос.Текст = "ВЫБРАТЬ
            |    ХарактеристикиДокумента.Характеристика
            |ПОМЕСТИТЬ ХарактеристикиДокумента
            |ИЗ
            |    &ХарактеристикиДокумента КАК ХарактеристикиДокумента
            |;
            |
            |////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ
            |    НайденныеХарактеристики.Характеристика
            |ПОМЕСТИТЬ НайденныеХарактеристики
            |ИЗ
            |    &НайденныеХарактеристики КАК НайденныеХарактеристики
            |;
            |
            |////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ
            |    ХарактеристикиДокумента.Характеристика
            |ИЗ
            |    ХарактеристикиДокумента КАК ХарактеристикиДокумента
            |        ПОЛНОЕ СОЕДИНЕНИЕ НайденныеХарактеристики КАК НайденныеХарактеристики
            |        ПО ХарактеристикиДокумента.Характеристика = НайденныеХарактеристики.Характеристика";
            Запрос.Параметры.Вставить("НайденныеХарактеристики",ТаблицаТоваров.Выгрузить());
            Запрос.Параметры.Вставить("ХарактеристикиДокумента",ТоварыДокументов.Выгрузить());
           
            Выборка = Запрос.Выполнить().Выбрать();
            Если Выборка.Количество()>0 Тогда
                Выборка.Следующий();
                Характеристика = Выборка.Характеристика;
                ПараметрыПоиска = Новый Структура;
                ПараметрыПоиска.Вставить("Характеристика",Характеристика);
                МассивСтрок = ЭтотОбъект.ТаблицаТоваров.НайтиСтроки(ПараметрыПоиска);
                ЭтотОбъект.Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0];
            КонецЕсли;   
        КонецЕсли;
       
    

    И закоментировал добавление в структуру ТоварыДокумента.. Работает.. т.е. проблема внутри условия получается?

    Мне кажется ему всё таки вот это не нравится ка кто?
    ЭтотОбъект.Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0];

    Последнее редактирование: 22 дек 2015

  14. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Если у вас «Элементы.ТаблицаТоваров» — это дин.список, то в тек. строку нужно передать ссылку, а если таблица формы — тогда идентификатор строки.
    У вас похоже массивСтрок[0]- это и есть то самое «ДанныеФормыЭлементКоллекции» на которое 1с и орет

  15. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    Респект и уважуха.. да ТаблицаТоваров это таблица формы.. а МассивСтрок это данные коллекции.

    Возникает вопрос как получить идентификатор…
    Т.е. необходимо следующее.. ТаблицаТоваров это список номенклатуры с характеристиками и есть ТЗ основной формы, где есть характеристика из этой таблицы.. на ней нужно позиционировать при открытии.

  16. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Значит нужно присвоить идентификатор.
    Можно глянуть в синтакс-помощник — там должно быть «ПолучитьИдентификатор»
    http://www.forum.mista.ru/topic.php?id=550120

  17. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    ЭтотОбъект.Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор();
    Вот «Огонь».

  18. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Ага! Еще «Огонь» есть — ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.Вывести();
    А у вас можно по-короче наверное: Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор();
    без «ЭтотОбъект»

Добрый день при вызове клиентской процедуры из серверной выходит ошибка {Документ.ЗаказПокупателя.Форма.ФормаДокументаУпр.Форма}: Ошибка при вызове метода контекста (ПриИзмененииНоменклатуры)    ПриИзмененииНоменклатуры(Элементы.Товары.ТекущиеДанные); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства ‘param’:    форма: Элемент    имя: { по причине: Ошибка отображения типов: Отсутствует отображение для типа ‘ДанныеФормыЭлементКоллекции’ Вот эти процедуры ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// После отображения ошибки поле номенклатура заполняется выбранным товаром.

на толстом клиенте встречался, баг платформы, перезапуск службы помогал. какая платформа?

да причем тут баг? он передает в процедуру не тот параметр

да хз, на толстом видел такой именно баг)

платформа 8.2.14.519, конфигурация УПП 1.2 не типовая

перевожу конфу на управляемое приложение, не подскажите про параметр?

про имя процедуры и указание параметров в вызове процедуры на клиенте?

про тип параметра, пилять

теперь выдало ошибку Документ.ЗаказПокупателя.МодульОбъекта(2944)}: Поле объекта не обнаружено (Цена) Привожу саму процедуру из общего модуля

ау есть кто-нибудь? прошу помощи,помогите разобраться с ошибкой

вот что ты передаешь туда?

пытаюсь обратиться к экспортной процедуре и передать строку таб части, но так не получается СтрокаТабличной Части или Элементы.Товары.ТекущиеДанные, так не предусмотрено это в серверной части

[пытаюсь обратиться к экспортной процедуре и передать строку таб части] ну и где ты пытаешься? все что ты передаешь не Строка таб части

///////////////////////////////////////////////////////////////////////// выдает ошибку  {Документ.ЗаказПокупателя.Форма.ФормаДокументаУпр.Форма}: Недостаточно фактических параметров    МодульОбъекта.ПриИзмененииНоменклатурыТоваров; как в серверной части можно обратиться к табличной части документа?

потому что ты без параметров обращаешься

а что указать в качестве параметра?

если указать Элемент или имя табличной части то выходит ошибка

нужно передать строку таб части — очевидно же, что ни Элементы ни Имя ТЧ не являются строкой ТЧ

Для ТС — это не очевидно. Для ТС — проще спросить и ныть потом о помощи, чем подумать. p.s.: ТС уже ничего не поможет, и не знаю то ли мама с папой не старались, то ли перестарались.

, СтрокаТабличнойЧасти=Элементы.Товары.ТекущиеДанные; единственное что приходит на ум, добавить в серверной части

+ опять же СтрокаТабличнойЧасти.Номенклатура <> СтрокаТабличнойЧасти

//////////////////////////////////////////////////////////////// вышла ошибка «Ошибка при получении значения атрибута контекста (ТекущиеДанные)    СтрокаТабличнойЧасти=Элементы.Товары.ТекущиеДанные;»

объясните пожалуйста значение ошибки, дополнительно к Ошибка при получении значения атрибута контекста (ТекущиеДанные)    СтрокаТабличнойЧасти=Элементы.Товары.ТекущиеДанные; Текущие данные таблицы недоступны на сервере

ну нет на сервере текущих данных Элементов

это я тоже понял, а как можно передать параметры табличной части на сервере? через Объект?

это я тоже понял, а как можно передать параметры табличной части на сервере? через Объект?

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Сергей

Местный

Сообщений: 8
Баллов: 15
Регистрация: 26.06.2022

#10

0

28.06.2022 13:36:40

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = РаботаСоСпискамиДокументовКлиент.ПолучитьДанныеТекущейСтрокиСписка(
Элементы.Список, Элементы.Список.ТекущаяСтрока);

Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;

Если Поле = Элементы.Файлы Тогда
ОткрыватьЗакладкуФайлы=ПроверкаОткрытияЗаклФайлы(ЭтаФорма)
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуФайлы», ТекущиеДанные.Ссылка, ОткрыватьЗакладкуФайлы);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;

Если Поле = Элементы.ПодписанЭП Тогда
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуЭП», ТекущиеДанные.Ссылка, Истина);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;

Если Поле = Элементы.Задачи Тогда
ОткрытьФорму(«ОбщаяФорма.ПроцессыИЗадачи»,
Новый Структура(«Предмет», ТекущиеДанные.Ссылка),
ЭтаФорма);
Возврат;
КонецЕсли;

Если Поле = Элементы.ЕстьКатегории Тогда
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуКатегории», ТекущиеДанные.Ссылка, Истина);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;

Если Поле = Элементы.СостояниеКонтроля Тогда
КонтрольКлиент.ОбработкаКомандыКонтроль(ТекущиеДанные.Ссылка, ЭтаФорма);
Возврат;
КонецЕсли;

ПараметрыОткрытия = Новый Структура(«Ключ», ТекущиеДанные.Ссылка);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
КонецПроцедуры

Тамика

Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

1

Отсутствует отображение для типа ‘ДанныеФормыЭлементКоллекции’

29.08.2017, 12:09. Показов 19695. Ответов 7

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Что это за штука-то такая? И не могу даже отловить где ругается.

1C
1
2
3
4
5
6
7
8
9
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'cr':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/mngsrv/ws}cr
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'

Может кто сталкивался? Буду благодарна за помощь

Добавлено через 3 минуты
Нашла



0



Эксперт 1С

3053 / 2000 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.08.2017, 12:10

2

Не по теме:

Цитата
Сообщение от Тамика
Посмотреть сообщение

Добавлено через 3 минуты
Нашла

Молодец) И быстро)

А что было-то?)



0



Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

29.08.2017, 12:12

 [ТС]

3

Цитата
Сообщение от GreenkA
Посмотреть сообщение

А что было-то?)

У меня тут была такая забавная строка в серверной процедуре:
Элементы.Работы.ТекущаяСтрока = Объект.Работы[0];

Если допилить Объект.Работы[0].ПолучитьИдентификатор() — то уже другая ошибка. ))



0



GreenkA

Эксперт 1С

3053 / 2000 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.08.2017, 12:38

4

Тамика,

1C
1
Элементы.Работы.ТекущаяСтрока = 0;

Добавлено через 10 минут
Тамика, вообще ты правильно делаешь, на что ругается-то?
Покажи код. Такой?

1C
1
Элементы.Работы.ТекущаяСтрока = Объект.Работы[0].ПолучитьИдентификатор();

Добавлено через 25 секунд
быть может тч пустая?



0



Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

29.08.2017, 12:39

 [ТС]

5

GreenkA, не, я имела в виду под «другой ошибкой» — ошибка, которая уже не касается этого.



0



GreenkA

29.08.2017, 12:40

Не по теме:

Цитата
Сообщение от Тамика
Посмотреть сообщение

ошибка, которая уже не касается этого.

аа) ну ладно) будет новая тема?:D



0



Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

29.08.2017, 12:41

 [ТС]

7

Цитата
Сообщение от GreenkA
Посмотреть сообщение

аа) ну ладно) будет новая тема?

Сейчас чуток покопаюсь и создам, если ничего не выйдет



0



Эксперт 1С

3053 / 2000 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.08.2017, 12:42

8

Цитата
Сообщение от Тамика
Посмотреть сообщение

Сейчас чуток покопаюсь и создам

как показывает практика — выжди минимум 3 минуты) велика вероятность, что ты сама все решишь



0



выдает ошибку при вызове функции ТЗДополнительныеСведенияПриОкончанииРедактированияНаСервере(СтрокаКоллекции);  не могу понять почему, мне надо изменить данные регистра ДополнительныеСведения при изменения данных в таблице

  

&НаСервереБезКонтекста

Процедура ТЗДополнительныеСведенияПриОкончанииРедактированияНаСервере(ТекущаяСтрока)

    // Вставить содержимое обработчика.

    ТекСтрока =  ТекущаяСтрока;

    

    Если ТекСтрока.НаименованиеДопСведения <> Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка() Тогда                  

            НаборЗаписей = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();

            НаборЗаписей.Отбор.Объект.Установить(ТекСтрока.Начисление);

            НаборЗаписей.Отбор.Свойство.Установить(ТекСтрока.ДопСведение);  

            

            
            НоваяЗапись = НаборЗаписей.Добавить();                            

            НоваяЗапись.Объект  = ТекСтрока.Начисление;                       

            НоваяЗапись.Свойство = ТекСтрока.ДопСведение;                     

            НоваяЗапись.Значение = ТекСтрока.НаименованиеДопСведения;                 

            
            // Записать набор записей с замещением старого, соответствующего той же грануле

            
            НаборЗаписей.Записать();                                                   

            
    КонецЕсли;

КонецПроцедуры

&НаКлиенте

Процедура ТЗДополнительныеСведенияПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)    

    СтрокаКоллекции = ТЗДополнительныеСведения.НайтиПоИдентификатору(Элементы.ТЗДополнительныеСведения.ТекущаяСтрока);

    стр = СтрокаКоллекции.начисление;

    
    ТЗДополнительныеСведенияПриОкончанииРедактированияНаСервере(СтрокаКоллекции);  

    
КонецПроцедуры

Тамика

Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

1

Отсутствует отображение для типа ‘ДанныеФормыЭлементКоллекции’

29.08.2017, 12:09. Показов 14511. Ответов 7

Метки нет (Все метки)


Что это за штука-то такая? И не могу даже отловить где ругается.

1C
1
2
3
4
5
6
7
8
9
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'cr':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/mngsrv/ws}cr
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'

Может кто сталкивался? Буду благодарна за помощь

Добавлено через 3 минуты
Нашла

0

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.08.2017, 12:10

2

Не по теме:

Цитата
Сообщение от Тамика
Посмотреть сообщение

Добавлено через 3 минуты
Нашла

Молодец) И быстро)

А что было-то?)

0

Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

29.08.2017, 12:12

 [ТС]

3

Цитата
Сообщение от GreenkA
Посмотреть сообщение

А что было-то?)

У меня тут была такая забавная строка в серверной процедуре:
Элементы.Работы.ТекущаяСтрока = Объект.Работы[0];

Если допилить Объект.Работы[0].ПолучитьИдентификатор() — то уже другая ошибка. ))

0

GreenkA

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.08.2017, 12:38

4

Тамика,

1C
1
Элементы.Работы.ТекущаяСтрока = 0;

Добавлено через 10 минут
Тамика, вообще ты правильно делаешь, на что ругается-то?
Покажи код. Такой?

1C
1
Элементы.Работы.ТекущаяСтрока = Объект.Работы[0].ПолучитьИдентификатор();

Добавлено через 25 секунд
быть может тч пустая?

0

Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

29.08.2017, 12:39

 [ТС]

5

GreenkA, не, я имела в виду под «другой ошибкой» — ошибка, которая уже не касается этого.

0

GreenkA

29.08.2017, 12:40

Не по теме:

Цитата
Сообщение от Тамика
Посмотреть сообщение

ошибка, которая уже не касается этого.

аа) ну ладно) будет новая тема?:D

0

Котовчанин

942 / 482 / 200

Регистрация: 16.02.2010

Сообщений: 3,338

Записей в блоге: 37

29.08.2017, 12:41

 [ТС]

7

Цитата
Сообщение от GreenkA
Посмотреть сообщение

аа) ну ладно) будет новая тема?

Сейчас чуток покопаюсь и создам, если ничего не выйдет

0

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.08.2017, 12:42

8

Цитата
Сообщение от Тамика
Посмотреть сообщение

Сейчас чуток покопаюсь и создам

как показывает практика — выжди минимум 3 минуты) велика вероятность, что ты сама все решишь

0

  1. Вот программа обработчик

    &НаКлиенте
    Процедура ТабличнаяЧасть1КоличествоПриИзменении(Элемент)
    СтрокаТабличнойЧасти=Элементы.ТабличнаяЧасть1.ТекущиеДанные;
    //при вызове этой функции появляется ошибка см.в.конце Элементы.ТабличнаяЧасть1.ТекущиеДанные.Сумма=РаботаСДокументами.ВычислениеСуммы(СтрокаТабличнойЧасти);
    КонецПроцедуры

    Серверная часть
    &НаСервере
    Функция ВычислениеСуммы(Элемент) Экспорт
    ЗначениеСуммы=Элемент.Количество*Элемент.Цена;
    Сообщить(ЗначениеСуммы);
    Возврат ЗначениеСуммы;
    КонецФункции

    Текст Ошибки:
    Ошибка отображения типов:
    Отсутствует отображение для типа «ДанныеФормыЭлементКоллекции»

    Кто знает, что не так пишите. Буду рад.

  2. Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    Дело в том, что ТекущуюСтроку из ТЗ нельзя передавать на сервер. (У типа «ДанныеФормыЭлементКоллекции» отсутствует свойство «Возможен обмен с сервером»). Для того чтобы передать строку на сервер ее надо выгрузить в структуру, передать на сервер эту структуру, с этой структурой сделать то что надо, и вернуть ее на клиент, и заполнить из нее ТЧ.

    В вашем же конкретном примере — на сервер можно вообще ничего не передавать. Можно ведь все на клиенте выполнить.

  3. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54
    {Обработка.медАРМПриёмкиТовара.Форма.Форма.Форма(1022)}: Ошибка при вызове метода контекста (ОткрытьФорму)
            ОткрытьФорму("Обработка.медАРМПриёмкиТовара.Форма.ВыборНоменклатуры",ПараметрыФормы,ЭтаФорма,,,, ОбработчикОповещения, Режим);
    по причине:
    Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
    по причине:
    Ошибка преобразования данных XDTO:
    Запись значения свойства 'cr':
        форма: Элемент
        имя: {http://v8.1c.ru/8.2/mngsrv/ws}cr
    по причине:
    Ошибка отображения типов:
    Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'

    Ребята всё понимаю, но не понимаю какую я ему коллекцию сую? Передаю Структуру.. На что может ругаться?

  4. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104
  5. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    ПараметрыФормы Структура Структура
    АдресТоваровВХранилище «e1cib/tempstorage/ed0e045f-6c9a-43b2-a363-086808153749» Строка
    ТоварыДокумента «e1cib/tempstorage/61c0f15a-394e-4551-ab4a-4fffd87c3d74» Строка

  6. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Ничего не понял. Попробуй тоже самое, только вместо своих параметров что-нибудь по-проще типа
    «Новый структура(«пар1″,»пар1″)».
    Если тут проблем не будет — смотри еще раз свой отбор, может там не просто строки?
    Если проблема сохранится — возможно еще в обработчике оповещения что-то.

  7. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    В ПараметрахФормы два значения, оба типа строка.. передаётся адрес на временное хранилище..
    В ОбработкеОповещения передается структура в структуре, во внутренней структуре один параметр, тоже адрес типа строка.

  8. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Ну поэкспериментируй:
    1. Убери нафиг свои параметры =)
    2. Убери нафиг свой обработчик оповещения =)

  9. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    Самое интересное что падает при завершение процедуры создания.

    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
       
        // Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест".
        Если Параметры.Свойство("АвтоТест") Тогда
            Возврат;
        КонецЕсли;
       
        ДополнительныеКолонкиНоменклатуры = ЗначениеНастроекПовтИсп.ПолучитьЗначениеКонстанты("ДополнительнаяКолонкаПриОтображенииНоменклатуры");
       
        ТаблицаТоваров.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресТоваровВХранилище));
        СкрытьКолонкуУпаковка = Параметры.СкрытьКолонкуУпаковка;
        ТоварыДокументов.Загрузить(ПолучитьИзВременногоХранилища(Параметры.ТоварыДокумента));   
        Если Параметры.Свойство("ПередаватьШтрихкод") Тогда
            ПередаватьШтрихкод = Параметры.ПередаватьШтрихкод;
        КонецЕсли;
       
        Если Параметры.Свойство("ОтображатьОстатки") Тогда
            Элементы.ТаблицаТоваровОстаток.Видимость = Истина;
        КонецЕсли;
       
        ЭтотОбъект.ТекущийЭлемент = Элементы.ТаблицаТоваров;
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    ХарактеристикиДокумента.Характеристика
                       |ПОМЕСТИТЬ ХарактеристикиДокумента
                       |ИЗ
                       |    &ХарактеристикиДокумента КАК ХарактеристикиДокумента
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    НайденныеХарактеристики.Характеристика
                       |ПОМЕСТИТЬ НайденныеХарактеристики
                       |ИЗ
                       |    &НайденныеХарактеристики КАК НайденныеХарактеристики
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ХарактеристикиДокумента.Характеристика
                       |ИЗ
                       |    ХарактеристикиДокумента КАК ХарактеристикиДокумента
                       |        ПОЛНОЕ СОЕДИНЕНИЕ НайденныеХарактеристики КАК НайденныеХарактеристики
                       |        ПО ХарактеристикиДокумента.Характеристика = НайденныеХарактеристики.Характеристика";
        Запрос.Параметры.Вставить("НайденныеХарактеристики",ТаблицаТоваров.Выгрузить());
        Запрос.Параметры.Вставить("ХарактеристикиДокумента",ТоварыДокументов.Выгрузить());
       
        Выборка = Запрос.Выполнить().Выбрать();
        Если Выборка.Количество()>0 Тогда
            Выборка.Следующий();
            Характеристика = Выборка.Характеристика;
            ПараметрыПоиска = Новый Структура;
            ПараметрыПоиска.Вставить("Характеристика",Характеристика);
            МассивСтрок = ЭтотОбъект.ТаблицаТоваров.НайтиСтроки(ПараметрыПоиска);
            ЭтотОбъект.Элементы.ТаблицаТоваров.Текущ1аяСтрока = МассивСтрок[0];
        КонецЕсли;   
       
    КонецПроцедуры
  10. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Это в каком случае?
    Попробуй просто форму открыть без всего — может она вообще не откроется =)

  11. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54
  12. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Неужели вот это работает:
    ЭтотОбъект.Элементы.ТаблицаТоваров.Текущ1аяСтрока = МассивСтрок[0];
    или «1» — это опечатка?
    Оставь свои параметры, но убери обработчик оповещения, что будет?

  13. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    Ошибка, уже исправил, сейчас попробую… Но параметр не мой, он был, я просто в него добавил еще одно значение, адрес временного хранилища.

    — Объединение сообщений, 22 дек 2015

    Переписал процедуру ПриСозданииНаСервере

        // Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест".
        Если Параметры.Свойство("АвтоТест") Тогда
            Возврат;
        КонецЕсли;
       
        ДополнительныеКолонкиНоменклатуры = ЗначениеНастроекПовтИсп.ПолучитьЗначениеКонстанты("ДополнительнаяКолонкаПриОтображенииНоменклатуры");
       
        ТаблицаТоваров.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресТоваровВХранилище));
        СкрытьКолонкуУпаковка = Параметры.СкрытьКолонкуУпаковка;
        Если Параметры.Свойство("ПередаватьШтрихкод") Тогда
            ПередаватьШтрихкод = Параметры.ПередаватьШтрихкод;
        КонецЕсли;
       
        Если Параметры.Свойство("ОтображатьОстатки") Тогда
            Элементы.ТаблицаТоваровОстаток.Видимость = Истина;
        КонецЕсли;
       
        ЭтотОбъект.ТекущийЭлемент = Элементы.ТаблицаТоваров;
        Если Параметры.Свойство("ТоварыДокумента") Тогда
        ТоварыДокументов.Загрузить(ПолучитьИзВременногоХранилища(Параметры.ТоварыДокумента));   
    
            Запрос = Новый Запрос;
            Запрос.Текст = "ВЫБРАТЬ
            |    ХарактеристикиДокумента.Характеристика
            |ПОМЕСТИТЬ ХарактеристикиДокумента
            |ИЗ
            |    &ХарактеристикиДокумента КАК ХарактеристикиДокумента
            |;
            |
            |////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ
            |    НайденныеХарактеристики.Характеристика
            |ПОМЕСТИТЬ НайденныеХарактеристики
            |ИЗ
            |    &НайденныеХарактеристики КАК НайденныеХарактеристики
            |;
            |
            |////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ
            |    ХарактеристикиДокумента.Характеристика
            |ИЗ
            |    ХарактеристикиДокумента КАК ХарактеристикиДокумента
            |        ПОЛНОЕ СОЕДИНЕНИЕ НайденныеХарактеристики КАК НайденныеХарактеристики
            |        ПО ХарактеристикиДокумента.Характеристика = НайденныеХарактеристики.Характеристика";
            Запрос.Параметры.Вставить("НайденныеХарактеристики",ТаблицаТоваров.Выгрузить());
            Запрос.Параметры.Вставить("ХарактеристикиДокумента",ТоварыДокументов.Выгрузить());
           
            Выборка = Запрос.Выполнить().Выбрать();
            Если Выборка.Количество()>0 Тогда
                Выборка.Следующий();
                Характеристика = Выборка.Характеристика;
                ПараметрыПоиска = Новый Структура;
                ПараметрыПоиска.Вставить("Характеристика",Характеристика);
                МассивСтрок = ЭтотОбъект.ТаблицаТоваров.НайтиСтроки(ПараметрыПоиска);
                ЭтотОбъект.Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0];
            КонецЕсли;   
        КонецЕсли;
       
    

    И закоментировал добавление в структуру ТоварыДокумента.. Работает.. т.е. проблема внутри условия получается?

    Мне кажется ему всё таки вот это не нравится ка кто?
    ЭтотОбъект.Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0];

    Последнее редактирование: 22 дек 2015

  14. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Если у вас «Элементы.ТаблицаТоваров» — это дин.список, то в тек. строку нужно передать ссылку, а если таблица формы — тогда идентификатор строки.
    У вас похоже массивСтрок[0]- это и есть то самое «ДанныеФормыЭлементКоллекции» на которое 1с и орет

  15. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    Респект и уважуха.. да ТаблицаТоваров это таблица формы.. а МассивСтрок это данные коллекции.

    Возникает вопрос как получить идентификатор…
    Т.е. необходимо следующее.. ТаблицаТоваров это список номенклатуры с характеристиками и есть ТЗ основной формы, где есть характеристика из этой таблицы.. на ней нужно позиционировать при открытии.

  16. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Значит нужно присвоить идентификатор.
    Можно глянуть в синтакс-помощник — там должно быть «ПолучитьИдентификатор»
    http://www.forum.mista.ru/topic.php?id=550120

  17. Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    ЭтотОбъект.Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор();
    Вот «Огонь».

  18. Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Ага! Еще «Огонь» есть — ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.Вывести();
    А у вас можно по-короче наверное: Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор();
    без «ЭтотОбъект»

Ошибка отображения типов: Отсутствует отображение для типа ‘ЭлементСпискаЗначений’

Описание ошибки:
Ошибка при программировании, конфигурировании кода в 1С 8:

Ошибка отображения типов:
Отсутствует отображение для типа ‘ЭлементСпискаЗначений’
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘v’:
форма: Элемент
имя: {http://v8.1c.ru/8.2/uobjects}v
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘value’:
форма: Элемент
имя: {http://v8.1c.ru/8.1/data/core}value

Найденные решения:

1C 8 Ошибка отображения типов: Отсутствует отображение для типа ЭлементСпискаЗначений,

Нажатие на изображении увеличит его
1C 8, Отсутствует отображение для типа ЭлементСпискаЗначений, по причине, ошибка передачи данных между клиентом и сервером, значение недопустимого типа

Возникла при написании кода индивидуальной конфигурации. Но, как оказалось, может подстерегать программиста из-за его невнимательности и при конфигурировании в других конфигурациях. Итак, в чем же причина возникновения данной ошибки. В управляемой форме был создан реквизит типа «СписокЗначений». При открытии формы по коду срабатывает обработчик заполнения этого списка значений. Т.е. в коде создается переменная с помощью конструктора «Новый СписокЗначений», значение которой потом и устанавливается реквизиту формы. Но, перед тем как это происходит, в коде список значений изменяется — в частности выполняется его дополнительная сортировка. Конечно, ошибка «Ошибка отображения типов: Отсутствует отображение для типа ‘ЭлементСпискаЗначений’» может возникнуть у Вас не только в такой ситуации. Сейчас разберемся в чем ее суть.

1С 8, Ошибка для типа ЭлементСпискаЗначений, передачи данных между клиентом и сервером, значение недопустимого типа, по причине, ошибка преобразования данных XDTO

Как было отмечено в этой частной задаче выполняется сортировка исходного заполненного списка значений. Но, т.к. в этой частной задаче не подходило использование метода «СортироватьПоЗначению(<Направление>)«, т.к. сортировка более сложная (по текстовым данным с разделителями порядка, содержащих разделитель «.», пример: 1.1, 2.2, 2.2.1, 2.2.2, 3.1, 3.2, 3.3.1, 3.3.2). Поэтому сортировка выполнялась программно с созданием новой переменной типа «СписокЗначений» и ее заполнением по данным исходного списка.

После сохранения кода и попытки проверки появилась ошибка, текст которой приведен в начале страницы. Анализ данных через предмет отладки неявно, но показал ошибку.

Нажатие на изображении увеличит его

1C 8, как устранить, исправить ошибку, ошибка преобразования данных XDTO, отсутствует отображение для типа ЭлементСпискаЗначений

Не смотря на то, что в методической информации «Синтакс-помощника» 1С 8 указано, что значение элемента списка значений может быть любым (произвольным), все-таки для случая использования в управляемой форме в качестве реквизита накладывается ограничение по типу. И нельзя в значение такого списка значений поместить «ЭлементСискаЗначений» другого списка значений.

1С 8, какие значения могут быть у списказначений, исключения для управляемой формы

Т.е. для моего случая использования списка значений в управляемой форме в качестве реквизита ошибка была в коде, где происходило заполнение значений нового списка по данным исходного при сортировке.

Нажатие на изображении увеличит его

Было выполнено исправление в коде для обращения к значениям и передачи их в качестве значений нового списка значений. 

Нажатие на изображении увеличит его
1С 8, в чем причина ошибки в форме, отсутствует отображение для типа Элемент списка значений, ошибка отображения типов

В данном случае значениями списка были значения примитивного тип «Строка», поэтому дальнейшая работа доработанного кода стала возможной. И это все-таки позволило реализовать задачу. Если у Вас будут другие типы, например ссылки, то продумывайте заранее, как будете упорядочить, возможно придется через другие универсальные объекты, например использование таблицы значений, и потом заполнять конечный список значений. Другие примитивные типы не проверялись, но предполагаю, что они так же подойдут для корректной работы в управляемой форме. в качестве значений списка. Поэтому учитывайте это, если столкнетесь с данной ошибкой при Вашем конфигурировании — подбирайте по возможности простой тип для значений списка.

Нажатие на изображении увеличит его
1С 8, в чем, причина ошибки, как устранить, Ошибка передачи данных между клиентом и сервером, отсутствует отображение для типа элемент списка значений

Таким образом на примере данной частной ситуации возникновения ошибки при конфигурировании в 1С 8 «Отсутствует отображение для типа ЭлементСпискаЗначений, по причине, ошибка передачи данных между клиентом и сервером, значение недопустимого типа» извлекаем вывод о том, что нужно быть внимательным и не заполнять значения объекта «Список значений» элементами другого списка значений. А передавать значения элемента списка значений, если одна переменная типа «СписокЗначений» заполняется за счет другой подобной.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

16-03-2022

Журавлев А.С.
(Сайт azhur-c.ru)

Данная ошибка возникает в тот момент, когда Вы пытаетесь вызвать серверный метод и передаете ему в качестве параметра управляемую форму.

Рассмотрим следующий модуль управляемой формы:

&НаСервере
Функция ТестВызоваСервера(Форма)

	Форма.ТолькоПросмотр = Истина;

КонецФункции // ТестВызоваСервера()

&НаКлиенте
Процедура ПокупательПриИзменении(Элемент)
	
	//попытка передачи переменной локального контекста на сервер
	ТестВызоваСервера(ЭтаФорма);
	
КонецПроцедуры

Дело в том, что в контексте модуля управляемой формы переменная ЭтаФорма доступна всегда (как на клиенте, так и на сервере) и дополнительно ее передавать не требуется (если только вы не вызываете процедуру или функцию, перед которой указана директива &НаСервереБезКонтекста). Правильным будет следующий код:

&НаСервере
Функция ТестВызоваСервера()

	ЭтаФорма.ТолькоПросмотр = Истина;	

КонецФункции // ТестВызоваСервера()

&НаКлиенте
Процедура ПокупательПриИзменении(Элемент)
	
	//вызов контекстной серверной функции
	ТестВызоваСервера();
	
КонецПроцедуры

Аналогичное замечание относится к серверным вызовам. Вы не можете передать содержимое переменной ЭтаФорма на сервер. Вы можете только запросить необходимую информацию на сервере и изменить форму в контексте клиента, либо реализовать это через серверный метод самой формы. Например, такой код работать не будет:

&НаКлиенте
Процедура ПокупательПриИзменении(Элемент)
	
	//попытка передачи переменной локального контекста на сервер
	ОбщийМодульСервер.Тест(ЭтаФорма);
	
КонецПроцедуры

Подумайте сами, чем можно заменить такой вызов

Сергей

Местный

Сообщений: 8
Баллов: 15
Регистрация: 26.06.2022

#10

0

28.06.2022 13:36:40

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = РаботаСоСпискамиДокументовКлиент.ПолучитьДанныеТекущейСтрокиСписка(
Элементы.Список, Элементы.Список.ТекущаяСтрока);

Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;

Если Поле = Элементы.Файлы Тогда
ОткрыватьЗакладкуФайлы=ПроверкаОткрытияЗаклФайлы(ЭтаФорма)
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуФайлы», ТекущиеДанные.Ссылка, ОткрыватьЗакладкуФайлы);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;

Если Поле = Элементы.ПодписанЭП Тогда
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуЭП», ТекущиеДанные.Ссылка, Истина);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;

Если Поле = Элементы.Задачи Тогда
ОткрытьФорму(«ОбщаяФорма.ПроцессыИЗадачи»,
Новый Структура(«Предмет», ТекущиеДанные.Ссылка),
ЭтаФорма);
Возврат;
КонецЕсли;

Если Поле = Элементы.ЕстьКатегории Тогда
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуКатегории», ТекущиеДанные.Ссылка, Истина);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;

Если Поле = Элементы.СостояниеКонтроля Тогда
КонтрольКлиент.ОбработкаКомандыКонтроль(ТекущиеДанные.Ссылка, ЭтаФорма);
Возврат;
КонецЕсли;

ПараметрыОткрытия = Новый Структура(«Ключ», ТекущиеДанные.Ссылка);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
КонецПроцедуры

Недавно столкнулся с проблемой открытия формы еще не записанного в БД документа, много возился с этим. Решил обобщить все найденное, может кому-то сэкономит время.

Итак вопрос №1: Как открыть форму еще не записанного документа (не заполнить на основании) ?

Ответ: Чтобы открыть форму нам нужно связать ее с ссылкой объекта, но объект еще не записан. Многие пытаются использовать метод УстановитьСсылкуНового() но это не прокатывает. После долгих чтений я сделал вот так:

&НаКлиенте
Процедура Команда(Команда)

Форма = ПолучитьФорму(«Документ.НашДокумент.ФормаОбъекта»);
ДанныеФормы = Форма.Объект; // Получаем объект формы в переменную
ЗаполнитьДокументНаСервере(ДанныеФормы); // Заполняем документ на сервере
КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); // копируем наш объект в объект формы и далее открываем ее
Форма.Открыть();

КонецПроцедуры

// Можно использовать безконтекстный вызов, оптимизируем передачу данных

&НаСервереБезКонтекста

Функция ЗаполнитьДокументНаСервере(ДанныеФормы);

Док = ДанныеФормыВЗначение(ДанныеФормы, Тип(«ДокументОбъект.НашДокумент»)); // Получаем объект из данных формы ИЛИ

Док = Документы.НашДокумент.СоздатьДокумент();

// Заполняем реквизиты объекта или другие действия ********

ЗначениеВДанныеФормы(Док,ДанныеФормы); // Кладем обратно в объект формы уже созданный документ

КонецФункции

2. Как открыть форму уже записанного документа?

Здесь есть два метода ОткрытьФорму() или ОткрытьЗначение(). В обоих случаях нужно передавать ссылку на записанный документ.

&НаКлиенте
Процедура Команда(Команда)

СсылкаОбъекта = СоздатьНаСервере();
//1.
ОткрытьФорму(«Документ.НашДокумент.Егоформа», Новый Стурктура(«Ключ», СсылкаОбъекта)); // Через параметры мы передаем ссылку документа

//2.

ОткрытьЗначение(СсылкаОбъекта);

КонецПроцедуры

&НаСервере
Функция ЗаполнитьДокументНаСервере()

// Используем метод создать

НовыйОбъект = Документы.НашДокумент.СоздатьДокумент();

 // Заполняем его 

НовыйОбъект.Записать(); // Обязательно записываем

Возврат НовыйОбъект.Ссылка; //Возвращаем ссылку

КонецФункции

На уникальность материла не претендую, сам только «начинающий» так что если что не так  — критикуйте!

выдает ошибку при вызове функции ТЗДополнительныеСведенияПриОкончанииРедактированияНаСервере(СтрокаКоллекции);  не могу понять почему, мне надо изменить данные регистра ДополнительныеСведения при изменения данных в таблице

  

&НаСервереБезКонтекста

Процедура ТЗДополнительныеСведенияПриОкончанииРедактированияНаСервере(ТекущаяСтрока)

    // Вставить содержимое обработчика.

    ТекСтрока =  ТекущаяСтрока;

    

    Если ТекСтрока.НаименованиеДопСведения <> Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка() Тогда                  

            НаборЗаписей = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();

            НаборЗаписей.Отбор.Объект.Установить(ТекСтрока.Начисление);

            НаборЗаписей.Отбор.Свойство.Установить(ТекСтрока.ДопСведение);  

            

            
            НоваяЗапись = НаборЗаписей.Добавить();                            

            НоваяЗапись.Объект  = ТекСтрока.Начисление;                       

            НоваяЗапись.Свойство = ТекСтрока.ДопСведение;                     

            НоваяЗапись.Значение = ТекСтрока.НаименованиеДопСведения;                 

            
            // Записать набор записей с замещением старого, соответствующего той же грануле

            
            НаборЗаписей.Записать();                                                   

            
    КонецЕсли;

КонецПроцедуры

&НаКлиенте

Процедура ТЗДополнительныеСведенияПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)    

    СтрокаКоллекции = ТЗДополнительныеСведения.НайтиПоИдентификатору(Элементы.ТЗДополнительныеСведения.ТекущаяСтрока);

    стр = СтрокаКоллекции.начисление;

    
    ТЗДополнительныеСведенияПриОкончанииРедактированияНаСервере(СтрокаКоллекции);  

    
КонецПроцедуры

Помощь в коде

Автор Резеда, 24 ноя 2019, 18:24

0 Пользователей и 1 гость просматривают эту тему.

Здравствуйте, изучаю 1с по книге Радченко. Создаю свою подсистему, чтобы лучше понять. Столкнулась с таким вопросом. (Подскажите правильно или нет выполняю код)
Есть документ «Пары» хочу чтобы при выборе преподавателя, забивались (подтягивались) все остальные и заполняли таблицу.

&НаКлиенте
Процедура ДисциплиныВидЗанятияПриИзменении(Элемент)
   ТекДанные=Элементы.ВидЗанятия.текущиеданные;
   ТекДанные.Преподаватель=ПолучитьЗначение(ТекДанные.Дисциплина);
   ДисциплиныВидЗанятияПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Функция ПолучитьЗначение(Предмет)
Возврат Предмет.Преподаватель;
конецФункции


Цитата: Резеда от 24 ноя 2019, 18:24
Здравствуйте, изучаю 1с по книге Радченко. Создаю свою подсистему, чтобы лучше понять. Столкнулась с таким вопросом. (Подскажите правильно или нет выполняю код)
Есть документ «Пары» хочу чтобы при выборе преподавателя, забивались (подтягивались) все остальные и заполняли таблицу.

&НаКлиенте
Процедура ДисциплиныВидЗанятияПриИзменении(Элемент)
   ТекДанные=Элементы.ВидЗанятия.текущиеданные;
   ТекДанные.Преподаватель=ПолучитьЗначение(ТекДанные.Дисциплина);
   ДисциплиныВидЗанятияПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Функция ПолучитьЗначение(Предмет)
Возврат Предмет.Преподаватель;
конецФункции

Как связаны преподаватель, дисциплина, вид занятий и семестр?
Это реквизиты одного справочника или разные справочники, или может регистры сведений?


Цитата: alexandr_ll от 25 ноя 2019, 05:34Это реквизиты одного справочника или разные справочники, или может регистры сведений?

Справочник «Преподаватели с реквизитами: Дисциплина, КоличествоЧасов,ВидКонтроля, Реквизиты табличной части:КоличествоЧасов, ВидКонтроля
Справочник «Дисциплины» с реквизитами: преподаватель, ВидКонтроля,КоличествоЧасов табл. части: КоличествоЧасов, ВидКонтроля.
Документ «Пары» с реквизитами:Дисциплина, Преподаватель,ВидЗанятия,Семестр, рекв. табл. части: Преподаватель, ВидЗанятия,КоличествоЧасов, ВидОценивания,Баллы,ДомашняяРабота,ОстатокЧасов.
Перечисления: ВидОценивания,Семестр,ВидЗанятия



Цитата: Резеда от 26 ноя 2019, 18:12

Цитата: alexandr_ll от 25 ноя 2019, 05:34Это реквизиты одного справочника или разные справочники, или может регистры сведений?

Справочник «Преподаватели с реквизитами: Дисциплина, КоличествоЧасов,ВидКонтроля, Реквизиты табличной части:КоличествоЧасов, ВидКонтроля
Справочник «Дисциплины» с реквизитами: преподаватель, ВидКонтроля,КоличествоЧасов табл. части: КоличествоЧасов, ВидКонтроля.
Документ «Пары» с реквизитами:Дисциплина, Преподаватель,ВидЗанятия,Семестр, рекв. табл. части: Преподаватель, ВидЗанятия,КоличествоЧасов, ВидОценивания,Баллы,ДомашняяРабота,ОстатокЧасов.
Перечисления: ВидОценивания,Семестр,ВидЗанятия

В справочнике «Преподаватели» не нужны реквизиты Дисциплина, КоличествоЧасов,ВидКонтроля, поскольку у одного преподавателя может быть несколько дисциплин и количество часов в разных семестрах разное. Эти сведения должны храниться в периодическом регистре сведений.



Можно и на справочниках построить, как это у Радченко. Там у него всё в пределах визуального конструирования, код и не нужен. Можно более гибко , как и сказано выше  на регистре сведений.
Потом запросом выбрать по условию данные строки регистра и залить ее в строку табличной части документа. Единственное, ещё накладывается ограничение в таком случае, что один преподаватель может вести только один предмет, ну или как то это фильтровать при отборе.

//Часть обработки

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

Запрос.УстановитьПараметр("Преподаватель", Преподаватель);

РезультатЗапроса = Запрос.Выполнить();

// Далее переносим данные с строку докумета.


Да… Насоветовал я тут… Решил вот сам, как начинающий замутить решение  этой задачки. :D Чёт не получается :D
При таком коде вылетает ошибка.:dfbbdrfb: Видимо из-за того, что я пытаюсь как-то неправильно в параметре передать строку табличной части на Сервер. Вообще возможен такой сценарий реализации?

&НаСервере

Процедура ТабЧастьПреподавательПриИзмененииНаСервере(СтрокаТабличнойЧасти, ДанныеФормы)

Преподаватель = ДанныеФормы;

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

Запрос.УстановитьПараметр("Преподаватель", Преподаватель);

РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(СтрокаТабличнойЧасти,Выборка)
КонецЦикла;

КонецПроцедуры

&НаКлиенте
Процедура ТабЧастьПреподавательПриИзменении(Элемент)

СтрокаТабличнойЧасти = Элементы.ТабЧасть.ТекущиеДанные;

ДанныеФормы = Элемент.ТекстРедактирования;

    ТабЧастьПреподавательПриИзмененииНаСервере(СтрокаТабличнойЧасти, ДанныеФормы);

КонецПроцедуры

Ошибка:

{Документ.РасписаниеНаДень.Форма.ФормаДокумента.Форма(38)}: Ошибка при вызове метода контекста (ТабЧастьПреподавательПриИзмененииНаСервере)
    ТабЧастьПреподавательПриИзмененииНаСервере(СтрокаТабличнойЧасти, ДанныеФормы);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
форма: Элемент
имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'


попробуйте так


&НаКлиенте
Процедура ТабЧастьПреподавательПриИзменении(Элемент)

        СтрокаТабличнойЧасти = Элементы.ТабЧасть.ТекущиеДанные;

        //ДанныеФормы = Элемент.ТекстРедактирования;

        лкДанныеФормы = СтрокаТабличнойЧасти.Преподаватель;
    ТабЧастьПреподавательПриИзмененииНаСервере(СтрокаТабличнойЧасти, лкДанныеФормы);

     КонецПроцедуры

если помогло нажмите: Спасибо!


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

Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'
Дело скорее всего в этом:

СтрокаТабличнойЧасти = Элементы.ТабЧасть.ТекущиеДанные;
Так как при наличии этого кода начинается свистопляска с ошибкой.

Я что пытаюсь сделать? Передать строку табличной части, и что-то делаю неправильно. Возможно формат данных (ТипДанных) не тот. :dfbbdrfb:
Хотелось бы знать вообще: можно ли передать текущую строку ТЧ с Клиента на Сервер и заполнить на Сервере с помощью функции ЗаполнитьЗначенияСвойств или это совсем неправильно?

***************Вторая часть Марлезонского балета*************************
Написал другой код. С выгрузкой ТЗ… Только так тоже наверное неправильно?! И он почти работает ))) Данные автоматом подтягиваются в строку, но… Создаваю следующую строку в этом документе не получается. Данные вставляются и перемещаются на первую строчку, заменяя ранее введённые. Не пинайте сильно, записал как смог с экрана суть происходящего:
https://cloud.mail.ru/public/23dy/4Q1RraQdM
Код:


&НаСервере

Процедура ТабЧастьПреподавательПриИзмененииНаСервере(ДанныеФормы)

Преподаватель = ДанныеФормы;

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

Запрос.УстановитьПараметр("Преподаватель", Преподаватель);

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выгрузить();
Объект.ТабЧасть.Загрузить(Выборка);

КонецПроцедуры

&НаКлиенте
Процедура ТабЧастьПреподавательПриИзменении(Элемент)

ДанныеФормы = Элемент.ТекстРедактирования;
 
       ТабЧастьПреподавательПриИзмененииНаСервере(ДанныеФормы);

КонецПроцедуры

Хочется уже до ума довести, раз занялся …


Ошибка отображения типов

Автор mahaidor, 17 апр 2014, 17:22

0 Пользователей и 1 гость просматривают эту тему.

Здравствуйте.Платформа 1с 8.3.437 . Выгружаю результат запроса в таблицу значений, в ответ возникает ошибка отображение типов: отсутствует отображение типа ValueTable.

&НаКлиенте
Процедура Ант_Вес_РостПриИзменении(Элемент)
Возраст=СТрока(Объект.Возраст);
Пол=Объект.Пол;
//обращение к табличной чати
СтрТабЧ=Элементы.Ант_Вес_Рост.ТекущиеДанные;
СтрокаВыборки=ВыборРезультатаЗапросаРоста(Возраст,Пол);

//СтрТабЧ.ОценкаРоста=ВыборРезультатаЗапроса(Возраст,Пол);

КонецПроцедуры

&НаКлиенте
Функция ВыборРезультатаЗапросаРоста(Возраст,Пол)
Рез=ВыборСтрокиКритериевРоста(Возраст,Пол);
Возврат Рез;
КонецФункции

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

    КонецФункции


Да действительно нельзя передавать таблицу значений с сервера на клиент. Мутабельные переменные не передаются между серверным и клиентским контекстом. Попробуйте максимально перенести логику выполнения на сервер, а  на клиенте получайте уже готовый результат.

Так же можно использовать временное хранилище для передачи таких значений.


Цитата: MuI_I_Ika от 17 апр 2014, 19:17
Да действительно нельзя передавать таблицу значений с сервера на клиент. Мутабельные переменные не передаются между серверным и клиентским контекстом. Попробуйте максимально перенести логику выполнения на сервер, а  на клиенте получайте уже готовый результат.

Так же можно использовать временное хранилище для передачи таких значений.

То есть вы имеете ввиду, что можно использовать объект «Хранилище значений» для передачи таблицы значений?


Не ХранилищеЗначений, а временное хранилище — серверный объект, как раз применяющийся для передачи данных с сервера на клиент. Поищите примеры, как в управляемом приложении реализован подбор товаров.

Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


Про временные хранилища узнал, но решил их не использовать, просто обработал таблицу значений в функции, выполняемой в контексте сервера.

&НаКлиенте
Процедура Ант_Вес_РостПриИзменении(Элемент)
Возраст=СТрока(Объект.Возраст);
Пол=Объект.Пол;
//обращение к табличной чати
СтрТабЧ=Элементы.Ант_Вес_Рост.ТекущиеДанные;
Рост=СтрТабЧ.Рост;
СтрТабЧ.ОценкаРоста=ВыборКритерияРоста(Возраст,Пол,Рост);
КонецПроцедуры

&НаСервере
Функция  ВыборКритерияРоста(Возраст,Пол,Рост)
//Запрос на получение строки критериев роста согласно полу и возрасту
Запрос=Новый Запрос;//создаем новый запрос
Запрос.Текст=      //вводим содержание запроса
"ВЫБРАТЬ             
| КритерийРоста.Р_1,
| КритерийРоста.Р_2,
| КритерийРоста.Р_3,
| КритерийРоста.Р_4,
| КритерийРоста.Р_5,
| КритерийРоста.Р_6
| ИЗ Справочник.ТаблицаРоста КАК КритерийРоста
|ГДЕ КритерийРоста.Наименование=&Возраст и КритерийРоста.Пол=&Пол";
Запрос.УстановитьПараметр("Возраст",Возраст);//вводим в запрос значениие возраста
Запрос.УстановитьПараметр("Пол",Пол);  //вводим в запрос значениие пола
     РезультатЗапроса = Запрос.Выполнить(); //выполениеие запроса
//обработка результатов запроса
ТблЗн=РезультатЗапроса.Выгрузить();//выгружаем результаты запроса в таблицу значений для обработки в ней данных
Для Каждого СтрокаТблЗн из ТблЗн Цикл //запускаем цмкл обработки данных в таблице значений
//определение критерия очень низкого роста
Если СтрокаТблЗн.Р_1>Рост Тогда КритерийРоста=Перечисления.Критерии_Рост_Вес.Очень_низкий; КонецЕсли;
  //определение критерия низкого роста
Если ((СтрокаТблЗн.Р_1=Рост) или (СтрокаТблЗн.Р_1<Рост))
    И (СтрокаТблЗн.Р_2>Рост) Тогда КритерийРоста=Перечисления.Критерии_Рост_Вес.Низкий; КонецЕсли;
  //определение критерия  роста ниже среднего
Если ((СтрокаТблЗн.Р_2=Рост) или (СтрокаТблЗн.Р_2<Рост))
И (СтрокаТблЗн.Р_3>Рост) Тогда КритерийРоста=Перечисления.Критерии_Рост_Вес.Ниже_Среднего; КонецЕсли;
  //определение критерия среднего роста
Если ((СтрокаТблЗн.Р_3=Рост) или (СтрокаТблЗн.Р_3<Рост))
И (СтрокаТблЗн.Р_4>Рост) Тогда КритерийРоста=Перечисления.Критерии_Рост_Вес.Средний; КонецЕсли;
    //определение критерия  роста выше среднего
Если ((СтрокаТблЗн.Р_4=Рост) или (СтрокаТблЗн.Р_4<Рост))
И (СтрокаТблЗн.Р_5>Рост) Тогда КритерийРоста=Перечисления.Критерии_Рост_Вес.Выше_Среднего; КонецЕсли;
     //определение критерия высокого роста
Если ((СтрокаТблЗн.Р_5=Рост) или (СтрокаТблЗн.Р_5<Рост))
И ((СтрокаТблЗн.Р_6>Рост)или (СтрокаТблЗн.Р_6=Рост)) Тогда КритерийРоста=Перечисления.Критерии_Рост_Вес.Высокий; КонецЕсли;
     //определение критерия очень высокого роста
Если (СтрокаТблЗн.Р_6<Рост)  Тогда КритерийРоста=Перечисления.Критерии_Рост_Вес.Очень_Высокий; КонецЕсли;
КонецЦикла;
  Возврат  КритерийРоста;
КонецФункции


Вопрос решен, всем спасибо.


  • Ошибка отображения типов отсутствует отображение для типа выборкаизрезультатазапроса
  • Ошибка отображения типов отсутствует отображение для типа xbase
  • Ошибка отображения типов отсутствует отображение для типа comобъект
  • Ошибка отображения пространства имен отсутствует отображение для префикса
  • Ошибка отображения оверлейной программы steam heroes and generals