arefaste/1C_Forums huggingface dataset:
1с УПП редакция 1.3 отчет "Продажи" по строкам номенклатура, в столбцах - Контрагенты и договоры контрагентов. Как убрать столбцы итогов по контрагентам? Скрин прикрепил.
---
Попробуй использовать этот универсальный отчет. Выбери необходимы регистр Продажи и на подобие настроек сделай

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

Либо делай свой отчет по этому регистру
---
В УПП, оказывается, есть свой отчет - Универсальный отчет (по регистрам, документам, справочникам). В нем все сделал. Всем спасибо за подсказки, особенно NatalkaBal.
Существует отчет на СКД, в нем есть группировка колонок, сделано так что (+) находятся справа на лево по колонкам, а по строкам "слева" а точнее сверху вниз.
Все отлично работает. НО:
Когда сохраняешь в Excel группировка по колонкам слетает на с право на лево и требуется сделать как было.

Это БАГ или ФИЧА такая сохранения 1С?
---
Сохраняй, потом открывай файл через COM и ставь как тебе надо
---
Выводите через ПостроительОтчета
---
Сохраняй, потом открывай файл через COM и ставь как тебе надо
---
Это плохой вариант в моем случае, да и я знаю что можно так, меня интересует что это такой косяк и не лечится без доп. открытий?
---
Это не косяк. Это особенность реализации
---
Интересная особенность, а она чем то обоснована? :)
---
Расположением рук у разработчиков
---
Тогда сложно сослаться на особенность :)
Пишу отчет на СКД для УНФ. Требуется вывести все дополнительные реквизиты для номенклатуры в строку.
То есть выводятся вся номенклатура а в столбцах должны выводится доп реквизиты.
Но при попытка выводить, получается что выводя доп реквизиты, у меня дублируются номенклатуры на количество записей в ТЧ.

Дело в том что ТЧ имеет всего два реквизиты, 1) Значение 2) Свойство. Нужно както получить все Свойство и вывести их, а потом связать по номенклатуре. Но не могу понять как это сделать на СКД.
---
Приложил отчет для вашего варианта
---
Попробуйте так: Выводите в таблицу
Строки - Номенклатура, Колонки - Доп реквизит Заголовок, а ресурсом сделайте Доп реквизит значение, должно сработать.
---
Используйте функцию ТаблицаЗначений
обсуждение
---
В таком случае он мне соединит все строки в одну ячейку.
А мне нужно что бы для каждой строки создавалась своя ячейка.
---
Попробуйте так: Выводите в таблицу
Строки - Номенклатура, Колонки - Доп реквизит Заголовок, а ресурсом сделайте Доп реквизит значение, должно сработать.
---
(5) Спасибо большое, так работает.
---
Приложил отчет для вашего варианта
Народ, привет! Подскажите пожалуйста, есть печ форма, там печатается: Уч.ед. Шестьсот пятьдесят два, а нужно Уч.ед. Шестьсот пятьдесят двЕ!!! Или Уч.ед. Семьсот пятьдесят один а нужно Семьсот пятьдесят одНА!
Прописано вот так:

```1c
    Итоги.Параметры.КоличествоПрописью = ФормированиеПечатныхФорм.КоличествоПрописью(ИтогКоличесвто);
```
---
попробуйте букву "Ж" в другом месте поставить
рез = ЧислоПрописью(1262,"НП=Ложь",",,,ж,,,,,0");
---
..
---
глобальный контекст
ЧислоПрописью(<Число>, <ФорматнаяСтрока>, <ПараметрыПредметаИсчисления>)
 в помощь.

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

в синтакс-помощнике описано весьма подробно.
---
Ну так смотри функцию "ФормированиеПечатныхФорм.КоличествоПрописью(ИтогКоличесвто);" , там где то будет метод "ЧислоПрописью()"
---
я вот так делаю:
```1c
    ИтогПрописью = ЧислоПрописью(ИтогКоличесвто,"НП=Ложь",",,,,,,,ж,0");
```

