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

Классика: Ошибка отображения типов: Отсутствует отображение для типа

Я

  

TrueBuild

26.02.22 — 00:00

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

https://disk.yandex.ru/i/bTk0282HaaGC2Q

https://disk.yandex.ru/i/Y2undFzJ11HVSQ

Получаю ошибку:

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

Отсутствует отображение для типа ‘{http://v8.1c.ru/8.1/data/core}ValueTable’

Не могу понять, что не так?

Причем процедура ПриСозданииНаСервере() открываемой формы отрабатывает без ошибок. Ошибка возникает, когда вызов возвращается в ОткрытьФорму().

Подскажите, что делаю не так, в чем ошибка?

  

vicof

1 — 26.02.22 — 00:12

А 1ска говорит, что передаешь

  

МихаилМ

2 — 26.02.22 — 00:15

(0) Почитайте раздел рекомендации правил форума.

  

TrueBuild

3 — 26.02.22 — 00:34

(1) Поэтому и не понимаю, где ошибка. Вижу, что говорит, но так же вижу и в отладке, что я передаю — см. 2 скриншот, там ТЗ нет, только ссылки и простые типы.

(2) Если вы про поиск, то, естественно, им пользовался, ответа на свой вопрос не нашел.

  

H A D G E H O G s

4 — 26.02.22 — 00:50

(0) Ты ТаблицуЗначений в каком то из параметров возвращаешь с сервера. Скинь конфигу

  

TrueBuild

5 — 26.02.22 — 01:14

(4) По завершению процедуры ПриСозданииНаСервере, когда вызов возвращается обратно на клиент, в параметрах так же нет никакой ТЗ, так же только ссылки и простые типы:

https://disk.yandex.ru/i/qezDhmDrPg1Mjg

  

H A D G E H O G s

6 — 26.02.22 — 02:33

(5) Скинь Cf на liveups@yandex.ru

  

pechkin

7 — 26.02.22 — 07:30

Тз это не реквизит формы?

  

МимохожийОднако

8 — 26.02.22 — 07:59

Вместо ТЗ надо передавать массив.

  

SuperMario

9 — 26.02.22 — 09:11

>> Причем процедура ПриСозданииНаСервере() открываемой формы отрабатывает без ошибок. Ошибка возникает, когда вызов возвращается в ОткрытьФорму()

Значит скрины не актуальны. Вы нас в заблуждение ими вводите.

«Курите» код по всем событиям в открываемой форме , начина с ПриСозданииНаСервере()

  

SuperMario

10 — 26.02.22 — 09:12

Вы с сервера на клиент в уже откываемой форме что-то универсальное передаете.

  

TrueBuild

11 — 26.02.22 — 09:31

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

Ввело в заблуждение то, что исключение вызывалось после вызова ОткрытьФорму(), а само создание формы (ПриСозданииНаСервере) отрабатывало без ошибок.

  

ДедМорроз

12 — 26.02.22 — 14:24

ТаблицуЗначений передать с сервера на клиента нельзя.

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

  

acht

13 — 26.02.22 — 16:07

(12) > и с ухищрениями в тонком

Веб клиент — достаточно тонкий?

  

ДедМорроз

14 — 26.02.22 — 19:56

Есть несколько видов клиентов:

Толстый клиент,

Тонкий клиент,

Web-клиент,

Мобильный клиент.

В последних двух никакого намека на таблицу значений,так как ее там никогда не было.

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

Автор 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<Рост)  Тогда КритерийРоста=Перечисления.Критерии_Рост_Вес.Очень_Высокий; КонецЕсли;
КонецЦикла;
  Возврат  КритерийРоста;
КонецФункции


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


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

Описание ошибки:
Ошибка при программировании, конфигурировании кода в 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)

RUBYX

0 / 0 / 0

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

Сообщений: 39

1

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

10.05.2022, 09:53. Показов 1068. Ответов 5

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


Еще раз всем здравствуйте! Когда пытаюсь обменяться данными между мобильной и основной центральной базой, почему то выходит ошибка отображения типов: Отсутствует отображение для типа ‘ТаблицаЗначений'{Справочник.Пьесы.Форма.ФормаСпис ка.Форма}. Данные появляются в центральной базе после добавления данных в мобильной базе, но вот ошибка меня смущает

Сам код вот (Мобильная платформа)

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
 &НаСервере Процедура ПолучитьПьесы()     Попытка         HTTPСоединение=Новый HTTPСоединение("192.168.43.241",,,,,30);           HTTPЗапрос=Новый HTTPЗапрос("/CenterMaxServer/hs/HTTPEx");           HTTPЗапрос.Заголовки.Вставить("Content-Type","text/html; charset=utf-8;");         ОтветСервера=HTTPСоединение.Получить(HTTPЗапрос);         Если ОтветСервера.КодСостояния=200 Тогда             ДанныеСервера=Десериализовать(ОтветСервера.ПолучитьТелоКакСтроку("UTF8"));               Для Каждого СтрокаСервер Из ДанныеСервера Цикл                 Пьеса=Справочники.Пьесы.НайтиПоНаименованию(СтрокаСервер.Наименование);                 Если Пьеса.Пустая() Тогда                     Пьеса=Справочники.Пьесы.СоздатьЭлемент();                 Пьеса.Наименование=СтрокаСервер.Наименование;              Иначе                                                               Пьеса=Пьеса.ПолучитьОбъект();                             КонецЕсли;                 Пьеса.Записать();                             КонецЦикла;         Иначе             Попытка                 Сообщить(Десериализовать(ОтветСервера.ПолучитьТелоКакСтроку("UTF8")));             Исключение                 Сообщить(ОтветСервера.ПолучитьТелоКакСтроку("UTF8"));                 КонецПопытки;             КонецЕсли;     Исключение             Сообщить("Возникла проблема с интернетом");     КонецПопытки; КонецПроцедуры    &НаСервере Функция Сериализовать(ТелоJSON)     ЗаписьJSON=Новый ЗаписьJSON;     ЗаписьJSON.УстановитьСтроку();     СжатыйОбъект=Новый ХранилищеЗначения(ТелоJSON, Новый СжатиеДанных(9));     СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, СжатыйОБъект);     Возврат СтрЗаменить(ЗаписьJSON.Закрыть(),"#","_РЕШЕТКА_"); КОнецФункцИИ    &НаСервере Функция Десериализовать(СтрокаJSON)     ЧтениеJSON=Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(СтрЗаменить(СтрокаJSON,"_РЕШЕТКА_","#")); СЖатыйОбъект=СериализаторXDTO.ПрочитатьJSON(ЧтениеJSON, Тип("ХранилищеЗначения")); ЧтениеJSON.Закрыть(); Возврат СжатыйОбъект.Получить(); КОнецФУНКциИ   &НаКлиенте Процедура Обновить(Команда)     ПолучитьПьесы(); КонецПроцедуры    &НаСервере Функция ПолучитьРезультатВБазе()     Запрос = Новый Запрос;     Запрос.Текст =         "ВЫБРАТЬ         |   Пьесы.Наименование КАК Наименование         |ИЗ         |   Справочник.Пьесы КАК Пьесы";     СтрТела = Запрос.Выполнить().Выгрузить();       Попытка         HTTPСоединение=Новый HTTPСоединение("192.168.43.241",,,,,30);           HTTPЗапрос=Новый HTTPЗапрос("/CenterMaxServer/hs/HTTPEx/plays");           HTTPЗапрос.Заголовки.Вставить("Content-Type","text/html; charset=utf-8;");           HTTPЗапрос.УстановитьТелоИзСтроки(Сериализовать(СтрТела));         ОтветСервера=HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);         Если ОтветСервера.КодСостояния=200 Тогда             Возврат Десериализовать(ОтветСервера.ПолучитьТелоКакСтроку("UTF8"));               Иначе             Попытка                 Сообщить(Десериализовать(ОтветСервера.ПолучитьТелоКакСтроку("UTF8")));             Исключение                 Сообщить(ОтветСервера.ПолучитьТелоКакСтроку("UTF8"));                 КонецПопытки;             КонецЕсли;     Исключение             Сообщить("Возникла проблема с интернетом");         КонецПопытки;           КонецФункции             &НаКлиенте         Процедура ОтправитьДанные(Команда)             ПолучитьРезультатВБазе();         КонецПроцедуры

