Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Публикация № 1101676 08.08.19

Приемы и методы разработки

внутренние функции СКД вычислить выражение с группировкой массив

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

Предыдущие статьи по СКД можно посмотреть по ссылкам ниже:

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

Одним из таких механизмов является использование внутренних функций СКД.

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

  • В реквизитах полей компоновки: «Выражение представления», «Выражение упорядочивания»  
  • В выражениях вычисляемых полей
  • В выражениях ресурсов
  • В выражениях связей наборов данных
  • В выражениях параметров
  • В выражениях параметров предопределенных макетов
  • В выражениях пользовательских полей

Самих функций очень много, полный их перечень можно посмотреть в справке 1С:

Внутренние функции СКД

В основном их назначение и использование интуитивно понятно, поэтому рассматривать их подробно я смысла не вижу.

Исключением являются функции из группы «Вычислить выражение»:

  • Вычислить
  • ВычислитьВыражение
  • ВычислитьВыражениеСГруппировкойМассив
  • ВычислитьВыражениеСГруппировкойТаблицаЗначений

Несмотря на достаточно внушительно описание в справке, их использование вызывает много вопросов. Функции часто используется «интуитивно», без глубокого понимания происходящего. 

Цель этой статьи - «осознанное» применение функций из группы «Вычислять выражение».

И так, поехали…

Первая функция «Вычислить» - на данный момент устарела. Она является подмножеством функции «ВычислитьВыражение», в которой реализован весь ее функционал и добавлены дополнительные возможности. Функция «Вычислить» осталась только для сохранения обратной совместимости. Поэтому перейдем сразу к рассмотрению функции «ВычислятьВыражение».

 

ВычислитьВыражение

Полный синтаксис функции следующий:

ВычислитьВыражение(Выражение, Группировка, ТипРасчета, Начало, Конец, Сортировка, ИерархическаяСортировка, ОбработкаОдинаковыхЗначенийПорядка)

Общее описание функции:

Выполнить произвольное выражение в контексте некоторой группировки или набора группировок. Можно провести аналогию с расчетом итогов. Отличие в том, что при расчете итогов, выражение рассчитывается всегда в контексте текущей группировки, в зависимости от уровня, на котором происходит расчет. Тогда как функция «ВычислитьВыражение» позволяет получить расчет в контексте произвольной группировки, отличной от текущей.

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

Рассмотрим эти параметры последовательно.

 

Группировка

Указание группировки, в контексте которой будет выполнен расчет.

Для примера, рассмотрим простой отчет со следующей структурой:

Структура простого отчета

Если для такого отчета создать вычисляемое поле со следующим выражением:

ВычислитьВыражение("Сумма(Количество)", "Товар",)

Для всех детальных записей вычисляемого поля будет выполнен расчет по строкам, входящим в родительскую группировку «Товар».

Если создать поле с выражением:

ВычислитьВыражение("Сумма(Количество)", "Склад",)

Для всех записей (детальных и групповых) будет выполнен расчет по строкам, входящим в родительскую группировку «Склад»:

Расчет по группировкам

Если параметр не указан, расчет будет выполняться в контексте текущей группировки, и ничем не отличается от обычного расчета итогов по ресурсам.

Например, следующие выражения указанное для расчета итога ресурсу «Количество» будут работать абсолютно одинаково:

ВычислитьВыражение("Сумма(Количество)", , )
Сумма(Количество)

Если в качестве параметра указано значение «ОбщийИтог», выражение будет рассчитано по всем строкам отчета.

 

Тип расчета

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

  • Группировка,
  • ОбщийИтог,
  • Иерархия,
  • ГруппировкаНеРесурса.

Если параметр не указан, значение по умолчанию - «Группировка». В этом случае никаких дополнительных уточнений выполняться не будет.

Если параметр имеет значение «ОбщийИтог», выражение будет вычисляться для всех группировок, которые находятся на одном уровне с указанной во втором параметре. Если во втором параметре группировка не указана, выражение будет вычислено для всех группировок или детальных записей, находящихся на одном уровне с текущей.

Ниже примеры работы выражений:

ВычислитьВыражение("Сумма(Количество)", "Товар", "ОбщийИтог")
ВычислитьВыражение("Сумма(Количество)", , "ОбщийИтог")

Тип расчета - общий итог

Значение параметра «Иерархия» имеет смысл только в том случае, если в отчете используется иерархическая группировка. Данная инструкция позволяет рассчитать выражение по родителю группировки, указанной во втором параметре. Если второй параметр не указан, по родителю текущей группировке.

Пример работы выражения:

ВычислитьВыражение("Сумма(Количество)", "Товар", "Иерархия")

Тип расчета - Иерархия

Если в отчете не используется иерархия для группировок, значение «Иерархия» работает аналогично значению «ОбщийИтог».

Существует еще загадочное значение «ГруппировкаНеРесурса».

Описание, приведенное в справке не понятно:

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

Мне не доводилось использовать данное значение. Проводя эксперименты, каких-то отличий применения данного значения от значения «Группировка», я не выявил. Очень может быть, что это значение не актуально на сегодняшний день.

Если кто-то использовал это значение, напишите, пожалуйста, в комментариях, очень интересно!

 

Группа параметров: «Начало», «Конец»

Эти параметры позволяют еще более точно указать набор необходимых группировок. Они расширяют возможности параметра «Тип расчета». Позволяют выполнять расчет не только по текущей или по всем группировкам, а выбрать необходимый диапазон.

Поскольку данные параметры являются расширением параметра «Тип расчета», их нельзя использовать совместно с типами расчета: «ОбщийИтог», «Группировка».

Конструкции ниже являются аналогичными:

ВычислитьВыражение("Сумма(Количество)", , "ОбщийИтог")
ВычислитьВыражение("Сумма(Количество)", , , "Первая", "Последняя")

И