все равно Уч.ед. Шестьсот пятьдесят два
---
попробуйте букву "Ж" в другом месте поставить
рез = ЧислоПрописью(1262,"НП=Ложь",",,,ж,,,,,0");
Добрый день. Вся номенклатура в базе имеет название типа "Труба 1м Ø 120". При печати этикетки нужно печатать "120" крупным шрифтом что-бы издалека на складе видели какой это диаметр. Можно создать дополнительный реквизит и печатать его крупным шрифтом на макете этикетки. Подскажите как можно массово из наименования номенклатуры выдернуть именно "120" и скопировать в доп реквизит? Может быть есть что то типа скопировать три знака после значка Ø?
---
Есть.
Сред(ТвояСтрока, стрНайти(ТвояСтрока, ТвойСимвол) + 1, 3)

где-то так
---
Чуть сложнее, но можно так

```1c
    ПравильныеСимволы = "0 123456789";
    ДиаметрТрубы = ";
    НачальныйСимвол = СтрНайти(Строка.Наименование, "Ø") + 1;
    Для Сч = НачальныйСимвол По СтрДлина(Строка.Наименование) Цикл
    Если СтрНайти(ПравильныеСимволы,Сред(Строка.Наименование,Сч,1) <> 0
    И СтрНайти(ПравильныеСимволы,Сред(Строка.Наименование,Сч,1) <> 2 Тогда
    ДиаметрТрубы = ДиаметрТрубы + Сред(Строка.Наименование,Сч,1);
    ИначеЕсли СтрНайти(ПравильныеСимволы,Сред(Строка.Наименование,Сч,1) = 0 Тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;
```

Так можно обработать "Труба 1м Ø 120" и "Труба 1м Ø 120/23" и и "Труба 1м Ø 120 *23"
---
Очень понравился пример с регулярными выражениями, меня бы понесло в что-то типа (5)
---
Есть.
Сред(ТвояСтрока, стрНайти(ТвояСтрока, ТвойСимвол) + 1, 3)

где-то так
---
ну или
Значение = Прав(ТвояСтрока, 3);

Вообще, конечно надо справочник просмотреть, чтобы уловить общую картину, и уже по ней построить алгоритм парсинга.
Использовать, конечно, примитивные функции работы со строками.
---
```1c
    мЭлементыНаименования = СтрРазделить(ТоварНаименование, "Ø", Ложь);
    Если мЭлементыНаименования.Количество() > 1 Тогда
    Диаметр = СокрЛП(мЭлементыНаименования[1]);
    Иначе
    Диаметр = ";
    КонецЕсли;
```
---
В вашем случае хорошо помогут регулярные выражения.
Здесь можно создать шаблон который загоняется в Pattern - https://regex101.com/
Вот кусок кода для помощи

```1c
    RegExp = Новый COMОбъект("VBScript.RegExp"); // создаем объект для работы с регулярными выражениями

    //Заполняем данные
    RegExp.MultiLine = Ложь; // истина — текст многострочный, ложь — одна строка
    RegExp.Global = Истина; // истина — поиск по всей строке, ложь — до первого совпадения
    RegExp.IgnoreCase = истина; // истина — игнорировать регистр строки при поиске
    //RegExp.Pattern = "\d+х\d+х\d+"; //1200x485x444
    //RegExp.Pattern = "\d+x\d+"; //1200x485

    МассивРазмеров = Новый Массив;
    ТаблицаДопРеквизитов = Новый ТаблицаЗначений;
    ТаблицаДопРеквизитов.Колонки.Добавить("Свойство", Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения"));
    ТаблицаДопРеквизитов.Колонки.Добавить("Значение");

    Пока Выборка.Следующий() Цикл
    RegExp.Pattern = "\d+.\d+[х,x,\/]\d+.\d+[х,x,\/]\d+.\d+";
    Matches = RegExp.Execute(Выборка.Наименование);
    Если ЗначениеЗаполнено(Matches) Тогда
    Match = Matches.Item(0);
```
---
один из примеров https://regex101.com/r/kFhqSQ/1
Добрый день. Во внешней печатной форме заполняю табличную часть.

