1с тип не определен таблицазначений
Доброго времени суток. Появляются такие ошибки:
: Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
: Тип не определен (Запрос)
ЗапрУвол = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
: Тип не определен (Запрос)
ЗапрУвол = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
: Тип не определен (Запрос)
ЗапрОтпуск = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
: Тип не определен (Запрос)
ЗапрОтпуск = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
: Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
Прошу объяснить, что не так, пожалуйста
__________________Помощь в написании контрольных, курсовых и дипломных работ здесь
Итератор для значения не определен
Ситуация такая: имеется документ с реквизитом типа Хранилище значений, у документа нет табличной.
Тип не определен
Здравствуйте, в процедуре выходит ошибка: Тип не определен кол =.
Ошибка при создании scripting.filesystemobject: Тип не определен (СОМОбъект). Учебная версия платформы.
Почему когда хочу создать обект scripting.filesystemobject выдает ошибку: Тип не определен.
XDTO - Тип свойства не определен
Всем привет. Камраден, подскажите кто знает. Конфы самопильные. Ситуация: Есть два xdto-пакета.
база данных доступна на сервере, она там лежит.
а на клиенте - базы данных нет. поэтому там нельзя делать запрос
Из обычного приложения в управляемое: ошибка Тип не определен - ДиалогВыбораФайла
Здравствуйте, переделываю конфигурацию на упф, столкнулся с проблемой. Был следующий рабочий.
Пользовательский тип не определен
я недавно начал разбираться в макросах многого не понимаю это ошибка выходит уже 2 дня помогите ее.
&НаСервере
Функция ПолучитьКонтрагентов()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Наименование,
| Контрагенты.НаименованиеПолное,
| Контрагенты.ИНН,
| Контрагенты.КПП,
| Контрагенты.Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты";
ТЗ = Запрос.Выполнить().Выгрузить();
Возврат ТЗ
КонецФункции
Но в тонком клиенте не работает ТаблицаЗначений.
Так как получить список всех контрагентов. Для последующей обработки.
УТ 11.1
(5) SaschaL, Непонятно зачем использовать РеквизитФормыВЗначение() если мы уже находимся в объекте?
Достаточно:
(7) dj_serega, ТЗ может не быть реквизитом объекта. Да и в общем случае, на клиенте могли изменить в ней значения.
Но конечно нужно понять, зачем она там. так темболее не нужно если это есть реквизит формы :) просто не нужно злоупотреблять возможностями :) вот я к чему. 1. добавить реквизит управляемой формы с типом ТаблицаЗначений, и заполнять ее.
2. передавать массив структур и вопрос - зачем на клиенте необходима обработка подобной таблицы значений? (4) spezc, Вы наверно правы. А зачем на клиенте это нужно.
Нафик не нужно. На клиенте нужно результат получить.
Правильно. Запихаю все переборки на сервер, и верну только то, что нужно получить. (6) furman2000, Очень правильный подход. И мой Вам совет на будущее - посылайте лесом всех, кто будет объяснять на пальцах как извратиться и обработать на клиенте то, что стандартами языка к обработке на клиенте не предназначено. (8) dusha0020, а Вы господь бог и точно знаете, что будет обрабатываться и как? Я вот не знаю.
И как вариант, когда оправдано хранение ТЗ на клиенте, для последующей обработки в другом сеансе &НаСервере.
Или еще вариант, как показать данные, получаемые сложным запросом? Динамический список тут бессилен. Или ТЗ, или дерево. (10) spacecraft, "Вы" можно было бы написать с маленькой, а вот "господь бог" нужно обязательно с заглавных. А то обижусь:(
А если по сути вопроса.
ТЗ на клиенте хранить не нужно никогда. Для этого есть хранилище значений. Передавайте адрес в серверную процедуру с клиента и помещайте туда на сервере, а потом передаете адрес в новый вызов сервера. Носить ТЗ с сервера на клиент, а потом обратно на сервер вместо идентификатора - это из пушки по воробьям.
По отображению сложных запросов. Я их отображаю на сервере, передав контекст формы вывода. Этот велосипед называется "ЗначениеВРеквизитФормы()" (12) А если мне необходимо из текстовых файлов, которые находятся на клиенте, взять информацию в ТаблицуЗначений, обработать, предоставить выбор юзеру из результатов организованных в список значений, тогда как быть?
Т.е. база данных вообще не при делах, обработка данных идёт тех которые локально у клиента лежат - гнать файлы на сервер и обрабатывать там чтоли.. (13) Передавайте текст файла с клиент на сервер и там обрабатывайте.
Вот здесь и кроется ответ:)
В идеологии клиент-серверной работы ввод-вывод данных - это задача клиента, обработка - сервера.
Передавайте данные для обработки на сервер и возвращайте результат обработки на клиент.
Впрочем, в (14) Вам так и подсказали.
Предвижу возражение, что текста в файлах может быть очень много и не разумно его пересылать на сервер. Но еще менее разумно обрабатывать большие объемы данных на клиенте, который может практически не иметь вычислительной мощности. который может практически не иметь вычислительной мощности.
но ведь может же и иметь ))
имхо, неразумно было не давать в 7.7 обрабатывать данные на сервере, только на клиенте.
но не менее не разумно в 8.3 не давать обрабатывать данные на клиенте, только на сервере.
разрабы 1с, на мой взгляд бросаются из крайности в крайность )
куда правильнее было бы давать возможность делать выбор разработчику конфигурации где обрабатывать данные.
Только учитывайте ограничения тонкого клиента.
Что касается таблицы значений, то вы можете создать в форме обработки, в которой выполняете задачу, реквизит формы - ТаблицуЗначений и использовать ее.
(17) так на клиенте же нельзя, хоть хоти хоть нет??
Если я правильно понял то реквизит формы тоже будет находиться на сервере, на клиенте лишь отображение этого реквизита - ТЗ в данном случае - ДанныеФормыКоллекция или что-то подобное, точно не помню как оно там называется )
Да, реквизит формы с типом ТаблицаЗначений по сути имеет тип ДанныеФормыКоллекция. Он имеет большинство возможностей таблицы значений и с ним можно работать на клиенте.
В том числе на клиенте можно добавлять строки в такую таблицу и заполнять их значениями.
Нет, реквизиты есть на клиенте.
физически область памяти в которой находится реквизит расположен на сервере или на клиенте?
если мы возьмём на клиенте с локального диска и в реквизит запишем двоичные данные какой-нибудь фильм например гигов на 10 - он будет копироваться на сервер или так и останется на клиенте?
я так всегда думал что только локальные переменные существуют на клиенте, всё остальное только на сервере..
(1) vitek1, может не совсем понял, но у управляемых форм можно создать реквизит "ТаблицаЗначений". Если колонки заранее не известны их можно создать программно:
Где РеквизитТаблицаЗначений - это реквизит типа "ТаблицаЗначений", т.е. весь код это в некоторой степени аналог обычного
РеквизитТаблицаЗначений.Колонки.Добавить("РеквизитКолонкаЗанятость",ОписаниеТиповДляРеквизита)
Кроме того, если есть возмлжность в конфигурации поставить галочку "использовтаь обычные формы в управляемом приложении" можно сделать обычную форму и ее запустить (если это проше).
Но для передачи на сервер все таки мне кажется целесообразно реквизит формы "РеквизитТаблицаЗначений" загнать во временное хранилище.
Если конечно я правильно понял в чем проблема
(2) Ягг, получилось как вы написали произвольно создать структуру таблицы. Заполнение делаю через РеквизитТаблицаЗначений.Добавить(); Но реквизит формы РеквизитТаблицаЗначений у меня был создан в режиме конфигуратора. Если же я добавляю реквизиты формы программно (не хочу захламлять такими временными переменными переменными формы в конфигураторе) и пишу
ТаблицаExcel = Новый РеквизитФормы("РеквизитТаблицаЗначений", Новый ОписаниеТипов("ТаблицаЗначений"), , , Истина);
то тип получается не ДанныеФормыКоллекция, а РеквидитФормы и метод РеквизитТаблицаЗначений.Добавить() выдает ошибку. Как быть?
(3) разбор файла идет на стороне клиента. Если создать табличную часть обработки, то доступна она будет все-равно только на стороне сервера, а там я и таблицу значений могу использовать
(4) Вроде разобрался. Вместо добавления реквизита формы на клиенте
сделал создание на сервере. Получилось так же, как если бы через конфигуратор добавил.
(5) vitek1, ну да, изменение, добавление и удаление реквизитов формы можно делать только на сервере. А обращаться к таким реквизитам можно через ЭтаФорма[<имя реквизита>](1) vitek1,
Если исходный файл у вас в xml, и надо передать только часть данных на сервер то вполне логично и разумно для передачи использовать тот же xml. Создаете простую структуру где строки первого уровня это, по аналогии с ТЗ - строки таблицы, и у этих строк добавляете атрибуты - что есть значения колонок.
Xml относительно мало весит, легко сжимается (есть штатный 1С-й механизм), все работате на клиенте, легко передается на сервер.
Почему же 1С-цы отказались от использования ТЗ на клиенте? Если посмотреть на вопрос с точки зрения объектно ориентированного разработчика, то ТЗ это класс с набором методов предназначенных для обработки больших массивов информации (методы: Свернуть(), Скопировать(), Итого(), НайтиСтроки() ). А в то же время 1С-цы ориентируют платформу на использование в тонком и веб клиентах, т.е. потенциально клиентская машина может быть сколь угодно дохлой и канал с сервером может быть тормозным. И еще: в веб клиенте платформа работает через интерпритатор на java-у а в этом языке нет ни такого, ни схожего класса и его реализация с теми же методами весьма проблематична
(9) мне кажется, 1С этот момент должна была бы отдать на откуп разработчику, пусть он сам принимает решения, где обрабатывать данные. Например, если мне надо загружать данные на стороне клиента, т.е. на локальной машине, ну я точно знаю, что не будут этого делать по другому никак, дайте мне возможность делать это по человечески и без доп изврата ) (1) vitek1,в догонку к предыдущему:
если структура исходной xml сходна с тем что надо передать на сервер, то смотри синтаксис помошнике "объект DOM". Позволяет копировать, редактировать, вставлять целые ветки xml. а почему не хватает? загрузка файла на стороне клиента что ли? почему нельзя создать табличную часть обработки загрузки?
Полностью реализовал задачу. Эмулировал таблицу значений на стороне клиента через реквизит формы. Вот коды, если кому интересно
Однако, результат печальный. Цель достигнута, но из-за большого кол-ва вызовов серверных процедур с клиента для определения текущего числа колонок (для определения необходимости добавления новой) и добавления новой колонки создание и заполнение таблицы размером примерно 200*300 занимает минут 10. Очень долго. Файл весит 113 Кб. Он даже через быстрее закачается на сервер.
Оптимизировал код, чтобы за определением кол-ва колонок не надо было на ссервер обращаться (храню просто в переменной), время сократилось где-то до 1 мин. Т.е. остались только 200 вызовов сервера по добавлению колонок.
В итоге все-таки сделал следующее: при разборе заполняю массив структур("НомерСтроки, НомерКолонки, Значение") за 10 сек, дальше передаю на сервер, там формируется настоящая ТЗ еще за 2-3 сек.
логично возникает вопрос. Почему разработчики сделали ограничение на использование ТЗ на клиенте, чтобы приходилось писать такое извращение. Если хотели, чтоб не таскали большие объемы данных с сервера на клиент через таблицы значений - это одно. Но такое ощущение, что скорость разработки с выходом каждой новой версии 1с падает.
Таблица Значений
Добрый вечер. У меня есть Таблица Значений на форме, состоящая из 2-х колонок. 1 колонка - дата.
таблица значений 7--> 8
хэлпаните. Как перенести таблицу значений (все колонки там строковые) из 7 в 8. ? Ну неполучается.
Таблица значений
Здравствуйте. Подскажите пожалуйста метод, который открывает таблицу значений после нажатия на.
таблица значений
составить таблицу значений функции y=интеграл от v до w sinxdx/x для 1<=v<=1,5 и 2<=w<=3 с шагом.
Anastasia_Sokel, ТаблицаЗначений недоступна на клиенте, есть на сервере. Из своей процедуры вызывай другую, серверную, там и объявляй.
Пользуйся синтакс-помощником, там много полезного:
ТаблицаЗначений (ValueTable)
Элементы коллекции:
СтрокаТаблицыЗначений
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.
Возможно обращение к элементу коллекции посредством оператора [. ]. В качестве аргумента передается индекс строки (нумерация с 0).
Индексы (Indexes)
Колонки (Columns)
Вставить (Insert)
ВыбратьСтроку (ChooseRow)
ВыгрузитьКолонку (UnloadColumn)
Добавить (Add)
ЗагрузитьКолонку (LoadColumn)
ЗаполнитьЗначения (FillValues)
Индекс (IndexOf)
Итог (Total)
Количество (Count)
Найти (Find)
НайтиСтроки (FindRows)
Очистить (Clear)
Получить (Get)
Свернуть (GroupBy)
Сдвинуть (Move)
Скопировать (Copy)
СкопироватьКолонки (CopyColumns)
Сортировать (Sort)
Удалить (Delete)
Таблица значений предназначена для хранения значений в табличном виде. Все основные операции с таблицей производятся именно через этот объект. Он позволяет манипулировать строками таблицы значений и предоставляет доступ к коллекции колонок. Колонки могут быть различных типов (в том числе множественных).
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Возможен обмен с сервером. Сериализуется. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен . Имя типа XDTO: ValueTable.
Читайте также: