Тонкости СКД: Особенности отбора при использовании временных таблиц

Публикация № 297514

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

СКД компоновка отбор временные таблицы

82
При создании запросов мы часто используем временные таблицы. Недавно столкнулся с тем что запрос в СКД не совсем корректно отрабатывал.

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

Рассмотрим пакетный запрос:

ВЫБРАТЬ
   
ФизическиеЛица.Ссылка КАК Ссылка,
   
ФизическиеЛица.Пол
ПОМЕСТИТЬ ВТ
ИЗ
   
Справочник.ФизическиеЛица КАК ФизическиеЛица

ИНДЕКСИРОВАТЬ ПО
   
Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   
ФизическиеЛица.Ссылка КАК Ссылка,
   
ФизическиеЛица.Пол КАК Пол,
    isnull(
ВложенныйЗапрос.Количество,0) КАК Количество
{ВЫБРАТЬ
    Ссылка.*,
   
Пол.*,
   
Количество}
ИЗ
   
Справочник.ФизическиеЛица КАК ФизическиеЛица
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           
КОЛИЧЕСТВО(ВТ.Ссылка) КАК Количество
       
ИЗ
           
ВТ КАК ВТ) КАК ВложенныйЗапрос
        ПО (ИСТИНА)
{ГДЕ
    ФизическиеЛица.Ссылка.*,
   
ФизическиеЛица.Пол.*,
   
ФизическиеЛица.ИНН}

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

Когда мы не накладываем никаких отборов, то все работает замечательно(рис.1).


                                         Рис.1
Но если нам захочется добавить отбор по сотруднику или по полу

                                                            Рис.2

То получится не совсем то что мы ожидаем. В поле «Количество» получаем 4, хотя по идее там должно быть 48(рис.3) , т.к. отбор мы осуществляем в последней таблице.


                                                    рис.3

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

ВЫБРАТЬ
   
ФизическиеЛица.Ссылка КАК Ссылка
ПОМЕСТИТЬ ВТ
ИЗ
   
Справочник.ФизическиеЛица КАК ФизическиеЛица
ГДЕ
   
ФизическиеЛица.Пол =
   
И ФизическиеЛица.Ссылка =

ИНДЕКСИРОВАТЬ ПО
   
Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   
ФизическиеЛица.Ссылка КАК Ссылка,
   
ФизическиеЛица.Пол КАК Пол,
    isnull(
ВложенныйЗапрос.Количество,0) КАК Количество,
   
ФизическиеЛица.Представление КАК СсылкаПредставление
ИЗ
   
Справочник.ФизическиеЛица КАК ФизическиеЛица
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           
КОЛИЧЕСТВО(ВТ.Ссылка) КАК Количество
       
ИЗ
           
ВТ КАК ВТ) КАК ВложенныйЗапрос
        ПО (ИСТИНА)
ГДЕ
   
ФизическиеЛица.Пол =
   
И ФизическиеЛица.Ссылка =

В запрос были добавлены две строчки с условиями, которые и делают отбор во временной таблице. Чтобы наш запрос на СКД отработал так как мы хотим нужно убрать галочку «Автозаполнение» (рис.4) и на закладке «Компоновка данных» в конструкторе запроса у последней таблицы выбрать необходимые поля для вывода в отчет (рис.5).


                                                    рис.4


                                                                рис.5
После проделанных манипуляций формируем отчет и получаем нужный нам результат.


                                                            рис.6
82

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

Комментарии
Избранное Подписка Сортировка: Древо
1. Puk2 173 15.09.14 12:13 Сейчас в теме
Автозаполнение является причиной многих "проблем" (например, параметры и поля виртуальных таблиц), поэтому при использовании в отчетах, не являющихся слишком простыми, лучше отказаться от автозаполнения, либо прямо указывать поля, отборы и параметры для компоновки данных, например
{(Организация)}
. Если не ошибаюсь, ручное указание позволяет сохранить функцию автозаполнения. Вообще в вашем примере автоматический отбор сработал очень даже предсказуемо и корректно, поля с одинаковым именем, типом и источником фильтруются одинаково.

P.S. Замечания по запросу: 1) временная таблица уже содержит все записи справочника "физические лица", поэтому во втором запросе не нужно опять обращаться к таблице справочника, а должно быть соединение временной таблицы со вложенной таблицей (из этой же временной). 2) Так как вы получаете записи из таблицы справочника без соединений, то достаточно использовать оператор Количество() без указания слова Различные, т.к. это дополнительная нагрузка на СУБД из-за лишнего перебора данных.
sandybaev; AlexiyI; Nefertary; ekaterinaeon; davdykin; +5 Ответить
3. EmpireSer 15.09.14 14:43 Сейчас в теме
(1), (2),
А это имеет смысл для "демонстрационного" запроса?

P.S. Я не считаю, что на запросах с пометкой "Запрос особой смысловой нагрузки не несет" нужно учится.
5. kruglay 103 15.09.14 13:41 Сейчас в теме
(3) EmpireSer,
Данный запрос был смоделирован, чтобы его можно было просмотреть в любой конфе в которой есть справочник физЛиц. Кому надо тот почерпнет нужную информацию.
4. kruglay 103 15.09.14 13:39 Сейчас в теме
(1) Puk2,
Спасибо за конструктивный комментарий.
Почему вы считаете, что отбор сработал предсказуемо? Во временной таблице нам необходимо получить все записи справочника, а если стоит галочка "Автозаполнение", то мы получим записи соответствующие критериям отбора(рис.3 т.е. всего 4 записи вместо 48). Источники мы используем разные: временную таблицу, и справочник физЛиц. Если я буду использовать в качестве источника только временную таблицу, то никакой наглядности в данном примере не будет, хотя результат и будет тем же. Насчет различные это я поправлю.
6. slazzy 38 15.09.14 16:08 Сейчас в теме
(4)
Почему вы считаете, что отбор сработал предсказуемо?

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

Автозаполнение ничего плохого не несет в себе, достаточно нужный отбор вынести в фигурные скобки и устанавливать отбор по этому полю.
 Рассмотрим пакетный запрос:

ВЫБРАТЬ
    ФизическиеЛица.Ссылка КАК Ссылка,
    ФизическиеЛица.Пол
ПОМЕСТИТЬ ВТ
ИЗ
    Справочник.ФизическиеЛица КАК ФизическиеЛица

ИНДЕКСИРОВАТЬ ПО
    Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
    ФизическиеЛица.Ссылка КАК Ссылка,
    ФизическиеЛица.Пол КАК Пол,
    ВложенныйЗапрос.Количество КАК Количество
{ВЫБРАТЬ
    Ссылка.*,
    Пол.*,
    Количество}
ИЗ
    Справочник.ФизическиеЛица КАК ФизическиеЛица
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ.Ссылка) КАК Количество
        ИЗ
            ВТ КАК ВТ) КАК ВложенныйЗапрос
        ПО (ИСТИНА)
{ГДЕ
    ФизическиеЛица.Ссылка.* КАК СсылкаОтбор,
    ФизическиеЛица.Пол.* КАК ПолОтбор} 
Показать


И отборы устанавливать по полям СсылкаОтбор и ПолОтбор.
7. PiccaHut001 15.09.14 19:14 Сейчас в теме
(6) slazzy, 1C - самая логичная и предсказуемая система, созданная марсианами для людей. Признак измерения "обязательный" уже не работает, надо каждое поле заводить по 2 раза - первый для отбора, второй для выборки с запретом отбора. Всё отлично работает, жду не-дождусь конфигуратора по 6 ифон
9. slazzy 38 15.09.14 22:06 Сейчас в теме
(7) PiccaHut001, оптимизация это палка о двух концах :) данная работа отборов в СКД сделана прежде всего для оптимизации и она не понимает почему в данном случае отбор надо накладывать только на второй запрос из пакета, а не на оба. Чтобы она поняла, надо ей подсказать. Ну или просто переименовать поля в первом запросе, к примеру.