```1c
    ОбластьСтроки = МакетОбработки.ПолучитьОбласть("СтрокаТЧ");
    Для Каждого ТекущаяСтрока Из СсылкаНаДокумент.Товары Цикл
    ОбластьСтроки.Параметры.Номенклатура=ТекущаяСтрока.Номенклатура;

    Если ТекущаяСтрока.Номенклатура.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар") Тогда
    ОбластьСтроки.Параметры.Характеристика="("+ТекущаяСтрока.Характеристика+")";

    Иначе
    КонецЕсли;
    ОбластьСтроки.Параметры.Количество=ТекущаяСтрока.Количество;
    ОбластьСтроки.Параметры.Номер=ТекущаяСтрока.НомерСтроки;
    ТабличныйДокумент.Вывести(ОбластьСтроки);
    КонецЦикла;
    ОбластьМакета = МакетОбработки.ПолучитьОбласть("Промежуток1");
    ТабличныйДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = МакетОбработки.ПолучитьОбласть("Промежуток2");
    ТабличныйДокумент.Вывести(ОбластьМакета);
```

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

```1c
    Если ЗначениеЗаполнено(ТекущаяСтрока.Характеристика) Тогда
    ОбластьСтроки.Параметры.Характеристика=" ("+ТекущаяСтрока.Характеристика+")";
```

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

```1c
    ОбластьСтроки = МакетОбработки.ПолучитьОбласть("СтрокаТЧ");
    Для Каждого ТекущаяСтрока Из СсылкаНаДокумент.Товары Цикл
    ОбластьСтроки.Параметры.Характеристика = ";
```

Либо очищай, характеристику там где ее нет.
т.е.

```1c
    Если ТекущаяСтрока.Номенклатура.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар") Тогда
    ОбластьСтроки.Параметры.Характеристика="("+ТекущаяСтрока.Характеристика+")";

    Иначе
    ОбластьСтроки.Параметры.Характеристика = ";
    КонецЕсли;
```
---
потому что область у тебя одна и таже. Которую ты получил ДО цикла.
Либо инициализируй ей параметры в самом начале.

```1c
    ОбластьСтроки = МакетОбработки.ПолучитьОбласть("СтрокаТЧ");
    Для Каждого ТекущаяСтрока Из СсылкаНаДокумент.Товары Цикл
    ОбластьСтроки.Параметры.Характеристика = ";
```

Либо очищай, характеристику там где ее нет.
т.е.

```1c
    Если ТекущаяСтрока.Номенклатура.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар") Тогда
    ОбластьСтроки.Параметры.Характеристика="("+ТекущаяСтрока.Характеристика+")";

    Иначе
    ОбластьСтроки.Параметры.Характеристика = ";
    КонецЕсли;
```
---
Спасибо. Это помогло.
Подскажите, почему может ничего не выводить в самом отчете, хотя в консоле СКД все выводит. Ошибки нет, просто выводит пустой лист. Пробовал Консоль СКД с ИТС.
Во вложении сама схема

Конфигурация 1С:ERP Управление предприятием 2 (2.4.5.33)
---
действительно, перевыбрал значения параметров и отборов, и все вывелось
---
Под полными правами отчёт запускаете?
---
да
---
А консоль запускал на той жэ рабочей базе?
---
да
---
Значения параметров разные.
---
каких? в отчете только 2 параметра вывожу, период и организация
---
действительно, перевыбрал значения параметров и отборов, и все вывелось
---
СКД отчета "видит" функциональные опции, а в консоли запросов ФО, как правило, не "не мешают"
---
в параметрах СКД не заданы функциональные опции
---
Отметил свой пост как ответ на вопрос?)
---
подумал что более развернутый ответ будет полезнее )
Народ помогите. Есть документ в нем реквизит с типом строка в котором оператор прописывает например Москва Камаз К117АЕ, задача чтобы по нажатию кнопки разделить реквизит на 3 части и заполнить 3 новых реквизита Город марка машины и гос. номер, как это лучше сделать?
---
Ответ, безусловно, правильный, но... судя по тому, что автор его не знает, одно название функции ему слабо поможет, тут нужен образец готового кода, например:

```1c
    Если НЕ ПустаяСтрока(СтарыйРеквизит) Тогда
    МассивРеквизитов = СтрРазделить(СтарыйРеквизит," ",Ложь);
    РеквизитГород = МассивРеквизитов[0];
    Если МассивРеквизитов.Количество() > 0 Тогда
    РеквизитМарка = МассивРеквизитов[1];
    КонецЕсли;
    Если МассивРеквизитов.Количество() > 1 Тогда
    РеквизитГосНомер = МассивРеквизитов[2];
    КонецЕсли;
    КонецЕсли;
```

