Процедура ПриКомпоновкеРезультата

19.12.21

Разработка - СКД

Коллекция кода

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Файл с учебным примером
.erf 7,95Kb
62
62 Скачать (1 SM) Купить за 1 850 руб.

На вопрос «Что можно делать в СКД , в процедуре ПриКомпоновкеРезультата ?» смело отвечайте «Все!» и вы не ошибетесь. Ниже список приемов кодирования внутри процедуры ПриКомпоновкеРезультата, подходит для УТ 11.4.6.188 и многих других современных программ. Пункты 6-8 уже подробно описаны на сайте, включил их для полной картины. Хотелось обобщить, собрать все приемы в одном месте.

 
 1. Присвоить значение параметра.
 
 2. Дополнительная обработка табличного документа-результата
 
 3. Изменить текст запроса, получить значение параметра.
 
 4. Установить дополнительный отбор
 
 5. Подсчитать итог по отчету
 
 6. Внешние наборы данных
 
 7. Нестандартная обработка системы компоновки данных (ссылки)
 
 8. Нестандартная расшифровка (ссылки)
 
 9. Дополнительная обработка без внешних наборов, коллекция значений
 
 Прочее

 Кроме всего вышеперечисленного, в процедуре «ПриКомпоновкеРезультата» можно устанавливать нужный вариант отчета или проверять права пользователя на доступ к отчету, но как правило, это выполняют раньше. В типовой конфигурации УТ разработчики чаще всего используют приемы 2-4, 7. Любопытно, что изменять табличный документ или данные расшифровки я догадался в самую последнюю очередь.

Файл с учебным примером прикреплен.

Обновление от 13/09/2019

Для ДинамическогоСписка обратите внимание на функции 

ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(),

ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(),

ПолучитьИсполняемуюСхемуКомпоновкиДанных(),

ПолучитьИсполняемыеНастройкиКомпоновкиДанных().

Обновление от 26/12/2019

Для ограниченных прав можно проверять длительность периода отчета и полноту условий, например

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

 

 

См. также

SALE! %

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

12000 10000 руб.

02.09.2020    161620    893    399    

874

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

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

15.05.2024    9134    implecs_team    6    

47

Инструментарий разработчика СКД Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

По выбранной схеме компоновки данных генерирует программный код, который генерирует СКД, аналогичную исходной схеме. Есть дополнительные инструменты для просмотра дерева схемы, сравнение исходной схемы и полученной по коду, а также сравнение изменений в сгенерированном коде для исходной схемы и для измененной.

3 стартмани

05.02.2024    7255    56    obmailok    21    

79

Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    3204    5    Yashazz    1    

34

СКД WEB-интеграция Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    10988    24    John_d    25    

124

СКД Программист Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Рассмотрим еще не получивший широкого распространения способ работы с внешними данным в СКД. В процессе обсуждения работы с СКД выяснилось, что многие не знакомы со способом помещения туда временной таблицы, полученной предварительно. Статья будет полезна разработчикам, знакомым с программным созданием СКД.

05.12.2023    8280    PROSTO-1C    15    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 26.07.19 11:43
Сообщение было скрыто модератором.
...
35. John_d 5893 31.07.19 09:12 Сейчас в теме
(1) Добрый день! Спасибо, интересно.
Вот еще статья по теме ПриКомпоновкеРезультата.
1. Использование Набора данных и загрузка в него Таблицы значений.
3. Установить параметры в модуле отчета
4. Заголовок в отчете СКД
https://infostart.ru/public/967277/
36. vasilev2015 2727 31.07.19 10:18 Сейчас в теме
(35) Здравствуйте !

Посмотрел, неплохая статья.
38. skv_79 380 31.07.19 18:18 Сейчас в теме
(1) Спасибо, всегда интересно читать примеры, собранные опытным путем в библиотеку знаний и приемов. Повышает скилл программиста :)
2. user623969_dusa 26.07.19 13:07 Сейчас в теме
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

ЗначениеРасчета = "Заменить текст вычислением значения";
КомпоновкаДанныхКлиентСервер.УстановитьПараметр(КомпоновщикНастроек, "СложныйАлгоритмРасчета", ЗначениеРасчета);

вот за это 1сников и не считают за программистов

ввел значение расчета выделил под нее память и она тут же используется и больше нигде
и это в образцы кода
комментария достаточно 3й параметр то-то и то-то

плюс еще названа ЗначениеРасчета можно подумать что это Значение но это разные вещи
4. vasilev2015 2727 26.07.19 13:24 Сейчас в теме
(2) Здравствуйте !

