На вопрос «Что можно делать в СКД , в процедуре ПриКомпоновкеРезультата ?» смело отвечайте «Все!» и вы не ошибетесь. Ниже список приемов кодирования внутри процедуры ПриКомпоновкеРезультата, подходит для УТ 11.4.6.188 и многих других современных программ. Пункты 6-8 уже подробно описаны на сайте, включил их для полной картины. Хотелось обобщить, собрать все приемы в одном месте.
1. Присвоить значение параметра.
2. Дополнительная обработка табличного документа ДокументРезультат.
3. Изменить текст запроса, получить значение параметра.
4. Установить дополнительный отбор
5. Подсчитать итог по отчету
6. Внешние наборы данных (ссылки).
7. Нестандартная обработка системы компоновки данных (ссылки).
8. Нестандартная расшифровка (ссылки).
Прочее
Кроме всего вышеперечисленного, в процедуре «ПриКомпоновкеРезультата» можно устанавливать нужный вариант отчета или проверять права пользователя на доступ к отчету, но как правило, это выполняют раньше. В типовой конфигурации УТ разработчики чаще всего используют приемы 2-4, 7. Вот кажется и все.
Файл с учебным примером прикреплен.
Обновление от 13/09/2025
Для ДинамическогоСписка обратите внимание на функции
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(),
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(),
ПолучитьИсполняемуюСхемуКомпоновкиДанных(),
ПолучитьИсполняемыеНастройкиКомпоновкиДанных().
Хороший материал, пригодится
(2) Здравствуйте !
Это учебный пример.
В реальности вместо текста должен быть вызов функции (вычисление значения).
:))
(2) Вы смотрели байт-код этой процедуры? В си, компилятор оптимизирует байт-код и независимо как написать в одну или две строки на выходе будет один и тот же код. А программа пишется для программиста и понятнее как раз в две строки.
(5) интерпретатор в 1с и вряд ли там есть оптимизация это ж даже не среда разработки
(6) «вот за это 1сников и не считают за программистов » — задело это, в других языках, в частности Си, это как раз допустимо и приветствуется как правило запись в две строки.Если Вы знаете как выполняется код в 1С, то тогда может и правы. Но 1С это все же среда разработки.
Полезный материал и хорошо оформлен.
(7) я не против записать в две строки, но дать переменной осмысленное название если она нужна в данном случае переменную надо назвать ВыражениеКомпоновки чтобы не путать со значением
но переменная не нужна и можно было в комментарий записать или вообще в строковый реквизит вместо переменной
«тут команда выполнить»
я когда прочитал прямо почувствовал как у меня из-за напряжения в голове уменьшилось количество во нейронов, поэтому и высказал претензию автору образцы кода должны быть легкими для восприятия
(6)Вряд ли там есть оптимизация, это даже не среда разработки…
Можно объяснить, для тупых, как связаны среда разработки и оптимизация байткода?
прикольно, базовые вещи уже обсуждаем — напишите, что «при компановке» — это единственное правильное стандартизированное решение… а то многие до сих пор работают на «форме» и считают себя мегаспецами, ну а за ними переделывать все приходится))))
(2)
1сников это не волнует…
радуйтесь жизни и не глядите в рот другим…
(0) не проверял, но в избранное положу….звездочку в карму
(9)тут у нас волшебник господа. Он хочет оптимизировать код, но не алгоритм. Он борется за количество строк, но не хочет понять что, код для программиста а не для машины. И что читать а тем более отлаживать легче алгоритмы написанные не в одну строку с подстановкой параметров функций в месте их вычисления. Он хочет заменить переменную на комментарий. Наверное его код представляет из себя пол листа текста с пояснениями и одну строку вызова функции где все параметры вычисляются в месте вызова.
(14) прочитал бы три раза прежде чем писать
за колво строк я не борюсь — читай внимательно выше «я не против писать в две строки»
ну и далее читай и думай, значит голову включай)
(10) тупым объяснять — хорошая шутка))
(16)пруфов не будет, понятно, ты видимо просто умничал в (5) но немного обосрамс
Я этим пользуюсь сплошь и рядом. Редкий отчёт без неё, только самый простой
В первом примере на снимке изображены параметры схемы компоновки данных. А в коде приведен пример установки параметров настроек компоновки данных. Все-таки важно понимать, какие параметры устанавливаем, а то можно словить неожиданные эффекты.
(19) В коде можно изменить параметры схемы?
(20) Можно
(19) Здравствуйте !
спасибо за уточнение.
Три раза за сегодня залез подглядеть — пришлось звездочку поставить %))
(24) Здравствуйте !
да я сам только для того статью и написал, чтобы сюда подглядывать.
ЗУП 8.3.15.1489 не современная… Присвоение значения параметра выглядит примерно так:
Если Вы заговорили о штатных конфигурациях то позвольте с Вами в кой чем не согласится, а именно не все возможно сделать в процедуре ПриКомопоновкеРезультата, а именно, вот недавно пришлось решать задачу на базе конфигурации БСП. В отчете указаны параметры и отчет надо сделать с вызова команды. То есть есть документ Приход в нем необходимо добавить в подменю Отчеты нашу команду с вариантом отчета (это не главное). Главное то что отчет должен открыться сразу с параметрами из Номерами артикулов из документа. В отчете это не Отбор , а ПараметрДанных (так спроектированно). Так вот ПриКомпоновке нам никак не удасца присвоить наши значения параметров.
В БСП имеется функционал:
НастройкиОтчета.ОпределитьНастройкиФормы = Истина; (необходимо в модуле менеджера отчета или общего модуля описать)
потом в модуле объекта Отчета уже прописать установку таких параметров.
Показать
Может кому пригодится…
Здравствуйте !
Фразу «…что можно сделать ? — Все..» я написал с долей иронии.
Как я понимаю, открытие отчета происходит раньше формирования, раньше события «ПриКомпоновке…»
Кстати, я следующую статью уже заготовил, там будет про ОпределитьНастройкиФормы.
В любом случае, спасибо за отзыв, может кому пригодится.
(28) Обратите уклон на БСП в этом сущность. 1С как обычно все описала как смогли наИТС
Я только хотел чтобы Вы обратили внимание именно на БСП. Там много фичей при получении настроек Вне формы (основной) эта форма переопределяется. И вот здесь нам разработчики немножко оставили поле для деятельности.
Ну, сборник самоочевидностей и баянов, конечно, но как антисклерозная записная книжка — вполне прокатит и потому невредно быть.
(30) Здравствуйте, Яков !
Откуда Вы узнали про мой склероз ?
Не помню, чтобы я про это кому-то рассказывал….
(26) только сейчас заметил, что скинул версию платформы. ЗУП 3.1.9.227
(33) Здравствуйте !
Мало адептов ЗУП, никто не заметил. Можно еще посмотреть версию БСП командой
СтандартныеПодсистемыСервер.ВерсияБиблиотеки();
?
Во всех отчетах используют Параметры.УстановитьЗначениеПараметра, или исключительный отчет ?
(1) Добрый день! Спасибо, интересно.
https://infostart.ru/public/967277/
Вот еще статья по теме ПриКомпоновкеРезультата.
1. Использование Набора данных и загрузка в него Таблицы значений.
3. Установить параметры в модуле отчета
4. Заголовок в отчете СКД
(35) Здравствуйте !
Посмотрел, неплохая статья.
(34)
3.0.1.440
В типовых отчетах для каждого параметра используется примерно такой код:
Мы для себя решили, что в самописных отчетах будем получать все параметры данных и уже с этим работать
(1) Спасибо, всегда интересно читать примеры, собранные опытным путем в библиотеку знаний и приемов. Повышает скилл программиста 🙂
(31) Я вообще-то про себя) потому что у меня, к примеру, бывает — забывается некая тонкость, а в таком поминальничке раз, и посмотрел.
(29) Здравствуйте !
опубликовал статью про БСП, как вы хотели
(23)
очень неплохо
не не не, это я понимаю, я не понимаю,как ты аргументировал отсутствие оптимизации, тем, что для тебя конфигуратор не среда разработки. То есть с твоего позволения я процитирую: (6)
Вот я и спрашиваю, раз ты такой умный то может расскажешь(как нибудь утром, когда ты добрый) где связь интерпетатора и конфигуратора которую ты увидел когда писал (6)
(23)
Ничоси, расскажи это java php и perl а еще расскажи как 1с вычисляет(не всегда конечно) бесконечные циклы.
не, изначально сообщение было о том, что оптимизаций нет, потому, что конфигуратор не такой, как тебе бы хотелось
Спасибо, добрый, человек, я стараюсь
Спасибо большое! Было приятно узнать новое.
(41) плохо стараешься, пишешь код и смотришь как его понимает конфигуратор — есть оптимизация или нет для этого все средства у тебя есть удачи
если бы ты включил голову и вчитался в приведенную тобой цитату то увидел бы в ней предположение и никакой аргументации, вероятно из-за этого ты увел спор в другую тему совсем не связанную с темой топика
еще раз вернуться к теме топика и высказанной мной претензии — объявляется переменная, которая тут же используется и больше нигде — это не нужно и конфигуратор или интерпретатор или «среда разработки» как ты ее называешь вряд ли такое оптимизирует будет выделена память на ненужную переменную
вроед то что конфигуратор не среда обработки я тоже пояснил — ты загуглил «определение конфигуратора» получил конфигуратор — это режим работы программы
(43)
как могу, сорян, что разочаровал, в следующий раз буду стараться лучше
Я просто спросил по теме поста в (6) мне показалось, что это среда
неразработки(здесь и далее имеется ввиду конфигуратор) и оптимизация выполняемого кода, две не связанные вещи. Я подумал, может я туповат и не понимаю элементарных вещей? Спросил на всякий, ты сказал, да ты туповат. Я спросил но, чего же я не понял? Ты вместо аргументов отвечаешь, что я спор куда-то увожу. По моему туповат не я.Может быть у тебя есть исходные коды, что бы делать такие заявления? Или хотя бы рекомендации вендора?
Просто поток сознания, никак не относящийся к беседе с обсуждением что предполагает под собой термин.
(44) блин ты не до конца туповат, ты молодец стараешься, правильно понимаешь ты уводишь спор не в ту сторону, я сказал фразу конфигуратор не среда разработки на уровне бога нет… хочешь верь хочешь нет, приводил пример для кого -то и блокнот среда разработки, только сверху нужно добавить интерпретатор строк текста, ты так и не понял что конфигуратор ближе к песочнице — ограниченной среде для написания своего кода… конечно кодов у меня нет и с разработчиками 1с не спал , я работал в андроид студио, в эклипсе и сравниваю с ними… касательно примера — если бы я указал неиспользуемую переменную в них среда разработки вежливо мне подсказала что уважаемый переменная не используется, а конфигуратор смолчит и много других маст хев фишек — история изменений, версии приложений вних реально удобнее именно разрабатывать а с конфигуратором я отдельно держу библиотеку вот таких вот приведенных примеров кода, только у меня переменная для выражения скд не называется значением скд!
(44)когда говоришь что конфигуратор среда разработки хочется добавить како-нибудь прилагательно вроде — доисторическая, урезанная или вот постарался нашел в некоторых источниках аргумент в твою пользу называют таки конфигуратор объектно-ориентированной средой разработки… вот без прилагательного просто средой разработки конфигуратор не называть — это против моей религии) понятно наконец
(44) крик души — тупые псевдоразработчики 1с у надписи дата отправки поставили поле ввода дата доставки а блокнот конфигуратор не подсказывает)
(45)ты таки пытаешься ответить не на тот вопрос, который я задал в (10) я не спорю среда разработки конфигуратор или нет. Я работал в php storm, когда писал первые сайты, я писал1c-cod.ru в PyCharm. Сейчас периодически курю другие вещи в visual studio code. Были и сублаймы и атомы и нотепад++ и обычный блокнот. Я понимаю разницу между средой разработки и продвинутым текстовым редактором. Может быть конфигуратор хороший, может быть плохой(на тему именно переменной, меня бесит когда мне тыкают этим при сборке, или каждой компиляции) но вопрос был другим. Может все таки ответишь на него а сопли на тему, что тебе, что то не нравится в том как работает конфигуратор или что не так названа переменная в абстрактном примере оставь себе. Уважаемые знатоки внимание вопрос связанный с (6)
Как все таки связаны
несреданеразработки и оптимизация выполняемого байт кода? Большая просьба уважаемого user623969_dusa не уводить спор в сторону.тогда мне непонятно, откуда выводы про,отсутствие оптимизации. С потолка?
(46)Абсолютно наплевать, чем ты считаешь конфигуратор. Не могу понять, почему до тебя это до сих пор не дошло.
(48) не могу ответить на вопрос который не задавал где ты увидел до 10 про байт код и среду разработки
как ты из (6)Вряд ли там есть оптимизация, это даже не среда разработки…
перевел это в
Можно объяснить, для тупых, как связаны среда разработки и оптимизация байткода?
ты невнимательно читал на что я ответил в (6)
оптимизация может быть не только байт кода а подсказки среды разработки как лучше написать программу представляешь — это тоже оптимизация — среда разработки подсказывает лучшее решение
ты не узнал контекст используемого слова придумал свое и просишь меня дать ответ интересный ход, я не случайно каждый раз тебя возвращаю к теме — уходишь от нее все время ты
даже попробую восстановить ход мыслей чтоб ты не мучался цени
5. Rais96 26.07.19 14:33
(2) Вы смотрели байт-код этой процедуры? В си, компилятор оптимизирует байт-код и независимо как написать в одну или две строки на выходе будет один и тот же код. А программа пишется для программиста и понятнее как раз в две строки.
отвечаю на 5 поправляю что конфигуратор интерпретирует код и написанный в модулях а значит не оптимизирует и далее по тексту — не будет код одинаковым если сначала идет оператор присваиваний а затем вызов процедуры
или сразу вызов процедуры с установленным значением это мог бы сделать компилятор но у нас интерпретатор, байт код для этого смотреть не надо — смотришь средство конфигуратора замер производительности на выполнение присваивания тратится время
не утони в тексте — не уйди опять в сторону
(48) еще раз отсутствие оптимизации простые логические рассуждения — есть замер производительности он показывает время выполнения команд — зачем замерять команду если она будет оптимизирована, значит работает интерпретатор — каждая команда имеет точку входа и выхода
кстати то что интерпретатор выполняет бесконечные циклы чтоб ты знал это не оптимизация а обработка исключительной ситуации — контролируется команда на повторение не больше Н раз — я не знаю, с разработчиками не спал, это логика , не всем доступно
ты ж не знаешь что такое оптимизация — это выбор лучшего из альтернатив, приводящих к решению.. бесконечный цикл к решению не приводит, это ошибочная ситуация а не вариант оптимизации.. с тобой было бы приятно рассуждать если бы в твоем тексте была бы не вода а вот такие рассуждения.. в прошлом (44) ты старался и мне показалось ты что то понял а тут (48) опять скатился на непонимание
(48) сложно написал поймешь ли,
итого кратко простыми словами
человек в 5 говорит какая разница 2 строки или одна конфигуратор оптимизирует
я возражаю говорю у нас интерпретатор и он каждую строку кода выполняет отдельно, оптимизации в виде представления двух строк в одну нет
байт код не смотрим, смотрим замер производительности
тебе кажется что в моих ответах вода потому что ты ждешь что я тебе расскажу про связь среды разработки и оптимизации байт кода… если все еще ждешь прочти 3 предыдущих абзаца повторно
(52) вот из-за такой маленькой фигни, раздул столько воды, говорила мне мама не объясняй ничего тупым людям, ты ведь сам в (10) признался. Сгубила меня моя доброта. Убивают тупые люди доброту на земле. Кстати тупых людей больше — доброты меньше))
(52) это странно. Имхо разделителем строк для интерпретатора является точка с запятой, а для программиста enter.
(50)
Ах оптимизация среды разработки…так надо было сразу и сказать, не было бы срача. На тему, оптимизации конфигуратора есть оптимизаторы ввиде турбоконфа и снегопата. В последнем скриптами можешь сам прикрутить, все, что хочешь. Вроде как. Я сам не пользуюсь, но по описанию, вроде было так.
(51)
А если надо больше Н раз?
(52)
Неее мне так не кажется, все отлично. читать одно удовольствие, еще бы не грубил в процессе, вообще бы красота. Но это вроде как норм, люди любят хамить в нашей стране в России живем.
(52)
Ок, согласимся. Но все равно наплевать ибо это демонстрационный пример, объясняющий механику и не
можетдолжен выступать образцом кода.(53)
Бомбануло знатно, лулзов норм прилетело, получил тонну удоволствия от этих брызг эмоций, правда монитор мне забрызгал с обратной стороны, как его теперь оттирать хз.
(53)
Что случилось то? Надеюсь с тобой все хорошо. Не переживай так сильно пожалуйста из-за переменной в конфигураторе.Или из-за чего ты там так сильно разволновался. Неважно, просто не переживай )