Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Помогите составить схему компоновки

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

Есть данные такого формата, точнее запрос выдает данные в таком формате:

Склад1 Контрагент1 Товар1
Склад1 Контрагент1 Товар2
Склад1 Контрагент2 Товар1
Склад2 Контрагент1 Товар2
Склад2 Контрагент1 Товар3

Нужно соорудить примерно такую схему

                Склад1                            Склад2
Номенклатура    Контрагент1   Контрагент2         Контрагент1
Товар1            V                                 V
Товар2                         V
Товар3                                              V
Ответ: пожалуйста подскажите, как быть? нужно именно в таком виде вывести как указано в (). Ведь так можно вывести в СКД, у меня для скд получился только вариант из () , как я не крутил настройки ничего не помогает.
Вопрос: Платформа 8.3.10.2580, ошибка "Не установлена схема компоновки данных" при Com соединении

Всем привет! Была обновлена платформа с 8.3.8.2197 до 8.3.10.2580 и перестал формироваться внешний отчет, который тянул данные с другой базы. При формировании отчета стала вываливаться ошибка "Не установлена схема компоновки данных". Прошелся отладчиком, ошибка появляется на строке

Торговля = Новый COMОбъект("V82.COMConnector");

Пробовал чистить кэш пользователя, перерегистрировал comcntr.dll - ничего не помогло. Никто не встречался с подобным?
Ответ: Всё, разобрался. В конфигураторе у пользователя, под которым запускаю обработку в свойствах снял галочку "Защита от опасных действий" и заработало как раньше.
Вопрос: Как программно создать вложенную схему компоновки данных

Добрый вечер, как создать программно вложенную схему компоновки данных и заполнить у неё свойство "макет"
вот такой код
1C
1
2
3
нс = скд2.ВложенныеСхемыКомпоновкиДанных.Добавить();                   вложенныесхемыкомпоновкиданных
    нс.Имя = "Имя1";
    //нс.Схема = Макет;
её создает, но схема неопределена.
Ответ: ты крут, кто спорит
разработчики 1С - они боги.
//////////
зачетный вариант, я его сделаю с сериализацией и десериализацией.
все просто , совершенно верно.
Вопрос: Вывод схемы компоновки в табличный документ

Добрый день. Подскажите как провернуть такое, можно ли вывести отчет выстроенный на схеме компоновки данных, в табличный документ не на форме, а как выводится печатная форма. т.е. через ТабличныйДокумент.Показать()
Ответ: ()
Вопрос: Помогите составить запрос к регистру бухгалтерии?

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

Есть база Бухгалтерия предприятия КОРП, редакция 2.0 (2.0.64.33)
на платформе 1С:Предприятие 8.3 (8.3.6.2100)

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

Подразделение - ОборотыДТ, ОборотыК


У меня пока получилось только написать такой код, который получает из базы суммарный оборот дебета за период

Вот код
Ответ:

Если только "В", а не "В ИЕРАРХИИ", но тогда придется добавить все счета, не верхний уровень, а все по которым считаем движуху
Вопрос: Как получить поле компоновки из пользовательской настройки?

Здравствуйте. Требуется помощь специалистов по СКД. Ситуация следующая: есть отчет, в котором определены 2 схемы компоновки данных. Вторая схема является вспомогательной и используется для расчета промежуточных данных, использующихся в первой схеме. Работа со второй схемой осуществляется программно с выгрузкой результата компоновки в таблицу значений. Проблема в следующем: как из пользовательского отбора получить поле компоновки данных для того, чтобы понять, по какому полю устанавливать отбор во второй(вспомогательной) схеме? Обхожу циклом элементы пользовательских настроек, проверяю, что элемент является отбором, но в отладчике свойство пользовательского отбора ЛевоеЗначение=Неопределено. Правое значение заполнено в отладчике считывается корректно. То есть, я вижу, что есть отбор, вижу вид сравнения и правое значение, но не могу идентифицировать поле компоновки. Зацепиться за ТипЗнч(ЭлементПользовательскихНастроек.ПравоеЗначение) НЕ ПРЕДЛАГАТЬ.

Код следующий:

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

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

КонецПроцедуры
--- Объединение сообщений, 17 авг 2016 ---
Набор данных первой (основной) схемы представлен следующим запросом
Код:
ВЫБРАТЬ
    ЕС_ПартииТоваров.Номенклатура.ЕС_Менеджер КАК Менеджер,
    ЕС_ПартииТоваров.Номенклатура КАК Номенклатура,
    ЕС_ПартииТоваров.Регистратор,
    ЕС_ПартииТоваров.Количество,
    ЕС_ПартииТоваров.Стоимость КАК Себестоимость,
    ЕС_ПартииТоваров.СтоимостьПродаж КАК Выручка,
    ЕС_ПартииТоваров.Период КАК Период
