Об общих реквизитах

Публикация № 1144154 28.10.19

Разработка - Практика программирования

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

Общие реквизиты. Что за ними скрывается?

Предисловие

Начиная с версии платформы 8.2.14.x и до последних актуальных релизов, в дереве метаданных конфигурации имеется такой объект как "Общие реквизиты". Подобный функционал предоставляла еще платформа 7.7, но в восьмой ветке эти возможности стали доступны далеко не сразу.

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

Возможности

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

Рассмотрим пример. В некоторой тестовой конфигурации, которой на самом деле не существует :), создадим четыре документа с именами "Doc1", "Doc2", "Doc3" и "Doc4". В каждый из документов нам необходимо добавить комментарий, причем он должен отображаться в форме списка каждого из документов.

Для этого создадим новый объект конфигурации в ветке "Общие -> Общие реквизиты"  и назовем его "Комментарий". Тип значения укажем "Строка" длинной 255 символов. Также включим многострочный режим. Результат описанных действий Вы можете видеть на скриншоте "Настройки общего реквизита" ниже.

Все настройки аналогичны настройкам любого реквизита документа, за исключением раздела "Использование". Здесь нас интересует опция "Состав", в которой определяется состав объектов конфигурации. Именно здесь и будет определяться список тех объектов, для которых будет использоваться этот общий реквизит. Включим использование для первых трех документов.

Отметим, что режим использования "Автоматически" ориентируется на настройку "Автоиспользование" общего реквизита. В нашем примере свойство "Автоиспользование" для реквизита установлено в "Не использовать". Значит для документа "Doc4" общий реквизит не будет задействован, пока не включить использование явно.

 
 Настройка общего реквизита

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

То есть появился новый реквизит "Комментарий", имеющий строковой тип и многострочный режим редактирования. Такую же картину мы будем наблюдать для документов "Doc2" и "Doc3". 

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

Например, если создать запрос к документу "Doc3", то в доступных полях будет общий реквизит "Комментарий".

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

Что там внутри

Для ответа на этот вопрос проанализируем как платформа 1С работает с общими реквизитами на стороне базы данных, а также каким образом к ним строятся запросы на выборку данных.

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

Обратимся к документу "Doc4", который не был включен в общий реквизит "Комментарий". Чтобы показать, как изменяется таблица документа в SQL-базе при добавлении его в состав общего реквизита, обратимся к следующему скриншоту.

Был добавлен общий реквизит с типом "Булево", в состав которого мы включили документ "Doc4". В итоге, при обновлении структуры информационной базы, в исходную таблицу "_Document10" было добавлено поле "_Fld17" булевого типа. Отсюда следует, что общие реквизиты добавляют к таблицам БД как дополнительные поля, аналогично тому, если бы мы создали вручную реквизиты для каждого документа.

Соответственно, запросы к таблицам SQL-базы будут в точности повторять запросы к полям, если бы они были созданы обычным способом. Делаем вывод, что явное отрицательное влияние на производительность отсутствует.

Но все ли так

Как обычно, не все так идеально. У общих реквизитов есть один существенный минус, как и у любого универсального подхода - это отсутствие возможности гибкой настройки этого реквизита для отдельных таблиц. На то он и общий, не так ли?

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

 
 Индексы по общему реквизиту

Зачем отключать этот индекс? Обычно индексы добавляются для конкретных ситуаций. Добавляя их заранее для всех объектов, скорее всего некоторые из них будут избыточными (не всегда конечно же). С использованием общего реквизита Вы просто не сможете отключать индекс там, где он не используется.

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

Кроме настройки индексирования Вы также лишаетесь возможности делать другие точечные настройки общего реквизита для объектов:

  • Использование в полнотекстовом поиске
  • Историю данных
  • Заполнение из данных заполнения
  • Проверку заполнения
  • И др.

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

А как обстоят дела с использованием этого механизма в типовых конфигурациях?

В типовых конфигурациях

В типовых решениях Вы не часто встретите использование общих реквизитов, за одним большим исключением - это разделение данных из подсистемы "Работа в модели сервиса" из БСП. Подсистема позволяет разделить все хранимые данные в базе на изолированные части, чтобы в одной базе данных могли работать несколько компаний. Все это было сделано для облачной работы решений на платформе 1С.

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

 
 Небольшая цитата с ИТС

