arefaste/1C_Forums huggingface dataset:
Помоги разобраться с запросом, вызываю из подписки на событие

```1c
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | Файлы.Ссылка КАК Файл
    |ИЗ
    | Справочник.Файлы КАК Файлы
    |ГДЕ
    | Файлы.ВладелецФайла = &ВладелецФайла";

    Запрос.УстановитьПараметр("ВладелецФайла", Источник);

    Результат = Запрос.Выполнить().Выбрать();
```

Файлы.ВладелецФайла это определяемый тип ВладелецФайлов

источник это ссылка на объект справочника

выдается ошибка типа
Ошибка при выполнении обработчика - 'ПриЗаписи'
по причине:
{ОбщийМодуль.Доработки.Модуль(25)}: Ошибка при вызове метода контекста (Выполнить)
 Результат = Запрос.Выполнить().Выбрать();
по причине:
{(6, 22)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
 неограниченной длины и поля несовместимых типов.
Файлы.ВладелецФайла <<?>>= &ВладелецФайла

что самое интересное у 1С запрос с аналогичным условием работает
---
Источник это у тебя что ? Подозреваю что это Объект, а тебе в параметр запроса надо передавать ссылку.
---
Источник это у тебя что ? Подозреваю что это Объект, а тебе в параметр запроса надо передавать ссылку.
---
спасибо, это был как раз объект, получил ссылку и все завелось

Источник это параметр подписки на событие
Добрый день ребята, как заполнить счет учета РеализацияТоваровУслуг БП 2.0 программно

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

Вот дальше тупик товар загрузил, Номенклатура Количество Цена

а дальше незнаю как заполнить счета БУ НУ НДС и т.д. документ не проводится без этих данных
---
На форме документа РТиУ посмотрите процедуру ТоварыНоменклатураПриИзменении()

В Вашем случае (после Вашего кода) попробуйте добавить и посмотрите, что надо и что не надо.

```1c
    Для каждого СтрокаТЧ Из НовДок.Товары Цикл
    ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТЧ, ЭтотОбъект);
    ОбработкаТабличныхЧастей.ЗаполнитьНомерГТДИСтрануПроисхождения(СтрокаТЧ, Ложь, Организация, Дата);
    ОбработкаТабличныхЧастей.ЗаполнитьКодТНВЭД(СтрокаТЧ, Дата);
    ЗаполнитьСчетаУчетаВСтрокеТабЧасти(СтрокаТЧ, "Товары", Истина);
    // Рассчитываем реквизиты табличной части.
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТЧ, ЭтотОбъект);
    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТЧ, ЭтотОбъект);
    КонецЦикла;
```
---
Используй методы конфигурации, там уже есть готовые процедуры по заполнению счетов учета, достаточно в них передать твой документ.
---
Можно немного по подробнее, пример так как новичок в этом деле)
---
в том же документе в коде есть заполнение счетов учета, найдите и посмотрите как используется.
---
Может кто подскажет как обратится к колонке НДС для заполнения? Пример
---
Обычно это колонка содержит значение перечисления СтавкиНДС
---
На форме документа РТиУ посмотрите процедуру ТоварыНоменклатураПриИзменении()

В Вашем случае (после Вашего кода) попробуйте добавить и посмотрите, что надо и что не надо.