Это учебный пример.

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

:))
5. Rais96 26.07.19 14:33 Сейчас в теме
(2) Вы смотрели байт-код этой процедуры? В си, компилятор оптимизирует байт-код и независимо как написать в одну или две строки на выходе будет один и тот же код. А программа пишется для программиста и понятнее как раз в две строки.
6. user623969_dusa 26.07.19 14:42 Сейчас в теме
(5) интерпретатор в 1с и вряд ли там есть оптимизация это ж даже не среда разработки
7. Rais96 26.07.19 14:52 Сейчас в теме
(6) "вот за это 1сников и не считают за программистов " - задело это, в других языках, в частности Си, это как раз допустимо и приветствуется как правило запись в две строки.Если Вы знаете как выполняется код в 1С, то тогда может и правы. Но 1С это все же среда разработки.
9. user623969_dusa 26.07.19 14:57 Сейчас в теме
(7) я не против записать в две строки, но дать переменной осмысленное название если она нужна в данном случае переменную надо назвать ВыражениеКомпоновки чтобы не путать со значением
но переменная не нужна и можно было в комментарий записать или вообще в строковый реквизит вместо переменной
"тут команда выполнить"

я когда прочитал прямо почувствовал как у меня из-за напряжения в голове уменьшилось количество во нейронов, поэтому и высказал претензию автору образцы кода должны быть легкими для восприятия
14. Бэнни 209 27.07.19 14:52 Сейчас в теме
(9)тут у нас волшебник господа. Он хочет оптимизировать код, но не алгоритм. Он борется за количество строк, но не хочет понять что, код для программиста а не для машины. И что читать а тем более отлаживать легче алгоритмы написанные не в одну строку с подстановкой параметров функций в месте их вычисления. Он хочет заменить переменную на комментарий. Наверное его код представляет из себя пол листа текста с пояснениями и одну строку вызова функции где все параметры вычисляются в месте вызова.
Santa1; barneotec; CyberCerber; Dmitri93; wowik; KazanKokos; Dach; Lapitskiy; +8 1 Ответить
15. user623969_dusa 27.07.19 16:05 Сейчас в теме
(14) прочитал бы три раза прежде чем писать

за колво строк я не борюсь - читай внимательно выше "я не против писать в две строки"

ну и далее читай и думай, значит голову включай)
10. webester 26 26.07.19 18:00 Сейчас в теме
(6)Вряд ли там есть оптимизация, это даже не среда разработки...
Можно объяснить, для тупых, как связаны среда разработки и оптимизация байткода?
16. user623969_dusa 27.07.19 16:05 Сейчас в теме
(10) тупым объяснять - хорошая шутка))
17. webester 26 28.07.19 01:14 Сейчас в теме
(16)пруфов не будет, понятно, ты видимо просто умничал в (5) но немного обосрамс
Dmitri93; +1 Ответить
23. user623969_dusa 29.07.19 09:12 Сейчас в теме
(17) добрый я с утра - тебя интересует что значат мои слова "интерпретатор в 1с и вряд ли там есть оптимизация это ж даже не среда разработки"
хоть это и не по теме
для этого надо понимать отличия интерпретатора от компилятора - интепретатор выполняет код таким какой он есть по сути выполняя построчный перевод, в нем по определению нет оптимизации
а то что кнфигуратор не среда разработки - гугли определение - это один из режимов программы. 1с хочет создать среду разработки - их продукт едт, он на нее больше похож. То что в конфигураторе есть отладчик и редактор текста это не делает его средой разработки, я так на блокнот напишу сверху проверку синтаксиса и скажу создал среду разработки. Скорее конфигуратор это песочница (вряд ли поймешь если две строки не понял - но пробуй читай определение, что это программа ограничивающая кривые руки разработчиков - основные объекты изменять нельзя, код можно писать только в заданных модулях), вероятно корпоративный желтый цвет не случайно, песок же желтый)))

изначально мой пост был о том что заметил человек в (19) попробуй там прочитать и понять, не считай себя тупым не отчаивайся)
41. webester 26 01.08.19 14:02 Сейчас в теме
(23)
добрый я с утра...
очень неплохо

для этого надо понимать отличия интерпретатора от компилятора
не не не, это я понимаю, я не понимаю,как ты аргументировал отсутствие оптимизации, тем, что для тебя конфигуратор не среда разработки. То есть с твоего позволения я процитирую: (6)
интерпретатор в 1с и вряд ли там есть оптимизация это ж даже не среда разработки
Вот я и спрашиваю, раз ты такой умный то может расскажешь(как нибудь утром, когда ты добрый) где связь интерпетатора и конфигуратора которую ты увидел когда писал (6)