Тут кроме собственно разделения реквизита введена простейшая проверка на корректность его заполнения (наличие как минимум 2-х пробелов), но как показывает опыт, в таких случаях все варианты фантазии пользователей предугадать невозможно.

P.S. Надеюсь, имена реквизитов автор сможет подправить под свою конфигурацию.
---
СтрРазделить() по пробелу
---
Ответ, безусловно, правильный, но... судя по тому, что автор его не знает, одно название функции ему слабо поможет, тут нужен образец готового кода, например:

```1c
    Если НЕ ПустаяСтрока(СтарыйРеквизит) Тогда
    МассивРеквизитов = СтрРазделить(СтарыйРеквизит," ",Ложь);
    РеквизитГород = МассивРеквизитов[0];
    Если МассивРеквизитов.Количество() > 0 Тогда
    РеквизитМарка = МассивРеквизитов[1];
    КонецЕсли;
    Если МассивРеквизитов.Количество() > 1 Тогда
    РеквизитГосНомер = МассивРеквизитов[2];
    КонецЕсли;
    КонецЕсли;
```

Тут кроме собственно разделения реквизита введена простейшая проверка на корректность его заполнения (наличие как минимум 2-х пробелов), но как показывает опыт, в таких случаях все варианты фантазии пользователей предугадать невозможно.

P.S. Надеюсь, имена реквизитов автор сможет подправить под свою конфигурацию.
---
чтобы избежать ошибок ввода оператора (забыли пробел, поставили 2 и т.д.) лучше сделать 3 поля, и в каждое вводить своё значение, будет намного надёжнее, чем надеяться на грамотность оператора.
---
Строку разбить не проблема - выше уже подсказали как.
А что касается занесения новых значений - тут делайте лучше отдельные поля, желательно с проверкой на отсутствие пробелов и лишних символов.
---
Так можно вывести 3 поля, а поле ввода оставить, и перед записью все 3 реквизиты заполнять. Добавить проверки, и будет всем хорошо - оператор будет вписывать как привык, и будет видеть в итоге заполнение реквизитов. Можно и отдельную команду для заполнения сделать.
---
путей решения несколько, от самых простых - до самых изощренных. Тут уж все зависит от профессионализма и лени )) Главное чтобы функционал выполнялся.

А так задача то простая, справится даже новичок в программировании 1С.
Салют всем! Хочу вывести номер и дату подчиненной счет-фактуры в список поступлений, не могу разобраться с циклами все делаю через обработчик ПриПолученииДанных вроде все выводит но выводит во всех строках ячейки выделенного значения при том не по порядку а на одну вниз вот пример кода :
---
Процедура ПриПолученииДанных обрабатывает пачку строк. Т.е. при вызове этой процедуры в ОформленияСтрок попадают те строки которые выводятся на экран. Не нужно в этой процедуре обращаться к ЭлементыФормы.ДокументСписок.ТекущаяСтрока.
Нужно сделать вот так:

```1c
    Для каждого ОформлениеСтроки из ОформленияСтрок Цикл
    СЧФ = РаботаСДиалогами.ПолучитьТекстСчетаФактуры(
    УчетНДС.НайтиПодчиненныйДокумент(ОформлениеСтроки.ДанныеСтроки.Ссылка,"СчетФактураПолученный"));
    Если СЧФ = Строка("Ввести счет-фактуру") Тогда
    ОформлениеСтроки.Ячейки.СчетФактура.Значение = ";
    Иначе
    ОформлениеСтроки.Ячейки.СчетФактура.Значение = СЧФ;
    КонецЕсли;
    КонецЦикла;
```

Если использовать подход как в (3), нужно использовать процедуру ПриВыводеСтроки.
---
Вот
---
```1c
    Строка = ЭлементыФормы.ДокументСписок.ТекущаяСтрока ;

    СЧФ = РаботаСДиалогами.ПолучитьТекстСчетаФактуры(
    УчетНДС.НайтиПодчиненныйДокумент(Строка,"СчетФактураПолученный"));

    ДокументСписок.Обновить();

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

```1c
    Для каждого ОформлениеСтроки из ОформленияСтрок Цикл
    СЧФ = РаботаСДиалогами.ПолучитьТекстСчетаФактуры(
    УчетНДС.НайтиПодчиненныйДокумент(ОформлениеСтроки.ДанныеСтроки.Ссылка,"СчетФактураПолученный"));
    Если СЧФ = Строка("Ввести счет-фактуру") Тогда
    ОформлениеСтроки.Ячейки.СчетФактура.Значение = ";
    Иначе
    ОформлениеСтроки.Ячейки.СчетФактура.Значение = СЧФ;
    КонецЕсли;
    КонецЦикла;