(8) извиняюсь, но мне в страшном сне сложно представить отчет, в котором понадобится более 10 отборов. А уж про 20-30 я не буду говорить :)
Crazy_Max; +1 Ответить
8. kruglay 103 15.09.14 18:15 Сейчас в теме
(6) slazzy,
Большинство статей на инфостарте это базовые сведения, но тем не менее найти информацию в интернете по данному вопросу было проблематично. Только после прочтения Радченко я нашел причину и описал ее здесь.
Я и не говорю, что автозаполнение это плохо, просто показал вариант, когда данное свойство надо использовать осторожно
И отборы устанавливать по полям СсылкаОтбор и ПолОтбор

Это хорошо, что в данном примере всего несколько полей, а если их будет 10,20 вы для каждого будете придумывать синоним, не считаю это рациональным.
2. Yashazz 2854 15.09.14 15:16 Сейчас в теме
Обращаться к полю из присоединяемой таблицы без ЕСТЬNULL, если соединение не внутреннее - имхо, моветон.
10. Yimaida 35 16.09.14 00:55 Сейчас в теме
Только после прочтения Радченко я нашел причину и описал ее здесь.

Думаю, дальше можно не комментировать. Читать книгу и делится выводами в виде статьи и даже не сделать ссылку на книгу... Гляди сейчас и посыплются особенности, тонкости и т.п. Ну и отдельное внимание заслуживает текст запроса, прям для новичков. Причем статья, как я понял, редактировалась, хотя в данном случае ЕСТЬNULL эффекта не даст, т.к. условие соединения "Истина".

P.S. Дорогие новички, и не окрепшие умы, читайте сначала литературу, а потом инфостарт и т.п.


Andre_ultra; valiylab; SeiOkami; Evil Beaver; dj_serega; VasMart; Puk2; Yashazz; rozer; fishca; +10 Ответить
11. kruglay 103 16.09.14 20:30 Сейчас в теме
(10) Yimaida,
Многоуважаемый старичок думаю в вашем комментарии вообще нет особого смысла. Данная статья писалась именно для тех кто недавно работает с 1с, СКД. И именно поэтому запрос простой, а если вам так хочется посмотреть на многострочные запросы и по разбираться в них откройте конфу например ЗУП. В указании первоисточника не вижу смысла, это не курсовая где указывается используемая литература. Если бы была похожая статья на инфостарте или другом источнике я бы ее указал.
12. Yashazz 2854 17.09.14 11:26 Сейчас в теме
(11)
"В указании первоисточника не вижу смысла, это не курсовая где указывается используемая литература"
Конечно, не курсовая. Это просто передирание методической литературы, т.е. плагиат. И попытка заработать на оном некоторые плюсы.
SeiOkami; Yimaida; +2 Ответить
14. Yimaida 35 17.09.14 13:15 Сейчас в теме
(12) Запрос, как раз, не простой. Он, конечно, не сравнится с запросами в ЗУП, но в контексте данной статьи он сложный, т.к. содержит временную таблицу, соединение по ИСТИНА и функцию ЕСТЬNULL().
Что касается сути статьи, основная идея - это научиться отлаживать итоговый запрос, который нам выдала СКД. Так вот про то как это сделать не сказано ни слова. Каким инструментом это надо делать? И даже если бы Вы указали где увидеть итоговый запрос, статья является лишь плохим пересказом давно описанных вещей. И странно, что никого не удивило наличие одинаковых параметров "&П" для пола и для ссылки.

P.S. Мой комментарий предназначался не столько Вам лично, сколько тем кто будет читать Вашу публикацию (в терминах инфостарта)
13. echo77 1094 17.09.14 12:08 Сейчас в теме
Вот еще одна публикация на тему, но здесь описывается как это обойти с установленной галкой автозаполнение
http://infostart.ru/public/185880/