(23)
интепретатор выполняет код таким какой он есть по сути выполняя построчный перевод, в нем по определению нет оптимизации
Ничоси, расскажи это java php и perl а еще расскажи как 1с вычисляет(не всегда конечно) бесконечные циклы.

изначально мой пост был о том что заметил человек в (19) попробуй там прочитать и понять

не, изначально сообщение было о том, что оптимизаций нет, потому, что конфигуратор не такой, как тебе бы хотелось

не считай себя тупым не отчаивайся)

Спасибо, добрый, человек, я стараюсь
43. user623969_dusa 01.08.19 14:42 Сейчас в теме
(41) плохо стараешься, пишешь код и смотришь как его понимает конфигуратор - есть оптимизация или нет для этого все средства у тебя есть удачи

если бы ты включил голову и вчитался в приведенную тобой цитату то увидел бы в ней предположение и никакой аргументации, вероятно из-за этого ты увел спор в другую тему совсем не связанную с темой топика

еще раз вернуться к теме топика и высказанной мной претензии - объявляется переменная, которая тут же используется и больше нигде - это не нужно и конфигуратор или интерпретатор или "среда разработки" как ты ее называешь вряд ли такое оптимизирует будет выделена память на ненужную переменную

вроед то что конфигуратор не среда обработки я тоже пояснил - ты загуглил "определение конфигуратора" получил конфигуратор - это режим работы программы
44. webester 26 01.08.19 18:49 Сейчас в теме
(43)
плохо стараешься
как могу, сорян, что разочаровал, в следующий раз буду стараться лучше
если бы ты включил голову и вчитался в приведенную тобой цитату то увидел бы в ней предположение и никакой аргументации, вероятно из-за этого ты увел спор в другую тему совсем не связанную с темой топика
Я просто спросил по теме поста в (6) мне показалось, что это среда неразработки(здесь и далее имеется ввиду конфигуратор) и оптимизация выполняемого кода, две не связанные вещи. Я подумал, может я туповат и не понимаю элементарных вещей? Спросил на всякий, ты сказал, да ты туповат. Я спросил но, чего же я не понял? Ты вместо аргументов отвечаешь, что я спор куда-то увожу. По моему туповат не я.
как ты ее называешь вряд ли такое оптимизирует будет выделена память на ненужную переменную
Может быть у тебя есть исходные коды, что бы делать такие заявления? Или хотя бы рекомендации вендора?
ты загуглил "определение конфигуратора" получил конфигуратор - это режим работы программы

Просто поток сознания, никак не относящийся к беседе с обсуждением что предполагает под собой термин.
45. user623969_dusa 02.08.19 08:07 Сейчас в теме
(44) блин ты не до конца туповат, ты молодец стараешься, правильно понимаешь ты уводишь спор не в ту сторону, я сказал фразу конфигуратор не среда разработки на уровне бога нет... хочешь верь хочешь нет, приводил пример для кого -то и блокнот среда разработки, только сверху нужно добавить интерпретатор строк текста, ты так и не понял что конфигуратор ближе к песочнице - ограниченной среде для написания своего кода... конечно кодов у меня нет и с разработчиками 1с не спал , я работал в андроид студио, в эклипсе и сравниваю с ними... касательно примера - если бы я указал неиспользуемую переменную в них среда разработки вежливо мне подсказала что уважаемый переменная не используется, а конфигуратор смолчит и много других маст хев фишек - история изменений, версии приложений вних реально удобнее именно разрабатывать а с конфигуратором я отдельно держу библиотеку вот таких вот приведенных примеров кода, только у меня переменная для выражения скд не называется значением скд!
48. webester 26 02.08.19 16:28 Сейчас в теме
(45)ты таки пытаешься ответить не на тот вопрос, который я задал в (10) я не спорю среда разработки конфигуратор или нет. Я работал в php storm, когда писал первые сайты, я писал1c-cod.ru в PyCharm. Сейчас периодически курю другие вещи в visual studio code. Были и сублаймы и атомы и нотепад++ и обычный блокнот. Я понимаю разницу между средой разработки и продвинутым текстовым редактором. Может быть конфигуратор хороший, может быть плохой(на тему именно переменной, меня бесит когда мне тыкают этим при сборке, или каждой компиляции) но вопрос был другим. Может все таки ответишь на него а сопли на тему, что тебе, что то не нравится в том как работает конфигуратор или что не так названа переменная в абстрактном примере оставь себе. Уважаемые знатоки внимание вопрос связанный с (6)
Как все таки связаны несреда неразработки и оптимизация выполняемого байт кода? Большая просьба уважаемого user623969_dusa не уводить спор в сторону.
конечно кодов у меня нет и с разработчиками 1с не спал
тогда мне непонятно, откуда выводы про,отсутствие оптимизации. С потолка?
50. user623969_dusa 02.08.19 18:17 Сейчас в теме
(48) не могу ответить на вопрос который не задавал где ты увидел до 10 про байт код и среду разработки

