1с ошибка отображения типов отсутствует отображение для типа valuetable

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

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

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

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

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

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

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

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


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


Добрый день. Сегодня наступил на интересные грабли:

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

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

&НаКлиенте
Процедура Заполнить(Команда)
тМассив = Новый Массив;
тМассив .Добавить(Объект.Организация);
ПоискНаСервере(тМассив);
КонецЕсли;
КонецПроцедуры

Процедура ПоискСсылокНаСервере(тМассив, тОсновнаяТаблица = Неопределено)

тДанныеВФорму = Ложь;

Если тОсновнаяТаблица = Неопределено Тогда

тОсновнаяТаблица = Новый ТаблицаЗначений;

тОсновнаяТаблица.Колонки.Добавить(«Ссылка»);

тДанныеВФорму = Истина;

КонецЕсли; 

<<<<>>>>>>

Если <<<<>>>>>> Тогда 

ПоискСсылокНаСервере(МассивСсылок,тОсновнаяТаблица);

КонецЕсли;

Если тДанныеВФорму Тогда

ЗначениеВРеквизитФормы(тОсновнаяТаблица,»ТаблицаСсылок»);

КонецЕсли;

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

В этом  коде процедура  с клиента вызывает выполнение кода на сервере, с одним единственным параметром, — массив ссылок. Хотя в процедуре есть два входящих параметра это массив и таблица значение — которая является не обязательным параметром и используется при рекурсивном вызове. И не смотря на то что при вызове с клиента на сервер мы не используем второй параметр, приложение пытается отправить данное значение на клиент и мы получаем вышеописанную ошибку. Выход из данной ситуации один перед возвратом на клиент убить таблицу написав код:

тОсновнаяТаблица = Неопределено

На сегодня все.

  

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) самое популярное и мы сейчас добавляем этому сообщению популярности своими постами =))

Добрый день. Сегодня наступил на интересные грабли:

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

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

&НаКлиенте
Процедура Заполнить(Команда)
тМассив = Новый Массив;
тМассив .Добавить(Объект.Организация);
ПоискНаСервере(тМассив);
КонецЕсли;
КонецПроцедуры

Процедура ПоискСсылокНаСервере(тМассив, тОсновнаяТаблица = Неопределено)

тДанныеВФорму = Ложь;

Если тОсновнаяТаблица = Неопределено Тогда

тОсновнаяТаблица = Новый ТаблицаЗначений;

тОсновнаяТаблица.Колонки.Добавить(«Ссылка»);

тДанныеВФорму = Истина;

КонецЕсли; 

<<<<>>>>>>

Если <<<<>>>>>> Тогда 

ПоискСсылокНаСервере(МассивСсылок,тОсновнаяТаблица);

КонецЕсли;

Если тДанныеВФорму Тогда

ЗначениеВРеквизитФормы(тОсновнаяТаблица,»ТаблицаСсылок»);

КонецЕсли;

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

В этом  коде процедура  с клиента вызывает выполнение кода на сервере, с одним единственным параметром, — массив ссылок. Хотя в процедуре есть два входящих параметра это массив и таблица значение — которая является не обязательным параметром и используется при рекурсивном вызове. И не смотря на то что при вызове с клиента на сервер мы не используем второй параметр, приложение пытается отправить данное значение на клиент и мы получаем вышеописанную ошибку. Выход из данной ситуации один перед возвратом на клиент убить таблицу написав код:

тОсновнаяТаблица = Неопределено

На сегодня все.

На чтение 2 мин. Просмотров 182 Опубликовано 15.12.2019

Содержание

  1. понедельник, 25 августа 2014 г.
  2. Отсутствует отображение для типа ‘ValueTable’
  3. Обработка для исправления ошибки в документе «Регистрация оплаты списком»

понедельник, 25 августа 2014 г.

Отсутствует отображение для типа ‘ValueTable’

Добрый день. Сегодня наступил на интересные грабли:

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: param Форма: Элемент Тип: anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа ‘ValueTable’

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

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

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

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

Обработка для исправления ошибки в документе «Регистрация оплаты списком»

В релизе 3.1.68.59 обнаружена ошибка в документе «Регистрация оплаты списком», при создании банковских и кассовых документов из документа «Регистрация оплаты списком» выходит ошибка «Ошибка отображения типов: Отсутствует отображение для типов http://v8.1c.ru/8.1/data/core>ValueTable».

Обработку могут использовать пользователи с версией программы ПРОФ и КОРП. Для версий программы Старт и Базовая, исправления будут доступны только в следующем релизе.

Данную ошибку можно исправить с помощью обработки: скачать

1) В режиме 1С: Предприятия под ролью «Администратора» с полными правами, необходимо з апустить обработку.

2) Нажать кнопку «Установить исправление».

3) Дождаться сообщения «Расширение успешно установлено.Текущая версия расширения = 1.0 Необходимо перезапустить приложение.»

4) Перезапустить базу в режиме 1С: Предприятия (уже под пользователем, который принимает оплаты) и работать дальше (ошибка больше не будет возникать).

1CLenta.ru  

Evgenii
Пользователь
19.12.2016 08:55
При передаче таблицы значений на клиент выдает ошибку.

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

