arefaste/1C_Forums huggingface dataset:
Всем привет, подскажите, столкнулся с такой проблемой и не знаю пока как можно создать автоматическое добавление новых "групп-страниц" (программно) при добавлении их в поле "Менеджеры по снабжению". Которые я ввел в поле как Администратор ИванН, АдминистраторИван, Администратор Валерия и т.д. В итоге для них должны добавиться "группа-страница". Я должен как-то обработать это поле циклом вытащить эти значения, добавив их "группой-страниц"

На данный момент до меня не доходит как создать определенное количество групп-страниц. Я понимаю что нужно пробежаться по циклу и внутри него все это провернуть, но ведь под каждую группу-страницу нужно новое название переменной как я понял или как мне можно поступить в этом случае. что если у меня будет 6 таких групп страниц то это надо провернуть 6 раз под НовыйЭлемент1, НовыйЭлемент2, НовыйЭлемент3 и т.д. Возможно можно пойти другим путем но я пока не знаю.

```1c
    &НаСервере
    Процедура ДобавлениеМенеджераНаСервере()

    СписокЭлементов = Новый СписокЗначений;

    Для Счетчик = 0 По МенеджерыПоСнабжению.Количество()-1 Цикл
    //СписокЭлементов.Добавить(МенеджерыПоСнабжению[Счетчик]);
    НовыйЭлемент1 = Элементы.Добавить("НоваяСтраница",Тип("ГруппаФормы"),Элементы.ГруппаСтраницы);
    НовыйЭлемент1.Вид = ВидГруппыФормы.Страница;
    НовыйЭлемент1.Заголовок = "НоваяСтраница";

    НовыйЭлемент2 = Элементы.Добавить("НоваяНадпись",Тип("ДекорацияФормы"),НовыйЭлемент1);
    НовыйЭлемент2.Заголовок = "НоваяНадпись";

    КонецЦикла;

    КонецПроцедуры
```
---
```1c
    &НаСервере
    Процедура ДобавитьСтраницыПоМенеджерам()

    Перем Сч, Страница, Надпись;

    Сч = 0;

    Для каждого эл_МенеджерыПоСнабжению Из МенеджерыПоСнабжению Цикл

    Сч = Сч + 1;

    ИмяСтраницы = СтрШаблон("Страница_%1", Формат(Сч, "ЧГ=0"));

    Страница = Элементы.Добавить(ИмяСтраницы, Тип("ГруппаФормы"), Элементы.ГруппаСтраницы);
    Страница.Вид = ВидГруппыФормы.Страница;
    Страница.Заголовок = эл_МенеджерыПоСнабжению.Значение

    ИмяНадписи = СтрШаблон("Надпись_%1", Формат(Сч, "ЧГ=0"));

    Надпись = Элементы.Добавить(ИмяНадписи, Тип("ДекорацияФормы"), Страница);
    Надпись.Заголовок = эл_МенеджерыПоСнабжению.Значение;

    КонецЦикла;

    КонецПроцедуры
```
---
```1c
    &НаСервере
    Процедура ДобавитьСтраницыПоМенеджерам()

    Перем Сч, Страница, Надпись;

    Сч = 0;

    Для каждого эл_МенеджерыПоСнабжению Из МенеджерыПоСнабжению Цикл

    Сч = Сч + 1;

    ИмяСтраницы = СтрШаблон("Страница_%1", Формат(Сч, "ЧГ=0"));

    Страница = Элементы.Добавить(ИмяСтраницы, Тип("ГруппаФормы"), Элементы.ГруппаСтраницы);
    Страница.Вид = ВидГруппыФормы.Страница;
    Страница.Заголовок = эл_МенеджерыПоСнабжению.Значение

    ИмяНадписи = СтрШаблон("Надпись_%1", Формат(Сч, "ЧГ=0"));

    Надпись = Элементы.Добавить(ИмяНадписи, Тип("ДекорацияФормы"), Страница);
    Надпись.Заголовок = эл_МенеджерыПоСнабжению.Значение;

    КонецЦикла;

    КонецПроцедуры
```
Я вроде администратор, а там отбор по дате, и не меняется, я в 8,3 такое делал, но тут не могу найти где код. У формы списка есть только обработчик ПередОткрытие, по моему в нем отборы не накладываются, но даже если накладывается