```

Если использовать подход как в (3), нужно использовать процедуру ПриВыводеСтроки.
---
+(4)
Вообще такой код, с точки зрения производительности, будет плох и, возможно, будет доставлять неудобства пользователям в момент прокрутки списков, т.к. по сути "УчетНДС.НайтиПодчиненныйДокумент(..." это будет запрос к базе. Соответственно, получается, что этот запрос будет в цикле, причем этот цикл будет часто избыточен, т.к. ПриПолученииДанных часто не очевидно срабатывает – то одну строку получает, а то возьмет и всю пачку с экрана (30 штук к примеру) еще и пару раз подряд.

Чтобы уйти от этого нужно писать более сложный код, где из списка ОформленияСтрок доставать весь список ссылок на объекты, уже этот список передавать в один запрос (скорее всего писать придется свой, врятли есть готовый типовой, но не уверен) и только затем обрабатывать результат запроса и изменять строки в ОформленияСтрок.

Но это уже совсем другая история))
---
Спасибо)
```1c
    Макет = ПолучитьМакет("ИнвентаризационнаяОписьНФА_0504087_194н");

    ОбластьМакетаТитул = Макет.ПолучитьОбласть("Титул");
    ОбластьМакетаКомиссия = Макет.ПолучитьОбласть("Комиссия");
    ОбластьМакетаКонцовкаТитула = Макет.ПолучитьОбласть("КонцовкаТитула");
    ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
    ОбластьМакетаПустаяСтрока = Макет.ПолучитьОбласть("ПустаяСтрока");
    ОбластьМакетаДопСтрока = Макет.ПолучитьОбласть("ДопСтрока");
    ОбластьМакетаИтогоП = Макет.ПолучитьОбласть("ИтогоП");
    ОбластьМакетаИтогиПоСтр = Макет.ПолучитьОбласть("ИтогиПоСтр");
    ИтогоПоСтраницеЗаг = Макет.ПолучитьОбласть("ИтогоПоСтраницеЗаг");
    ИтогоПоСтранице = Макет.ПолучитьОбласть("ИтогоПоСтранице");
    ИтогоПоОписи = Макет.ПолучитьОбласть("ИтогоПоОписи");
    ИтогоПоОписиЧисло = Макет.ПолучитьОбласть("ИтогоПоОписиЧисло");
    Итоги = Макет.ПолучитьОбласть("Итоги");
    Подвал = Макет.ПолучитьОбласть("Подвал");
```

```1c
    СтрокаСПодвалом = Новый Массив;
    СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);
    СтрокаСПодвалом.Добавить(ИтогиПоСтр);
    СтрокаСПодвалом.Добавить(ИтогоПоСтранице);
    СтрокаСПодвалом.Добавить(ИтогоПоОписиЧисло);
```

{ВнешняяОбработка.ОС_ИнвентаризацияИнвентаризационнаяОпись0504087.МодульОбъекта(249,34)}: Переменная не определена (ИтогиПоСтр)
        СтрокаСПодвалом.Добавить(<<?>>ИтогиПоСтр); (Проверка: Толстый клиент (обычное приложение))
---
СтрокаСПодвалом.Добавить(ОбластьМакетаИтогиПоСтр)
Может так?
---
Такой переменной нет. ТС вместо имени переменной ОбластьМакетаИтогиПоСтр, использовал имя области макета.
---
```1c
    ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
    СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);
```

```1c
    МожноИТакСтрока = Макет.ПолучитьОбласть("Строка");
    СтрокаСПодвалом.Добавить(МожноИТакСтрока);
```
---
Значит, нет такой области в макете - ИтогиПоСтр.
---
Такой переменной нет. ТС вместо имени переменной ОбластьМакетаИтогиПоСтр, использовал имя области макета.
---
А это тогда что?
---
СтрокаСПодвалом.Добавить(ОбластьМакетаИтогиПоСтр)
Может так?
---
так заработало

```1c
    ИтогиПоСтр = Макет.ПолучитьОбласть("ИтогиПоСтр");