как ты из (6)Вряд ли там есть оптимизация, это даже не среда разработки...

перевел это в
Можно объяснить, для тупых, как связаны среда разработки и оптимизация байткода?

ты невнимательно читал на что я ответил в (6)
оптимизация может быть не только байт кода а подсказки среды разработки как лучше написать программу представляешь - это тоже оптимизация - среда разработки подсказывает лучшее решение

ты не узнал контекст используемого слова придумал свое и просишь меня дать ответ интересный ход, я не случайно каждый раз тебя возвращаю к теме - уходишь от нее все время ты

даже попробую восстановить ход мыслей чтоб ты не мучался цени
5. Rais96 26.07.19 14:33
(2) Вы смотрели байт-код этой процедуры? В си, компилятор оптимизирует байт-код и независимо как написать в одну или две строки на выходе будет один и тот же код. А программа пишется для программиста и понятнее как раз в две строки.

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

не утони в тексте - не уйди опять в сторону
55. webester 26 03.08.19 04:27 Сейчас в теме
(50)
оптимизация может быть не только байт кода а подсказки среды разработки как лучше написать программу
Ах оптимизация среды разработки...так надо было сразу и сказать, не было бы срача. На тему, оптимизации конфигуратора есть оптимизаторы ввиде турбоконфа и снегопата. В последнем скриптами можешь сам прикрутить, все, что хочешь. Вроде как. Я сам не пользуюсь, но по описанию, вроде было так.
(51)
контролируется команда на повторение не больше Н раз
А если надо больше Н раз?
(52)
тебе кажется что в моих ответах вода
Неее мне так не кажется, все отлично. читать одно удовольствие, еще бы не грубил в процессе, вообще бы красота. Но это вроде как норм, люди любят хамить в нашей стране в России живем.
(52)
байт код не смотрим, смотрим замер производительности
Ок, согласимся. Но все равно наплевать ибо это демонстрационный пример, объясняющий механику и не может должен выступать образцом кода.
(53)
вот из-за такой маленькой фигни, раздул столько воды

Бомбануло знатно, лулзов норм прилетело, получил тонну удоволствия от этих брызг эмоций, правда монитор мне забрызгал с обратной стороны, как его теперь оттирать хз.
(53)
Сгубила меня моя доброта. Убивают тупые люди доброту на земле

Что случилось то? Надеюсь с тобой все хорошо. Не переживай так сильно пожалуйста из-за переменной в конфигураторе.Или из-за чего ты там так сильно разволновался. Неважно, просто не переживай )
51. user623969_dusa 02.08.19 18:37 Сейчас в теме
(48) еще раз отсутствие оптимизации простые логические рассуждения - есть замер производительности он показывает время выполнения команд - зачем замерять команду если она будет оптимизирована, значит работает интерпретатор - каждая команда имеет точку входа и выхода

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

ты ж не знаешь что такое оптимизация - это выбор лучшего из альтернатив, приводящих к решению.. бесконечный цикл к решению не приводит, это ошибочная ситуация а не вариант оптимизации.. с тобой было бы приятно рассуждать если бы в твоем тексте была бы не вода а вот такие рассуждения.. в прошлом (44) ты старался и мне показалось ты что то понял а тут (48) опять скатился на непонимание
52. user623969_dusa 02.08.19 18:52 Сейчас в теме
(48) сложно написал поймешь ли,
итого кратко простыми словами
человек в 5 говорит какая разница 2 строки или одна конфигуратор оптимизирует

я возражаю говорю у нас интерпретатор и он каждую строку кода выполняет отдельно, оптимизации в виде представления двух строк в одну нет

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