```1c
    Отказ = Не УправлениеЗаказами.ИспользоватьВнутренниеЗаказы(Истина);
```

вроде не про отборы
---
у даты там отдельная кнопка вроде типа такой (<->) может в ней настроено ?
Или если форма открывается из другой то может там отбор устанавливается...
---
у даты там отдельная кнопка вроде типа такой (<->) может в ней настроено ?
Или если форма открывается из другой то может там отбор устанавливается...
---
Да по кнопке период отбор настроен был
---
может индексирование по дате отключено?
---
Если форма списка открывается для выбора значения, то отбор может быть установлен платформой по настройке "Связи параметров выбора". Эта настройка задаётся для реквизита или для элемента формы.
1с зависает на 2 строке

```1c
    Excel = Новый COMОбъект("Excel.Application");
    Excel.WorkBooks.Open(ПутьКФайлу);
```

Проверено на двух разных серверах, так что предположение что то с файлом. Что проверить?
---
Сохранила в формате экселя 97-2003 - файл грузиться
что с начальным файлом - не понятно
---
открыть файл интерактивно и узнать

подсунуть пустой файл, созданный инерактивно, и проверить работу.
---
может права доступа?
---
Эксель, скорее всего, встречается с какой-то проблемой, и, даже, об этом сообщает.
Только этого сообщения не видно.
А вот чтобы его увидеть, нужно перед открытием файла вставить
Excel.Visible=1;
---
Проверено на двух разных серверах А на этих серверах Excel вообще установлен?

Или код выполняется на клиенте?
---
если на 2-й строке зависает, значит COMОбъект таки создался
---
ком объекты зарегистрированы?
---
Проверить права на доступ к файлу
---
```1c
    Процедура ПроверитьКаталогВыгрузкиНаСервере()
    КаталогВыгрузкиФайловЛок = ";
    Если Прав(СокрЛП(КаталогВыгрузкиФайлов), 1) <> "\" Тогда
    КаталогВыгрузкиФайловЛок = КаталогВыгрузкиФайлов + "\";
    КонецЕсли;

    ТчСообщений.Очистить();
    ТчСообщений.Добавить().Сообщение = "1. Проверяем доступность указанного каталога выгрузки.";
    ФПроверки = Новый Файл(КаталогВыгрузкиФайловЛок);
    Если НЕ ФПроверки.Существует() Тогда
    ТчСообщений.Добавить().Сообщение = "Сервер рапортует что каталога выгрузки не доступен.";
    Возврат;
    Иначе
    ТчСообщений.Добавить().Сообщение = " - Каталог выгрузки виден с сервера 1С";
    КонецЕсли;

    ТчСообщений.Добавить().Сообщение = "2. Создадим тестовый файл в каталоге выгрузки: ПроверочныйФайл.txt";
    ППутьТестовогоДокумента = КаталогВыгрузкиФайловЛок + "ПроверочныйФайл.txt";
    ТекстДок = Новый ТекстовыйДокумент;
    ТекстДок.УстановитьТекст("Проверочный текстовый файл");

    УдалосьЗаписать = Истина;
    Попытка
    ТекстДок.Записать(ППутьТестовогоДокумента);
    Исключение
    УдалосьЗаписать = Ложь;
    КонецПопытки;
    Если УдалосьЗаписать Тогда
    ТчСообщений.Добавить().Сообщение = " - серверу 1С удалось записать в каталог выгрузки проверочный текстовый файл.";
    Иначе
    ТчСообщений.Добавить().Сообщение = " - серверу 1С не удалось записать в каталог выгрузки проверочный текстовый файл. Не хватает прав доступа.";
    Возврат;
    КонецЕсли;

    ТчСообщений.Добавить().Сообщение = "3. Удалим проверочный тестовый файл в каталоге выгрузки";
    ФУдаления = Новый Файл(ППутьТестовогоДокумента);
    УдалосьУдалитьФайл = Истина;
    Если ФУдаления.Существует() Тогда
    Попытка
    УдалитьФайлы(ППутьТестовогоДокумента);
    Исключение
    УдалосьУдалитьФайл = Ложь;
    КонецПопытки;
    Если УдалосьУдалитьФайл Тогда
    ТчСообщений.Добавить().Сообщение = " - серверу 1С удалось удалить проверочный текстовый файл";
    Иначе
    ТчСообщений.Добавить().Сообщение = " - серверу 1С не удалось удалить проверочный текстовый файл. Не хватает прав доступа.";
    Возврат;
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
```
---
Сохранила в формате экселя 97-2003 - файл грузиться
что с начальным файлом - не понятно
Если на листе сложная шапка в несколько срок то не отрабатывает...
Как пропустить шапку и читать только допустим с 10й строки?
---
ЕЩЕ РАЗ. Не свойство Области, а метод ОБЛАСТЬ() .Я же тебе даже кусок твоего же кода выделил!!!
---
В цикле обработки строк начните не с первой, а с 10й
---
так цикл обрабатывает не правильную таблицу...
т.к. при чтении из - за шапки он загружает только первую колонку. А все остальные колонки не загружаются.
---
Можно код
---
нижн
---
```1c
    ТаблДок = Новый ТабличныйДокумент;
    ТаблДок.Прочитать(ИмяФайлаНаСервере, СпособЧтенияЗначенийТабличногоДокумента.Значение, ТипФайлаТабличногоДокумента.XLS);

    ПЗ = Новый ПостроительЗапроса;
    ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблДок.Область());
    ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
    ПЗ.ЗаполнитьНастройки();
    ПЗ.Выполнить();
    ТЗ = ПЗ.Результат.Выгрузить();
```

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