ВычислитьВыражение("Сумма(Количество)", , )
ВычислитьВыражение("Сумма(Количество)", , "Группировка")
ВычислитьВыражение("Сумма(Количество)", , , "Текущая", "Текущая")

Возможные значения параметров следующие:

  • Первая – первая группировка или детальная запись в наборе, возможно указать смещение «Первая(2)»,
  • Последняя - последняя группировка или детальная запись в наборе, возможно указать смещение «Последняя(2)»,
  • Предыдущая – предыдущая от текущей группировки или детальной записи в наборе, возможно указать смещение «Предыдущая(2)»,
  • Последующая - следующая от текущей группировки или детальной записи в наборе, возможно указать смещение «Следующая(2)»,
  • Текущая – текущая группировка или детальная запись,
  • ОграничивающееЗначение – ограничение по конкретному значению, которое можно указать в скобках. Ограничивающее значение применяется к первому полю упорядочивания.

Особенности применения параметров:

Конечная запись не должна предшествовать начальной.

Если указана только начальная запись, конечная будет равна значению «Текущая».

Если выражение рассчитывается по группировке, отбор записей выполняется на уровне этой группировки. Текущей в данном случае будет родительская группировка:

ВычислитьВыражение("Сумма(Сумма)", "Поставщик", ,"Предыдущая", "Текущая")

Диапазон группировок

Для иерархической группировки, отбор записей выполняется на текущем уровне иерархии. Пример, для иерархической группировки по поставщику:

ВычислитьВыражение("СУММА(Сумма)", "Поставщик", , "Первая", "Первая")

Диапазон для иерархической группировке

 

Параметр «Начало» можно использовать совместно с выражением, которое не является агрегатной функцией.

В этом случае, выражение будет вычислено для группировки или строки указанной в данном параметре. Ниже пример получения номера документа из предыдущей строки:

ВычислитьВыражение("Номер", , ,"Предыдущая") 

Если выражение (не агрегатная функция) получается не по строке, а по группировке, для расчета будет использоваться первая строка этой группировки:

ВычислитьВыражение("Номер", "Поставщик", ,"Предыдущая")

Номер предыдущего для группировки

 

Сортировка, ИерархическаяСортировка

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

Параметр «ИерархическаяСортировка» позволяет отдельно переопределить сортировку иерархии элементов. Если он не указан, для иерархии действует выражение параметра «Сортировка».

Если параметр «Сортировка» не указан, получение первой и последней записей будет выполняться с учетом текущей сортировки данных в отчете. 

В выражении сортировки можно использовать ключевые слова: «Возр», «Убыв», «Автоупорядочивание».

Поля, указанные в выражении сортировки, должны быть допустимыми на текущем уровне группировки.

Пример выражения сортировки:

Поставщик Возр Автоупорядочивание

 

ОбработкаОдинаковыхЗначенийПорядка

Дополнительная настройка, которая на практике применяется крайне редко. Параметр имеет два значения: «Отдельно» (по умолчанию) и «Вместе».

Значение параметра «Отдельно» говорит о том, что записи с одинаковыми значениями упорядочивания будут выстроены в последовательность в любом случае. Последовательность будет определена согласно выводу данных в отчете.

Если значение параметра «Вместе», записи с одинаковыми значениями упорядочивания будут объединены. Например, при определении текущей записи, будут возвращены все строки со значением упорядочивания как у текущей. Предыдущая или последующая строки будут возвращены также с учетом объединения строк с одинаковым значением упорядочивания.   

 

Нюансы использования функции «ВычислитьВыражение»

Не стоит забывать, что функция «ВычислитьВыражение» совместно с агрегатной функцией, сама по себе уже является расчетом ресурса по некоторой группировке. По этому, если Вы указали для вычисляемого поля «Поле1» выражение следующего вида:

ВычислитьВыражение("Сумма(Количество)", "Товар",)

В выражении ресурса по этому полю не корректно использовать еще одну агрегатную функцию:

Сумма(Поле1)

В этом случае, по группировке «Товар», вы получите не корректные данные.

Правильным решением будет либо указание поля без агрегатной функции:

Поле1

Существует ограничение на использование полей содержащих функцию «ВычислитьВыражение» в групповых отборах.

Запрещается накладывать отбор на детальные записи, в которых используется функция «ВычислитьВыражение». Появляется ошибка вида «Выражение не может быть вычислено…». Если отбор накладывается на уровне группировки, и выполняется по полю «Ресурс» запрет распространяется только на конструкцию:  

ВычислитьВыражение("Сумма(Количество)", , "ОбщийИтог")

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

ВычислитьВыражение("Сумма(Количество)", , , "Первая", "Текущая")

При групповом отборе сообщения об ошибке выдаваться не будет. Но следует иметь в виду, что отбор будет выполняться только по текущей группировке, аналогично выражению:

ВычислитьВыражение("Сумма(Количество)")

Скорее всего отбор будет не тем, который ожидается.

Для корректной работы, необходимо указать настройку группового отбора «Применение = После группировки или для иерархии», или «Применение = Только иерархия».

При выполнении отбора по детальным записям (на уровне отчета в целом), подобные конструкции также выдают ошибку. Однако, если наложить отбор по группировке «Детальные записи» с применением «После группировки или для иерархии» - он будет работать корректно.

Более подробно про настройку «Применение» групповых отборов смотрите в статье настройки вариантов отчетов.

Еще одно ограничение - функция «ВычислитьВыражение» не учитывает иерархические отборы примененные к группировкам.

 

ВычислитьВыражениеСГруппировкойМассив и ВычислитьВыражениеСГруппировкойТаблицаЗначений

Данные функции очень похожи. Разница состоит в том, что в первом случае возвращаются данные в виде массива, а во втором в виде таблицы значений. Также, вторая функция позволяет в выражении указать несколько полей, перечисленных через запятую. В этом случае, результирующая таблица будет содержать несколько колонок.

Остановимся подробнее на первой функции. Все рассмотренное будет справедливо и для второй.