Разделение данных можно найти во всех популярных решениях. На стороне базы данных они также отражены дополнительным полем, но за важным отличием - это поле добавляется во все индексы объекта с разделением на первую позицию. Не важно, используйте Вы разделение данных или нет - разделитель у Вас есть в базе и платформа использует его для построения запросов. В 100% случаев это числовое поле. Если разделение данных не включено, то оно заполняется значением "0" и по этому же значению устанавливается фильтр во всех запросах.

Есть интересный момент в анализе планов запросов при наличии разделителя в индекса. Как известно, операция "Table scan" или "Index scan" (сканирование, просмотр таблицы / индекса) обычно не очень хороший признак выполняемых запросов на больших таблицах. Взгляните на такой случай.

ВЫБРАТЬ
	РеализацияТоваровУслуг.Ссылка КАК Ссылка
ИЗ
	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

Уже из текста можно понять, что запрос скорее всего написан с ошибкой, т.к. выбирать всю таблицу реализаций - это последнее дело на больших базах. Если в базе разделителей нет (например, если у Вас старая и добрая УТ 10.3), то план запроса будет с операцией сканирования индекса.

 
 Запрос и его план (без разделения данных)

Теперь выполним примерно такой же запрос на "Бухгалтерии предприятия 3.0", где разделитель данных уже присутствует. И вот результат.

 
 Запрос и его план (с разделением данных

Что все это значит? А то, что не нужно смотреть в плане запроса на выполняемые операции и ожидать, что если выполняется "Index Seek" (Поиск в индексе), то значит с запросом все хорошо. Поиск в индексе бывает разный, и не всегда оптимальный. Рекомендую отличную статью по работе с планами запросов "Планы запросов - это просто!" от Андрея Овсянкина.

Еще одним моментом, связанным с разделением данных, является падение производительности для тех пользователей, которые могут работать со всеми областями данных. В этом случае платформа 1С не ставит явный отбор по разделителю и практически все запросы превращаются в сканирование таблиц и индексов. Подробнее об этом Вы можете прочитать в статье "Управление доступом: роли, права, профили, группы доступа, функциональные опции, RLS" от Евгении Карук.

А Вы использовали когда-либо разделение данных? Есть чем дополнить материал?

Жизнь обычного разработчика

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

  1. Добавление реквизита для объекта в типовой конфигурации, чтобы не затрагивать основной объект. Вроде как сделано, чтобы обновлять конфигурацию было проще.
  2. Создание общих атрибутов для объектов в виде общих реквизитов (даты создания и изменения, ответственный и другие произвольные атрибуты).
  3. Просто бездумное добавление полей, чтобы меньше "кликать" в конфигурации.

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

Использовать?

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

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

Выводы делать только Вам!

Другие ссылки

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. AlX0id 28.10.19 11:30 Сейчас в теме
Использовал общие реквизиты и стал Королем Севера %)
(по мотивам картинки публикации)
elga2012; Shmell; YPermitin; +3 Ответить
2. YPermitin 11068 28.10.19 11:36 Сейчас в теме
7. timeforlive 15 29.10.19 04:42 Сейчас в теме
(2) Отсылка к игре престолов, видимо.
YPermitin; +1 Ответить
9. YPermitin 11068 29.10.19 06:50 Сейчас в теме
(7) мне уже объяснили, то я особый мем использовал.

Сам не смотрел.
timeforlive; +1 Ответить
3. Dach 314 28.10.19 14:33 Сейчас в теме
Есть чем дополнить про разделение данных.

Помимо того, что в кластерный индекс каждой таблицы каждого объекта добавляется колонка с общим реквизитом, можно еще отметить:

1. Если в состав общего реквизита - разделителя данных включить ссылочный объект данных, то уникальность кода/номера данного объекта применима только к конкретной области данных. То есть, если в базе есть разделение по Организации, то в ней может быть несколько одинаковых документов с одним и тем же номером и годом. Это необходимо учитывать, используя методы НайтиПоКоду, НайтиПоНомеру.

2. Корректная работа в Предприятии возможно только под пользователем с разделением данных. Кстати, НайтиПоКоду и НайтиПоНомеру будут корректно работать, если установлены параметры сеанса "Значение разделителя данных" и "Использование разделения данных".