Если нужна дополнительная информация могу потом прикрепить или выгрузку обеих баз дать. Заранее спасибо

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

260 / 216 / 94

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

Сообщений: 1,334

10.05.2022, 15:52

2

Лучший ответ Сообщение было отмечено RUBYX как решение

Решение

ПолучитьРезультатВБазе() почему это функция? Значение возврата то на клиенте нигде не используется
Если ОтветСервера.КодСостояния=200 Тогда
Возврат Десериализовать(ОтветСервера.ПолучитьТелоКакСтроку («UTF8»));
Вот тут возможно летит мутабельное значение .

1

0 / 0 / 0

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

Сообщений: 39

10.05.2022, 18:29

 [ТС]

3

Вроде когда я писал «процедура», то мне ошибку выдавало, что нельзя использовать в процедуре или что-то типо такого, да и мы это по инструкционке делаем)

Добавлено через 17 минут
Кстати спасибо, я просто удалил эту строку и все работает как надо!)

0

260 / 216 / 94

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

Сообщений: 1,334

10.05.2022, 18:51

4

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

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

Верно.Процедура не может возвращать значение.

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

Кстати спасибо, я просто удалил эту строку и все работает как надо!)

Ну возможно оно где-то и должно использоваться.Тут вариант что результат должен возвращаться в процедуру с директивой «НаСервере» и обрабатываться,и предаваться на клиент в виде «простого типа».

1

0 / 0 / 0

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

Сообщений: 39

10.05.2022, 19:04

 [ТС]

6

Всем спасибо еще раз!

0

 +2 

Распечатать

Как получить и отправить почту? (ИнтернетПочта, ИнтернетПочтовыйПрофиль, ИнтернетПочтовоеСообщение)

Отправка

Код 1C v 8.2 УП

 // отправка почтового сообщения...
Профиль = новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.yandex.ru";
Профиль.ПользовательSMTP = "111";
Профиль.ПарольSMTP = "222222"; //
ПРофиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;

Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Отправитель = "121@yandex.ru";
Сообщение.Тема = ""+ПрефиксФилиала;
Сообщение.Получатели.Добавить("12321@yandex.ru");
Сообщение.Тексты.Добавить(ТекстПисьма);
Сообщение.Вложения.Добавить(ИмяВременногоZiPфайла);

Почта = Новый ИнтернетПочта;
Попытка
Состояние("Отправка почтового сообщения...");
Почта.Подключиться(Профиль);
Почта.Послать(Сообщение);
Предупреждение("Сообщения успешно отправлены!");
Исключение
Сообщить("Ошибка соединения с сервером.",СтатусСообщения.ОченьВажное);
Сообщить(""+ОписаниеОшибки());
КонецПопытки;

Получение

Код 1C v 8.2 УП

 Профиль = новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераPOP3 = "pop3.yandex.ru";
Профиль.Пользователь = "121";
Профиль.Пароль = "12321";
ПРофиль.АутентификацияPOP3 = СпособPOP3Аутентификации.Обычная;

Попытка
Предупреждение("Попытка подключения к серверу почты "+Профиль.АдресСервераPOP3);
Состояние("Подключение к серверу "+Профиль.АдресСервераPOP3);
Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);

МассивСообщений = Новый Массив;
Предупреждение("Чтение почтовых сообщений");
Состояние("Чтение почтовых сообщений...");
МассивСообщений = Почта.Выбрать(Ложь); // ЛОжь - письма с сервера не удаляются...
Исключение
Предупреждение("Ошибка подключения к серверу ","Остановить");
Предупреждение(""+ОписаниеОшибки(),"Остановить");
Сообщить("Ошибка подключения к серверу!");
Сообщить(""+ОписаниеОшибки());
Возврат;
КонецПопытки;

Если МассивСообщений.Количество() = 0 Тогда
Предупреждение("В почтовом ящике нет сообщений. Прерываем работу.");
Сообщить("Почтовый ящик пуст");
ПолученныеПисьма.Очистить();
Возврат;
КонецЕсли;
ОтобразитьПочтовыеПисьма();
КонецПроцедуры

Процедура ОтобразитьПочтовыеПисьма()
ПолученныеПисьма.Очистить();
Если МассивСообщений.Количество() = 0 Тогда
Возврат; // почтовых сообщений нету.
КонецЕсли;

Предупреждение("Начало отображения сообщений в обработке");
МассивСообщенийОбмена = новый Массив;

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

Сергей

Местный

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

#10

0

28.06.2022 13:36:40

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. При передаче результата запроса функции через Возврат в Клиент, выходит ошибка «Отсутствует отображение для типа ‘ВыборкаИзРезультатаЗапроса‘».

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

    На клиенте:

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

    НаСервере

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

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

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Почитайте про Выбрать() и про его область видимости — На клиенте, На сервере…

  3. А почему точно в таких же запросах из клиента в сервер все работает? Разница только в другой таблице.

  4. Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Потому что:
    РезультатЗапроса (QueryResult)
    Выбрать (Select)
    Доступность:
    Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

    ВыборкаИзРезультатаЗапроса (QueryResultSelection)
    Доступность:
    Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

  5. Одинаковая ошибка как из Тонкого клиента, так из Толстого.

  6. Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    А где вы параметры запросу задаете ? Вернее их значения ?

    — Объединение сообщений, 2 июн 2016

    А, увидел

    — Объединение сообщений, 2 июн 2016

    Отладчиком проходились по серверной функции ? Попадает туда ?

  7. По серверной ходил. Ответ по запросу есть. Но при передаче в клиент путем Возврат, выходит ошибка.
    Перед этим киврялся и пытался передать значения на другую форму. Начала выходить ошибка. Потом эту Другую форму удалил……но результат с ошибкой сохранился.
    Могло это как-то повлиять?

  8. Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Вроде как результат запроса на клиента нельзя передать, обрабатывайте на сервере все.

Классика: Ошибка отображения типов: Отсутствует отображение для типа

Я
   TrueBuild

26.02.22 — 00:00

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

https://disk.yandex.ru/i/bTk0282HaaGC2Q

https://disk.yandex.ru/i/Y2undFzJ11HVSQ

Получаю ошибку:

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

Отсутствует отображение для типа ‘{http://v8.1c.ru/8.1/data/core}ValueTable’

Не могу понять, что не так?

Причем процедура ПриСозданииНаСервере() открываемой формы отрабатывает без ошибок. Ошибка возникает, когда вызов возвращается в ОткрытьФорму().

Подскажите, что делаю не так, в чем ошибка?

   vicof

1 — 26.02.22 — 00:12

А 1ска говорит, что передаешь

   МихаилМ

2 — 26.02.22 — 00:15

(0) Почитайте раздел рекомендации правил форума.

   TrueBuild

3 — 26.02.22 — 00:34

(1) Поэтому и не понимаю, где ошибка. Вижу, что говорит, но так же вижу и в отладке, что я передаю — см. 2 скриншот, там ТЗ нет, только ссылки и простые типы.

(2) Если вы про поиск, то, естественно, им пользовался, ответа на свой вопрос не нашел.

   H A D G E H O G s

4 — 26.02.22 — 00:50

(0) Ты ТаблицуЗначений в каком то из параметров возвращаешь с сервера. Скинь конфигу

   TrueBuild

5 — 26.02.22 — 01:14

(4) По завершению процедуры ПриСозданииНаСервере, когда вызов возвращается обратно на клиент, в параметрах так же нет никакой ТЗ, так же только ссылки и простые типы:

https://disk.yandex.ru/i/qezDhmDrPg1Mjg

   H A D G E H O G s

6 — 26.02.22 — 02:33

(5) Скинь Cf на liveups@yandex.ru

   pechkin

7 — 26.02.22 — 07:30

Тз это не реквизит формы?

   МимохожийОднако

8 — 26.02.22 — 07:59

Вместо ТЗ надо передавать массив.

   SuperMario

9 — 26.02.22 — 09:11

>> Причем процедура ПриСозданииНаСервере() открываемой формы отрабатывает без ошибок. Ошибка возникает, когда вызов возвращается в ОткрытьФорму()

Значит скрины не актуальны. Вы нас в заблуждение ими вводите.

«Курите» код по всем событиям в открываемой форме , начина с ПриСозданииНаСервере()

   SuperMario

10 — 26.02.22 — 09:12

Вы с сервера на клиент в уже откываемой форме что-то универсальное передаете.

   TrueBuild

11 — 26.02.22 — 09:31

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

Ввело в заблуждение то, что исключение вызывалось после вызова ОткрытьФорму(), а само создание формы (ПриСозданииНаСервере) отрабатывало без ошибок.

   ДедМорроз

12 — 26.02.22 — 14:24

ТаблицуЗначений передать с сервера на клиента нельзя.

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

   acht

13 — 26.02.22 — 16:07

(12) > и с ухищрениями в тонком

Веб клиент — достаточно тонкий?

  

ДедМорроз

14 — 26.02.22 — 19:56

Есть несколько видов клиентов:

Толстый клиент,

Тонкий клиент,

Web-клиент,

Мобильный клиент.

В последних двух никакого намека на таблицу значений,так как ее там никогда не было.

Shrek_yar

06.12.11 — 17:51

Здравствуйте, есть функция на сервере , она возвраша5ет переменую на клиент с типом «ТаблицаЗначений»

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

Отсутствует отображение для типа ‘{http://v8.1c.ru/8.1/data/core}ValueTable’,

я как понял он не может передать данный тип переменной обраьно на клиент, как с этим бороться и как передать результат фунции на клиент обратно если у нее тип ТаблицаЗначений

Shrek_yar

1 — 06.12.11 — 17:53

заранее спсибо))

GROOVY

2 — 06.12.11 — 17:55

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

YF

3 — 06.12.11 — 17:55

(0) А как передаешь?

GROOVY

4 — 06.12.11 — 17:56

Используйте временное хранилище. Поиск по форуму поможет.

YF

5 — 06.12.11 — 17:57

(4) Т.е. если создать ТЗ на клиенте, а потом передать на сервер для заполнения — не получится?

Shrek_yar

6 — 06.12.11 — 17:58

(3) в плане как ??

Shrek_yar

7 — 06.12.11 — 17:58

Возврат Сп;  // сп — таблица значений

YF

8 — 06.12.11 — 17:59

(6) Да не, я ступил … зато веточку поднял

GLazNik

9 — 06.12.11 — 17:59

ТаблицаЗначений. Доступность: Сервер, толстый клиент, внешнее соединение.

Если клиент тонкий или веб, то использовать ТЗ нельзя.

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

Shrek_yar

10 — 06.12.11 — 18:00

самое страное на другом компе работает, такая обработка и на той же конфе _)))))))))))))))))))))

Shrek_yar

11 — 06.12.11 — 18:00

и запускается в тонком клиенте))

БибиГон

12 — 06.12.11 — 18:01

(10) тогда почисти кеш )

Shrek_yar

13 — 06.12.11 — 18:01

(12) кеш то тут причем? мож я что не понимаю

Shrek_yar

14 — 06.12.11 — 18:02

аспирин на все лекарство ?? )))

БибиГон

15 — 06.12.11 — 18:03

а как у тебя работает то что не должно работать? ))