Считаю, что для молодых специалистов лучше все же начинать изучение СКД с установленной галкой автозаполнение, но сразу же учиться пользоваться консолью отчетов с СКД и смотреть что за запрос строит СКД.
Когда сложность отчетов вырастет и опыта наберетесь - составляйте схемы без автозаполнения
15. Патриот 236 24.09.14 10:18 Сейчас в теме
Статья сводится к "при использовании автозаполнения в СКД произойдёт автозаполнение, которое не обязательно вам было необходимо" =)
Надеюсь кто-нибудь через пару лет автоматизирует процесс написания подобных статей, представляющих из себя, по сути, кривенький пример к какому-нибудь утверждению из книг по 1С. И тогда, наконец, люди смогут вздохнуть свободно и доверить статьеписание машинам =)
16. nixel 796 29.09.14 10:01 Сейчас в теме
Я просто оставлю это здесь.

Разработка сложных отчетов. Система компоновки данных.

P.S. Изучайте инструмент, которым вы зарабатываете на жизнь. Помогает избежать многих "проблем".
Evil Beaver; +1 Ответить
17. hazd 05.10.14 23:45 Сейчас в теме
у меня тоже такая затыка была, разобрался.
18. vsozansky 29.09.16 10:33 Сейчас в теме
Отличный пост. Помог разобраться и намекнул, что надо копать мануал.
Спасибо.
19. kruglay 103 29.09.16 16:27 Сейчас в теме
20. tanais 17.03.17 19:09 Сейчас в теме
Спасибо! Помогло. Жалею время потраченное на самостоятельный поиск)
21. NN2P 343 24.10.17 11:02 Сейчас в теме
22. kruglay 103 08.11.17 09:58 Сейчас в теме
24. Kostt 19 15.02.19 12:51 Сейчас в теме
(22) Хорошая статья. Может Вы что-то подскажите, не хочется использовать набор данных в СКД.
Есть Запрос, часть отчета:
ВЫБРАТЬ
	ВЫРАЗИТЬ(КлючиАналитикиУчетаПоПартнерам.Контрагент КАК Справочник.Контрагенты) КАК Контрагент,
	КлючиАналитикиУчетаПоПартнерам.Договор КАК Договор,
	КлючиАналитикиУчетаПоПартнерам.Организация КАК Организация,
	КлючиАналитикиУчетаПоПартнерам.НаправлениеДеятельности КАК НаправлениеДеятельности,
	РасчетыСПоставщикамиОстатки.ЗаказПоставщику КАК ЗаказПоставщику,
	СУММА(ВЫБОР
			КОГДА РасчетыСПоставщикамиОстатки.СуммаОстаток < 0
				ТОГДА -РасчетыСПоставщикамиОстатки.СуммаОстаток
			ИНАЧЕ 0
		КОНЕЦ) КАК НашДолгУпр,
	СУММА(ВЫБОР
			КОГДА РасчетыСПоставщикамиОстатки.СуммаОстаток > 0
				ТОГДА РасчетыСПоставщикамиОстатки.СуммаОстаток
			ИНАЧЕ 0
		КОНЕЦ) КАК ДолгПостащикаУпр
ПОМЕСТИТЬ ВТ_ОстаткиУПР
{ВЫБРАТЬ
	Договор.*,
	Организация.*,
	НаправлениеДеятельности.*,
	Контрагент.*,
	НашДолгУпр,
	ДолгПостащикаУпр,
	ЗаказПоставщику.*}
ИЗ
	РегистрНакопления.РасчетыСПоставщиками.Остатки(&Период {(&Период)}, ) КАК РасчетыСПоставщикамиОстатки
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаПоПартнерам КАК КлючиАналитикиУчетаПоПартнерам
		ПО РасчетыСПоставщикамиОстатки.АналитикаУчетаПоПартнерам = КлючиАналитикиУчетаПоПартнерам.Ссылка
ГДЕ
	РасчетыСПоставщикамиОстатки.СуммаОстаток <> 0
{ГДЕ
	РасчетыСПоставщикамиОстатки.ЗаказПоставщику.*}

СГРУППИРОВАТЬ ПО
	ВЫРАЗИТЬ(КлючиАналитикиУчетаПоПартнерам.Контрагент КАК Справочник.Контрагенты),
	КлючиАналитикиУчетаПоПартнерам.Договор,
	КлючиАналитикиУчетаПоПартнерам.НаправлениеДеятельности,
	КлючиАналитикиУчетаПоПартнерам.Организация,
	РасчетыСПоставщикамиОстатки.ЗаказПоставщику

ИНДЕКСИРОВАТЬ ПО
	ЗаказПоставщику
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_ОстаткиУПР.Контрагент КАК Контрагент,
	ВТ_ОстаткиУПР.Договор КАК Договор,
	ВТ_ОстаткиУПР.Организация КАК Организация,
	ВТ_ОстаткиУПР.НаправлениеДеятельности КАК НаправлениеДеятельности,
	СУММА(ВТ_ОстаткиУПР.НашДолгУпр) КАК НашДолгУпр,
	СУММА(ВТ_ОстаткиУПР.ДолгПостащикаУпр) КАК ДолгПостащикаУпр
ПОМЕСТИТЬ ВТ_ОстаткиУПРДолги
{ВЫБРАТЬ
	Контрагент.*,
	Договор.*,
	Организация.*,
	НаправлениеДеятельности.*,
	НашДолгУпр,
	ДолгПостащикаУпр}
ИЗ
	ВТ_ОстаткиУПР КАК ВТ_ОстаткиУПР

СГРУППИРОВАТЬ ПО
	ВТ_ОстаткиУПР.Контрагент,
	ВТ_ОстаткиУПР.НаправлениеДеятельности,
	ВТ_ОстаткиУПР.Договор,
	ВТ_ОстаткиУПР.Организация
;

Но при оптимизатор запроса 1с:
ВЫБРАТЬ
	ВЫРАЗИТЬ(КлючиАналитикиУчетаПоПартнерам.Контрагент КАК Справочник.Контрагенты) КАК Контрагент,
	КлючиАналитикиУчетаПоПартнерам.Договор КАК Договор,
	КлючиАналитикиУчетаПоПартнерам.Организация КАК Организация,
	КлючиАналитикиУчетаПоПартнерам.НаправлениеДеятельности КАК НаправлениеДеятельности,
	СУММА(ВЫБОР
			КОГДА РасчетыСПоставщикамиОстатки.СуммаОстаток < 0
				ТОГДА -РасчетыСПоставщикамиОстатки.СуммаОстаток
			ИНАЧЕ 0
		КОНЕЦ) КАК НашДолгУпр,
	СУММА(ВЫБОР
			КОГДА РасчетыСПоставщикамиОстатки.СуммаОстаток > 0
				ТОГДА РасчетыСПоставщикамиОстатки.СуммаОстаток
			ИНАЧЕ 0
		КОНЕЦ) КАК ДолгПостащикаУпр
ПОМЕСТИТЬ ВТ_ОстаткиУПР
ИЗ
	РегистрНакопления.РасчетыСПоставщиками.Остатки(&П, ) КАК РасчетыСПоставщикамиОстатки
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаПоПартнерам КАК КлючиАналитикиУчетаПоПартнерам
		ПО РасчетыСПоставщикамиОстатки.АналитикаУчетаПоПартнерам = КлючиАналитикиУчетаПоПартнерам.Ссылка
ГДЕ
	РасчетыСПоставщикамиОстатки.СуммаОстаток <> 0

СГРУППИРОВАТЬ ПО
	ВЫРАЗИТЬ(КлючиАналитикиУчетаПоПартнерам.Контрагент КАК Справочник.Контрагенты),
	КлючиАналитикиУчетаПоПартнерам.Договор,
	КлючиАналитикиУчетаПоПартнерам.НаправлениеДеятельности,
	КлючиАналитикиУчетаПоПартнерам.Организация
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_ОстаткиУПР.Контрагент КАК Контрагент,
	ВТ_ОстаткиУПР.Договор КАК Договор,
	ВТ_ОстаткиУПР.Организация КАК Организация,
	ВТ_ОстаткиУПР.НаправлениеДеятельности КАК НаправлениеДеятельности,
	СУММА(ВТ_ОстаткиУПР.НашДолгУпр) КАК НашДолгУпр,
	СУММА(ВТ_ОстаткиУПР.ДолгПостащикаУпр) КАК ДолгПостащикаУпр