```1c
    Новый ОписаниеИсточникаДанных(ТаблДок.Область())
```
---
Удалить пока не вариант... это пользователю придется каждый раз делать.
Вот же у тебя есть Область() - используй параметры для выделения необходимого пула строк и колонок.
это как? или это только после удаления не нужны строк? Без ненужных строк все отрабатывает.
---
Ну почитай, что такое Область(). И именно эта область и будет у тебя в ТЗ выгружаться, а не весть ТабДок...
---
1
---
Перестаньте советовать чушь. Человеку нужен вариант механизма работы с Прочитать(), а не работать с COM-объектом Экселя.
---
Используйте область табличного документа. А не весь.
---
(13)
ТабличныйДокумент.Области показывает что там одна область.
выбирать вроде как нечего... только шапку удалять получается
---
ЕЩЕ РАЗ. Не свойство Области, а метод ОБЛАСТЬ() .Я же тебе даже кусок твоего же кода выделил!!!
---
Спасибо. Уже похоже, но пока не отрабатывает...

```1c
    ОбластьН = ТабличныйДокумент.Область(НомерПервойСтроки,НомерПервойКолонки,НомерПоследнейСтроки,НомерПоследнейКолонки);
```

выдает облать - все ок

```1c
    ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьН);
```

но тут велетает по ошибке область не найдена.
---
а не , все ок. это остатки старого кода мешали. Спасибо. Прочиталось.
---
Тему закрой выбором правильного ответа, чтобы глаза не мозолила )
Подскажите возможно ли реквезит из табличной части продублировать в шапке документа? Например чтобы реквезит собственник печатался и в табличной части и в шапке документа.
---
Скорее всего налицо избыточность данных.
Хранят одно и то же в каждой строке и еще хотят это вынести в шапку.
Тогда надо грохать реквизит в строке и выводить его в шапку.
---
конечно, реквизит какой из 10-ти строк ты хочешь вывести в шапку?
---
из первой строки
---
Реквезит - один раз еще можно не заметить, но три раза... Реально глаза режет.
---
видимо вопрос не корректно сформулирован. кажется наоборот из шапки нужно в печатную форму вывести ФИО напротив каждой строки
---
Скорее всего налицо избыточность данных.
Хранят одно и то же в каждой строке и еще хотят это вынести в шапку.
Тогда надо грохать реквизит в строке и выводить его в шапку.
---
есть документ с табличной частью из 9-10 строк надо что бы реквизит собственник печатался и в табличной части и в шапке. и каждая строка табличной части на новом листе
---
Находясь в строке табличной части ведь есть доступ к атрибутам документа (шапки).
Если сейчас в шапке выводится реквизит то можно скопировать это в строку табличной части и все. Вроде проблем не должно быть.
---
Мне надо один из реквизитов таблицы вывести в шапку.
Как в ОбъектXDTO сделать проверку на имеющееся поле?
То есть в каком-то случае есть,например, Поле1, а в каком-то нет
---
```1c
    Если НЕ ОбъектXDTO.Свойства().Получить("НужноеСвойство") = Неопределено Тогда
```
---
```1c
    Если НЕ ОбъектXDTO.Свойства().Получить("НужноеСвойство") = Неопределено Тогда
```
---
Спасибо)
---
Да ладно?!!!
---
Позже изменения Ваши заметил)
Есть процедура ПриИзменении, которая вызывает серверную процедуру, после ее выполнения возникает ошибка.