ПОМЕСТИТЬ Продажи
{ВЫБРАТЬ
    Номенклатура.*,
    Период,
    Менеджер.*}
ИЗ
    РегистрНакопления.ЕС_ПартииТоваров КАК ЕС_ПартииТоваров
ГДЕ
    (ЕС_ПартииТоваров.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту)
            ИЛИ ЕС_ПартииТоваров.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияВРозницу))
{ГДЕ
    ЕС_ПартииТоваров.Номенклатура.*,
    (ЕС_ПартииТоваров.Период МЕЖДУ &ДатаН И &ДатаК),
    ЕС_ПартииТоваров.Номенклатура.ЕС_Менеджер.* КАК Менеджер}
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Продажи.Менеджер КАК Менеджер,
    Продажи.Номенклатура КАК Номенклатура,
    Продажи.Регистратор,
    Продажи.Количество,
    Продажи.Себестоимость,
    Продажи.Выручка,
    Продажи.Период
{ВЫБРАТЬ
    Менеджер.*,
    Номенклатура.*}
ИЗ
    Продажи КАК Продажи
{ГДЕ
    Продажи.Менеджер.*,
    Продажи.Номенклатура.*}
--- Объединение сообщений, 17 авг 2016 ---
Вроде бы все поля определены, всё на месте, но...
Ответ:
Решение найдено, тему можно закрывать.
Вопрос: Проблемы с программным созданием набора данных в СКД

Хочу сделать универсальный вывод таблицы значений средствами СКД с возможностью дальнейшего отбора по всем полям. Будет вызываться отчет, в который будет передаваться таблица значений, а дальше по колонкам таблицы будет создаваться схема компоновки и формироваться отчет.
Столкнулся с проблемой, что в выбранных полях красным крестиком отображаюся добавленные программно поля внешнего набора данных. И эти поля не отображаются в списке доступных. Отчет не формируется и не выдает никаких ошибок. Ниже упрощенный код модуля отчета.
Я так подозреваю, что каким-то образом КомпоновщикМакета.Выполнить() у меня не срабатывает. Может есть какие-то идеи?

Код:
Перем Настройки, ТаблицаДанных;

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

Процедура СоздатьТестовуюТаблицуДанных()
 
    Если ТаблицаДанных = Неопределено Или ТаблицаДанных.Количество() = 0 Тогда
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 2
                  |    ПродажиОбороты.Номенклатура,
                  |    ПродажиОбороты.КоличествоОборот Как Количество
                  |ИЗ
                  |    РегистрНакопления.Продажи.Обороты(ДАТАВРЕМЯ(2016, 4, 1), ДАТАВРЕМЯ(2016, 4, 2), , ) КАК ПродажиОбороты";
               
        ТаблицаДанных = Запрос.Выполнить().Выгрузить();
     КонецЕсли;
 
КонецПроцедуры

Процедура СоздатьСхемуПоПереданнымДанным()
 
Если СхемаКомпоновкиДанных <> Неопределено И СхемаКомпоновкиДанных.НаборыДанных.Количество() <> 0 Тогда
Возврат;
    КонецЕсли;
 
СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;
     ИД = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
     ИД.Имя = "ИсточникДанных";
     ИД.ТипИсточникаДанных = "Local";
     НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
    НаборДанных.Имя = "ВнешниеДанные";
    НаборДанных.ИмяОбъекта = "ВнешниеДанные";
    НаборДанных.ИсточникДанных = "ИсточникДанных";
   
    Для Каждого КолонкаВнешнейТаблицы Из ТаблицаДанных.Колонки Цикл
        ПолеНабора = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
        ПолеНабора.Поле = КолонкаВнешнейТаблицы.Имя;
        ПолеНабора.ТипЗначения = КолонкаВнешнейТаблицы.ТипЗначения;
        ПолеНабора.ПутьКДанным = КолонкаВнешнейТаблицы.Имя;
     КонецЦикла;
       
КонецПроцедуры

Процедура УстановитьНастройки()
 
    Если Настройки <> Неопределено Тогда // пользователь уже изменил настройки
        Настройки = КомпоновщикНастроек.ПолучитьНастройки();
        Возврат;
    КонецЕсли;
 
    Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
 
    ГруппировкаВерхнегоУровня = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    ГруппировкаВерхнегоУровня.Использование = Истина;
           
    Для Каждого НаборДанных Из СхемаКомпоновкиДанных.НаборыДанных Цикл
        Для Каждого ПолеНабораДанных Из НаборДанных.Поля Цикл
            НовоеПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
            НовоеПоле.Поле = Новый ПолеКомпоновкиДанных(ПолеНабораДанных.Поле);
            НовоеПоле.Использование = Истина;
        КонецЦикла;
    КонецЦикла;
 
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
 
