25.01.2017

Запрос к таблице значений 1С 8.3

Автор: Белозерских Евгений

     Итак! Простая ситуация. Каким-то образом у нас получилась таблица значений, которую необходимо передать в запрос 1С, для дальнейшей обработки данных.
     Первое что нужно учесть, это то, что в колонках таблицы значений должен быть определен тип содержимого (строка, число, ссылка и т.д.).
     И второе, то что в запросе, данные из таблицы (&ПараметраЗапроса) необходимо поместить во временную таблицу. Теперь по порядку!

Формируем таблицу значений

    Создадим таблицу с тремя колонками: Номенклатура (Ссылка), Описание (Строка), Количество (Число)
	// Описание колонки с типом Строка
	КС 		= Новый КвалификаторыСтроки(150, ДопустимаяДлина.Переменная);
	Массив	= Новый Массив;
	Массив.Добавить(Тип("Строка"));
	ОписаниеТиповС = Новый ОписаниеТипов(Массив, , ,КС);

	// Описание колонки с типом Число
	КЧ 		= Новый КвалификаторыЧисла(10, 2);
	Массив	= Новый Массив;
	Массив.Добавить(Тип("Число"));
	ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);

	Массив	= Новый Массив;
	Массив.Добавить(Тип("СправочникСсылка.Номенклатура"));

	// Создаем таблицу значений
	ТаблицаДанных	= Новый ТаблицаЗначений;
	ТаблицаДанных.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов(Массив));
	ТаблицаДанных.Колонки.Добавить("Описание",	ОписаниеТиповС);
	ТаблицаДанных.Колонки.Добавить("Количество",ОписаниеТиповЧ);

	// Произвольный алгоритм заполнения таблицы

Передаем таблицу в запрос 1С

     Обязательно данные таблицы значений (которую передаем параметром запроса), необходимо поместить во временную таблицу. Иначе получим вот такую ошибку:
Ошибка при вызове метода контекста (Выполнить):
	Содержимое объекта данных может быть выбрано только во временную таблицу
	ЗапросДанных = Новый Запрос("ВЫБРАТЬ
	                           |	ТаблицаДанных.Описание,
	                           |	ТаблицаДанных.Количество,
	                           |	ТаблицаДанных.Номенклатура
	                           |ПОМЕСТИТЬ ВТ_Данные
	                           |ИЗ
	                           |	&ТаблицаДанных КАК ТаблицаДанных");

	ЗапросДанных.УстановитьПараметр("ТаблицаДанных", ТаблицаДанных);
     Структуру передаваемой таблицы значений можно описать в конструкторе запроса, ну или руками :)

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


Другие статьи

Функция вычисления контрольной цифры для штрихкода EAN-13 (EAN-8)

    Рабочая функция для вычисления контрольной цифры в штрихкоде формата EAN-13 или EAN-8

Чтение текстового файла в 1С

    Пример чтения данных текстового файла (на клиенте и сервере) при разработке в режиме управляемого приложения 1С

Чтение (Загрузка) данных из MXL в 1С 8.3

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

Открыть форму выбора 1С 8.3

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

Чтение и загрузка DBF в 1С 8.3

    Пример программного кода для чтения и/или записи файлов в формате DBF

Выгрузка объекта «1С» в XML и загрузка объекта из XML файла

    Пример выгрузки объекта информационной базы (СправочникОбъект, ДокументОбъект) «1С» в XML файл, и пример обратной загрузки объекта из XML файла

Выгрузка и загрузка XML через DOM

    Полезный пример того, как можно выгрузить в XML данные и загрузить обратно через DOM. Обработка осуществляется при помощи таких объектов как: ЗаписьXML, ЧтениеXML, ЗаписьDOM, ДокументDOM, ПостроительDOM.

HTTP запрос в 1С средствами «WinHttpRequest»

    Пример реализации HTTP запроса в 1С, средствами «WinHttpRequest» 

Программное изменение расписания фонового задания 1С 8.3

   Пример программного кода, для редактирования расписания выполнения фонового задания в 1С 8.3 в режиме отказа использования модальных вызовов

Оформление строк табличной части 1С 8.3

    Пример условного оформления элементов формы, в частности строк табличной части в 1С 8.3 (управляемые формы)

Обработка заполнения табличной части в 1С 8.3

    В статье рассматривается разработка обработки заполнения табличной части на примере конфигурации 1С:ERP
 

Динамическое создание колонок в таблице на форме 1С (Обычное приложение)

     Практический пример того, каким образом в таблице на форме (в режиме обычного приложения 1С), можно динамически создавать необходимое количество колонок, с возможностью установки обработки событий (например "ПриИзменении" в ячейке таблицы)

Динамическое создание колонок в таблице на форме 1С 8.3

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

Чтение (загрузка) данных в 1С 8.3 из Excel

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

Сохранение и восстановление настроек 1С 8.3

    Пример работы с хранилищем настроек 1C, для программного сохранения и получения сохраненных настроек

Внешняя печатная форма 1С 8.3

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

Определение даты создания ссылки в 1С

Определяем дату создания ссылки по уникальному идентификатору объекта 1С

Программное создание команды и кнопки на форме 1С 8.3

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

Открыть форму созданного объекта (Справочник, документ в 1С 8.2, 8.3)

Создаем новый объект, НЕ записываем его в базу, и открываем форму