3. Зайти в Конфигуратор и непосредственно Конфигурировать возможно только под пользователем без разделения данных. Это накладывает необходимость постоянно запускать отладку под пользователем С разделением.

4. Когда Вы пишете код - Вы постоянно должны помнить, где он будет работать - с разделением данных или без. Например, программируя фоновое задание, об этом нужно думать отдельно. Для фоновых заданий, которые должны работать с разделением данных - нужно заботиться отдельно об установке нужного параметра сеанса. И наоборот.

5. Если Ваше регламентное задание входит в состав общего реквизита - в общем случае в базе будет создано столько экземпляров регламентных заданий, сколько областей данных существует. Увидеть все РЗ можно только под пользователем БЕЗ разделения. После обновления ИБ – все эти экземпляры РЗ будут включены (если в конфигурации у РЗ свойство «используется» - включено). В общем случае разработчик должен не взводить флаг «использование» при добавлении нового РЗ. Администратор БД затем сам включит только нужный экземпляр РЗ.
o.nikolaev; sertak; awk; pparshin; 9-pm; cleaner_it; chembulatov76; user666919_budulau; JohnyDeath; muwa_; dsdred; vv2; json; Алексей_mir2mb; AlX0id; acanta; YPermitin; +17 Ответить
4. YPermitin 11068 28.10.19 15:16 Сейчас в теме
(3) тот момент, когда информация про разделители в комментарии более ценная, чем в статье!

Вижу, что у Вас большой опыт работы с этим. Обслуживаете Fresh? :)
5. Dach 314 28.10.19 16:53 Сейчас в теме
(4)

Нет. У нас "элегантное, превращающееся в брюки" решение.... (тут можно радоваться, а можно и поплакать xD)

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

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

Тоже самое касается таблиц итогов регистров накопления и бухгалтерии.

Так вот, если режим использования общего реквизита стоит "Независимо и совместно" (то есть, есть объекты, которые разделяются, есть которые нет) и есть желание использовать регистр накопления, общий для всех областей данных, то в такой регистр обязательно надо добавить измерение с типом = общий реквизит. Иначе, как легко догадаться, возникнут трудности в разборе таких данных...
o.nikolaev; байт; sertak; cleaner_it; SeiOkami; dalgaso2010; PowerBoy; vv2; YPermitin; acanta; +10 Ответить
6. YPermitin 11068 28.10.19 17:21 Сейчас в теме
(5) звучит монструозно, но круто!

Снимаю шляпу! :)
23. SeiOkami 2175 02.11.19 09:38 Сейчас в теме
(5) тоже используем "Независимо и совместно". И даже свою систему разрабатываем, где пользователь работает под несколькими разделителями сразу.

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

РазделительУчета В (&ВсеРазделителиУчета)

Индексы нормально заработали, всё отчёты взлетели. Конечно, посмотрев на состав индексов, можно было догадаться изначально - всё гениальное просто
sertak; YPermitin; +2 Ответить
24. SeiOkami 2175 02.11.19 09:42 Сейчас в теме
(23) а ещё делал специальный общий модуль, в который передаешь СКД с настройками, а внутри:
1. Вычленяется запрос СКД
2. Разными фоновыми выполняется запрос под всеми разделителями учёта
3. Собирается общий результат
4. В СКД подменяется набор данных запрос на набор данных объект
5. Выполняется СКД с полученными параллельно данными

Для разработки несложных СКД самое то. Делаешь обычный запрос, а при компоновки данных просто вызываешь метод общего модуля.
YPermitin; +1 Ответить
25. SeiOkami 2175 02.11.19 09:50 Сейчас в теме
(24) ну и всё это базируется на другом общем модуле для распараллеливания выполнение произвольного метода под разделителями учёта. Заметно облегчает жизнь, когда нужен очередной инструмент по массовой загрузки или изменению данных
26. SeiOkami 2175 02.11.19 09:54 Сейчас в теме
(25) ну и в дополнение. Когда подключаешь регистр к разделителю, нужно учитывать, что и итоги теперь раздельные. И пересчет итогов нужно выполнять под каждым разделителем . И для этого тоже описали инструмент.

Но, как вариант, на копиях используем свой SQL скрипт. Точнее, отредактированный отловленный. Тот, что выполняет платформа. Единственное изменение - платформа в запрос зашивает отбор по одному разделителю. Просто убираем его и делаем пересчет сразу по всей базе. Очень удобно, когда у вас несколько десятков областей данных и не приходится контролировать итоги под каждой областью.
8. timeforlive 15 29.10.19 04:49 Сейчас в теме
Спасибо за статью. Очень полезная информация.
Никогда не применял общий реквизит и дальше (надеюсь) не буду ^_^
РИБ зло.
YPermitin; +1 Ответить
10. dsdred 1735 29.10.19 13:39 Сейчас в теме
Сам не использую, но встречал как то года 3 назад общий реквизит в конфигурации в которую прилетали данные из разных мест.
Собственно он хранил некий уникальный идентификатор. Помню что именно из-за него какой то был косяк... Но уже не помню какой.
11. nicxxx 240 30.10.19 11:00 Сейчас в теме
"Очень неоптимально. Но какой запрос - такой и план." Стесняюсь спросить, а что тут неоптимального?
PS. Для непосвященных - чтобы выбрать всю таблицу, как раз и надо ее всю просканировать.
байт; YPermitin; +2 Ответить
12. YPermitin 11068 30.10.19 11:05 Сейчас в теме
(11) дело не в этом.

Имеется ввиду, что если идет сканирование индекса, то ожидаешь в плане увидеть эту операцию (index scan).
Но т.к. есть отбор по разделителю, то все равно будет поиск по индексу в плане, а не сканирование (index seek).
Это может вводить в заблуждение при чтении планов и это стоит учитывать.

Ну а выбирать данные из большой таблицы, это явно не регулярный запрос :)
А если регулярный, то нужно 100 раз подумать "Зачем?".
13. nicxxx 240 30.10.19 11:08 Сейчас в теме
(12) А, с этим да, согласен. Раздражает. Кстати, если разделители мешают жить, их не так уж и сложно выпилить из конфигурации. Конечно, при условии, что не нужна поддержка от вендора.
YPermitin; +1 Ответить
14. YPermitin 11068 30.10.19 14:18 Сейчас в теме
(13) был опыт отказа. Подводных камней много собралось:
1. На больших таблицах ждут реструктуризации еще большего размера :)
2. При удалении разделителя некоторые данные теряются, например в константах, настройках подключения внешних источников и др.
3. Непонятные ошибки реструктуризации на уровне SQL Server.

Вообщем, не всегда все просто.
15. nicxxx 240 30.10.19 14:21 Сейчас в теме
(14) Реструктуризацию можно обойти, если перед началом таблицу переименовать и создать пустую таблицу с этим именем.
А вот про потерю данных - интересно.
16. пользователь 30.10.19 16:54
Сообщение было скрыто модератором.
...
17. jenyach 30.10.19 19:02 Сейчас в теме
Разделение данных можно найти во всех популярных решениях. На стороне базы данных они также отражены дополнительным полем, но за важным отличием - это поле добавляется во все индексы объекта с разделением на первую позицию. Не важно, используйте Вы разделение данных или нет - разделитель у Вас есть в базе и платформа использует его для построения запросов. В 100% случаев это числовое поле. Если разделение данных не включено, то оно заполняется значением "0" и по этому же значению устанавливается фильтр во всех запросах. - выходит, что если разделитель не используется, то все индексы в принципе не работают, т.к. для всех записей в индексе первым стоит максимально не селективное поле? и будет, по сути, всегда скан
TimkoNzt; acanta; +2 Ответить
18. YPermitin 11068 30.10.19 19:11 Сейчас в теме
(17)
начению устанавливается фильтр во всех запросах. - выходит, что если разделитель не используется, то все индексы в принципе не работают, т.к. для всех записей в индексе первым стоит максимально не селективное поле? и будет, по сути, всегда скан


Скана не будет, если остальные отборы будут корректны.
Fox-trot; +1 Ответить
19. jenyach 30.10.19 19:18 Сейчас в теме
(18) например? какая разница, какое значение будет у остальных полей, если у первого поля в индексе всегда 0, т.е. всё равно сиквелу придется перебрать все записи, разве может работать индекс, начиная со второго поля?
20. YPermitin 11068 30.10.19 19:22 Сейчас в теме
(19) есть статистика по распределению значений, да и мне кажется Вы что-то путаете в работе индекса. Сканирование будет только в том случае, если согласно статистике отборы будут неселективные. Все отборы.

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

Тогда вообще бы смысла в индекса не было, в том числе и для баз 1С.

Вообщем, главное статистика и селективность для всего отбора, а не отдельного поля.
21. acanta 30.10.19 19:24 Сейчас в теме
Вероятно скан будет при запросе по выборочно нескольким или всем областям разделения данных?
По одной должно быть всегда быстро.
22. tormozit 6382 02.11.19 00:21 Сейчас в теме
Применял общие реквизиты с самого их появления и продолжаю применять и не планирую от них отказываться. Вот самые ходовые общие реквизиты:
- автор создания (только для ссылочных)
- дата создания (только для ссылочных)
- автор изменения
- дата изменения
Чем больше в конфигурации типов объектов данных, тем сильнее экономия от добавления общих реквизитов по сравнению с размножением аналогичных реквизитов по метаданным, особенно если в формах есть вызов общей процедуры ПриСозданииНаСервере. Тогда в большинстве случаев даже не придется менять объекты метаданных для таких типов данных, т.к. вывести их в формы списков/объектов можно будет в этой одной процедуре динамически.
Krio2; Deslime; YPermitin; +3 Ответить
27. newdigger 10.11.19 15:15 Сейчас в теме
Писал конфигурацию на обычных формах с использованием общих реквизитов для документов: Автор, Комментарий. Все было хорошо. Потом для журнала одного из документов потребовался функционал, который легко реализовывался через управляемые формы. Но столкнулся с тем, что в динамических списках не отображаются колонки общих реквизитов, хотя в запросе они есть и никаких ошибок или предупреждений конфигуратор не выдает.
d_bat; YPermitin; +2 Ответить
28. acanta 10.11.19 19:30 Сейчас в теме
В 7ке для риб всегда добавляла справочник базы, рабочие места и общий реквизит место создания обычно типа ИБ . В рознице 8 есть нечто подобное, все что связано с подключением торгового оборудования может понадобиться и для администрирования, например участвовать в РЛС, отбор всех объектов для регистрации обмена. Все тоже самое нашлось в 8ке в виде регистров сведений.
29. DimonDnepr 13.12.19 03:41 Сейчас в теме
При разработке практически всегда использую общие реквизиты именно как общие реквизиты для справочников, документов и регистров. Правда разрабатываются всегда самописки (на сегодня порядка 10 разных)
Основное - это общие данные типа "Кем создан", "Кем утвержден", "Комментарий" и т.п.

За последние лет 5 не возникало проблем с их использованием ни при разработке, ни у клиентов во время использования (может не сталкивался пока со специфичными задачами). Как писал выше уважаемый tormozit - удобно использовать общие реквизиты при заполнении реквизитов во время создания объектов и не только.
YPermitin; +1 Ответить
30. Simonov_NPM 06.05.20 05:07 Сейчас в теме
Цитата ИТС: "При этом общие реквизиты не предназначены для удобства добавления одинаковых реквизитов в прикладные объекты. Например, неправильно переносить в общие реквизиты «обычные» реквизиты документов Ответственный, Комментарий, Организация и т.п. Следует также иметь в виду, что права доступа к общим реквизитам настраиваются отдельно от тех объектов, в которые они добавлены."(29)
31. 3vs 06.05.20 08:17 Сейчас в теме
А ежели в общие реквизиты добавить, к примеру, электронную подпись?
Чтобы каждый введённый документ был подписан личной электронной подписью конкретного пользователя, чтобы нельзя было как-то изменить документ даже под тем же пользователем,
но без электронной подписи это будет невозможно.
Для параноиков такое взлетит?
32. gucci76 347 15.09.21 12:54 Сейчас в теме
При обновлении конфигурации сравнение показывает, что есть изменения в общем реквизите
***- Объект изменен
-->- Объект присутствует только в основной конфигурации
<--- Объект присутствует только в конфигурации поставщика
^- Порядок объекта изменен

- ***ОбщийРеквизит.ОбластьДанныхОсновныеДанные
- ***Состав
- ***ЖурналыДокументов
- <--ЖурналДокументов.КадровыеДокументы


Однако выбрать журнал документов в состав нет возможности.
Я наверно что то не понимаю или так и должно быть?
Прикрепленные файлы:
Оставьте свое сообщение

См. также

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

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

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