Я ничего не передаю на клиент, есть версия, что строка содержится в диаграмме Ганта которую я пытаюсь заполнить в серверной процедуре
---
Может попробовать заполнять не строками таблицы, а значениями?
---
Значит на сервере какая-то клиентская переменная (параметр процедуры) подменяется строкой таблицы. Частая ошибка, когда передают не по значению.
---
Может попробовать заполнять не строками таблицы, а значениями?
---
Может попробовать заполнять не строками таблицы, а значениями?
В общем да, я почему-то начал просто строку ТЗ вставлять в точку диаграммы, вместо значения строки. :)
---
Значит на сервере какая-то клиентская переменная (параметр процедуры) подменяется строкой таблицы. Частая ошибка, когда передают не по значению.
---
Вызов серверной процедуры, заголовок серверной процедуры показывайте.
---
```1c
    &НаСервере
    Процедура СформироватьНаСервере()

    СформироватьДиаграмму(Результат);

    КонецПроцедуры
```

Где "Результат" это реквизит формы с типом диаграмма Ганта.

```1c
    &НаСервере
    Процедура СформироватьДиаграмму(Диаграмма)
```
---
Сообщение было скрыто модератором.
Поле для ввода в режиме конструктора имеет заданную фиксированную ширину, но в режиме пользователя ширина становится другой, кто сталкивался с такой проблемой?
---
привязка границ - установить правила
---
привязка границ - установить правила
---
благодарю, не знал о такой механике
Подскажите,В 1С есть макет при открытии появляется диалог "Выгрузить" "Загрузить" (Двоичные данные).Как изменить мает данного отчета?
---
НУ вот. Это ERF - внешний отчет. Сохраняете его как ERF и изменяйте в конфигураторе.
---
Выгрузить двоичные данные на диск, изменить, и Загрузить обратно в макет.
---
как их выгрузить и потом изменить?
---
Нажать на кнопку "Выгрузить" (удивительно!), и придумать имя файла. И потом изменять этот файл.
---
А как можно понять в каком формате он загружался?Я его выгрузила,попробовала изменить расширение?в xml он пустой,в txt формат не понятный
---
Можно догадаться по программному коду, в котором используется данный макет. или по внешнему виду, в котором формируется печатная форма отчета...
---
в коде что то что указывало бы на это нет,печатная форма не формируется,из за того что нужно править макет
---
в двоичных данных может быть что угодно. Попробуйте определить тип файла по его заголовку. Возможно это картинка если это связано с печатью.
---
нет,это отчет,в макете должен быть какой то запрос
---
в коде что то что указывало бы на это нет
макет явно не просто так там размещен, где-то в коде он прочитывается.
(9)
---
ну да,тут
ДвоичныеДанные = ПолучитьМакет("Макет");
---
ДвоичныеДанные = ПолучитьМакет("Макет")
ну а дальше по коду?
---
ИмяФайла = ПолучитьИмяВременногоФайла("erf");
  ДвоичныеДанные.Записать(ИмяФайла);
  Отчет = ВнешниеОтчеты.Создать(ИмяФайла);