Живой Ископаемый

16 — 06.12.11 — 18:03

2(14) нет, это как раз от загадочных случаев когда одно и тоже на другом компе работает

GROOVY

17 — 06.12.11 — 18:04

(9) На клиенте использовать ТЗ можно.

GROOVY

18 — 06.12.11 — 18:05

Shrek_yar

19 — 06.12.11 — 18:05

(16)случай и в правду загадочный))

Shrek_yar

20 — 06.12.11 — 18:07

что мне тоже через табличную часть делать))?

GLazNik

21 — 06.12.11 — 18:07

(10) вполне возможно, ибо «Возможен обмен с сервером», но тогда

(11) таки клиент тонкий

(17) тогда СП меня обманывает:

«Доступность:

Сервер, толстый клиент, внешнее соединение.

Возможен обмен с сервером. Сериализуется. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/core}. Имя типа XDTO: ValueTable»

Shrek_yar

22 — 06.12.11 — 18:07

сначало в нее , потом на клиент?

Shrek_yar

23 — 06.12.11 — 18:08

(21) тонкий, правда запуск стоит автоматически выбирать, но по интерфейсу фидно что в тонком вариенте запускается

БибиГон

24 — 06.12.11 — 18:09

(10) кс тати , а может платформы разные? )

GROOVY

25 — 06.12.11 — 18:10

(21) ТЗ может быть реквизитом формы. В этом случае работать с ней на клиенте можно.

Программно создать объект на клиенте нельзя.

БибиГон

26 — 06.12.11 — 18:10

(23) в смысле видно по нтерфейсу? на глаз определяешь чтоли? )

GLazNik

27 — 06.12.11 — 18:10

(22) а начнем сначала, а зачем ТЗ на клиенте?

(23) лично я не могу раличать интерфейсы тонкого и толстого клиента

GROOVY

28 — 06.12.11 — 18:11

(23) Толстый клиент в режиме управляемого приложения выглядит так же как и тонкий.

GLazNik

29 — 06.12.11 — 18:11

(25) Это верно, но на клиенте тип уже не таблица значений, а иной. Точно не помню.

Shrek_yar

30 — 06.12.11 — 18:12

(26) на глаз, там же сразу видны отличие, обычного от управляемого

Shrek_yar

31 — 06.12.11 — 18:12

или я не прав?

Shrek_yar

32 — 06.12.11 — 18:12

не прав)) все извиняюсь за безграмотность

GLazNik

33 — 06.12.11 — 18:13

(30) обычного от управляемого видно, а тонкий от толстого нет

GROOVY

34 — 06.12.11 — 18:13

(30) Ты определись про что ты про разных клиентов или разные режимы функционирования платформы.

Shrek_yar

35 — 06.12.11 — 18:14

(33) я с этим и с путал

Shrek_yar

36 — 06.12.11 — 18:14

платфформы у нас разные у них 13, у нас 14

Shrek_yar

37 — 06.12.11 — 18:15

но неужели из за платформы могут быть такие отличия и ошибки??

GLazNik

38 — 06.12.11 — 18:16

Но все таки. Зачем ТЗ на клиенте? Если конечно это не элемент интерфейса.

Shrek_yar

39 — 06.12.11 — 18:17

(38) на клиенте есть поле ТЗ, где выводиться результат

GLazNik

40 — 06.12.11 — 18:18

(39) так заполнять его на сервере

Shrek_yar

41 — 06.12.11 — 18:18

(40)щас в 13 платформе запущу, проверю

GROOVY

42 — 06.12.11 — 18:19

Ветка про общение слепого с глухим…

Shrek_yar

43 — 06.12.11 — 18:19

(41) дело не платформе

Shrek_yar

44 — 06.12.11 — 18:19

ну извините

Shrek_yar

45 — 06.12.11 — 18:20

придеться на сервере заполнять), про это я понял

БибиГон

46 — 06.12.11 — 18:20

(42) ну, он говорит что конфигурация одна и таже…

Shrek_yar

47 — 06.12.11 — 18:20

просто в прежней обработке возвращается на клиент все

Shrek_yar

48 — 06.12.11 — 18:21

конфа УНФ, но по моему это не имеет отношение, так как там и там она одна и одной версии

GROOVY

49 — 06.12.11 — 18:21

О, уже и обработки оказались разные…

Shrek_yar

50 — 06.12.11 — 18:22

&НаСервере

Функция ПолучитьМакет()
ЭтотОбъект = РеквизитФормыВЗначение("Объект");
Возврат ЭтотОбъект.ПолучитьМакет("Макет");
КонецФункции
&НаСервере
Функция ДайВидИТС(Вид)
Если Вид = Перечисления.ВидыИТС.ИТСПрофПлат Тогда
Возврат 10;
ИначеЕсли    Вид = Перечисления.ВидыИТС.ИТСТехно Тогда     
Возврат 4;      
ИначеЕсли    Вид = Перечисления.ВидыИТС.ИТСПрофБесплатный Тогда 
Возврат 16;      
ИначеЕсли    Вид = Перечисления.ВидыИТС.ИТСБюджет Тогда 
Возврат 7;      
ИначеЕсли    Вид = Перечисления.ВидыИТС.ИТСБюджетПроф Тогда 
Возврат 8;      
ИначеЕсли    Вид = Перечисления.ВидыИТС.ИТСБюджетПрофБесплатный Тогда 
Возврат 9;      
ИначеЕсли    Вид = Перечисления.ВидыИТС.ИТССтроительство Тогда 
Возврат 18;      
ИначеЕсли    Вид = Перечисления.ВидыИТС.ИТССтроительствоБесплатный Тогда 
Возврат 17;      
ИначеЕсли    Вид = Перечисления.ВидыИТС.ИТСМедицина Тогда 
Возврат 65;      
ИначеЕсли    Вид = Перечисления.ВидыИТС.ИТСПрофГоловной Тогда 
Возврат 19;      
ИначеЕсли    Вид = Перечисления.ВидыИТС.ИТСДляУдаленного Тогда 
Возврат 20;      
КонецЕсли;
КонецФункции// ДайВидИТС()

&НаСервере
Функция ДайМыло()
Возврат Справочники.ВидыКонтактнойИнформации.EmailКонтрагента;
КонецФункции// ДайМыло()

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

&НаСервере
Функция ДайПолнНаименование (Контрагент)
Возврат  Контрагент.НаименованиеПолное;
КонецФункции// ДайПонНаименование (Контрагент)()

&НаСервере
Функция ДайИНН (Контрагент)
Возврат  Контрагент.ИНН;
КонецФункции// ДайПонНаименование (Контрагент)()

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