тебе кажется что в моих ответах вода потому что ты ждешь что я тебе расскажу про связь среды разработки и оптимизации байт кода... если все еще ждешь прочти 3 предыдущих абзаца повторно
53. user623969_dusa 02.08.19 19:06 Сейчас в теме
(52) вот из-за такой маленькой фигни, раздул столько воды, говорила мне мама не объясняй ничего тупым людям, ты ведь сам в (10) признался. Сгубила меня моя доброта. Убивают тупые люди доброту на земле. Кстати тупых людей больше - доброты меньше))
54. acanta 02.08.19 19:19 Сейчас в теме
(52) это странно. Имхо разделителем строк для интерпретатора является точка с запятой, а для программиста enter.
46. user623969_dusa 02.08.19 08:13 Сейчас в теме
(44)когда говоришь что конфигуратор среда разработки хочется добавить како-нибудь прилагательно вроде - доисторическая, урезанная или вот постарался нашел в некоторых источниках аргумент в твою пользу называют таки конфигуратор объектно-ориентированной средой разработки... вот без прилагательного просто средой разработки конфигуратор не называть - это против моей религии) понятно наконец
49. webester 26 02.08.19 16:32 Сейчас в теме
(46)Абсолютно наплевать, чем ты считаешь конфигуратор. Не могу понять, почему до тебя это до сих пор не дошло.
47. user623969_dusa 02.08.19 09:58 Сейчас в теме
(44) крик души - тупые псевдоразработчики 1с у надписи дата отправки поставили поле ввода дата доставки а блокнот конфигуратор не подсказывает)
12. RustIG 1749 27.07.19 11:25 Сейчас в теме
(2)
1сников и не считают за программистов

1сников это не волнует...
радуйтесь жизни и не глядите в рот другим...
SadrA; NikeeNik; ivangrant; JohnyDeath; CyberCerber; manlak; AgeevVG; AllexSoft; user811769; Pastor111; Lapitskiy; +11 Ответить
32. 1c-intelligence 12851 30.07.19 22:10 Сейчас в теме
(12)
и не глядите в рот другим

Вроде, чтобы глядеть в рот, надо впереди стоять. В большом мире считается, что 1Сники стоял позади. Куда им тогда не глядеть? :)
78. user1950534 20.12.23 17:37 Сейчас в теме
(32) кем конкретно "считается"? Дядей Васей или тетей Машей?))
3. DoctorRoza 26.07.19 13:08 Сейчас в теме
Хороший материал, пригодится
8. v3132 33 26.07.19 14:52 Сейчас в теме
Полезный материал и хорошо оформлен.
11. aximo 2102 27.07.19 07:00 Сейчас в теме
прикольно, базовые вещи уже обсуждаем - напишите, что "при компановке" - это единственное правильное стандартизированное решение... а то многие до сих пор работают на "форме" и считают себя мегаспецами, ну а за ними переделывать все приходится))))
triviumfan; +1 Ответить
13. RustIG 1749 27.07.19 11:27 Сейчас в теме
(0) не проверял, но в избранное положу....звездочку в карму
18. Поручик 4693 28.07.19 23:52 Сейчас в теме
Я этим пользуюсь сплошь и рядом. Редкий отчёт без неё, только самый простой
19. Armando 1401 29.07.19 00:14 Сейчас в теме
В первом примере на снимке изображены параметры схемы компоновки данных. А в коде приведен пример установки параметров настроек компоновки данных. Все-таки важно понимать, какие параметры устанавливаем, а то можно словить неожиданные эффекты.
20. acanta 29.07.19 01:14 Сейчас в теме
(19) В коде можно изменить параметры схемы?
21. Armando 1401 29.07.19 01:46 Сейчас в теме
22. vasilev2015 2727 29.07.19 08:18 Сейчас в теме
(19) Здравствуйте !

спасибо за уточнение.
24. AlX0id 29.07.19 16:39 Сейчас в теме
Три раза за сегодня залез подглядеть - пришлось звездочку поставить %))
25. vasilev2015 2727 29.07.19 17:46 Сейчас в теме
(24) Здравствуйте !

да я сам только для того статью и написал, чтобы сюда подглядывать.
gimalaj; AlX0id; acanta; +3 Ответить
26. tamepjlah 3 30.07.19 10:56 Сейчас в теме
подходит для УТ 11.4.6.188 и многих других современных программ

ЗУП 8.3.15.1489 не современная... Присвоение значения параметра выглядит примерно так:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	НашПараметр = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("9999")
	
	Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных;
	Параметры.УстановитьЗначениеПараметра("Подразделение", НашПараметр);
КонецПроцедуры
33. tamepjlah 3 31.07.19 07:32 Сейчас в теме
(26) только сейчас заметил, что скинул версию платформы. ЗУП 3.1.9.227
34. vasilev2015 2727 31.07.19 07:50 Сейчас в теме
(33) Здравствуйте !

Мало адептов ЗУП, никто не заметил. Можно еще посмотреть версию БСП командой