На создании ошибка,что нет некоего объекта
---
текст ошибки полностью
---
Поле не найдено "РегистрСведений.ТерриторияПоОкончании"
ИНАЧЕ РегистрСведений.<<?>>ТерриторияПоОкончании
{ВнешняяОбработка.ВыгрузкаШтатногоРасписанияКУБ.МодульОбъекта(68)}: Отчет = ВнешниеОтчеты.Создать(ИмяФайла);
{ВнешняяОбработка.ВыгрузкаШтатногоРасписанияКУБ.Форма.ФормаУпр.Форма(5)}: ОбработкаОбъект.ВыполнитьОбработку();
{ВнешняяОбработка.ВыгрузкаШтатногоРасписанияКУБ.Форма.ФормаУпр.Форма(10)}: ВыгрузитьНаСервере();
---
СКД, Внешний отчет не подходит к данной конфигурации.
---
в двоичных данных у вас внешний отчет. Сохраняйте его на диск и открывайте Конфигуратором.
---
О,спасибо))
(20)
---
НУ вот. Это ERF - внешний отчет. Сохраняете его как ERF и изменяйте в конфигураторе.
---
Спасибо))
---
запрос в двоичных данных??? Сомнительно.
---
Схема СКД же...
---
а ну если так только
---
Поняла,раньше с таким не сталкивалась,теперь буду знать))
Можно ли как-то в Конфигураторе 8.3 одной командой задать пользователю СРАЗУ ВСЕ роли?
---
Не одной командой, но как-то так можно добавить пользователю ВСЕ роли:

```1c
    Для каждого ИмяРоли Из Метаданные.Роли Цикл
    Если не ПользовательИБ.Роли.Содержит(ИмяРоли) Тогда
    ПользовательИБ.Роли.Добавить(ИмяРоли);
    КонецЕсли;
    КонецЦикла;
    ПользовательИБ.Записать();
```
---
Если через конфигуратор надо дать полные права, то открываешь пользователя, переходишь на закладку Прочие и находишь роль - "Полные права" .
---
1. не стОит именно так делать.
2. Если нужно дать пользователю полные права, то роль так и называется "полные права" - ее нужно дать пользователю и отобрать остальные.
3. Если нужно дать полные права на короткое время для получения каких-то данных, то как уже заметили выше - УстановитьПривилегированныйРежим(Истина)
---
одной командой

Какой вопрос - такой и ответ ))
---
1. не стОит именно так делать.

Согласен. Чисто временный костыль для создания пустой базы УТ11.

2. Если нужно дать пользователю полные права, то роль так и называется "полные права" - ее нужно дать пользователю и отобрать остальные.

Искал и "ПолныеПрава" и "ВсеПрава" - нету. Может быть, проглядел. Поставил "Администрирование" того и сего - кричит: "Недостаточно прав!"

3. Если нужно дать полные права на короткое время для получения каких-то данных, то как уже заметили выше - УстановитьПривилегированныйРежим(Истина)

Так это надо с Отладчиком лазить плюс если права через справочники - может и не помочь.
---
И где вы искали, если не секрет? Вы своему пользователю хотите права повысить?
---
И где вы искали, если не секрет?

Нигде. Предпочёл сразу спросить у коллектива, потому что уже была аналогичная ситуация, которая решилась через окошко "Дополнительно".

Вы своему пользователю хотите права повысить?

Я хочу по-быстрому создать пустую базу УТ11. Административные права стоят, но она всё равно в окошке со шкалой прогресса ругается на недостаток прав, а разбираться мне некогда.
---
чем не устраивает вариант создания чистой БД через выгрузку конфигурации в файл, созданием чистой БД средствами конфигуратора с последующей загрузкой ранее сохраненной конфигурации?