```1c
    Для каждого СтрокаТЧ Из НовДок.Товары Цикл
    ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТЧ, ЭтотОбъект);
    ОбработкаТабличныхЧастей.ЗаполнитьНомерГТДИСтрануПроисхождения(СтрокаТЧ, Ложь, Организация, Дата);
    ОбработкаТабличныхЧастей.ЗаполнитьКодТНВЭД(СтрокаТЧ, Дата);
    ЗаполнитьСчетаУчетаВСтрокеТабЧасти(СтрокаТЧ, "Товары", Истина);
    // Рассчитываем реквизиты табличной части.
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТЧ, ЭтотОбъект);
    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТЧ, ЭтотОбъект);
    КонецЦикла;
```
---
Ты просто КРАСАВА, ВоТ оно решение
---
Открываете модуль документа и смотрите как там заполняются счета учета. Открываете форму документа и смотрите как там заполняется ндс.
Приветствую!
Есть задача, прочитать EXEL файл, обработать данные, изменить их и записать обратно в EXEL.
Ничего сложного, но задача осложнена тем, что нельзя использовать COM.
И вроде бы тоже ничего сложного, создали таб док, загрузили в него exel файлик, обработали и записали этот табдок обратно в файл, но в EXEL файлике есть несколько листов, и мне нужно произвести манипуляции лишь с несколькими из них (прочитать, обновить, записать обратно).
Как мне не используя COM можно работать с EXEL листами?
Есть ли у Табличного документа что-то похожее на листы 1С? или может быть есть решения кроме табличного документа?
---
вот тема, например
https://forum.infostart.ru/forum15/topic165505/
там в комментах, как раз есть пример, распаковки файла, в xml и дальше анализируй их, и обратно собирай.
---
о сложного, но задача осложнена тем, что нельзя использовать COM.
И вроде бы тоже ничего сложного, создали таб док, загрузили в него exel файлик, обработали и записали этот табдок обратно в файл, но в EXEL файлике есть несколько листов, и мне нужно произвести манипуляции лишь с несколькими из них (прочитать, обновить, записать обратно).
Как мне не используя COM можно работать с EXEL листами?
если файл экселя формата xlsx - то можно его распарсить и обратно свормировать и без экселя. Придется поковырятся конечно. Даже публикации есть на эту тему.
Если эксель всяких разных форматов, то - и работать надо средствами самого экселя, через ком.

табличный документ - это все таки не эксель, а довольно примитивная таблица предназначенная для большинства задач в среде 1С. Страничного функционала она не имеет. Думаю тогда надо думать о том
как предварительно заготавливать файлики, внешними средствами.
---
вот тема, например
https://forum.infostart.ru/forum15/topic165505/
там в комментах, как раз есть пример, распаковки файла, в xml и дальше анализируй их, и обратно собирай.
Ребята, всем привет!