&НаКлиенте
Процедура Заполнить()
попытка
Макет = ПолучитьМакет();
Эксель = Новый COMОбъект("Excel.Application");
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("XLS");
Макет.Записать(ИмяВременногоФайла);
Книга = Эксель.WorkBooks.Open(ИмяВременногоФайла);
//Эксель.Documents.Open(ИмяВременногоФайла);

Исключение
Сообщить("Возможно у вас не установлена программа Microsoft Office: Word ("+ОписаниеОшибки()+")");
Возврат ;
конецпопытки;
Лист = Книга.WorkSheets(1);
i = 11;
j = 1;
Для каждого Стр из Таблица Цикл
Контрагент = Стр.Контрагент;     
//  Договор = Стр.Договор;

//-- Заполнение строки Excel

Книга.Sheets(1).Cells(i,1).Value  = j;
Книга.Sheets(1).Cells(i,2).Value  = "13942-78";
Книга.Sheets(1).Cells(i,3).Value  = 1;
Книга.Sheets(1).Cells(i,4).Value  = "32855-40";
Книга.Sheets(1).Cells(i,5).Value = ДайВидИТС(Стр.ВидИТС);
Книга.Sheets(1).Cells(i,6).Value  = Стр.РегНомер;
Книга.Sheets(1).Cells(i,7).Value  = ДайПолнНаименование(Стр.Контрагент);
Книга.Sheets(1).Cells(i,8).Value  = ДайИНН (Стр.Контрагент);
Книга.Sheets(1).Cells(i,9).Value  = Стр.КолВоРабМест;
Книга.Sheets(1).Cells(i,10).Value  = "";
Книга.Sheets(1).Cells(i,11).Value  = "";
Книга.Sheets(1).Cells(i,12).Value  = Стр.Контакт;
Книга.Sheets(1).Cells(i,13).Value  = "";
Книга.Sheets(1).Cells(i,14).Value  = ДайГород (Стр.Контрагент);  // фактический

Книга.Sheets(1).Cells(i,15).Value  = "";
Книга.Sheets(1).Cells(i,16).Value  = "";
Книга.Sheets(1).Cells(i,17).Value  = "";
Книга.Sheets(1).Cells(i,18).Value  = "";
Книга.Sheets(1).Cells(i,19).Value  = Стр.КодГорода;//ручками

Книга.Sheets(1).Cells(i,20).Value  = Стр.Телефон;//ручками

Книга.Sheets(1).Cells(i,21).Value  = "";
Книга.Sheets(1).Cells(i,22).Value  = ДайМыло2(Стр.Контрагент, ДайМыло());
Книга.Sheets(1).Cells(i,23).Value  = "";
Книга.Sheets(1).Cells(i,24).Value  = "";
Книга.Sheets(1).Cells(i,25).Value  = "";
Книга.Sheets(1).Cells(i,26).Value  = Формат(Стр.ДатаНачала,"ДФ=MM.yy");
Книга.Sheets(1).Cells(i,27).Value  = Стр.Выпусков; 
Книга.Sheets(1).Cells(i,28).Value  = Стр.Способ; 
Книга.Sheets(1).Cells(i,29).Value  = Стр.РегНомер1; 
Книга.Sheets(1).Cells(i,30).Value  = Стр.РегНомер2; 
Книга.Sheets(1).Cells(i,31).Value  = Стр.РегНомер3; 
Книга.Sheets(1).Cells(i,32).Value  = Стр.РегНомер4; 
Книга.Sheets(1).Cells(i,32).Value  = Стр.РегНомер5; 
//+ рег номера

//-- -- -- -- -- -- -- -- --

j = j + 1;
i = i + 1;
КонецЦикла;     
Попытка
Книга.SaveAs("C:1.xls");
Исключение
Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
КонецПопытки;
Эксель.Application.Quit(); 
НоваяКартинка = БиблиотекаКартинок.СостояниеОбменаДаннымиУспех;
Элементы.Заполнить.Картинка = НоваяКартинка;
Элементы.Заполнить.Заголовок = "Заполнено!";
КонецПроцедуры// Заполнить()

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

ТаблицаРезультатов = Результат.Выгрузить();
МассивТоваров = ТаблицаРезультатов.ВыгрузитьКолонку("РегНомер");
ДанныеВыбора = Новый СписокЗначений;
ДанныеВыбора.ЗагрузитьЗначения(МассивТоваров);
Элементы.ТаблицаРегНомер.СписокВыбора.ЗагрузитьЗначения(МассивТоваров);
Элементы.ТаблицаРегНомер1.СписокВыбора.ЗагрузитьЗначения(МассивТоваров);
Элементы.ТаблицаРегНомер2.СписокВыбора.ЗагрузитьЗначения(МассивТоваров);
Элементы.ТаблицаРегНомер3.СписокВыбора.ЗагрузитьЗначения(МассивТоваров);
Элементы.ТаблицаРегНомер4.СписокВыбора.ЗагрузитьЗначения(МассивТоваров);
Элементы.ТаблицаРегНомер5.СписокВыбора.ЗагрузитьЗначения(МассивТоваров);
//    Пока Выборка.Следующий() Цикл

//        ДанныеВыбора.Добавить(Выборка.РегНомер);
//    КонецЦикла;

Возврат ДанныеВыбора;
КонецФункции// ДайРегНомера()

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

&НаКлиенте
Процедура ТаблицаКонтрагентПриИзменении(Элемент)
Строка = Элементы.Таблица.ТекущиеДанные;    
Список =  ДайРегНомера(Строка.Контрагент); 
Контакты = ДайКонтакты(Строка.Контрагент); 
КонецПроцедуры
&НаКлиенте
Процедура Запустить(Команда)
ЗапуститьПриложение("C:1.xls");
КонецПроцедуры
&НаКлиенте
Процедура Отправить(Команда)
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.yandex.ru"; 
Профиль.ПортSMTP = 587;
Профиль.Пользователь = "info@allzon.ru";
Профиль.Пароль = "38gjgeuftd";
Профиль.АутентификацияSMTP     = СпособSMTPАутентификации.Login;
Профиль.ПарольSMTP           = "38gjgeuftd";
Профиль.ПользовательSMTP     = "info@allzon.ru"; 
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль);
Исключение
Сообщить("Ошибка при подключении к серверу" + ОписаниеОшибки());
Возврат;
КонецПопытки;
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Отправитель = "info@allzon.ru";
Сообщение.Получатели.Добавить("itsrobot@1c.ru");
Сообщение.Тема = "Выгрузка ИТС";
Сообщение.Тексты.Добавить("Сабж",ТипТекстаПочтовогоСообщения.HTML);
Сообщение.Вложения.Добавить("C:1.xls");
Почта.Послать(Сообщение);
Почта.Отключиться();
//Попытка