Полный синтаксис функции следующий:

ВычислитьВыражениеСГруппировкойМассив (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок) 

Общее описание функции:

Выполнить произвольное выражение в контексте группировок по всем разрезам, указанным в выражении полей группировки и выдать результирующие данные в виде массива.

В отличие от функции «ВычислитьВыражение», расчет происходит не по одной выбранной, или по набору выбранных группировок, а отдельно по каждому набору группировок, согласно указанным разрезам.

Для примера возьмем предыдущий отчет, и создадим новое вычисляемое поле:

ВычислитьВыражениеСГруппировкойМассив("МАКСИМУМ(Сумма)","Поставщик")

Вычислить выражение с группировкой массив

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

В параметрах «ОтборЗаписей» и «ОтборГруппировок» можно задать отбор, соответственно для детальных записей и для итоговых.

Можно использовать данную функцию в выражениях итогов совместно с агрегатными функциями. Если нужно использовать разные агрегатные функции на разных уровнях группировок, можно использовать вложение одной функции в другую. Например так:

СУММА(ВычислитьВыражениеСГруппировкойМассив("СРЕДНЕЕ(ВычислитьВыражениеСГруппировкойМассив(""МАКСИМУМ(Сумма)"", ""Поставщик, Склад""))", "Склад"))

Или создать вычисляемое поле:

ВычислитьВыражениеСГруппировкойМассив("МАКСИМУМ(Сумма)", "Поставщик, Склад")

А в выражении итогов написать следующее:

СУММА(ВычислитьВыражениеСГруппировкойМассив("СРЕДНЕЕ(ВычисляемоеПоле)", "Склад"))

Подробнее про использование вложенных функций «ВычислитьВыражениеСГруппировкойМассив» смотрите в этой статье.

С групповыми отборами, ситуация аналогична функции «ВычислитьВыражение». Отбор по группировке на поле с выражением «ВычислитьВыражениеСГруппировкойМассив» будет работать корректно, только если используется настройка отбора «Применение = После группировки или для иерархии».

На заметку. В выражениях системы компоновки данных помимо внутренних функций, можно использовать экспортные функции серверных общих модулей (глобальных и не глобальных).

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

В клиент-серверной информационной базе в режиме работы обычного приложения доступны только клиентские общие модули.

 

В следующих статьях будут рассмотрены:

Для ознакомления с предыдущими статьями можно перейти по ссылкам:

 

Спасибо за внимание.

Пишите комментарии, ставьте плюсы, подписывайтесь. Буду рад любой обратной связи.

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ellavs 848 08.08.19 11:37 Сейчас в теме
Вот спасибо, только вчера искала решение по нестандартному итогу: нужно было сделать общий итог в виде суммы по группировкам, в которых итог рассчитывался как максимальное значение по группировке. Набегом не получилось. Снова попытаюсь с Вашей статьей :)
Михаська; Drivingblind; ids79; +3 Ответить
7. ids79 6847 08.08.19 16:28 Сейчас в теме
19. echo77 1450 19.08.19 15:51 Сейчас в теме
(1) нужно сделать двойное агрегирование: Сумма(Вычислить выражением группировкой массив())
katakuna; +1 Ответить
20. ids79 6847 19.08.19 16:56 Сейчас в теме
(19)А это не двойное агрегирование. ВычислитьВыражениеСГруппировкойМассив - не агрегатная функция. А про вложенные функции написано кратно + ссылка на статью, где более подробно.
21. echo77 1450 19.08.19 17:02 Сейчас в теме
(20) сама по себе нет, но внутри, можно расположить агрегатную функцию
22. ids79 6847 19.08.19 17:49 Сейчас в теме
(21)Ну это да, в этом ее смысл. Если интересно про вложенные функции, посмотрите по ссылки из статьи.
2. wowik 857 08.08.19 11:43 Сейчас в теме
Спасибо! только вчера искал ВычислитьВыражение("Сумма(Количество)", , «ОбщийИтог»)
8. ids79 6847 08.08.19 16:30 Сейчас в теме
3. mvgfirst 6 08.08.19 11:44 Сейчас в теме
Давно ждал - что кто-то сделает описание с картинками )
И вот это свершилось )...
Михаська; murat_; ids79; +3 Ответить
9. ids79 6847 08.08.19 16:31 Сейчас в теме
4. rpgshnik 2731 08.08.19 12:16 Сейчас в теме
Использовал, но так же пока сам не разобрался не понял :)
С картинками пример вообще супер!
ids79; SmArtist; +2 Ответить
10. ids79 6847 08.08.19 16:31 Сейчас в теме
5. Mx-RoN 08.08.19 12:40 Сейчас в теме
А есть возможность рассказать и про другие функции СКД и их практическое применение? Вроде таких как Корреляция, СтандартноеОтклонениеВыборки, Любой, КлассификацияABC и т.д.
TeMochkiN; scanner1980; +2 Ответить
11. ids79 6847 08.08.19 16:32 Сейчас в теме
(5)Планирую написать про агрегатные функции.
TeMochkiN; +1 Ответить
6. Aftee 08.08.19 13:28 Сейчас в теме
Само выражение задается в первом параметра функции

Опечатка
12. ids79 6847 08.08.19 16:35 Сейчас в теме
13. MishaD 14 09.08.19 16:26 Сейчас в теме
Ну вот, а я так надеялся узнать, что за штука такая - группировка не ресурса
14. Yashazz 4115 11.08.19 10:30 Сейчас в теме
Мегаспасибище! Вот наконец хоть кто-то занялся всерьёз.

Слушайте, а как плюс поставить??? Минус у меня поставился (когда тыркал) а плюс нифига. Куда щёлкать-то?
15. ids79 6847 11.08.19 11:32 Сейчас в теме
(14)Пожалуйста.
Нажимайте на плюс, и выбирайте раздел, в котором будет сохранена публикация, Загрузки или Избранное.
16. Yashazz 4115 12.08.19 10:50 Сейчас в теме
(15) Ага, спасибо, жмякнул.
Кстати, у меня лет 6 назад была иллюстрация работы "ВычислитьВыражение" на примере: https://infostart.ru/public/192746/
17. ids79 6847 12.08.19 20:32 Сейчас в теме
(16)Посмотрел, интересно.