Есть готовое правило обмена между ЗУП 3.1 и СУМД.

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

ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, ЭлементСправочника);
---
Вариант два. При выгрузке РС пишем ВыгрузитьПоПравилу(ЭлементСправочника,,,,ИмяПКОСправочника)
---
Надо создать кроме ПРО еще и ПКО из РС в Сотрудника.
---
А подробней можете??
---
1. Создаете правило регистрации на запись регистра сведений КадроваяИсторияСотрудников
2. Создаете правило конвертации объекта запись регистра сведений КадроваяИсторияСотрудников
приемником указываете справочник сотрудники. Главное настроить поиск таким образом что бы не создался новый сотрудник, а подтянулся существующий.
---
вообще справочная информация сама по себе в большинстве случаев не регистрируется. А синхронизируется по потребности, вместе с документами.
Возникает вопрос, разве вид занятости можно менять без кадровых документов ?
А если есть документ, то и справочник должен синхронизироваться. А значит он в соответствии с правилами будет искаться и перед выгрузкой тоже отработает.
---
Ну не отрабатывает же))
---
Правила никакие менять не надо. Достаточно сделать подписку на РегистрСведений, чтобы при записи элемент справочника регистрировался к обмену.

ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, ЭлементСправочника);
---
Вариант два. При выгрузке РС пишем ВыгрузитьПоПравилу(ЭлементСправочника,,,,ИмяПКОСправочника)
---
Это я где написать должна?
---
В ПКО КадроваяИсторияСотрудников "При выгрузке". Только получается, что сотрудник будет выгружаться каждый раз при любом изменении кадровой истории, не только при изменении вида занятости.
---
Интересная проблема.
Получается, нужно цеплять регистрацию изменений на регистр кадровой истории и создавать ПКО "Регистр - справочник сотрудников".
Я не программист, я пользователь, который немного знает про универсальные отчеты и запросы, по-этому сразу извиняюсь. если спрашиваю глупость.
На 8.2. в режиме пользователя в разделе "Сервис - Дополнительные внешние отчеты" есть пользовательский отчет.
Мне нужно посмотреть запрос этого отчета, что бы на его основе в новой базе на 8.3. построить другой новый отчет.
Как это сделать?
1. Как это сделать НЕ через конфигуратор?
2. Если можно только через конфигуратор, то как найти там этот отчет? Поиск не помогает, хотя бы раздел подскажите. И что делать дальше?
---
Посмотреть только через конфигуратор. Зайти в дополнительные вн. отчеты выбрать нужный отчет и нажать на корректировку. Затем, нажать на иконку "Дискета" и сохранить этот отчет на диск. А затем запустить конфигуратор и открыть сохраненный ранее отчет.
---
Посмотреть только через конфигуратор. Зайти в дополнительные вн. отчеты выбрать нужный отчет и нажать на корректировку. Затем, нажать на иконку "Дискета" и сохранить этот отчет на диск. А затем запустить конфигуратор и открыть сохраненный ранее отчет.
Кто-нибудь знает англоязычное название для директивы "Вместо"? (если переводить и подставлять слово "Instead", то выходит ошибка). В справочной системе к платформе 8.3.10 найти не удалось (может не по глазам).
---
в справке же есть:
&Вместо("Название метода или события")/&Around("Название метода или события")
---
в справке же есть:
&Вместо("Название метода или события")/&Around("Название метода или события")
---
) в справке же есть:
&Вместо("Название метода или события")/&Around("Название метода или события")

Спасибо! Ну вот не получилось найти, через F1\Ctrl+F1
---
для этого у вас должна стоять галка "оба языка"!
---
Стоит, поиск не находит. Платформа 8.3.10
---
ищется по "Аннотации".
---
Да, есть такое, спасибо!
---
&Around
Подскажите, кто в курсе. Как в обработке с управляемыми формами сформировать документ типа Word или Excel, вернее не как сформировать, наверняка также, как и в обычной форме, а как его потом
"выцепить" обратно на клиента ? Какую молитву произнести? Если можно, то простейший пример. Уф...Спасибо.
---
Молитву помещения во временное хранилище)

Вот у вас есть файл типа Word на сервере.

```1c
    //1. на сервере, где вы формируете файл, в итоге помещаете его во временное хранилище
    //2. запоминаете адрес во временном хранилище
    ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ФайлWord);
    АдресВоВремХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайла);

    //на клиенте, по запомненному адресу получаете
    ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(АдресВоВремХранилище);
    Если ЗначениеЗаполнено(ДвоичныеДанныеФайла) Тогда
    ДвоичныеДанныеФайла.Записать(ТутПутьКФайлуНаКлиенте);
    КонецеЕсли;
```
---
Молитву помещения во временное хранилище)

Вот у вас есть файл типа Word на сервере.

```1c
    //1. на сервере, где вы формируете файл, в итоге помещаете его во временное хранилище
    //2. запоминаете адрес во временном хранилище
    ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ФайлWord);
    АдресВоВремХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайла);

    //на клиенте, по запомненному адресу получаете
    ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(АдресВоВремХранилище);
    Если ЗначениеЗаполнено(ДвоичныеДанныеФайла) Тогда
    ДвоичныеДанныеФайла.Записать(ТутПутьКФайлуНаКлиенте);
    КонецеЕсли;
```
---
Ок, спасибо. Идеология процесса понятна Уточню, кое-что.

ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ФайлWord);
ФайлWord - это конкретный путь к файлу на диске ? Word дает ему временное имя. Пока мне неясно как достать это имя. Хотя там вроде есть команда типа - SaveAs по нужному пути.