СтандартныеПодсистемыСервер.ВерсияБиблиотеки();

?

Во всех отчетах используют Параметры.УстановитьЗначениеПараметра, или исключительный отчет ?
37. tamepjlah 3 31.07.19 12:24 Сейчас в теме
(34)
Можно еще посмотреть версию БСП командой

3.0.1.440

Во всех отчетах используют Параметры.УстановитьЗначениеПараметра, или исключительный отчет ?

В типовых отчетах для каждого параметра используется примерно такой код:
ПараметрДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода");
ПараметрДанных.Значение = ПериодНастройкаПользовательская.Значение.ДатаНачала;
ПараметрДанных.Использование = Истина;

Мы для себя решили, что в самописных отчетах будем получать все параметры данных и уже с этим работать
27. logarifm 1123 30.07.19 15:13 Сейчас в теме
Если Вы заговорили о штатных конфигурациях то позвольте с Вами в кой чем не согласится, а именно не все возможно сделать в процедуре ПриКомопоновкеРезультата, а именно, вот недавно пришлось решать задачу на базе конфигурации БСП. В отчете указаны параметры и отчет надо сделать с вызова команды. То есть есть документ Приход в нем необходимо добавить в подменю Отчеты нашу команду с вариантом отчета (это не главное). Главное то что отчет должен открыться сразу с параметрами из Номерами артикулов из документа. В отчете это не Отбор , а ПараметрДанных (так спроектированно). Так вот ПриКомпоновке нам никак не удасца присвоить наши значения параметров.

В БСП имеется функционал:

НастройкиОтчета.ОпределитьНастройкиФормы = Истина; (необходимо в модуле менеджера отчета или общего модуля описать)

потом в модуле объекта Отчета уже прописать установку таких параметров.


// Настройки общей формы отчета подсистемы "Варианты отчетов".
//
// Параметры:
//   Форма - УправляемаяФорма, Неопределено - Форма отчета или форма настроек отчета.
//       Неопределено когда вызов без контекста.
//   КлючВарианта - Строка, Неопределено - Имя предопределенного
//       или уникальный идентификатор пользовательского варианта отчета.
//       Неопределено когда вызов без контекста.
//   Настройки - Структура - см. возвращаемое значение
//       ОтчетыКлиентСервер.ПолучитьНастройкиОтчетаПоУмолчанию().
//
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
	
	Настройки.События.ПриОпределенииПараметровВыбора = Истина;
	
КонецПроцедуры


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

Показать


Может кому пригодится...
eufes; dvsidelnikov; +2 Ответить
28. vasilev2015 2727 30.07.19 15:28 Сейчас в теме
Здравствуйте !

Фразу "...что можно сделать ? - Все.." я написал с долей иронии.

Как я понимаю, открытие отчета происходит раньше формирования, раньше события "ПриКомпоновке..."

Кстати, я следующую статью уже заготовил, там будет про ОпределитьНастройкиФормы.

В любом случае, спасибо за отзыв, может кому пригодится.
29. logarifm 1123 30.07.19 15:34 Сейчас в теме
(28) Обратите уклон на БСП в этом сущность. 1С как обычно все описала как смогли на ИТС

Я только хотел чтобы Вы обратили внимание именно на БСП. Там много фичей при получении настроек Вне формы (основной) эта форма переопределяется. И вот здесь нам разработчики немножко оставили поле для деятельности.
40. vasilev2015 2727 01.08.19 10:38 Сейчас в теме
(29) Здравствуйте !

опубликовал статью про БСП, как вы хотели

https://infostart.ru/public/1100185/
dvsidelnikov; +1 Ответить
30. Yashazz 4794 30.07.19 19:06 Сейчас в теме
Ну, сборник самоочевидностей и баянов, конечно, но как антисклерозная записная книжка - вполне прокатит и потому невредно быть.
31. vasilev2015 2727 30.07.19 20:39 Сейчас в теме
(30) Здравствуйте, Яков !

Откуда Вы узнали про мой склероз ?