//    УдалитьФайлы ("C:1.xls");

//Исключение

//    Сообщить(ОписаниеОшибки());

//КонецПопытки;

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

&НаСервере
Функция ПустойКонтрагент()
Возврат Справочники.Контрагенты.ПустаяСсылка();
КонецФункции// ПустойКонтрагент()

&НаСервере
Функция ВидИТС (Строка)
Если строка = "ИТС Проф DVD Бесплатный" Тогда
Возврат  Перечисления.ВидыИТС.ИТСПрофБесплатный;
ИначеЕсли строка = "ИТС Бюджет Проф" Тогда    
Возврат  Перечисления.ВидыИТС.ИТСБюджетПроф;
ИначеЕсли строка = "ИТС Бюджет Проф Бесплатный" Тогда    
Возврат  Перечисления.ВидыИТС.ИТСБюджетПрофБесплатный;
ИначеЕсли строка = "ИТС Технологическая поставка" Тогда    
Возврат  Перечисления.ВидыИТС.ИТСТехно;    
ИначеЕсли строка = "ИТС для удаленного офиса" Тогда    
Возврат  Перечисления.ВидыИТС.ИТСДляУдаленного;    
ИначеЕсли строка = "ИТС Франчайзинговый" Тогда    
Возврат  Перечисления.ВидыИТС.Отсутствует;    
ИначеЕсли строка = "ИТС Проф DVD" Тогда    
Возврат  Перечисления.ВидыИТС.ИТСПрофПлат;        
ИначеЕсли строка = "ИТС Строительство Бесплатный" Тогда    
Возврат  Перечисления.ВидыИТС.ИТССтроительствоБесплатный;            
ИначеЕсли строка = "ИТС Медицина" Тогда    
Возврат  Перечисления.ВидыИТС.ИТСМедицина;                
КонецЕсли;    
КонецФункции// ВидИТС()

&НаКлиенте
Функция Дата_(стрДата)
стрДата_ = СокрЛП(СтрЗаменить(стрДата,".",""));
датДата = Сред(стрДата_,5)+Сред(стрДата_,3,2)+Лев(стрДата_,2);
Если СтрДлина(стрДата_)=6 Тогда
датДата = "20"+датДата;
КонецЕсли;            
//Сообщить(датДата+"="+стрДата);

Попытка
Возврат Дата(датДата);
Исключение
Возврат Дата(0);
КонецПопытки;
КонецФункции   // Дата_

&НаКлиенте
Процедура Загрузить(Команда)
перем ИмяФайла;
Попытка
Ex = Новый COMОбъект("Excel.Application");
Ex.WorkBooks.Open(ИмяФайла);
Состояние("Обработка файла Microsoft Excel...");
Исключение
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогВыбораФайла.Заголовок = "Прочитать табличный документ из файла";
ДиалогВыбораФайла.Фильтр    = "Лист Excel (*.xls)|*.xls|";
Если ДиалогВыбораФайла.Выбрать() Тогда
ИмяФайла = ДиалогВыбораФайла.ПолноеИмяФайла;
КонецЕсли;
Ex = Новый COMОбъект("Excel.Application");
Ex.WorkBooks.Open(ИмяФайла);
КонецПопытки;
Элементы.Состояние.Заголовок = "Открыт файл: " + ИмяФайла;
i=7;
j = 0;
ActiveCell = Ex.ActiveCell.SpecialCells(11);
RowCount = ActiveCell.Row;
Пока (НЕ ПустаяСтрока(ex.Sheets(1).Cells(i,1).Value))  Цикл
Строка = НайдиКонтрагента (строка(ex.Sheets(1).Cells(i,3).Value),строка(ex.Sheets(1).Cells(i,2).Value));
Если Строка <> ПустойКонтрагент () Тогда
Стр = Загрузка.Добавить();
Стр.Контрагент = Строка;
Стр.ВидИТС =  ВидИТС (ex.Sheets(1).Cells(i,7).Value);
Стр.Дата  = Дата_(ex.Sheets(1).Cells(i,5).Value);
j = j + 1;
Иначе
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не найден контрагент: " + строка(ex.Sheets(1).Cells(i,3).Value) + " с номером " + строка(ex.Sheets(1).Cells(i,2).Value);
Сообщение.Сообщить();
КонецЕсли;
i = i + 1;
КонецЦикла;    
Элементы.Состояние.Заголовок = Элементы.Состояние.Заголовок + " ---  Загружено " + j + " позиций из " + (i-7) ;    
Ex.Application.Quit();     
КонецПроцедуры
&НаСервере
Процедура ИзменитьКонтрагента(Контрагент, ВидИТС, Дата)
СпрК = Контрагент.ПолучитьОбъект ();
СпрК.ВидИТС = ВидИТС;
СпрК.ДатаОкончанияПодпискиИТС = Дата;
СпрК.Записать ();
КонецПроцедуры// ИзменитьКонтрагента()