С клиентом - понятно. С путем записи файла на клиенте - тоже. Пока неясно, как его показать из программы. Но это решается.

Ну в общем уже можно пробовать. Спасибо.

Хотя у нас, что клиент, что сервер в одном компе размещаются. Клиент -терминальная сессия на том же сервере. С планшета пока не планируем работы. Может тогда просто имя с сервера передать клиенту а клиент уж пусть показывает его (уже своему клиенту...) Вроде можно и без хранилища обойтись в нашем случае.
---
Если вордовский файл в макете обработки как двоичные данные, то можно его и не сохранять на сервере и не помещать в хранилище.

```1c
    &НаСервере
    Функция ПолучитьМакетСервер()

    Обработка = РеквизитФормыВЗначение("Объект");
    Возврат Обработка.ПолучитьМакет("Макет");

    КонецФункции

    &НаКлиенте

    Макет = ПолучитьМакетСервер();
    временныйПуть = КаталогВременныхФайлов();
    имяВременногоФайла = временныйПуть + "КакоетоИмя.doc";
    Макет.Записать(имяВременногоФайла);
```
---
Хотя там вроде есть команда типа - SaveAs по нужному пути.
Так точно. Сохраняете туда, куда вам нужно, заворачиваете в двоичные данные, ну и т.д.
---
,(5),(2) - спасибо, уже можно пробовать. Не получится, вернусь к вопросу.
Добрый день!

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

НО. Если регистр кроме измерения "номенклатура" имеет например измерение "цвет" то вариантов кроме как проверить каждую строчку у нас не остается, или я не прав?

Вот например здесь https://infostart.ru/public/195591/ если "в регистре два измерения: Товар, Партия" заменить на "в регистре три измерения: Товар, Цвет, Партия" то:

```1c
    |ВЫБРАТЬ
    | Остатки.Товар.Представление КАК ТоварПредставление,
    | Остатки.КоличествоОстаток
    |ИЗ
    | РегистрНакопления.ОстаткиТоваров.Остатки(
    | &ТочкаИтогов,
    | Товар В
    | (ВЫБРАТЬ
    | ДокТЧ.Товар
    | ИЗ
    | ДокТЧ КАК ДокТЧ)) КАК Остатки
    |ГДЕ
    | Остатки.КоличествоОстаток < 0
    |;
```

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

Кроме как перебрать в цикле, вариантов нет?
---
```1c
    |ИЗ
    | РегистрНакопления.ОстаткиТоваров.Остатки(
    | &ТочкаИтогов,
    | (Товар,Цвет) В
    | (ВЫБРАТЬ
    | ДокТЧ.Товар, ДокТЧ.Цвет
    | ИЗ
    | ДокТЧ КАК ДокТЧ)) КАК Остатки
```
---
```1c
    |ИЗ
    | РегистрНакопления.ОстаткиТоваров.Остатки(
    | &ТочкаИтогов,
    | (Товар,Цвет) В
    | (ВЫБРАТЬ
    | ДокТЧ.Товар, ДокТЧ.Цвет
    | ИЗ
    | ДокТЧ КАК ДокТЧ)) КАК Остатки
```
---
Это если цвет известен, задан в табличной части. А если нет? Если не принципиально, какой цвет будет?
---
Таки предполагаем, что в таком случае, надо искать на складе мячики без указания цвета. Нет таких мячиков - списывать нечего.
---
Интересный вариант. Пожалуй это решение.
---
Покупатель дальтоник и попросил мячик "любого цвета"?
Новая методика контроля остатков применяется только в том случае, когда в документе есть ВСЯ информация для совершения движений. Поэтому она новая, а не единственная.
Если цвет надо получить в момент проведения - используется старая методика.