П.С. А плюсик так и не поставили :))
18. Yashazz 4115 12.08.19 22:30 Сейчас в теме
(17) Поставил!!! Сделал, как Вы сказали!
23. djan 15.10.19 12:36 Сейчас в теме
Спасибо за статью - наглядно, доступно. Я вот давеча пробовал с помощью функции ВычислитьВыражение получить в итоге группировки значение последней строки из этой группировки. Так и не получилось у меня это сделать. Если знаете, подскажите пожалуйста, для общего развития..
24. ids79 6847 15.10.19 18:03 Сейчас в теме
(23)Посмотрите комментариях к этой статье Был такой же вопрос.
25. tireal 72 24.10.19 10:57 Сейчас в теме
"Если выражение рассчитывается по группировке, отбор записей выполняется на уровне этой группировки. Текущей в данном случае будет родительская группировка:" у меня выражение (разность дат между текущей строкой и предыдущей) рассчитывается без указания группировки (2 параметр), т. е. если верить описанию в контексте текущей группировки. В детальных записях все норм, но как только я пытаюсь получить по полученным в детальных записях значениям итоги (Сумма(Разность дат) - функция как понимаю игнорирует эти данные и в итог группировки рассчитывает как разность дат последней записи пред. группировки и первой текущей.

Как же мне посчитать итоги именно по значениям детальных записей кто скажет?
27. ids79 6847 24.10.19 13:23 Сейчас в теме
(25)Проблема в том, что на уровне группировки функция ВычислитьВыражение будет уже работать не с детальными записями, а с группировками.
В Вашем случае нужно в итогах сделать так:
СУММА(ВычислитьВыражениеСГруппировкойМассив("РазностьДат", "Документ")).
Документ - это любой реквизит из детальных записей.
Тогда расчет будет корректный.
28. tireal 72 24.10.19 14:20 Сейчас в теме
(27) да спасибо, уже нашел. Но! ) теперь какие то странные общие итоги...
Прикрепленные файлы:
29. tireal 72 24.10.19 15:32 Сейчас в теме
(27) убрал Сумма в СУММА(ВычислитьВыражениеСГруппировкойМассив("РазностьДат", "Документ")). - решил посмотреть из каких сумм складывается Общий итог - только первая совпадает с итогом по первой группировке а остальное ....

Буду очень признателен если поделитесь мыслями почему так может быть
Прикрепленные файлы:
30. ids79 6847 24.10.19 16:02 Сейчас в теме
(29)Да, не будет общий итог работать. Так как нарушается корректная последовательность для определения предыдущей записи.
Нужно сделать примерно как описано тут
Для общего итога отдельный расчет с вложенными друг в друга функциями ВычислитьВыражениеСГруппировкойМассив.
26. tireal 72 24.10.19 12:13 Сейчас в теме
вроде решил, вместо Сумма(Разность дат) в выражении итога нужно было Сумма(ВычислитьВыражениеСГруппировкойМассив(Разность дат))
31. lmnlmn 65 27.11.19 10:50 Сейчас в теме
Существует еще загадочное значение «ГруппировкаНеРесурса»...

Мне не доводилось использовать данное значение. Проводя эксперименты, каких-то отличий применения данного значения от значения «Группировка», я не выявил. Очень может быть, что это значение не актуально на сегодняшний день.

Если кто-то использовал это значение, напишите, пожалуйста, в комментариях, очень интересно!

Намедни довелось прибегнуть с этому средству. Есть справочник с иерархией групп и элементов. Небезывестно, что с ними есть проблема с дублями при выводе иерархии. Так вот "ГруппировкаНеРесурса" берет значения ресурсов как раз из этих "дублей" и рисует их на уровне группировки.
У меня была задача вывести привязку пользователей к группам номенклатуры в виде кросс-таблицы где по горизонтали пользователи, а по вертикали группы номенклатуры с учетом их иерархии в справочнике. На пересечении "галочка" - булево. Что-то типа "все роли" в конфигураторе только еще с сохранением иерархии групп по строкам. "ГруппировкаНеРесурса" позволяет выводить "галочки" только в том случае, если у пользователя есть право на использование именно этой группы не взирая на дочерние. При других типах расчета мы получим "галочку" при наличии прав на любую из дочерних групп, что мне совершенно не годилось.

P.S. Извиняюсь за сумбур в описании. Понимать и исследовать как это работает совершенно некогда.
32. Shaldryn 16.12.19 09:47 Сейчас в теме
Спасибо за статью, у меня вопрос, как можно сделать чтобы для каждой группы выводилось их сумма как по элементам, так и по группе?
Прикрепленные файлы:
33. ids79 6847 16.12.19 10:11 Сейчас в теме
(32)Можно сделать отдельный расчет итогов для товаров и для Иерархии товаров.
Для иерархии использовать такую формулу:
ВычислитьВыражение("Сумма(Количество)", "Товар")
Shaldryn; +1 Ответить
34. Shaldryn 16.12.19 11:31 Сейчас в теме
(33) Да, получилось, спасибо большое
35. gorakh 25 31.01.20 11:23 Сейчас в теме
Есть колонка полученная пометодике описанной "итоги по строкам таблицы ресурсы, отличные от ресурсов в колонках таблицы" . Как можно испоьзовать результаты полученные в ней в контексте ВычислитьВыражение?
36. ids79 6847 04.02.20 09:35 Сейчас в теме
37. temdj 12 27.05.20 14:20 Сейчас в теме
Добрый день, Суммы это конечно хорошо) Не пойму, как можно сделать разность между текущей и предыдущей группировкой, чтобы получить дельту (отклонение) по периоду.
38. dmitryts 2 25.06.20 16:15 Сейчас в теме
Добрый день