Не помню, чтобы я про это кому-то рассказывал....
39. Yashazz 4794 31.07.19 18:39 Сейчас в теме
(31) Я вообще-то про себя) потому что у меня, к примеру, бывает - забывается некая тонкость, а в таком поминальничке раз, и посмотрел.
42. Nefilimus 75 01.08.19 14:33 Сейчас в теме
Спасибо большое! Было приятно узнать новое.
56. user1194102 10.02.20 08:33 Сейчас в теме
Здравствуйте, большое спасибо за статью, допишите еще пожалуйста модуль - как подключить свой Макет (например унифицированную форму) можно без цикла, например Счет без ТЧ или приказ о приеме на работу, в самом простом виде, что бы просто понять как вывести параметры запроса из СКД в Свой макет.
57. vasilev2015 2727 10.02.20 11:39 Сейчас в теме
(56) Здравствуйте ! Да, постараюсь.
58. resonance 82 18.03.20 22:57 Сейчас в теме
Добрый день. Спасибо помогли. Отличная статья.
59. German_Tagil 43 07.07.20 06:31 Сейчас в теме
Помогите пожалуйста
есть форма документа - счет на оплату поставщика
вызывается внешний отчет СКД

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


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

    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    Возврат КомпоновщикНастроек.ПользовательскиеНастройки;
КонецФункции

Показать



в модуле объекта отчета


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

 СтандартнаяОбработка = Ложь;
 

 Настройки = КомпоновщикНастроек.ПолучитьНастройки();
 ПараметрыДанных = Настройки.ПараметрыДанных;
 Регистратор  = ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Проба")).Значение;
 ссылка =   ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ссылка")).Значение;

 
 
 КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
 МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки, , , Ложь);
 ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
 ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки, Истина);
 ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
 ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

  ПроцессорВывода.Вывести(ПроцессорКомпоновки);



если Регистратор = Истина тогда

ДокОб = ДанныеФормыВЗначение(ссылка,Тип("ДокументОбъект.Счетнаоплатупоставщика"));


ну и далее обработка..

конецесли;    

Показать


этот вариант работает но настройки недоступны потому что форма настроек не понимает
что такое ссылка

поэтому пытаюсь получить владельцаформы.объект
в форме отчета

&НаКлиенте
Процедура СН_ПриОткрытииПосле(Отказ)
    
    Сообщить(ВладелецФормы.Объект);

    ПриОткрытииНаСервере(ВладелецФормы.Объект); 
    
    
КонецПроцедуры


&НаСервере
Процедура ПриОткрытииНаСервере(Знач Об1)
ДокОб = ДанныеФормыВЗначение(Об1,Тип("ДокументОбъект.Счетнаоплатупоставщика"));
Сообщить(ДокОб);


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

Показать




Вопрос каким образом передать владельцаформы.объект в процедуру ПриКомпоновкеРезультата????????
60. vasilev2015 2727 07.07.20 17:23 Сейчас в теме
(59) Здравствуйте !
вопрос не по теме, но попробую ответить.

Чтобы из внешней обработки изменять документ, лучше воспользоваться типовым механизмом БСП "Обработки табличных частей", например https://infostart.ru/public/825702/
61. German_Tagil 43 08.07.20 05:49 Сейчас в теме
(60) Спасибо но каким образом это поможет передать Владелецформы.объект в ПриКомпоновкеРезультата?
62. vasilev2015 2727 08.07.20 11:28 Сейчас в теме
(61) я не уверен, что использовать событие "ПриКомпоновкеРезультата" - верное решение. Что Вы там уникальное делаете ? Почему нельзя установить параметр заранее ? Изменять документ-объект лучше через "обработку табличных частей"
63. German_Tagil 43 08.07.20 14:18 Сейчас в теме
(62) Я делаю отчет который вызывается из формы документа
посчитали посмотрели записали в документ
вот вроде и все ....
64. vasilev2015 2727 08.07.20 14:55 Сейчас в теме
(63) Изменять текущий документ лучше с помощью внешней "обработки табличных частей". В ней точно можно изменять документ - источник.

Если вы не хотите пользоваться БСП - при открытии формы обработки сохраняйте значение ВладелецФормы.Объект в реквизит объекта-обработки. При компоновке читайте ее оттуда.