КонецПроцедуры
Ответ:
Если в свойствах отчета не указана Основная Схема Компоновки данных, то из кода свойство СхемаКомпоновкиДанных = Неопределено
Именно поэтому я проверяю на Неопределено и создаю новую. Я пробовал также и создавать интерактивно новую схему компоновки данных с набором данных но без полей и устанавливать ее основной. Тогда свойство СхемаКомпоновкиДанных уже содержит эту схему.
Но точно также, если программно в набор данных схемы по умолчанию добавляю поля, то отчет корректно не компонуется.
Код
СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; создает новую схему и записывает ее в свойство, в котором обычно содержится схема по умолчанию. Это срабатывает корректно, так как в отладчике, в момент выполнения
КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки)
содержится и программно созданная схема и настройки, причем и схема и настройки содержат все данные, которые я туда добавлял.
Вопрос: Составление блок схемы

Помогите с составление блок схемы пожалуйста
Код 1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Процедура УчетЗанятостиДорожек()
    ЗанятостьДорожек.Очистить();
    ТекВремя = Дата('00010101') + (ТекущаяДата()-НачалоДня(ТекущаяДата()));
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |   Дорожки.Ссылка КАК Дорожка
    |ПОМЕСТИТЬ Дорожки
    |ИЗ
    |   Справочник.Дорожки КАК Дорожки
    |ГДЕ
    |   Дорожки.Функционирует
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |   СтатусыДорожек.Период,
    |   СтатусыДорожек.Время,
    |   СтатусыДорожек.Дорожка,
    |   СтатусыДорожек.Посетитель,
    |   СтатусыДорожек.Статус
    |ПОМЕСТИТЬ Статусы
    |ИЗ
    |   РегистрСведений.СтатусыДорожек КАК СтатусыДорожек
    |ГДЕ
    |   СтатусыДорожек.Период = &Период
    |   И СтатусыДорожек.Статус = &Статус
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |   Дорожки.Дорожка КАК Дорожка,
    |   Статусы.Период,
    |   Статусы.Время КАК Время,
    |   Статусы.Посетитель КАК Посетитель,
    |   Статусы.Статус
    |ИЗ
    |   Дорожки КАК Дорожки
    |       ЛЕВОЕ СОЕДИНЕНИЕ Статусы КАК Статусы
    |       ПО Дорожки.Дорожка = Статусы.Дорожка
    |
    |УПОРЯДОЧИТЬ ПО
    |   Дорожка,
    |   Посетитель,
    |   Время
    |ИТОГИ ПО
    |   Дорожка,
    |   Посетитель";
    Запрос.УстановитьПараметр("Период", Дата);
    Запрос.УстановитьПараметр("Статус", Перечисления.СтатусыДорожек.Занята);
    Результат = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока Результат.Следующий() Цикл
        ДеталиПосетитель = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        Пока ДеталиПосетитель.Следующий() Цикл
            Если ЗначениеЗаполнено(ДеталиПосетитель.Посетитель) Тогда
            ЭтоНачало = Истина;
            Детали = ДеталиПосетитель.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            СозданаСтрока = Ложь;
            Пока Детали.Следующий() Цикл
                Если ЗначениеЗаполнено(Детали.Посетитель) Тогда
                    Если ЭтоНачало Тогда
                        ВремяНачала = Детали.Время;
                        ВремяОкончания = ВремяНачала+30*60;
                        ЭтоНачало = Ложь;   
                    Иначе
                        Если Детали.Время = ВремяОкончания Тогда
                            ВремяОкончания = ВремяОкончания + 30*60;
                        Иначе
                            Если ТекВремя <= ВремяОкончания и ТекВремя >= ВремяНачала Тогда
                                НоваяСтрока = ЗанятостьДорожек.Добавить();
                                НоваяСтрока.Дорожка = Детали.Дорожка;
                                НоваяСтрока.Посетитель = Детали.Посетитель;
                                НоваяСтрока.ЗанятоС = ВремяНачала;
                                НоваяСтрока.ЗанятоПо = ВремяОкончания;
                                НоваяСтрока.Статус = "Занята";
                                Прервать;
                            Иначе
                                ВремяНачала = Детали.Время;
                                ВремяОкончания = Детали.Время + 30*60;
                            КонецЕсли;
                        КонецЕсли;
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла; 
            Если Не СозданаСтрока и (ТекВремя <= ВремяОкончания и ТекВремя >= ВремяНачала) Тогда
                НоваяСтрока = ЗанятостьДорожек.Добавить();
                НоваяСтрока.Дорожка = ДеталиПосетитель.Дорожка;
                НоваяСтрока.Посетитель = ДеталиПосетитель.Посетитель;
                НоваяСтрока.ЗанятаС = ВремяНачала;
                НоваяСтрока.ЗанятаПо = ВремяОкончания;
                НоваяСтрока.Статус = "Занята";
            КонецЕсли;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры
Ответ:
Код 1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// Вызывается при нажатии на кнопку "Линейная схема"
процедура кнопкаВыполнитьНажатие(кнопка)
 // грСх - элемент типа ПолеГрафическойСхемы
 грСх = элементыФормы.грСх;
 сх = грСх.ПолучитьСхему();
 схЭгс = сх.ЭлементыГрафическойСхемы;
 лС = новый текстовыйДокумент;
 сз = новый списокЗначений;
 к = 0;
 // Формируем список значений из элементов схемы без соединительных линий
 пока к < схЭгс.Количество() цикл
  эгс = схЭгс[к];
  если не типЗнч(эгс) = тип("ЭлементГрафическойСхемыСоединительнаяЛиния") тогда
   сз.Добавить(эгс, эгс.подсказка);
  конецЕсли;
  к = к + 1;
 конецЦикла;
 сз.СортироватьПоПредставлению();
 сз.ВыбратьЭлемент("Сортировка по Подсказке");
 к = 0;
 вс = сз.Количество();
 пока к < вс цикл
  эгс = сз[к].значение;
  нмр = эгс.подсказка;
  к = к + 1;
  если типЗнч(эгс) = тип("ЭлементГрафическойСхемыУсловие") тогда
   лС.ДобавитьСтроку(нмр + символ(160) + "Если " + эгс.наименование + " Тогда");
   кД = к;
   кН = к;
   нмрД = нмр + "1";
   нмрН = нмр + "2";
   д = стрДлина(нмрН);
   смвл = "";
   для л = 1 по д цикл смвл = смвл + символ(160) конецЦикла;
   // Ветвь "Да"
   однаВетвь(кД, вс, нмрД, д, сз, лС, смвл);
   лС.ДобавитьСтроку(смвл + "Иначе");
   // Ветвь "Нет"
   однаВетвь(кН, вс, нмрН, д, сз, лС, смвл);
   лС.ДобавитьСтроку(смвл + "КонецЕсли");
   к = макс(кД, кН) - 1;
  иначе
   лС.ДобавитьСтроку(нмр + символ(160) + эгс.наименование + ".");
  конецЕсли;
 конецЦикла;
 лС.Показать("Линейная схема");
КонецПроцедуры
 
процедура однаВетвь(кДН, вс, нмрДН, д, сз, лС, смвл)
 пока кДН < вс цикл
  эгс = сз[кДН].значение;
  нмр = сз[кДН].представление;
  кДН = кДН + 1;
  // Обнаружено действие, следующее сразу после Ветвления
  если типЗнч(эгс) = тип("ЭлементГрафическойСхемыДействие") и эгс.групповая тогда прервать конецЕсли;
  если лев(нмр, д) = нмрДН тогда
   лС.ДобавитьСтроку(смвл + символ(160) + нмр + символ(160) + эгс.наименование + ".")
  конецЕсли;
 конецЦикла;
конецПроцедуры
Тут, вроде, наоборот. Надо либо отразить, либо повернуть на 180°.
Правда, я не понял: программно не создать?
Вопрос: СКД. Как передать параметр сразу в две вложенные схемы?

Демо база УТ 11.1.1.11 Платформа 8.3.5.1248

Есть два отдельных отчета, сделанные просто на схемах СКД (без кода).
Отчет1 - по таблице ТоварыНаСкладах.ОстаткиИОбороты
Отчет2 - по таблице ТоварыНаСкладах.Остатки

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

Задача: вывести оба отчета в одном отчете, один за другим, установив отбор по Складу и Номенклатуре. (зачем это нужно - не спрашивать, это тестовый пример, аналогичный реальной задаче).

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

Проблема: в финальном третьем отчете параметры Склад и Номенклатура приходится задавать для каждой вложенной схемы (т.е. два раза).
Установка Настроек параметров Вложенной схемы ничего не дает, параметр не передается во вложенную схему.

Цель: задавать параметр Склад и параметр Номенклатура только один раз.

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

Финальный отчет с вложенными схемами и параметрами для каждой из схем:

Ответ: () Три набора позволят обойтись без вложеных схем.
Это к вопросу о красоте.
Вопрос: Как подогнать размеры поля графической схемы под размер самой ГС?

Фактический результат: - ширина и высота графической схемы никак не отрегулированы.

Желаемый результат: - ширина и высота поля графической схемы подогнаны под размеры самой схемы.

Как добиться желаемого результата при открытии формы?
Ответ: () Желательно. Но в первую очередь требуется, чтобы поле графической схемы было подогнано под саму ГС и по высоте, и по ширине.