В СКД уже могу многое, но вот эти функции никак не даются.
В приложении схема, которая пока у меня не работает. Вернее, не работают именно поля, которые рассчитываются этими функциями.
Если я убираю эти поля из группировки сделка, то все работает. А с ними получаю сообщение "Выражение не может быть вычислено ..."
Я так понимаю, программа пытается эти поля вычислить не для группировки Сделка...
Что не так?
Мне нужно вычислить Рентабельность по формуле (Выручка - СУММА (Затраты)) / Рентабельность

Я понимаю, что именно этот отчет можно посчитать и без этих функций. Но надо же когда-то начать! Поможете найти ошибку?
Прикрепленные файлы:
рентабельность.xml
39. ids79 6847 27.06.20 11:22 Сейчас в теме
(38)А зачем Вы добавляете эти поля в группировку "Сделка"?
Удалите их и добавьте как ресурсы, только без агрегатной функции.
Тогда не должно быть ошибки.
И еще, "ОбщийИтог" в формуле, по моему его там быть не должно.
40. user_2010 653 29.06.20 15:27 Сейчас в теме
Добрый день!
Кручу-верчу... запутать хочу :)
И так и эдак - не выходит каменный цветок...

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

Нужно посчитать переработки и недоработки
Отчет в виде таблицы:
Колонки - группировка по месяцам + итого за весь период.
Строки - группировки по Организация, сотрудник.

При расчете итого за период - нужно сложить за все месяца переработки/недоработки и если
Всего по сотруднику за период > 0 = переработка,
Всего по сотруднику за период < 0 = недоработка.

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


Для примера с цифрами

Иванов январь всего переработка/недоработка = -10 (< 0 => это недоработка)
Иванов февраль всего переработка/недоработка = +7 ( > 0 => это переработка)

Иванов Итого за период = -3 (< 0 => это недоработка)

Петров январь всего переработка/недоработка = +8 ( > 0 => это переработка)
Петров февраль всего переработка/недоработка = -6 (< 0 => это недоработка)

Петров Итого за период = +2 ( > 0 => это переработка)

Табличка:

Январь Февраль Итого за период
Всего Недораб Перераб Всего Недораб Перераб Всего Недораб Перераб
Иванов -10 -10 +7 +7 -3 -3
Петров +8 +8 -6 -6 +2 +2
Итого по орг -2 -10 +8 +1 -6 +7 -1 -3 +2

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

Возможно это настроить?

Спасибо!
41. Pryanishnikov_Vladimir 24.07.20 14:20 Сейчас в теме
Возможно ли получить значение первой записи в группировке?
Прикрепленные файлы:
43. ids79 6847 31.07.20 14:11 Сейчас в теме
(41) Первое, что нужно сделать, это сделать разные формулы расчета итогов для иерархии и для элементов.
Для иерархии, в расчете вообще убрать агрегатную функцию. По по-моему этого достаточно, чтобы выводилась первая запись группы.
42. LIL_PIVO 31.07.20 07:34 Сейчас в теме
Добрый день!

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

Строка создания ресурса ( структура передаётся в процедуру подстановки ресурсов для СКД)
СтруктураРесурсов.Вставить("ДебетНачальный", "Сумма(ВычислитьВыражениеСГруппировкойМассив(""Минимум(ДебетНачальный)"",""Точка""))");

Картина получается такая ( картинка во вложении).

Пробовал добавлять ещё один ресурс
ПолеРесурса = СхемКомпДанных.ПоляИтога.Добавить();
ПолеРесурса.ПутьКДанным = "ДебетНачальный";
ПолеРесурса.Выражение = "ВычислитьВыражение( ""0"",""ДебетНачальный"",""ДебетНачальный"")";
Прикрепленные файлы:
44. ids79 6847 31.07.20 14:21 Сейчас в теме
(42) Не очень понял, зачем Вы используете функцию ВычислитьВыражениеСГруппировкойМассив…
Попробуйте сделать так:
СтруктураРесурсов.Вставить("ДебетНачальный", "Минимум(ДебетНачальный)","Точка");
45. LIL_PIVO 31.07.20 14:55 Сейчас в теме
(44)
Суммирую, чтоб подсчитал общий итог.

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

Не помогло.


Подскажите пожалуйста, а настройки вывода полей по детальным записям как программно отредактировать?
Чтоб было типа такого
https://forum.infostart.ru/forum9/topic58095/
46. ids79 6847 31.07.20 15:04 Сейчас в теме
(45)Я не знаю, не пробовал так делать. Но, по идеи должно быть примарно так как я написал.

"Суммирую, чтоб подсчитал общий итог. "
Это имело бы смысл, для группировок более высокого уровня, чем "Точка".
А так будет тот же результат, что и Минимум(ДебетНачальный)
47. LIL_PIVO 31.07.20 15:06 Сейчас в теме
(46) Спасибо, попробую переделать структуру отчета
48. LIL_PIVO 31.07.20 16:09 Сейчас в теме
(46) Придумал ужасное решение. Т.к. знаю номера ячеек у ресурсов и у области итогов цвет жирный, скрываю записи у которых это ложь. На выходных всё же надо придумать другой способ

НомерСтр = 9; 
	Пока НомерСтр <> 200 Цикл
		
		Если Результат.Область("R" + Строка(НомерСтр) + "C3").Шрифт.Жирный = Ложь Тогда
			
			Результат.Область("R" + Строка(НомерСтр) + "C3").Текст = "";
			Результат.Область("R" + Строка(НомерСтр) + "C4").Текст = "";
			Результат.Область("R" + Строка(НомерСтр) + "C7").Текст = "";
			Результат.Область("R" + Строка(НомерСтр) + "C8").Текст = "";
			
		КонецЕсли;
		
		НомерСтр = НомерСтр + 1; 
	КонецЦикла;