Вызвать управляемую блокировку на товар без указания цвета, получить в запросе таблицу остатков всех цветов и выбрать любой из них через фунцию МАКСИМУМ. Затем списать мячик однозначно имеющийся на складе.
Здравствуйте!
Есть внешняя обработка на управляемых формах для выгрузки файла в банк. В этой обработке есть табличная часть "Список"
Добавил реквизит "Excel" и кнопку "ЗагрузитьИзФайла".
В самом Excel есть столбцы "ФизическоеЛицо", "ЛицевойСчет" и "Сумма".
Выбрав документ "Excel", нажимаем кнопку "ЗагрузитьИзФайла".
В табличную часть "Список", попадают "ЛицевойСчет" и "Сумма", а вот "ФизическоеЛицо" не подставилось, т.к. необходим поиск по справочнику.
Подскажите как правильно сделать.
В самом коде такие строки:

```1c
    Функция ЗагрузитьЧтениеExcel()

    ...

    ФизическоеЛицо = ExcelЛист.Cells(Row,2).Text;
    ФИО = ExcelЛист.Cells(Row,3).Text;
    НомерЛицевогоСчета = ExcelЛист.Cells(Row,4).Text;
    Сумма = ExcelЛист.Cells(Row,6).Value;

    ...

    ЗагрузитьЗаписать(ФизическоеЛицо,ФИО,НомерЛицевогоСчета,Сумма)

    КонецФункции

    &НаСервере
    Процедура ЗагрузитьЗаписать(ФизическоеЛицо,ФИО,НомерЛицевогоСчета,Сумма)

    Обработка = Объект.РеестрНаЗачислениеДенежныхСредств;

    НоваяСтрока = Обработка.Добавить();
    НоваяСтрока.ФизическоеЛицо = ФизическоеЛицо;
    НоваяСтрока.ФИО = ФИО;
    НоваяСтрока.НомерЛицевогоСчета = НомерЛицевогоСчета;
    НоваяСтрока.Сумма = Сумма;

    КонецПроцедуры
```
---
Получилось, сделал так:

НоваяСтрока.ФизическоеЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(ФизическоеЛицо,,,ФизическоеЛицо);

Может быть нелогично, но сработало.
---
Справочники.ФизическиеЛица.НайтиПоНаименованию(ФизическоеЛицо)

У справочника физ. лиц нет владельцев.
---
если в лоб, то НайтиПоНаименованию(), если по-хорошему, то собрать все наименования, получить одним запросом все ссылки, потом заполнять ими ТЧ
---
Пробую в лоб, но заполняет первым кто попался из списка физических лиц.
---
первым, кто попался с таким наименованием
---
Первым, кто вообще в списке физических лиц
---
это не так
---
у вас там есть поле ФИО, если оно полное, те не инициалы - ищите по нему. Наименование в справочнике физических лиц состоит из фамилии полного имени и отчества
---
Вот скрин.
при вот такой записи поиска

НоваяСтрока.ФизическоеЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(,,,НоваяСтрока.ФИО);

Такой же результат, если просто указать

НоваяСтрока.ФизическоеЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(,,,ФизическоеЛицо);
---
читал СП про метод НайтиПоНаименованию()?
НайтиПоНаименованию(<Наименование>, <ТочноеСоответствие>, <Родитель>, <Владелец>)

Параметры:
<Наименование> (обязательный)
Тип: Строка.
Строка, содержащая искомое наименование.
---
```1c
    Справочники.ФизическиеЛица.НайтиПоНаименованию(,,,НоваяСтрока.ФИО)
```

Это что вообще? Вы ищете по пустому наименованию, подсовываете вместо ссылки на владельца строку и ждете каких-то правильных результатов?
---
Просто забыл указать, что есть поле ФИО.
---
Получилось, сделал так:

НоваяСтрока.ФизическоеЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(ФизическоеЛицо,,,ФизическоеЛицо);

Может быть нелогично, но сработало.
---
Справочники.ФизическиеЛица.НайтиПоНаименованию(ФизическоеЛицо)