&НаКлиенте
Процедура ИзменитьПоСписку(Команда)
сч = 0;
Для каждого стр из Загрузка Цикл 
ИзменитьКонтрагента(Стр.Контрагент, Стр.ВидИТС, Стр.Дата);    
сч = сч + 1;
КонецЦикла;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Записано " + сч + " контрагентов!";
Сообщение.Сообщить();
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаПриАктивизацииСтроки(Элемент)
КонецПроцедуры
&НаСервере
Функция ОтобразитьТелефоны(Контрагент)
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|    Инфа.НомерТелефона
|ИЗ
|    Справочник.Контрагенты.КонтактнаяИнформация КАК Инфа
|ГДЕ
|    Инфа.Ссылка = &Ссылка
|    И Инфа.Вид.Наименование = ""Телефон""";
Запрос.УстановитьПараметр("Ссылка", Контрагент);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Возврат Выборка.НомерТелефона;
КонецЦикла;
КонецФункции// ОтобразитьТелефоны()

&НаКлиенте
Процедура ДайТелефон(Команда)
Элементы.Телефоны.Заголовок = ОтобразитьТелефоны (Элементы.Таблица.ТекущиеДанные.Контрагент);
КонецПроцедуры

&НаСервере

Функция ПроверьДату(Дата)
Если Дата > ТекущаяДата () Тогда
Возврат ИСТИНА;
ИначеЕсли (Месяц(Дата) = Месяц(ТекущаяДата ()))  И (Год(Дата) = Год(ТекущаяДата ())) Тогда
Возврат ИСТИНА;
КонецЕсли;
Возврат Ложь;
КонецФункции// ПроверьДату()

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

&НаСервере
Функция АктуальныеКонтрагенты ()
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|    Контрагенты.Ссылка КАК Ссылка,
|    Контрагенты.ДатаОкончанияПодпискиИТС КАК Дата,
|   Контрагенты.ВидИТС КАК ВидИТС
|ИЗ
|    Справочник.Контрагенты КАК Контрагенты
|ГДЕ
|    (НЕ Контрагенты.ЭтоГруппа)";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Сп = Новый ТаблицаЗначений;
Сп.Колонки.Добавить("Контрагент");
Сп.Колонки.Добавить("Дата");
Сп.Колонки.Добавить("ВидИТС");
Сп.Колонки.Добавить("Метка");
Сп.Колонки.Добавить("Город");
Пока Выборка.Следующий() Цикл
Если Выборка.Дата <> "00010101" Тогда
Если ПроверьДату (Дата(Выборка.Дата)) Тогда
Если НЕ ЕстьРасходная (Выборка.Ссылка, Выборка.ВидИТС, Выборка.Дата) Тогда     
Строка = Сп.Добавить();
Строка.Контрагент = Выборка.Ссылка;
Строка.Дата = Выборка.Дата;
Строка.ВидИТС = Выборка.ВидИТС;
Строка.Город = ДайГород(Выборка.Ссылка);
Иначе
Строка = Сп.Добавить();
Строка.Контрагент = Выборка.Ссылка;
Строка.Дата = Выборка.Дата;
Строка.ВидИТС = Выборка.ВидИТС;
Строка.Город = ДайГород(Выборка.Ссылка);
Строка.Метка = 1;
КонецЕсли;    
КонецЕсли;    
КонецЕсли;
КонецЦикла;
Возврат Сп;
КонецФункции// АктуальныеКонтрагенты()

&НаКлиенте
Процедура ЗаполнитьДокументы(Команда)
Список = АктуальныеКонтрагенты ();
Документы.Очистить();
Для каждого элем из Список Цикл
Стр = Документы.Добавить();    
Стр.Контрагент = элем.Контрагент;
Стр.Дата = элем.Дата;
Стр.ВидИТС = элем.ВидИТС;
Стр.Город = элем.Город;
Если Элем.Метка = 1 Тогда
Стр.Метка = Истина;     
//Элементы.Документы.ТекущийЭлемент.Шрифт = Новый Шрифт(,,Истина);

КонецЕсли; 
КонецЦикла;    
Документы.Индекс("Контрагент");
КонецПроцедуры

&НаСервере

Функция ДайИТСПоВиду(ВидИТС)
Если ВидИТС = Перечисления.ВидыИТС.ИТСПрофБесплатный Тогда
Возврат Справочники.Номенклатура.НайтиПоКоду("00000000266");
ИначеЕсли ВидИТС = Перечисления.ВидыИТС.ИТСБюджетПроф Тогда    
Возврат Справочники.Номенклатура.НайтиПоКоду("00000000268");
ИначеЕсли ВидИТС = Перечисления.ВидыИТС.ИТСБюджетПрофБесплатный Тогда    
Возврат Справочники.Номенклатура.НайтиПоКоду("00000000268");
ИначеЕсли ВидИТС = Перечисления.ВидыИТС.ИТСТехно Тогда    
Возврат Справочники.Номенклатура.НайтиПоКоду("00000000271");
ИначеЕсли ВидИТС = Перечисления.ВидыИТС.ИТСДляУдаленного Тогда    
Возврат Справочники.Номенклатура.НайтиПоКоду("00000000272");
ИначеЕсли ВидИТС = Перечисления.ВидыИТС.Отсутствует Тогда    
Возврат Справочники.Номенклатура.ПустаяСсылка();
ИначеЕсли ВидИТС = Перечисления.ВидыИТС.ИТСПрофПлат Тогда    
Возврат Справочники.Номенклатура.НайтиПоКоду("00000000266");
ИначеЕсли ВидИТС = Перечисления.ВидыИТС.ИТССтроительствоБесплатный Тогда    
Возврат Справочники.Номенклатура.НайтиПоКоду("00000000269");
ИначеЕсли ВидИТС = Перечисления.ВидыИТС.ИТСМедицина Тогда
Возврат Справочники.Номенклатура.НайтиПоКоду("00000000270");
КонецЕсли;
КонецФункции// ДайИТСПоВиду()

&НаСервере
Процедура ЗаполнитьДокументНаСервере(ДанныеФормы, Контрагент, ВидИТС)
Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.РасходнаяНакладная"));
Док.Дата = ТекущаяДата ();
Док.Организация = Справочники.Организации.НайтиПоНаименованию ("Наша фирма.");
Док.Контрагент = Контрагент;
Док.ВидОперации = Перечисления.ВидыОперацийРасходнаяНакладная.ПродажаПокупателю;
Док.Договор = Контрагент.ДоговорПоУмолчанию;
Док.ВалютаДокумента = Справочники.Валюты.НайтиПоКоду ("643");
Строка = Док.Запасы.Добавить();
Строка.Количество = 1;
Строка.Номенклатура =ДайИТСПоВиду (ВидИТС);
Строка.ЕдиницаИзмерения = Строка.Номенклатура.ЕдиницаИзмерения; 
Строка.СтавкаНДС = Строка.Номенклатура.СтавкаНДС;
ЗначениеВДанныеФормы(Док,ДанныеФормы);    
КонецПроцедуры// ЗаполнитьДокументНаСервере()

&НаКлиенте
Процедура РасходныеНакладные(Команда) 
Для каждого Строка из Документы Цикл 
Форма = ПолучитьФорму("Документ.РасходнаяНакладная.ФормаОбъекта");
ДанныеФормы = Форма.Объект;
ЗаполнитьДокументНаСервере(ДанныеФормы, Строка.Контрагент, Строка.ВидИТС);
КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
Форма.Записать();
КонецЦикла;    
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаРегНомерПриИзменении(Элемент)
Строка = Элементы.Таблица.ТекущиеДанные;    
Список =  ДайРегНомера(Строка.Контрагент); 
КонецПроцедуры
&НаКлиенте
Процедура УдалитьПомеченныхКонтрагентов(Команда)
//Документы.Очистить();

//

//Список = АктуальныеКонтрагенты ();

//Документы.Очистить();

//

//Для каждого элем из Список Цикл

// Если Элем.Метка <> 1 Тогда    

//     Стр = Документы.Добавить();    

//     Стр.Контрагент = элем.Контрагент;

//     Стр.Дата = элем.Дата;

//    Стр.ВидИТС = элем.ВидИТС;

// КонецЕсли; 

//КонецЦикла;

СписокСтрок = Новый Массив();
Для Каждого Эл Из Документы Цикл
Если Эл.Метка Тогда
СписокСтрок.Добавить(Эл);
КонецЕсли;
КонецЦикла;
// КоличествоСтрок = СписокСтрок.Количество();

Для каждого Стр Из СписокСтрок  Цикл        
Документы.Удалить(Стр);    
КонецЦикла;
КонецПроцедуры

&НаКлиенте

Процедура ПриОткрытии(Отказ)
//Элементы.Документы.Контрагент.НомерСоглашения.Доступность=Истина;

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

Shrek_yar

51 — 06.12.11 — 18:22

обработка одна и таже

Shrek_yar

52 — 06.12.11 — 18:24

&НаСервере Функция АктуальныеКонтрагенты () 

 Возврат Сп; КонецФункции //

Shrek_yar

53 — 06.12.11 — 18:25

(47)это если передалать придеться, чтоб на сервере запонялась

GROOVY

54 — 06.12.11 — 18:25

Жесть. Почитайте Радченко. Откройте для себя директиву &НаСервереБезКонтекста. Разберитесь как работают УФ.

Shrek_yar

55 — 06.12.11 — 18:25

(54) ок. пойду в библиотеку

Shrek_yar

56 — 06.12.11 — 18:26

спасибо за внимание всем, и за советы)

GROOVY

57 — 06.12.11 — 18:28

Shrek_yar

58 — 08.12.11 — 15:27

&НаКлиенте Процедура Сформировать(Команда) Доки.Очистить(); НайтиДоговора(); КонецПроцедуры 
&НаСервереБезКонтекста Процедура НайтиДоговора() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДоговорыКонтрагентовТаблица.Ссылка.Владелец.Ссылка как Ссылка, | ДоговорыКонтрагентовТаблица.Дата, | ДоговорыКонтрагентовТаблица.Сумма, | ДоговорыКонтрагентовТаблица.Ссылка.Наименование как ВидДоговора |ИЗ | Справочник.ДоговорыКонтрагентов.Таблица КАК ДоговорыКонтрагентовТаблица | ГДЕ |ДоговорыКонтрагентовТаблица.Дата > &ДатаСег |И ДоговорыКонтрагентовТаблица.Дата < &ДатаДок "; Запрос.УстановитьПараметр("ДатаСег",ТекущаяДата()); Запрос.УстановитьПараметр("ДатаДок",НачалоДня(ТекущаяДата())+864000); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Сп = Новый ТаблицаЗначений; Сп.Колонки.Добавить("Дата"); Сп.Колонки.Добавить("Контрагент"); Сп.Колонки.Добавить("ВидДоговора"); Сп.Колонки.Добавить("Сумма"); Пока Выборка.Следующий() Цикл строка = сп.Добавить(); Строка.Контрагент = Выборка.ссылка; строка.Дата = Выборка.Дата; строка.ВидДоговора =Выборка.ВидДоговора; строка.сумма = выборка.сумма; КонецЦикла; //  Для каждого строчка из сп Цикл Стр = Доки.Добавить(); Стр.Контрагент = строчка.Контрагент; Стр.Дата = строчка.Дата; Стр.ВидДоговора = строчка.ВидДоговора; Стр.сумма = строчка.сумма; КонецЦикла; /// Доки - таблица значений на форме, но пишет ошику что якобы ее нельзя заполнять на сервере  КонецПроцедуры

Shrek_yar

59 — 08.12.11 — 15:27

вот код который сделал, как заполнить таблицу на форме

Shrek_yar

60 — 08.12.11 — 15:32

(40) как заполнить , выдает ошибку {Обработка.НайтиДоговораНаОплату.Форма.Форма.Форма(4)}: Ошибка при установке значения атрибута контекста (Доки) НайтиДоговора(Доки); Нельзя изменять поле, содержащее объект данных формы
  

Shrek_yar

61 — 08.12.11 — 15:36

(57)это прочитал)

Shrek_yar

62 — 08.12.11 — 15:36

кто нибудь может подсказать, так сказать на путь истиный наставить))??

Shrek_yar

63 — 08.12.11 — 15:37

чтоб все в тонком клиенте работало

Shrek_yar

64 — 08.12.11 — 15:51

ап ап ап )

Shrek_yar

65 — 08.12.11 — 15:51

мож кто хоть идейку?

Shrek_yar

66 — 08.12.11 — 15:51

&НаСервереБезКонтекста — может ли с такой директивой, или надо с &НаСервере

Shrek_yar

67 — 08.12.11 — 15:58

никто не знает7

Shrek_yar

68 — 08.12.11 — 16:43

а,    GROOVY, тут нет?)

ЧеловекДуши

69 — 09.12.11 — 07:40

Автор идъётЪ :) ...жги еще :)

ЧеловекДуши

70 — 09.12.11 — 07:41

+ ДНК — не излечим

jk3

71 — 09.12.11 — 14:32

Какой шикарный баг: если между тэгами [ 1C ] [ /1C ] есть код (1), то это тоже считается за ссылку на сообщение темы.

Только не говорите, что это фича =)))

Shrek_yar

72 — 09.12.11 — 15:40

(69)не человек ты

Shrek_yar

73 — 09.12.11 — 15:41

(71) )))

Jaffar

74 — 09.12.11 — 17:36

(71) а почему только (1)? там на самом деле и (0), и (2), и (3), и т.д.

(74) сообщение (1) самое популярное и мы сейчас добавляем этому сообщению популярности своими постами =))

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

Описание ошибки:
Ошибка при программировании, конфигурировании кода в 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)

В управляемых формах может появиться следующая ошибка:

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: param Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'

С данной ошибкой я столкнулся, когда пытался в управляемой форме на стороне сервера выполнить следующую команду:

 ОбъектФормы = РеквизитФормыВЗначение("Объект");
 ТЗВывода = ОбъектФормы.Бонусы.Выгрузить().Скопировать();
 ЗначениеВРеквизитФормы(ОбъектФормы, "Объект");

Решением данной проблемы было обнулить переменную с таблицей данных:

ТЗВывода = Неопределено;

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

Автор 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объект
  • Ошибка отображения пространства имен отсутствует отображение для префикса