```

Тогда другой вопрос. Что такое ОбластьМакета перед верхними строками?? В самом макете никакой "ОбластиМакета" нет.
---
Имя переменной к которой присваивается область определенная в Макете. Как то так...

Вернее часть имени переменной
---
Так у них у всех такие имена: Титул, Комиссия, КонцовкаТитула, ... ИтогиПоСтр в макете, почему у первых есть это имя переменной, а у итогов нет?
---
Видимо, "творец" печатной формы решил так их назвать.
Вначале не важно как ты их назовешь, главное потом, в тексте не запутаться. Так что "ОбластьМакета" можно такие вещи выделять
---
Так что "ОбластьМакета" можно такие вещи выделять Где это делается?
---
```1c
    ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
    СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);
```

```1c
    МожноИТакСтрока = Макет.ПолучитьОбласть("Строка");
    СтрокаСПодвалом.Добавить(МожноИТакСтрока);
```
---
Аа в этом смысле выделять)
Есть две базы которие обмениваются через COM-соеденение

нужно в подлючаемой базе установить у реквизита справочника ЕдИзм тип перечисление из Выборки

в обоих базах Перечисления одинаковые

```1c
    База = Новый COMОбъект("V83.Application");
    ......
    ......
    ......
    Пока ВыборкаИзменений.Следующий() Цикл
    Выборка = ВыборкаИзменений.Получить();

    НашID = Строка(Выборка.Ссылка.УникальныйИдентификатор());
    ДругойИД = База.NewObject("УникальныйИдентификатор", НашID);

    спрСсылка = База.Справочники.Номенклатура.ПолучитьСсылку(ДругойИД);
    ОбъектБазы = спрСсылка.ПолучитьОбъект();
    ОбъектБазы.ЕдИзм = Выборка.ЕдИзм;
    КонецЦикла;
```
---
Все разобрался. Оказалось банально просто

```1c
    ОбъектБазы.ЕдИзм = База.Перечисления["ЕдИзм"][строка(Выборка.ЕдИзм)];
```
---
ИД точно совпадают?
---
да
---
Так надо всё равно использовать перечисления из базы к которой подключаетесь.
Т.е., я думаю, что проблема в Выборка.ЕдИзм
Это перечисление в базе - приёмнике надо указать.
---
Я пробывал установить вручную, но также не устанавливается

```1c
    ОбъектБазы.ЕдИзм = База.Перечисления.ОдВим.л;
```

нужно искать иной способ
P.S. как установить из подкллючаемой в свою базу я разобрался (через индексы) а на оборот пока никак не могу
---
Может поможет код, как я искал тип :)

 // Получим тип "СправочникСсылка.ФизическиеЛица" в базе ЗП
 //вМассквТипов = Соединение.Метаданные.Справочники.ФизическиеЛица.СтандартныеРеквизиты.Ref.Тип.Типы();
 //Для Каждого ТипФЛ ИЗ вМассквТипов Цикл
 // Прервать;
 //КонецЦикла;
 ТипФЛ = Соединение.Метаданные.Справочники.ФизическиеЛица.СтандартныеРеквизиты.Ref.Тип.Типы().Get(0);
---
естественно,
через ком передаются только примитивные типы.
Перечисление - к таковым не относится.
Поэтому переводить их нужно либо к строке (имя), либо к числу (индекс)
и обратно
---
а как установить в моем случае перечисление переведенное в строку?
---
Посмотрите в этой теме, возможно найдете подходящий вариант https://forum.infostart.ru/forum9/topic85550/
---
ПредопределенноеЗначение(....) прочите в СП

разве не прокатит?
---
Ну а что в нём предположительно указать?
какую строку вы предполоагаете?
---
База.ПредопределенноеЗначение(ПолучитьПолноеИмяПредопределенногоЗначения(Перечисления.ПолФизическогоЛица.Мужской))
---
Все разобрался. Оказалось банально просто

```1c
    ОбъектБазы.ЕдИзм = База.Перечисления["ЕдИзм"][строка(Выборка.ЕдИзм)];
```
---
Этот код может вызвать ошибку.
---
а так, вообще без определений - нужна только ссылка

База.ПредопределенноеЗначение(ПолучитьПолноеИмяПредопределенногоЗначения(Выборка.ЕдИзм))