Или чистая база должна быть не совсем чистая, а с заполнеными справочниками, например?
---
с заполнеными справочниками. Надо пройти этап первого запуска с бегущей полоской, а я свой шаблончик потерял :(((. Думал с нуля пройти, а не выходит - то ли забыл что-то, то ли что-то изменилось, пока меня не было.
---
УстановитьПривилегированныйРежим (Истина);
---
Не одной командой, но как-то так можно добавить пользователю ВСЕ роли:

```1c
    Для каждого ИмяРоли Из Метаданные.Роли Цикл
    Если не ПользовательИБ.Роли.Содержит(ИмяРоли) Тогда
    ПользовательИБ.Роли.Добавить(ИмяРоли);
    КонецЕсли;
    КонецЦикла;
    ПользовательИБ.Записать();
```
---
Это уже теплее. Правда я ждал ответа в стиле "Правая кнопка в окошке "Дополнительные..." "
---
галки типа "Все возможные роли" у пользователя ИБ, насколько я знаю, нет)
---
Если через конфигуратор надо дать полные права, то открываешь пользователя, переходишь на закладку Прочие и находишь роль - "Полные права" .
---
И точно. Проглядел вчера :(, бывает.
Необходимо создать диалог, в котором можно будет выбирать определенные параметры. Из стандартных смотрел там есть различные варианты дата/строка диалоги, но только 1 параметр получается в диалоге. Есть ли какой-то диалог, настраиваемый, в который можно добавить несколько параметров и их можно было выбирать
---
Создайте свою форму, которая будет формироваться динамически в зависимости от переданных параметров. Стандартных нет.
---
Создайте свою форму, которая будет формироваться динамически в зависимости от переданных параметров. Стандартных нет.
---
В этой публикации состав реквизитов диалога формируется динамически
Создал обработку программной выгрузки через универсальный обмен данных 1с обычная форма.
Сейчас правила находят внутри обработки как макет, так вот хочу чтобы он читал где-то с каталога компьютера эти правила, так как они будут обновляться. Как это осуществить ?
---
```1c
    Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
    Обработка.ИмяФайлаПравилОбмена = "\\server\Правила.xml";
    Обработка.ЗагрузитьПравилаОбмена();

    Обработка.ДатаНачала = НачПериода;
    Обработка.ДатаОкончания = КонецДня(КонПериода);

    Обработка.НепосредственноеЧтениеВИБПриемнике = Истина;
    Обработка.ТипИнформационнойБазыДляПодключения = Ложь; //Файловый - Истина; SQL - Ложь;
    Обработка.АутентификацияWindowsИнформационнойБазыДляПодключения = Ложь;
    Обработка.КаталогИнформационнойБазыДляПодключения = ";
    Обработка.ИмяСервераИнформационнойБазыДляПодключения = ИмяСервера;
    Обработка.ИмяИнформационнойБазыНаСервереДляПодключения = ИмяБазы;
    Обработка.ПользовательИнформационнойБазыДляПодключения = ".....";
    Обработка.ПарольИнформационнойБазыДляПодключения = ".....";
    Обработка.ВерсияПлатформыИнформационнойБазыДляПодключения = "V83";

    Обработка.ВыполнитьВыгрузку();
```
---
Файл = Новый Файл(ПутьКФайлу);
---
```1c
    Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
    Обработка.ИмяФайлаПравилОбмена = "\\server\Правила.xml";
    Обработка.ЗагрузитьПравилаОбмена();

    Обработка.ДатаНачала = НачПериода;
    Обработка.ДатаОкончания = КонецДня(КонПериода);

    Обработка.НепосредственноеЧтениеВИБПриемнике = Истина;
    Обработка.ТипИнформационнойБазыДляПодключения = Ложь; //Файловый - Истина; SQL - Ложь;
    Обработка.АутентификацияWindowsИнформационнойБазыДляПодключения = Ложь;
    Обработка.КаталогИнформационнойБазыДляПодключения = ";
    Обработка.ИмяСервераИнформационнойБазыДляПодключения = ИмяСервера;
    Обработка.ИмяИнформационнойБазыНаСервереДляПодключения = ИмяБазы;
    Обработка.ПользовательИнформационнойБазыДляПодключения = ".....";
    Обработка.ПарольИнформационнойБазыДляПодключения = ".....";
    Обработка.ВерсияПлатформыИнформационнойБазыДляПодключения = "V83";

    Обработка.ВыполнитьВыгрузку();
```
---
spasibo
Есть внешняя обработка - тип открытие формы
и 2 команды

```1c
    ПараметрыРегистрации.Назначение.Добавить("Документ.ДвижениеПродукцииИМатериалов");
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = НСтр("ru = 'Этикетки_'");
    НоваяКоманда.Идентификатор = "Печать";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    НоваяКоманда.ПоказыватьОповещение = Истина;
    НоваяКоманда.Модификатор = "ПечатьMXL";

    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = НСтр("ru = 'Этикетки c доп. свойствами_'");
    НоваяКоманда.Идентификатор = "ПечатьДС";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    НоваяКоманда.ПоказыватьОповещение = Истина;
    НоваяКоманда.Модификатор = "ПечатьMXL";
```

как при открытии формы понять по какой из команд она открылась?
---
Смотрите параметр "ИдентификаторКоманды" при создании формы на сервере.
---
Смотрите параметр "ИдентификаторКоманды" при создании формы на сервере.
---
ага
ЭтаФорма.Параметры.ИдентификаторКоманды