У нас получается уже полноценная консультация. ((
65. Angealtor 23 14.09.20 15:17 Сейчас в теме
Как раз то, что нужно. Забираю статью себе в избранное. Спасибо!
66. leosoft 166 22.07.21 10:13 Сейчас в теме
Вопрос автору - а если у нас есть вложенные схемы - для них как работать с процедурой ПриКомпоновкеРезультата?
67. NikeeNik 79 15.09.21 13:47 Сейчас в теме
Имхо, пункт 6 некорректен - в примерах везде в процедуре "ПриКомпоновкеРезультата " выставляется флаг "СтандартнаяОбработка = Ложь" и по сути весь отчет с нуля программно собирается и выводится.
А вот как подпихнуть внешний набор данных, не заменяя весь стандартный механизм, так и непонятно(
68. vasilev2015 2727 06.11.21 21:01 Сейчас в теме
(67) Здравствуйте, Коллега !

Как ответ на Ваш вопрос, добавил пункт 9.
СтандартнаяОбработка = Истина, дополнительная обработка данных.
69. 7OH 70 15.12.21 18:16 Сейчас в теме
А нет примера, чтобы программная компоновка шла фоном ?
Да - с этим кодом можно постобработку полученного документа сделать, но при этом отчет формируется явно.
Были надежды, что эту функцию вызовет собственно фоновое задание, но увы - 1С не может сделать удобно.
71. lev6975 24.05.23 20:47 Сейчас в теме
(69)1000 плюсов! Такая муть эта СКД, я ее так и не освоил... пишу отчеты по старинке кодом
73. vasilev2015 2727 25.05.23 11:38 Сейчас в теме
(69) в типовой форме отчета есть стандартная возможность формировать фоновым заданием.
70. lev6975 24.05.23 20:40 Сейчас в теме
А можно ли из этого события перехватить вытащить таблицу значений при стандартном исполнении отчета?
Чтобы оно не печатало а отдавало мне ТЗ и ВСЁ!!!
Пояснюсь: Есть очень сложный отчет
К нему надо прилепить отчет попроще, чтобы они выдавали результат в один табдок
Структуры выходные похожи
попробовал по феншую, понял что БЕСПОЛЕЗНЯК!!! там такие дебри... я скд вообще не знаю, это реально необоримо!!!!!!! наинавороченнейший отчет с макетами вложенными схемами кучей наборов данных...
Хочу: Чтобы отработала одна схема (с параметрами на форме как будто бы ты просто делаешь отчет выбираешь кучу параметров на форме)
Формируешь. Но отчет чтобы НЕ ФОРМИРОВАЛСЯ на экран, а скидывался в ТЗ
Потом то же самое сделать со второй схемой(как - то передать параметры, выбранные в первой схеме, во вторую), получить вторую ТЗ, потом просто по колхозному в коде слить эти 2 таблицы (или запросом к этим 2 таблицам с соединением, не суть, дело техники). ГЛАВНОЕ - получить 2 ТЗ и запретить вывод результата на экран для этих двух схем, а чтобы просто отдали мне две таблицы значений. Такое возможно?
Заранее благодарен
72. vasilev2015 2727 25.05.23 11:26 Сейчас в теме
(70) Привет, Бро !

Все мои сертификаты 1С:Специалист от 2000 года по 1С 7.7,
Поэтому мне тоже было трудно приспособиться к новшествам 1С 8.
Но оно того стоило, рекомендую.

Для вывода в таблицу значений посмотрите примеры кода 1С со словом
ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений
74. 79123890854 14.08.23 09:05 Сейчас в теме
Подскажите пожалуйста.
Добавил несколько отборов по пункту 4.
Как их объединить в группу ИЛИ?
75. vasilev2015 2727 15.08.23 13:36 Сейчас в теме
(74) В справке предусмотрено свойство Родитель для ЭлементОтбораКомпоновкиДанных.
Посмотрите в процедуре при создании отбора, как указать родитель.
Если стандартной возможности нет - напишите свою процедуру.
76. 79123890854 15.08.23 14:58 Сейчас в теме
(75)сделал так:

НастройкиНовые = КомпоновщикНастроек.ПолучитьНастройки();  

НастройкиНовые.Отбор.Элементы.Очистить();
ГруппаЭлементовОтбора = НастройкиНовые.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаЭлементовОтбора.Использование = Истина;
ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаЭлементовОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;

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

КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиНовые);
Показать
77. vasilev2015 2727 16.08.23 16:08 Сейчас в теме
(76) Да пребудет с вами сила !
79. Cthulhu 1 03.12.24 12:12 Сейчас в теме
в п.9 наверное, все-таки,
//Для каждого ОтсутствующийИдентификатор Из ОтсутствующиеИдентификаторы Цикл
Для каждого ОтсутствующийИдентификатор Из ОтсутствующиеИДНоменклатуры Цикл

- не?
80. vasilev2015 2727 03.12.24 16:35 Сейчас в теме
(79) Да, так правильнее ))
Вы всегда так внимательно читаете или конкретно этот фрагмент чем-то зацепил ?
81. Cthulhu 1 04.12.24 17:26 Сейчас в теме
(80) не обращал внимания, наверное почти всегда (что интересует в целом - а Ваша статья в этом смысле понравилась - настолько, что я ее в пдф-ку собрал и в закрома утащил)
Оставьте свое сообщение