Показать
49. ids79 6847 01.08.20 10:09 Сейчас в теме
(48)Да, это не очень вариант
54. Suslik_Johns 26.11.20 16:16 Сейчас в теме
(48) зато оригинально)))
Dmitri93; +1 Ответить
50. hiduk 110 06.11.20 10:40 Сейчас в теме
Спасибо за статью, познавательно.

После прочтения остались вопросы:
1) Как и для чего использовать параметры «ОтборЗаписей» и «ОтборГруппировок»?
2) Функция языка выражений СКД "ВычислитьВыражениеСГруппировкойТаблицаЗначений" является аналогом агрегатной функции "ТаблицаЗначений", но с дополнительными параметрами/возможностями?
51. ids79 6847 06.11.20 14:45 Сейчас в теме
(50) Добрый день
1. Параметр "Отбор записей" позволяет указать выражение для отбора детальных записей, которые будут обрабатываться, "ОтборГруппировок" - можно указать выражение для отбора уже сгруппированных строк. Как я понимаю, агрегатная функция в отборе группировок должна соответствовать агрегатной функции в выражении.
2. Я бы сказал, это объединение функциональности функций ВычислитьВыражение и ТаблицаЗначений
52. dvsidelnikov 23 24.11.20 20:13 Сейчас в теме
Спасибо, мил человек! Дай Бог вам здоровья!
53. Suslik_Johns 26.11.20 16:14 Сейчас в теме
А что делать в случае, если есть поле, содержащее ВычислитьВыражение(), а нужно еще применить условное оформление?
Так и не удалось этого сделать... Кто-нибудь использовал их совместно?
55. ids79 6847 26.11.20 19:56 Сейчас в теме
(53)А в чем сложность возникла?
56. Suslik_Johns 27.11.20 10:50 Сейчас в теме
(55) колонка выводит данные нарастающим итогом с помощью функции ВычислитьВыражение(). Я хочу выводить только положительные значения. Создаю условное оформление на высоту строки - система ругается. Хочу выделять цветом положительные значения - также ругается при формировании отчета. Ошибка такая же, как если бы делали отбор в этой колонке. Может, конечно, что-то не так делаю...
57. mralexeydoc 28.01.21 22:36 Сейчас в теме
Добрый день!
Бьюсь уже который день с группировками.
У меня выводятся в отчет данные плановых и фактических данных (будем называть их "Ссылки") в иерархии, где каждый узел иерархии выступает группировкой. Плановые значения лежат уже в регистре в сгруппированном виде (т.е., при записи документа, в регистр попадают данные в том виде, в котором они должны отображаться в отчете)
Перепробовал много чего и все-равно не понимаю, что не так.

Что, собственно, нужно:
1. Для колонки "Факт" группировки должны рассчитываться (с этим проблем нет, все норм - группировка делает свое);
2. Для колонки "План" - суммы должны подставляться в том же виде, как они лежат в регистре. На уровне СКД группироваться результирующие плановые данные не должны.
Особенность состоит в том, что на уровне запроса данные не группируются, поскольку в расшифровке по колонке "План" нужно отслеживать динамику изменений сумм (каким регистратором были скорректированы суммы), в том числе, и самой родительской ссылке, плюс еще дополнительно выводится множество колонок с данными для анализа.

Во вложении прикрепил скрин, как это все выглядит, для понимания.
Может подскажет кто, в каком русле копать.
Спасибо!
Прикрепленные файлы:
58. ids79 6847 29.01.21 17:11 Сейчас в теме
(57)Если я правильно понял проблему, Вам нужно в ресурсах для поля "План" убрать агрегатную функцию. Оставить только само поле.
59. Балабас 165 12.02.21 15:55 Сейчас в теме
Добрый день!
Как получить первое и последнее значение внутри группировки в ресурсах?
Эти вариант не проходят
ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ОстатокНаНачало", "Сотрудник","Группировка", "Первая","Первая")
ВЫЧИСЛИТЬВЫРАЖЕНИЕ("ОстатокНаКонец", "Сотрудник", "Группировка" ,"Последняя " ,"Последняя ")

группировки Сотрудник, ДатаПериода.
Остаток на начало/конец вычисляется на каждую ДатаПериода
необходимо, чтобы на начало по сотрудникам попадал остаток на начало по самой первой ДатаПериода, остаток на конец - соответственно по самой последеней ДатаПериода
60. ids79 6847 12.02.21 20:04 Сейчас в теме
(59)Попробуйте вместо Сотрудник указать группировку ДатаПериода. Ну и агрегатную функцию какую-нибудь указать.
61. zenechka 513 20.02.21 11:26 Сейчас в теме
А возможно такое сделать в СКД? :)
Для первой группировки нужно взять сумму максимальных записей по полям детальных записей...
А следующие группировки должны получаться суммированием нижлежайших.. (кроме нулевой)...
Прикрепленные файлы:
62. zenechka 513 20.02.21 12:44 Сейчас в теме
(61)

Группировку 1-го уровня получилось посчитать так....
Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(Ресурс1)", "Группировка0"))


а как теперь проссуммировать эти значения на группировках верхних уровней ?
63. zenechka 513 20.02.21 13:00 Сейчас в теме
(62)
Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(Ресурс1)", "Группировка0"))


Вроде как раз то что нужно получилось...

СУММА(ВычислитьВыражениеСГруппировкойМассив("Сумма(ВычислитьВыражениеСГруппировкойМассив(""Максимум(Ресурс1)"", ""Группировка0""))", "Группировка1"))