ПОМЕСТИТЬ ВТ_ОстаткиУПРДолги
ИЗ
	ВТ_ОстаткиУПР КАК ВТ_ОстаткиУПР

СГРУППИРОВАТЬ ПО
	ВТ_ОстаткиУПР.Контрагент,
	ВТ_ОстаткиУПР.НаправлениеДеятельности,
	ВТ_ОстаткиУПР.Договор,
	ВТ_ОстаткиУПР.Организация
Показать

;

удаляет в первой таблице заказ поставщику из-за этого не те данные получаю. Автозаполнение поля убрал и все равно удаляет заказ поставщику(
25. Kostt 19 15.02.19 13:00 Сейчас в теме
(24) Если заказ поставщику выбрать в результате то он в первой таблице появляется. Но результат не такой как мне нужен получается. Как заставить Оптимизатор запроса 1с, всегда учитывать его во временной таблице?
23. MCid 27.11.18 20:13 Сейчас в теме
Отличная статья и комментарии, помогло хотя бы немного вникнуть в происходящее у меня безобразие. Спасибо!
27. kruglay 103 18.02.19 09:17 Сейчас в теме
26. Kostt 19 15.02.19 13:39 Сейчас в теме
Решил проблему поместив первую таблицу во вложенный запрос. теперь понятно почему во мноних типовых отчетов 1с использует вложенные запросы.
28. palsergeich 10.10.19 01:52 Сейчас в теме
Роль - обязательное. И все оптимизатор не будет выкидывать это поле.
Я встречался с интересным багом - оптимизатор выкидывал одно и только одно поле поле. Ничего не помогало, ни роль, ни закладка.
Помог только костыль следующий;
Выбор Когда Истина тогда Поле Конец
Оставьте свое сообщение

См. также

Немного про СКД. Характеристики и проверка пустого отчета 70

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

Пример использования характеристик в СКД и программная работа с ними. А также описание проверки результата отчета на заполненность.

10.10.2019    2255    YPermitin    7       

Полезняшки по СКД и построителям. Просто код 39

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

Полезные процедуры и функции для работы с построителями и СКД. Просто исходник.

10.10.2019    2355    Yashazz    39       

Две схемы СКД в одном отчете с пользовательскими параметрами 15

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

Простая реализация разных по типу отчетов в одном. Применение нескольких схем компоновки с корректной передачей пользовательских параметров.

10.10.2019    1267    evgeni-red    6       

Три способа создания одного отчета на СКД 75

Статья Программист Нет файла v8 v8::СКД ERP2 УТ11 КА2 Бесплатно (free) Практика программирования

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

08.10.2019    3436    ids79    19       

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

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

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

25.09.2019    4553    YPermitin    24       

СКД не только для отчетов 139

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

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

18.09.2019    6857    YPermitin    31       

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

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

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

05.09.2019    9934    ids79    42       

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

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

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

08.08.2019    10319    ids79    24       

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

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

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

26.07.2019    9229    ids79    6       

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

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

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

17.07.2019    8659    ids79    24       

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

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

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

09.07.2019    6181    ids79    0       

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

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

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

04.07.2019    6194    SeiOkami    48       

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

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

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

02.07.2019    9502    ids79    8       

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

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

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

25.06.2019    17360    ids79    16       

Не провоцируйте СКД, или пример "как не надо" 50

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

Пример того, что не нужно использовать в запросах, чтобы не провоцировать СКД.

10.06.2019    7254    SeiOkami    90       

Еще один способ нестандартной расшифровки отчета. Без использования обработчиков формы. Для ленивых 90

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

Лень+ СКД. Еще один нестандартный способ расшифровки отчета. Без использования обработчиков формы. Только макет компоновки и модуль отчета. Весь исходный текст в статье.

16.05.2019    5610    tusv    55       

Расшифровка отчета на СКД с детализацией по выбранному полю на основе БСП 91

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

В данной статье рассмотрим механизм работы с расшифровкой отчета, созданного при помощи системы компоновки данных, в управляемом приложении. Показывать буду на примере реальной задачи. Условие: использовать имеющиеся в конфигурации механизмы БСП, с минимальными и "правильными" изменениями. Расшифровка должны быть двух видов на каждом поле: 1. Открывать ссылочный объект 2. Открывать новую форму с детализацией табличной части документа. Собственно ради второго пункта и писалась статья, в основном для себя, чтобы не забыть.

14.05.2019    7347    Viktor_Ermakov    6       

Разворачивание таблицы свойств и значений по колонкам через СКД 18

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

СКД! Юниоры 1С начинают паниковать, когда слышат эту аббревиатуру. Хороший пример, упрощающий жизнь начинающему разработчику, представлен ниже.

12.05.2019    3558    Eret1k    0       

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

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

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

25.04.2019    4790    m-rv    2       

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

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

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

16.04.2019    7323    m-rv    16       

"Склеивание" отчетов на СКД 23

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

Методика программного объединения данных нескольких отчетов в итоговый сводный. По ссылке опубликован пример на реальных данных и код отчета: https://infostart.ru/public/1017891/

10.03.2019    4532    bivmail    2       

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

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

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

07.03.2019    23117    ids79    32       

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

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

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

17.02.2019    4124    srub    10       

Информирование пользователя. Работа с объектом «СообщениеПользователю» 249

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

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

15.02.2019    16897    ids79    34       

Вывод результата компоновки в таблицу и дерево значений 29

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

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

14.02.2019    4005    kasper076    5       

Ещё раз о суммировании группировок в СКД 59

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

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

11.02.2019    6664    Dioneo    17       

Еще раз о расшифровке для СКД 22

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

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

27.12.2018    4976    scientes    2       

Заголовок с параметром в отчете СКД 30

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

Статья, как сделать заголовок с параметром в отчете СКД.

19.12.2018    5415    user913680    16       

Новый подход к обмену данными EnterpriseData 203

Статья Программист Нет файла v8 v8::УФ Россия Бесплатно (free) Практика программирования Обмен через XML

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    21360    ids79    72       

Установка собственных значений полей при программном выводе отчета СКД по имени поля (по принципу "как в макете") 15

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

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

23.11.2018    4951    lmnlmn    0       

Дополнительные реквизиты в типовом отчете и их отсутствие 18

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

Пара Лайфхаков, случайно найденных, когда было лень запускать конфигуратор. Отбор при отсутствии дополнительного реквизита.

18.11.2018    4696    dyuha    0       

Программное заполнение пользовательских параметров и отборов СКД 135

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

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

13.11.2018    19557    Unk92    18       

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

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

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

10.11.2018    20795    ids79    40       

Перевод конфигурации на 8.3.13 17

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

Опыт решения проблем. 1. Проблема с СКД преобразованием запроса при отключении режима совместимости:

06.11.2018    5509    serferian    26       

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

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

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

15.10.2018    20411    tormozit    100       

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

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

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

03.09.2018    30981    SergeyN    26       

Как легко в СКД сделать переключатель: рубли, тыс. руб., млн. руб. 72

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

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

07.08.2018    8331    SayDimas    15       

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

Статья Программист Нет файла v8 КД ОС Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8

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

25.06.2018    19282    olegtymko    47       

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

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

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

01.06.2018    21151    m-rv    21       

О важности псевдонимов полей во временных таблицах и отборах на СКД для производительности 26

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

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

29.05.2018    5818    tata_1211    17       

Строим графы средствами 1С (без GraphViz) 42

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

Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали...

23.05.2018    16939    slozhenikin_com    19