У справочника физ. лиц нет владельцев.
Здравствуйте, подскажите пожалуйста можно ли значение ресурса представить не в числовом виде.
Скриншот приложил.
Вот циферки 1 это значит что в понедельник и четверг у данного контрагента вывозится мусор, можно ли эту цифру 1 заменить на допустим Х
---
в 1й колонке что?
---
Условное оформление:
если значение = 1 тогда текст = Х
---
что-то не так сделал? у меня все равно 1 выходит.
---
в 1й колонке что?
---
Вот оно где)) все, всем спасибо.)
---
можно
---
Много способов. Способ с условным оформлением наиболее простой. Можно в запросе сделать, можно функцией.
Необходимо запретить всем пользователям проводить удаление помеченных объектов.
Внешнюю обработку без монопольного доступа переписал.
Обработку удаления в операциях всем запретил.
Остается стандартная функция - Операции - удаление помеченных объектов.
В ролях запретить ее не могу. Изменить в ней код для запрета тоже не могу, поскольку не знаю, где ее найти.
Возможно что нибудь подскажете?
---
Добавить подписку на событие "ПередУдалением", в ней Отказ = Истина.
---
Подписка на событие "Перед записью":

```1c
    Отказ=Источник.ПометкаУдаления;
```
---
Так я запрещу ставить пометку на удаление. Это я могу и через роли сделать. А мне нужно, чтобы пометки ставились, но никто кроме нескольких пользователей не мог обработкой удалить помеченные объекты.
---
И лишиться возможности потом снять пометку?
---
почему через роли не можешь?
---
Нету в Ролях такого пункта. Конфигурация УПП. Там есть только пометка и интерактивное удаление. Интерактивное удаление помеченных результата не дает.
---
Добавить подписку на событие "ПередУдалением", в ней Отказ = Истина.
Доброго дня уважаемые гуру!

```1c
    ЗначениеЭлемента = ОткрытьФормуМодально("Справочник.Номенклатура.ФормаВыбора", ПараметрыПодбора);
```

В итоге присваивается строковое значение (например, Плюшка), а как получить Код этого элемента? (например 00001 - код Плюшки).

Подскажите пожалуйста как это реализовать?
---
```1c
    &НаКлиенте
    ***
    ПараметрыПодбора = Новый Структура("ЗакрыватьПриВыборе", Истина);
    Эл = ОткрытьФормуМодально("Справочник.Номенклатура.ФормаВыбора",ПараметрыПодбора);

    КодЭлемента = ПолучитьКодЭлементаНаСервере(Эл);

    &НаСервереБезКонтекста
    Функция ПолучитьКодЭлементаНаСервере(Ссылка)
    Возврат Ссылка.Код;
    КонецФункции
```
---
ЗначениеЭлемента.Код
---
Пробовал, поле Код не найдено
---
Анатолий, добрый день!

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

```1c
    Эл = ОткрытьФормуМодально("Справочник.Номенклатура.ФормаВыбора",ПараметрыПодбора);
```

Больше ничего не пишу.
---
УФ или ОФ?
На клиенте наверно хотите код получить, а надо на сервере?
---
На клиенте
---
Интерактивные операции недоступны

&НаСервере
---
открывать форму подбора на клиенте, получать значения по ссылке на сервере.
Элементарные вещи же для УФ
---
Можно пример пожалуйста?
---
```1c
    &НаКлиенте
    ***
    ПараметрыПодбора = Новый Структура("ЗакрыватьПриВыборе", Истина);
    Эл = ОткрытьФормуМодально("Справочник.Номенклатура.ФормаВыбора",ПараметрыПодбора);

    КодЭлемента = ПолучитьКодЭлементаНаСервере(Эл);

    &НаСервереБезКонтекста
    Функция ПолучитьКодЭлементаНаСервере(Ссылка)
    Возврат Ссылка.Код;
    КонецФункции
```
---
Спасибо большое, попробую.
---
В новых программах запрещено открывать "Модальные окна"!!!
Правильнее делать через обработку оповещения.
---
Спасибо Всем за помощь.