Спасибо за статью...
64. sacred 172 10.03.21 05:39 Сейчас в теме
А вот если отчёт выводится в таблицу, и есть группировки строки и группировки колонки, то которые из них считаются выше, а которые - ниже? Как в этом случае использовать второй параметр функции ВычислитьВыражение()? Особенно интересует отбор по итогам.
65. ids79 6847 14.03.21 18:52 Сейчас в теме
(64)Я не пробовал так делать. Попробуйте и напишите что получилось.
66. Tocaelectro 15.03.21 21:02 Сейчас в теме
Добрый день!
Не получается для иерархического справочника на уровне самой иерархии выводить значения реквизитов справочника. Если реквизиты переквалифицировать в ресурсы, то не получается на группировке вытащить значение элементы справочника, вместо того, чтобы система автоматом не подсчитывала агрегатные значения. Может есть какие-то идеи. Спасибо.
Прикрепленные файлы:
67. HystriX 31.03.21 18:50 Сейчас в теме
По поводу "ГруппировкаНеРесурса" - поведение будет отличаться, если в структуре использована группировка по ресурсу. Если группировки по ресурсу нет, поведение не отличается от обычного варианта "Группировка". Эта особенность описана в книге "Руководство разработчика.
68. unknow_user 15.04.21 08:43 Сейчас в теме
Доброго времени! Статья полезная. Подскажите где ошибся?

ВычислитьВыражение("Сумма(НачальныйОстаток) + Сумма(НачисленоПриход) - Сумма(НачисленоРасход)","Регистратор", "Группировка")


Хочу расчитать "Конечный остаток" для группировки "Регистратор". Рассчитывать по поставил "Регистратор", но поле "Конечный остаток пустое"
69. unknow_user 15.04.21 09:16 Сейчас в теме
(68) Разобрался, у меня начальный остаток не рассчитывается по регистратору и это так повлияло. Буду копаться дальше, механизм нужный
70. пользователь 26.04.21 22:28
Сообщение было скрыто модератором.
...
71. Letos 260 12.06.21 00:12 Сейчас в теме
Борого дня. Тоже нужна помощь.
Отчет вид "Таблица".
Строки: Контрагент, Договор.

Одно из колонок (Поле1) расчитываю следующим образом:

ВычислитьВыражение("Максимум(Процент)","ДоговорКонтрагента") / 100 * СуммаОбщаяСмета

На вкладке Ресурсы закидываю расчитываемое поле в Сумму

Сумма(Поле1)

По договорам все хорошо, Но нет итогов по Контрагенту. Что нужно добавить и куда?
72. ids79 6847 12.06.21 11:18 Сейчас в теме
(71)Да, так работать не будет. Так как Вы принудительно вычисляете выражение по группировка "ДоговорКонтрагента". А на уровне контрагента ее нет.
В зависимости от того, что Вы хотите сделать, посчитать максимальный процент по контрагенту или сложить все значения по договорам, Вам нужно или очистить поле Группировка (для первого варианта) или использовать в ресурсах для группировки "Контрагент" функцию ВычислитьВыражениеСГруппировкойМассив.
Что-то типа такого:
СУММА(ВычислитьВыражениеСГруппировкойМассив(СУММА(Поле1), "ДоговорКонтрагента"))
73. Letos 260 12.06.21 12:47 Сейчас в теме
(72) Почему не показывается итог по Контрагенту мне было понятно. (благодаря статье).

Дело в том, что НЕ вовсех договорах есть "Процент", если использовать группировку по контрагенту, то из-за "Максимум(Процент)" в Договорах в которых НЕТ процента, начинает считаться процент. (P.S. не использовать Максимум не получается)

Если вставить Ресурсы:

СУММА(ВычислитьВыражениеСГруппировкойМассив(СУММА(Поле1), "ДоговорКонтрагента"))

То выдает ошибку: "Использование вложенных агрегатных функций не возможно"

Если использую: ВычислитьВыражениеСГруппировкойМассив(СУММА(Поле1), "ДоговорКонтрагента")

То итог для контрагента пересчитывается как при группировке по Контрагенту,то есть процент пересчитывается и для тех договоров где Процента нет.
74. ids79 6847 17.06.21 11:12 Сейчас в теме
(73) Так сложно что-то еще посоветовать, не видя данные и сам отчет.
Если сбросите схему компоновки, могу посмотреть.
75. Zlaya-Ferio 3 24.06.21 14:31 Сейчас в теме
ВычислитьВыражение("Сумма(Количество)", "Товар", "Иерархия")

