- Как выгрузить ТаблицуЗначений по отбору с условием (зн Программист_НУ
- Выгрузить СКД в таблицу значений и загрузить обратно
- Как выгрузить таблицу значений в строку
- Способ 1: использование ЗначениеВСтрокуВнутр()
- Способ 2: использование сериализации XML
- Способ 3: использование временного хранилища
- Как выгрузить табличное поле в таблицу значений?
- Выгрузить СКД в таблицу значений и загрузить обратно
Как выгрузить ТаблицуЗначений по отбору с условием (зн Программист_НУ
Можно ли в выгрузить таблицу значений по отбору
По Синтаксису В качестве отбора выступает структура,
(«ИмяКолонки», ЗначениеОтбора)
Можно ли как то вписать условие в ЗначениеОтбора, например отобрать все записи Нуф-Нуф
Понял, только запросом.
(4) возможно. за всю практику построителем почти никогда не пользователся. сначала писал быдлоотчеты, а потом сразу на скд перешел.
кстати скд тоже заюзать можно.
только скд возвращает нетипизированную ТЗ
(16) Правильный ответ — it depends.
Есть хороший принцип — располагать алгоритмы обработки поближе к данным (а не наоборот). Если наша ТЗ на 100К строк тянется из базы, то там же нужно и отфильтровать, запросом. Если это ТЧ документа на десяток строк, набитая пользователем, можно и на клиенте перебрать, ничего страшного.
перебор рулит всетаки имхо.
создавть запрос, сувать в него тз(кстати предварительно еще переведя ее в ТЗ с типизированными колонками если нет),Потом в ВТ. Потом из ВТ выбирать.
Нет ребята. проще и экономичнее перебрать чем следовать моде и канонам.
33 Я тебе приводил пример с ARM, ДВК 2. Многие работают в терминалах и кое где вместе с сервером приложений. А по поводу 6-8 летней давности, то они еще ого го какие быстрые кстати
результаты некоторых данных на не топовых машинах девятилетней давности http://www.rsdn.ru/article/alg/tlsd.xml
С такими задачами как фильтр, группировка справится любая машина.
только у меня например ситуация еще хуже
Источник
Выгрузить СКД в таблицу значений и загрузить обратно
В отчете необходимо выгрузить результат СКД в ТЗ, преобразовать ее определенным образом и загрузить обратно в СКД. С выгрузкой проблем не возникло, ТЗ готова. Нашла информацию о том, что для загрузки данных из ТЗ в СКД необходимо в модуль отчета в процедуру ПриКомпоновкеРезультата() добавить следующее:
Пишу в модуль своего отчета конечно, «СтандартнаяОбработка = Ложь;» тоже указываю, просто сейчас не скопировалось почему-то.
Даже без точки останова, пробовала просто в процедуре написать сообщить(«»); и никаких сообщений.
Получается, что процедура именно не выполняется. Может есть какие-то условия, при которых она не выполняется? Отчет самописный, причем не я его разрабатывала, поэтому сложно разобраться, что к чему.
(7) VitusBering, проверила, кнопка как в стандартных отчетах, такая же процедура выполняется.
(8) antz, да, процедуру по формированию и обработке делаю в модуле формы. Уже пробовала копировать туда же текст модуля, который в моем первом сообщении. В итоге такая ошибка:
Ошибка при вызове метода контекста (Вывести)
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
(11) antz, вот полный текст ошибки
<Форма.Форма.Форма(215)>: Ошибка при вызове метода контекста (Вывести)
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных «Расход»
по причине:
Ошибка при исполнении запроса набора данных
по причине:
<(16, 44)>: Не задано значение параметра «НачалоПериода»
ВзаиморасчетыСПолучателями.Период МЕЖДУ >&НачалоПериода И &КонецПериода
«Расход» — самый первый набор данных в СКД. Ну и конечно когда комментирую текст кода, который должен загружать ТЗ в СКД, то всё работает, такой ошибки нет.
Так а в ТЗ из какой процедуры выгружаете? Из модуля формы?
Если из модуля формы, то из него же нужно вызвать СкомпоноватьРезультат(). Или прямо в нем же дальше делать что нужно.
Источник
Как выгрузить таблицу значений в строку
Для начала, давайте разберемся, для чего это нужно!? Например, требуется передать таблицу значений с клиента на сервер, либо передать ее из одной базы в другую без написания сложных правил обмена.
На помощь придут 3 простых способа:
Способ 1: использование ЗначениеВСтрокуВнутр()
Самый простой и быстрый способ — использовать функцию ЗначениеВСтрокуВнутр(), встроенную в платформу. На одной стороне (стороне отправки) мы упаковываем данные во внутренний формат:
На другой (приемной) стороне, мы распаковываем полученные данные:
и продолжаем с ними работу, как будто никуда не передавали.
Способ 2: использование сериализации XML
На платформе 1С:Предприятие 8 большинство типов значений сериализуются (м.б. представлены в строковом виде). Таблица значений — не исключение. На стороне отправки мы упаковываем данные в формат XML:
Дальше мы можем сохранить полученную строку в файле, отправить по почте и все что заблагорассудится. На приемной стороне достаточно будет распаковать эти данные:
Способ 3: использование временного хранилища
Механизм временного хранилища предназначен для передачи некоторых значений мутабельного типа между клиентом и сервером (как туда, так и обратно). На стороне отправки мы помещаем данные во временное хранилище и передаем на приемный конец только адрес во временном хранилище:
На приемной стороне достаточно будет получить эти данные из временного хранилища по адресу:
Источник
Как выгрузить табличное поле в таблицу значений?
Суть:
Есть документ с табличным полем в форме документа.
Необходимо выгрузить табличное поле в таблицу значений для дальнейшей обработки.
Табличное поле связано с табличной частью документа, но состав его строк отличается от состава строк табличной части документа в связи с:
1. Наличием вычисляемых полей
2. Установленным отбором
Колонки выгрузить могу через ТаблПоле.Колонки и обойти циклом «Для каждого». А как выгрузить строки.
Табличную часть документа тоже выгрузить могу. Но она, как написал, отличается от табличного поля составом строк и колонок.
(6) Если не проверял, то могу рассказать:
1. про метод «ОформлениеСтроки уже написал выше.
2. «ОформлениЕСтроки» появляется в событии «ПриВыводеСтроки», но там оформление только одной строки
3. В событии «ПриПолученииДанных» появляется «ОформлениЯСтроки» (коллекция элементов «ОформлениЕСтроки»), но эта коллекция содержит только те элементы, которые в данный момент выведены на экран.
Но все равно спасибо за ответ.
(8) Почитай про ПроверитьСтроку() и МЕТОД ОформлениеСтроки(), который не имеет общего с созвучными параметрами процедур ПриВыводеСтроки/ПриПолученииДанных.
В (6) реальный алгоритм: Перебирается не поле, а ТЧ. Проверяется соответствие строки отбору и если да — запрашивается её(этой строки) — ОформлениеСтроки().
ЗЫ. Имхо, перебирать всю ТЧ может оказаться накладнее, чем метод (3).
Спасибо всем за ответы.
П.С.:
Я решил следующим образом:
1. В табличную часть документа добавил как реквизиты все свои расчетные поля). По здравому размышлению это оказалось даже полезным, один из моментов: так как расчетные поля идут также в печатную форму, и документ, сохраненный в базе всегда соответствует тому, который распечатан. А пересчет данных по документу организовал в виде отдельной кнопки, т.о. автоматом 1С не пересчитывает.
2. Когда необходимо обработать те строки, которые в данный момент выведены на экран, с учетом установленных отборов, то считываю данные из табличной части документа методом «НайтиСтроки», в который передаю структуру с параметрами установленного отбора.
2.1. Для формирования структуры отбора, которая передается в НайтиСтроки написал свою функцию обхода ЭлементовОтбора.
Все.
Решение меня на данном этапе устраивает, так что интерес касательно других методов обхода строк табличного поля формы на данный момент только спортивный.
Будет свободное время — перечитаю последние ответы, попробую.
Источник
Выгрузить СКД в таблицу значений и загрузить обратно
В отчете необходимо выгрузить результат СКД в ТЗ, преобразовать ее определенным образом и загрузить обратно в СКД. С выгрузкой проблем не возникло, ТЗ готова. Нашла информацию о том, что для загрузки данных из ТЗ в СКД необходимо в модуль отчета в процедуру ПриКомпоновкеРезультата() добавить следующее:
Пишу в модуль своего отчета конечно, «СтандартнаяОбработка = Ложь;» тоже указываю, просто сейчас не скопировалось почему-то.
Даже без точки останова, пробовала просто в процедуре написать сообщить(«»); и никаких сообщений.
Получается, что процедура именно не выполняется. Может есть какие-то условия, при которых она не выполняется? Отчет самописный, причем не я его разрабатывала, поэтому сложно разобраться, что к чему.
(7) VitusBering, проверила, кнопка как в стандартных отчетах, такая же процедура выполняется.
(8) antz, да, процедуру по формированию и обработке делаю в модуле формы. Уже пробовала копировать туда же текст модуля, который в моем первом сообщении. В итоге такая ошибка:
Ошибка при вызове метода контекста (Вывести)
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
(11) antz, вот полный текст ошибки
<Форма.Форма.Форма(215)>: Ошибка при вызове метода контекста (Вывести)
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных «Расход»
по причине:
Ошибка при исполнении запроса набора данных
по причине:
<(16, 44)>: Не задано значение параметра «НачалоПериода»
ВзаиморасчетыСПолучателями.Период МЕЖДУ >&НачалоПериода И &КонецПериода
«Расход» — самый первый набор данных в СКД. Ну и конечно когда комментирую текст кода, который должен загружать ТЗ в СКД, то всё работает, такой ошибки нет.
Так а в ТЗ из какой процедуры выгружаете? Из модуля формы?
Если из модуля формы, то из него же нужно вызвать СкомпоноватьРезультат(). Или прямо в нем же дальше делать что нужно.
Источник