12.12.2020    3497    Eugen-S    20    

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

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

Еще несколько примеров решения задач в СКД.

06.04.2021    9630    Neti    8    

Неочевидные нюансы записи управляемой формы

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

Разберем несколько нюансов записи управляемой формы.

02.04.2021    10972    SeiOkami    52    

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

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

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

25.03.2021    34852    rayastar    51    

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

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

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

27.01.2016    84623    Serginio    113    

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

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

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

16.03.2021    6644    velemir    31    

Доработка проведения в ERP 2.5. (Регистры накопления, Регистры сведений)

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

Покажу точки входа для доработки "типового" проведения документов в ERP для регистров оперативного учета. Рассмотрим три основные ситуации: нужно изменить имеющееся проведение документа; нужно сделать записи в существующие регистры; нужно с нуля описать алгоритм проведения в добавленный регистр. Пример реализован на 1С:ERP Управление предприятием 2 (2.5.4.120)

10.01.2021    9912    BuriyLesha    10    

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

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

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

28.12.2020    8318    comol    31    

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

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

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

10.12.2016    40662    unichkin    74    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

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

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

30.08.2020    18882    quazare    34    

Серверные вызовы, которые нельзя вызывать

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

Не баян, а классика. Рассмотрим особенность платформы настолько же древнюю, как сами УФ.

12.05.2020    8887    SeiOkami    34    

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

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

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

15.10.2018    35528    tormozit    106    

Форма выбора (подбор) в управляемых формах

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

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

08.05.2020    69477    user5300    19    

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

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

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

27.01.2020    61222    ids79    26    

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

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

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

15.01.2020    41450    John_d    22    

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

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

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

20.09.2012    82373    tormozit    131    

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

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

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

30.12.2019    33123    kuzyara    38    

Активный 2019 год на Инфостарт

О сообществе О жизни Бесплатно (free)

О прошедшем 2019 годе в 100 и 500 словах.

26.12.2019    6703    YPermitin    25    

30 задач. Странных и не очень

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

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    23209    YPermitin    62    

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

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

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

11.07.2007    53691    tormozit    51    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

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

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    11835    Sibars    19    

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

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

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

07.10.2019    38682    HostHost    41    

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

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

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

01.10.2019    51060    Yashazz    56    

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

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

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

10.09.2017    50454    tormozit    74    

О программе Postman для тестирования API и для чего она нужна 1С-нику

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

Для чего нужна программа Postman для тестирования API и какая от него польза для 1С-программиста.

24.09.2019    19374    budidich    31    

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

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

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

06.09.2019    95331    rpgshnik    75    

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

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

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

05.09.2019    74135    ids79    55    

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

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

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

25.04.2019    17745    m-rv    3    

Регистры бухгалтерии. Общая информация

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

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    44359    YPermitin    25    

Три костыля. Сказ про фокусы в коде

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

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    29796    YPermitin    81    

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

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

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

17.08.2019    43880    ids79    19    

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

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

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

16.04.2019    22974    m-rv    18    

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

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

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

08.08.2019    143259    ids79    75    

Фоновое выполнение кода в 1С - это просто

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

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

02.08.2019    57979    avalakh    26    

Разбираемся с параметрами редактирования СКД

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

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    39632    json    15    

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

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

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

01.06.2018    36173    m-rv    23    

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

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

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

26.07.2019    100663    ids79    16    

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

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

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

17.07.2019    47053    ids79    27    

Регистры сведений. За кулисами

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

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    33088    YPermitin    14    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

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

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

05.12.2017    30563    itriot11    34    

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

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

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

04.07.2019    22246    SeiOkami    53    

Работа с настройками системы компоновки данных

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

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

02.07.2019    80469    ids79    18    

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

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

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

25.06.2019    73451    ids79    28    

Регистры накопления. Виртуальные таблицы. Часть №2: "Остатки" и "Остатки и обороты"

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

Описание работы платформы 1С:Предприятие 8.2 с виртуальными таблицами регистров накопления "Остатки" и "Остатки и обороты". Анализ SQL-запрос при работе с виртуальными таблицами

22.05.2019    42139    YPermitin    8    

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

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

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

16.05.2019    61197    YPermitin    31    

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

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

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

07.04.2019    41907    ellavs    131    

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

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

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

28.03.2019    31530    ellavs    90