&НаСервере
Функция ПолучитьТаблицуТоваров()

Запрос

= Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Наименование,
| Номенклатура.Количество,
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура"
;

РезультатЗапроса

= Запрос.Выполнить();
Таблица = РезультатЗапроса.Выгрузить();Возврат Таблица;КонецФункции

&НаКлиенте


Процедура Команда(Команда)
Таблица = ПолучитьТаблицуТоваров();
КонецПроцедуры

Ответы (5)


Кодер
Пользователь
19.12.2016 09:16
Номер  (1)

Какая конфигурация?
Управляемое или обычное приложение?


Evgenii
Пользователь
19.12.2016 09:31
Номер  (2)

Управляемое приложение УТ 11.
В файловой базе такой ошибки нет. Ошибка появляется только в клиент-серверном варианте.


Кодер
Пользователь
19.12.2016 10:06
Номер  (3)

Видимо у вас:
На сервере запускается в «Тонком клиенте». В этом режиме с сервера на клиент нельзя передавать таблицу значений и некоторые другие типы данных.

В файловом варианте запускается в «Толстом клинете». Этот режим работы позволяет передавать ТЗ.


Evgenii
Пользователь
19.12.2016 10:33
Номер  (4)

Файловая база используеттся для тестирования.
А как можно ее запустить в тонком клиенте для отладки?


progv8
Пользователь
19.12.2016 15:13
Номер  (5)

В конфигураторе Сервис->Параметры->Запуск 1С:Предприятия
Обязательно должен быть установлен компонент «Тонкий клиент».

Обсуждение закрыто

  • Регистрация
  • Восстановить пароль
  • Вход
 

Описание ошибки
При попытке просмотреть результат выполнения кода в отдельном окне, кликнув для этого по гиперссылке результата, появляется окно с ошибкой отображения типов.

Сценарий воспроизведения
Открыть консоль кода, ввести в поле редактора следующий код:
Результат = "0";
Нажать кнопку «Выполнить». Убедиться, что в группе формы отобразился корректный результат выполнения кода.
Кликнуть ЛКМ по гиперссылке «0» напротив результата. Появится окно с ошибкой следующего содержания:

Ошибка отображения типов:
Отсутствует отображение для типа ‘{http://v8.1c.ru/8.1/data/core}ValueTable’
{InfostartToolkit Обработка.ИТК_КонсольРазработчика.Форма.Основная.Форма(441)}: РезультатВыполнения = ПолучитьИзВременногоХранилища(ТекущийРезультат.Адрес);

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

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

Скриншоты
image

Окружение:
Infostart Toolkit 2.0.0

Платформа: 8.3.17.1989 (Linux x86-64)
Режим БД: клиент-серверный

Конфигурация:
1С:Комплексная автоматизация 2 (2.5.6.220)
Основной режим запуска: Управляемое приложение
Режим совместимости: Версия8_3_16
Версия БСП: 3.1.3.535

Клиент:
ОС: Windows x86-64 (Microsoft Windows 10 version 10.0 (Build 17763))
Язык: ru
Режим запуска: Управляемое приложение

  1. Суть проблемы в следующем. Есть форма документа «ВыдачаКнигНаРуки». Необходимо в этом документе автоматически заполнять поле «ВидКниги», его можно вытащить из реквизита «Произведение» с типом данных «СправочникСсылка.Произведения». Никак не могу разобраться с типами данных при передачи их с клиента на сервер и обратно. Хотела все это реализовать через запрос в модуле объекта, но запуталась с типами данных.

    Вот процедура с модуле объекта:

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

    Вот в модуле формы:

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

    И все это выдает следующую ошибку:
    {Документ.ВыдачаКнигНаРуки.Форма.ФормаДокумента.Форма(20)}: Ошибка при вызове метода контекста (ПолучитьВидКнигиНаСервере)
    ПолучитьВидКнигиНаСервере(Стр);
    по причине:
    Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
    по причине:
    Ошибка преобразования данных XDTO:
    НачалоСвойства: param Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
    по причине:
    Ошибка отображения типов:
    Отсутствует отображение для типа ‘{http://v8.1c.ru/8.1/data/core}ValueTable’

    Как это можно исправить? Или может есть способ, как вытащить ВидКниги попроще?

  2. Offline

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

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

    ТЗ нельзя гонять просто так между клиентом и сервером

  3. Это я уже поняла. Я не понимаю, что можно гонять. Как ошибку исправить?

  4. Offline

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

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

    На форуме неоднократно поднимался этот вопрос. Воспользуйтесь поиском.

  5. Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.890
    Симпатии:
    1.030
    Баллы:
    204

    Модуль объекта вам не нужен вообще.
    Форма доступна на клиенте и сервере.
    Значение в строке ТЧ можно получить через конструкцию вида СсылкаНаОбъект[ИмяРеквизитаЗначениеКоторогоНужноПолучить] выполненого на стороне сервера без контекста.

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

Описание ошибки:
Ошибка при программировании, конфигурировании кода в 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с ошибка неверный формат хранилища данных file
  • 1с ошибка метод объекта не обнаружен как исправить