У меня не работает эта схема((( пишу
ВЫБОР
	КОГДА (Показатели.Количество.КоличествоНачальныйОстаток>0 ИЛИ Показатели.Количество.КоличествоКонечныйОстаток>0) И (Показатели.Количество.КоличествоРасход/((Показатели.Количество.КоличествоНачальныйОстаток+Показатели.Количество.КоличествоКонечныйОстаток)/2))>0 
	ТОГДА ВычислитьВыражение("Показатели.Количество.КоличествоРасход/((Показатели.Количество.КоличествоНачальныйОстаток+Показатели.Количество.КоличествоКонечныйОстаток)/2)","АналитикаНоменклатуры.Номенклатура","Иерархия")
	ИНАЧЕ 0 
КОНЕЦ

по позициям считает. в иерархии нет(( что не так? окиньте свежим взором!))
76. ids79 6847 01.07.21 19:29 Сейчас в теме
(75)У Вас не указана сама агрегатная функция в ВычислитьВыражение. Если ее нет, берется первая строка в группировке. Видимо используя тип группировки Иерархия, это не работает.
Оставьте свое сообщение

См. также

Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо

Практика программирования v8 Бесплатно (free)

В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.

12.12.2020    4674    Eugen-S    23    

Обзор полезных методов БСП 3.1.4. Часть 2

БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

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

27.04.2021    16620    rayastar    7    

Полезные примеры СКД, ч.1

Практика программирования v8::СКД Бесплатно (free)

Подборка видео по решению различных задач в отчетах на СКД.

30.03.2021    13772    Neti    21    

Обзор полезных методов БСП 3.1.4

БСП (Библиотека стандартных подсистем) Практика программирования v8 1cv8.cf Бесплатно (free)

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

25.03.2021    42490    rayastar    51    

Использование классов .Net в 1С для новичков Промо

Разработка внешних компонент Универсальные функции Практика программирования v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    85989    Serginio    116    

Звуковое управление в 1С 8.3

Практика программирования v8 1cv8.cf Бесплатно (free)

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    7307    velemir    33    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions

Универсальные функции Практика программирования v8 Бесплатно (free)

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    9046    comol    31    

Полезные функции БСП (Часть 2)

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

Список полезных функций из состава Библиотеки стандартных подсистем 3.1.

10.03.2020    21135    user5300    20    

Как я начал администрировать сервер 1С: Предприятие 8.3 с телефона Промо

Инструменты администратора БД Мобильная разработка v8 Бесплатно (free)

Развитие инструментов управления кластером серверов 1С:Предприятие 8.3.

14.04.2017    67790    user700211_a.straltsou    30    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    66930    ids79    27    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

15.01.2020    44282    John_d    22    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    36006    kuzyara    38    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    41207    unichkin    74    

Шпаргалка (БСП). Добавление в новый документ механизма печати дополнительных печатных форм

Печатные формы БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

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

10.10.2019    30947    John_d    21    

Полезные процедуры и функции для программиста

Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

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

07.10.2019    40062    HostHost    41    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    53727    Yashazz    56    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    36273    tormozit    106    

СКД. Отчеты с картинками

Работа с интерфейсом Практика программирования v8::СКД 1cv8.cf Бесплатно (free)

Решение популярных кейсов с картинками в отчетах на СКД.

25.09.2019    33450    YPermitin    58    

[Шпаргалка] Программное создание элементов формы

Работа с интерфейсом Практика программирования v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    104599    rpgshnik    77    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    78798    ids79    56    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    82967    tormozit    131    

Отслеживание выполнения фонового задания

Универсальные функции Инструментарий разработчика Практика программирования v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    45559    ids79    22    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    107200    ids79    17    

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы v8 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    114946    AlbinaAAA    49    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    54618    tormozit    51    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    48927    ids79    27    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    22639    SeiOkami    53    

Создание отчетов с помощью СКД - основные понятия и элементы

Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    77074    ids79    28    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    51411    tormozit    74    

Подсистема "Варианты отчетов". Используете ли Вы ее правильно?

Работа с интерфейсом БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    56792    YPermitin    55    

Регистры накопления. Структура хранения в базе данных

Инструментарий разработчика Практика программирования v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    64682    YPermitin    31    

Выгрузка документа по условию

Инструментарий разработчика Практика программирования v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    18085    m-rv    3    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    37204    m-rv    23    

Как прикрутить ГУИД к регистру сведений

Перенос данных из 1C8 в 1C8 Инструментарий разработчика Практика программирования v8 Бесплатно (free)

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

16.04.2019    23423    m-rv    18    

О расширениях замолвите слово...

Инструментарий разработчика Практика программирования v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    42919    ellavs    131    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    32186    ellavs    90    

Добавление отчетов в типовые конфигурации 1С

Универсальные функции БСП (Библиотека стандартных подсистем) v8::УФ v8::СКД 1cv8.cf Бесплатно (free)

Описание различных способов добавления общих и контекстных отчетов в конфигурации 1С, построенные на базе БСП. Основные моменты и нюансы.

07.03.2019    79216    ids79    49    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

БСП (Библиотека стандартных подсистем) Роли и права Практика программирования v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    66299    ids79    11    

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке

Универсальные функции Зарплата Управление персоналом (HRM) Зарплата Кадровый учет v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Бесплатно (free)

В статье размещен список стандартных процедур и функций с примерами, которые могут помочь при разработке (доработке) конфигураций Зарплата и управление персоналом ред. 3.1 и Зарплата и кадры государственного учреждения 3.1. Иногда бывает довольно сложно правильно получить данные или долго, поэтому лучшим вариантом будет использование стандартных процедур. Буду очень признателен, если Вы поделитесь своим опытом и предложите свои варианты стандартных процедур которые помогают в работе. Или предложите, как дополнить имеющиеся процедуры.

14.11.2018    148827    GeterX    136    

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

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    45209    ids79    46    

Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git

Инструментарий разработчика Методология v8 1cv8.cf Бесплатно (free)

Первая статья из цикла инструкций по работе с Git в 1С-разработке. Рассмотрим, как настроить рабочее место, как получить свою "копию" проекта для разработки и приступить к полезным действиям. Все примеры будут изложены в рамках трёх практических кейсов: 1. Моя команда дорабатывает типовую конфигурацию, использует приватный репозиторий на BitBucket, в котором версионируются внешние отчеты/обработки, расширения конфигураций и правила обмена; 2. Я участвую в стартап-команде, которая разрабатывает свою конфигурацию с использованием Git и GitLab; 3. Я принимаю участие в развитии OpenSource-продукта на GitHub как заинтересованный разработчик (контрибьютор).

18.10.2018    93953    stas_ganiev    86    

Приемы работы с СКД: делаем за 5 минут то, на что у других уйдет час

Инструментарий разработчика Практика программирования v8::СКД Бесплатно (free)

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

03.09.2018    50526    SergeyN    28    

Тестер: частые вопросы

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    31634    grumagargler    31    

[Шпаргалка] Свой заголовок отчету на СКД с параметрами, картинками (без программирования)

Работа с интерфейсом v8::СКД 1cv8.cf Бесплатно (free)

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

23.07.2018    73525    rpgshnik    64    

Повышаем эффективность разработки правил обмена

Практика программирования v8 КД Бесплатно (free)

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    30306    olegtymko    48    

Введение в механизм представлений в ЗУП ред. 3

Практика программирования v8 v8::СПР ЗУП3.x Бесплатно (free)

В нашей организации на первом же телефонном собеседовании на должность разработчика по ЗУП ред. 3 вас обязательно спросят о том, что такое "Представления".

04.06.2018    47760    xrrg    95