arefaste/1C_Forums huggingface dataset:
Приветствую. Требуется, чтобы при двойном щелчке на список составов открывался список вагонов, в котором указаны только вагоны этого состава. Прописал в событии Выбор списка составов открытие формы списка вагонов с отбором, и вроде все работало, но если не закрывать форму (управляемая), а нажимать назад, и снова выбирать состав, то открывается список вагонов с предыдущим значением отбора. Как можно это исправить?

Пример: нажимаю на 2-ой состав, показываются вагоны 2-го состава, жму назад, нажимаю 3-ий состав. И все равно показываются вагоны 2-го состава.

Код:

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

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

    //ну и в Справочник.Вагоны.ФормаСписка добавить событие обработки оповещения

    Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

    Если ИмяСобытия = "ИмяМоегоСобытия" Тогда

    ИзменитьОтборыФормы()
    .....................
```
---
Например оповестить открытую форму о смене отбора.

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

    //ну и в Справочник.Вагоны.ФормаСписка добавить событие обработки оповещения

    Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

    Если ИмяСобытия = "ИмяМоегоСобытия" Тогда

    ИзменитьОтборыФормы()
    .....................
```
---
Так, с событием понятно, а как отбор изменить?

P.S. Всё, разобрался. Нужно было очищать
```1c
    Список.Отбор.Элементы.Очистить()
```
 перед добавлением нового.
Здравствуйте.

В конфигураторе в приходной накладной есть колонки "Аналитика расходов" и "Списать на расходы" (рис.1) В форме документа они не отображаются. Никак не могу найти причину. Помогите. пожалуйста.
---
решение:
Администрирование - Финансовые результаты - Учитывать прочие доходы и затраты
---
В документе Настройку списка посмотрите
---
см рис.2. нет этих реквизитов. есть только их группа: Товары группа списание на расходы
---
Программно, при окрытии формы отключаются?
---
не понял...
---
решение:
Администрирование - Финансовые результаты - Учитывать прочие доходы и затраты
Делаю отчёт на СКД. В запросе обращаюсь к трём регистрам. Из каждого регистра получаю по одному ресурсу, а измерения для всех трёх регистров совпадают. В отчёте нужно сделать расшифровку каждого поля до регистратора, при этом регистратор может как совпадать для двух или трёх регистров, так и не совпадать. Подскажите, пожалуйста, как поступить с регистратором, чтобы не делать расшифровку по трём регистраторам отдельно, а "объединить" их в один?
---
Если ресурсы Суммовые то объединением запросов.
---
В запросе сделать группировку по регистратору
---
группировку или всё-таки объединение? Регистратора у меня три
---
вариантов масса, вы бы хоть запрос показали, можно сделать три ВТ по каждому регистру и потом связать их по регистратору, и т.д. и т.п.
---
используй левое соединение в запросе
---
Если ресурсы Суммовые то объединением запросов.
Новая конфигурация. Нужно при открытии справочника в режиме предприятия была возможность быстрого поиска по определенному реквизиту
---
В конфигураторе в настройках динамического списка добавьте отбор по этому полю, включив его в пользовательские настройки с режимом редактирования "Быстрый доступ".
---
В конфигураторе в настройках динамического списка добавьте отбор по этому полю, включив его в пользовательские настройки с режимом редактирования "Быстрый доступ".
---
Спасибо
Как создать программно отбор динамического списка формы с группой условий "И" или "ИЛИ"?

```1c
    ФормаВыбора.Отбор.НаСкладеГП.ВидСравнения = ВидСравнения.НеРавно;
    ФормаВыбора.Отбор.НаСкладеГП.Значение = 0;
    ФормаВыбора.Отбор.НаСкладеГП.Использование = Истина;
```

И

```1c
    ФормаВыбора.Отбор.Выпущено.ВидСравнения = ВидСравнения.НеРавно;
    ФормаВыбора.Отбор.Выпущено.Значение = 0;
    ФормаВыбора.Отбор.Выпущено.Использование = Истина;
```

Нужно чтобы в списке НЕ отображались документы в которых одновременно значение в колонках "НаСкладеГП" и "Выпущено" = 0
---
Все отборы для списка документов работают в группе "И", так что просто добавляйте отборы по нужным полям, если необходимо одновременное выполнение условий. Если необходимо настроить отбор с группой ИЛИ, то ничего кроме как отбор по ссылкам не вижу:
```1c
    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    | Ссылка
    |ИЗ
    | Документ.МойДокумент
    |ГДЕ
    | (НаСкладеГП <> 0 ИЛИ Выпущено <> 0)");

    СписокСсылок = Новый СписокЗначений;
    СписокСсылок.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0));
    ФормаВыбора.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
    ФормаВыбора.Отбор.Ссылка.Значение = СписокСсылок;
    ФормаВыбора.Отбор.Ссылка.Использование = Истина;
```
---
А разве с таким отбором они отображаются?
---
Так список пустой потому что не учитывается как группа условий насколько я понял
---
Все отборы для списка документов работают в группе "И", так что просто добавляйте отборы по нужным полям, если необходимо одновременное выполнение условий. Если необходимо настроить отбор с группой ИЛИ, то ничего кроме как отбор по ссылкам не вижу:
```1c
    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    | Ссылка
    |ИЗ
    | Документ.МойДокумент
    |ГДЕ
    | (НаСкладеГП <> 0 ИЛИ Выпущено <> 0)");

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

Может кто-то сталкивался с такой проблемой?

1С 8.3 УПП
---
как то так

```1c
    WScriptNetwork = Новый COMОбъект("WScript.Network");
    МассивПринтеров = Новый Массив;
    Printers = WScriptNetwork.EnumPrinterConnections ();
    КоличествоПринтеров = Printers.length - 1;

    Для Номер = 0 По КоличествоПринтеров Цикл

    ТекСтруктура = Новый Структура("Порт, Имя");
    ТекСтруктура.Порт = Printers.Item(Номер);
    Номер = Номер + 1;
    ТекСтруктура.Имя = Printers.Item(Номер);
    МассивПринтеров.Добавить(ТекСтруктура);

    КонецЦикла;

    Возврат МассивПринтеров;
```
---
А принтер сам общедоступный?
---
что значит общедоступный?
Сетевой, любой пользователь может к нему обратится.

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

А вот так в коде задаю имя принтера:

```1c
    Если IPСканер = "192.168.246.136" Тогда
    ТабДок.ИмяПринтера = "KONICA MINOLTA C287SeriesPCL";
    ИначеЕсли IPСканер = "192.168.246.133" Тогда
    ТабДок.ИмяПринтера = "Generic 28C-8SeriesPCL";
    КонецЕсли;
```

Пробовала ТабДок.ИмяПринтера = "192.168.246.140" , присваивала айпишник.
Все равно не цепляет нужный принтер.

А как получить список принтеров через виндовую функцию, подскажите?
---
как то так

```1c
    WScriptNetwork = Новый COMОбъект("WScript.Network");
    МассивПринтеров = Новый Массив;
    Printers = WScriptNetwork.EnumPrinterConnections ();
    КоличествоПринтеров = Printers.length - 1;

    Для Номер = 0 По КоличествоПринтеров Цикл

    ТекСтруктура = Новый Структура("Порт, Имя");
    ТекСтруктура.Порт = Printers.Item(Номер);
    Номер = Номер + 1;
    ТекСтруктура.Имя = Printers.Item(Номер);
    МассивПринтеров.Добавить(ТекСтруктура);

    КонецЦикла;

    Возврат МассивПринтеров;
```
---
Функция рабочая, спасибо.
Но в возвращаемой структуре нет ни одного из принтеров, которые мне нужны.
А при выборе печати они отображаются в диалоговом окне.

(6)
как программно сделать и расчитать скидку на определенную сумму в заказе клиента?
---
Точка входа - найдите действие кнопы "Скидки" и вызывайте его в определенный вами (заказчиком) момент (событие)
Рассчитывайте по вашему алгоритму
И подставляйте туда, куда подставляет показанное вами окошко по кнопе "Ок"
---
общая идея такая:
1. вам кто-то говорит или вы сами придумываете алгоритм расчета скидки
2. вам кто-то говорит или вы сами придумываете событие, в результате которого 1с проводит этот расчет
3. потом вы просто подставляете полученное число в нужный реквизит на форме

и да, выполнение алгоритма расчета, привязка к событию и подстановка значения - это все и делает 1с-скрипт, который вам предстоит написать
---
(2)

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

программно - это нужно уметь писать код
 в соответственном модуле конфигурации

--------------

вы это имеете в виду ?

или вы хотите настроить 1с УТ для учета ?
---
все расчеты придуманы и реализованы.

 но их заполнение сбрасывается при сохранении документа.

----------------------------------

вы знаете, что в базе есть связи между собой ?

вот вы выложили скрин непонятно чего
делали неизвестно что и как....

а теперь что делать ?
---
Вроде как вопрос звучит довольно понятно - назначить ручную скидку программно, на примере интерфейса заложенного в стандартную конфигурацию (скрин).
Есть конкретная сумма, пусть будет 1000 рублей, которая должна быть добавлена в качестве скидки.
---
А что означает "Назначить"? Рассчитать? А при нажатии на кнопку ОК скидка расситывается и сохраняется? А что нам говорит конфигуратор в части модуля команды, ответственной за кнопку ОК?
---
Точка входа - найдите действие кнопы "Скидки" и вызывайте его в определенный вами (заказчиком) момент (событие)
Рассчитывайте по вашему алгоритму
И подставляйте туда, куда подставляет показанное вами окошко по кнопе "Ок"
---
может вы все-таки признаетесь, о чем речь ?

программно - это вы пишете код в конфигураторе

вы это делали ?

-------------

конфигурация у вас какая ? стандартная или доработанная ?
---
у меня пропал значёк

что ?
где ?

на рабочем столе ?

да нет, на груди был.....

----------------
---
проблемы с завышенным чсв в случаях неидеальной терминологии? ну это у вас не лечится
---
да нет проблем и важности

есть желание понять кто из нас инопланетянин :)
---
Спасибо.
Здравствуйте.

После выполнения процедуры ОбработкаПроведения() выполняется экспортная процедура одного из общих модулей. Глобальный поиск не нашел ссылок на эту процедуру. Ума не приложу что ее вызывает...

Помогите понять.
---
Возможно подписка на событие.
---
Возможно подписка на событие.
---
Отладка и стек вызовов в помощь.
Всем доброго дня, помогите решить задачу, нужно передать post запрос с параметрами вида
[
```1c
    {
    "completeness-checking": true,
    "index-to": "100427",
    "courier": true,
    "declared-value": 0,
    "dimension": {
    "height": 0,
    "length": 0,
    "width": 0
    },
```

```1c
    тДанные = Новый Структура;
    тДанные.Вставить("index-to", индекс);
```

Но ругается на Задано неправильное имя атрибута структуры из-за дефисов, как решить проблему ?
---
это тело запроса строкой в формате json.
Его сами формируете. Причем тут переменные запроса?
Как и сказал выше используйте соответствие вместо структуры.
Что-то в этом роде:

```1c
    тДанные = Новый Соответствие;
    // заполняем данные
    тДанные["index-to"] = индекс;
    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку();
    ЗаписатьJSON(Запись, тДанные);
    ВыходныеДанные = Запись.Закрыть();

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

уточните у принимающие стороны, может вам нужно передать просто текст этот, а там уже сами разбирать будут?
---
принимающая сторона почта России, у них есть свой api и есть описание переменных
---
ну так как другого описания от вас нет, то я бы подумал, что надо просто в теле передать.

ну типа - ЗапросHTTP.УстановитьТелоИзСтроки(СтрокаСПараметрами, КодировкаТекста.UTF8);
---
это тело запроса строкой в формате json.
Его сами формируете. Причем тут переменные запроса?
Как и сказал выше используйте соответствие вместо структуры.
Что-то в этом роде:

```1c
    тДанные = Новый Соответствие;
    // заполняем данные
    тДанные["index-to"] = индекс;
    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку();
    ЗаписатьJSON(Запись, тДанные);
    ВыходныеДанные = Запись.Закрыть();

    HTTPЗапрос = Новый HTTPЗапрос();
    // устаналиваем заголовки
    HTTPЗапрос.УстановитьТелоИзСтроки(ВыходныеДанные);
    Результат = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
```
---
тДанные = Новый Соответствие;
Спасибо, буду пробовать
Подскажите, как правильно оформить :

```1c
    "dimension": {
    "height": 0,
    "length": 0,
    "width": 0
    }
```
---
заменить дефис на что-нибудь
---
заменить дефис на что-нибудь Тогда получится "indexчто-нибудьto"... Тоже не сработает.
---
да, это не вариант.
---
можно так:

```1c
    тДанные["dimension"] = Новый Структура("height,length,width",0,0,0);
```
---
подскажите, а такой вариант как написать? , ключи одинаковые

```1c
    "tariffList":
    [
    {
    "id":1
    },
    {
    "id":8
    }
    ],
```
---
Массив из структур, в каждой структуре - один элемент...
---
```1c
    tariffList = Новый Массив;
    tariffList.Добавить(Новый Структура("id", 1));
    tariffList.Добавить(Новый Структура("id", 8));
    тДанные["tariffList"] = tariffList;
```
Никогда не сталкивался с подключение фискальных регистраторов к 1с8 и не совсем понимаю принцип их связи.
Вот, например, в справочнике "Драйверы оборудования" для "Фискальные регистраторы" у меня есть элемент "АртСофт: Fiscal Printer", который я аналогично могу выбрать в подключаемом оборудовании-фискальные регистраторы-создать. Но как вообще вся эта связь работает, объясните порядок связи и обмена - что нужно что бы подключить и начать выполнять операции на кассовый аппарат и получать ответы? Может ПО какое то ставить надо на ПК, что то платить за это ПО.
Спасибо большое всем тем, кто не прошел мимо :)
---
Да примерно так

Более подробней Вам расскажут сами разработчики. У них на сайте есть чат
---
АртСофт универсальный драйвер регистраторов
---
На сколько я понял, то покупается драйвер для кассового аппарата под его серию и устанавливается на рабочем месте кассира. Этот драйвер подключается к кассовому аппарату и имеет свое API, которое можно использовать, например из 1с8. В свою очередь 1с8 имеет в стандартных конфигурация готовые команды с работой по API с данным драйвером. Правильно понимаю?
---
Да примерно так

Более подробней Вам расскажут сами разработчики. У них на сайте есть чат
---
Спасибо. Есть среди драйверов "1С:Фискальный регистратор (эмулятор)". Как я понимаю, то с помощью данного драйвера я могу написать свою разработку и оттестировать ее без фактического наличия кассового аппарата?
---
Есть среди драйверов "1С:Фискальный регистратор (эмулятор)"
Не драйвер :) А обработка обслуживания.
Для того чтобы использовать обработку обслуживания нужен драйвер Эмулятор контрольно-кассовой техники
---
драйвер Эмулятор контрольно-кассовой техники
Не открывается ссылка.
Насколько я понимаю, то я установил именно драйвер, если в ссылке описано как с ним работать и для чего, то отправьте в ЛС пожалуйста.
Ещё очень интересно как, например, удалить этот драйвер. Куда он устанавливается? Не подскажете?)
Добрый день. Функция запросом получает ТЗ со списком документов. Если встать отладчиком в функции то ТЗ заполнена, но возвращает она почему то пустой список значений.

```1c
    СписокЗаказов = ВыполнитьЗапросНаСервере();
```

```1c
    &НаСервере
    Функция ВыполнитьЗапросНаСервере();

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ЗаказКлиента.Ссылка КАК Ссылка,
    | ЗаказКлиента.Дата КАК Дата,
    | ЗаказКлиента.Статус КАК Статус,
    | СостоянияЗаказовКлиентов.Заказ КАК Заказ,
    | СостоянияЗаказовКлиентов.Состояние КАК Состояние,
    | ЗаказКлиента.ДатаОтгрузки КАК ДатаОтгрузки
    |ИЗ
    | РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ЗаказКлиента
    | ПО СостоянияЗаказовКлиентов.Заказ = ЗаказКлиента.Ссылка
    |ГДЕ
    | ЗаказКлиента.Проведен = ИСТИНА
    | И СостоянияЗаказовКлиентов.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ГотовКОбеспечению)
    | И РАЗНОСТЬДАТ(&ТекДата, ЗаказКлиента.ЖелаемаяДатаОтгрузки, СЕКУНДА) >= 43200
    | И ЗаказКлиента.ЖелаемаяДатаОтгрузки <> ДАТАВРЕМЯ(1, 1, 1)
    | И ЗаказКлиента.НеОтгружатьЧастями
    |
    |УПОРЯДОЧИТЬ ПО
    | Дата";
    Запрос.УстановитьПараметр("ТекДата",ТекущаяДата());

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

    ТЗ = Запрос.Выполнить().Выгрузить();
    Возврат ТЗ;

    КонецФункции
```
---
Может СписокЗаказов это реквизит формы с типом СписокЗначений?
---
Причем этот же код работает во внешней обработке, но не работает в форме документа.
---
нельзя передать с сервера на клиент таблицу значений
---
С сервера на сервер

```1c
    &НаСервере
    Процедура ВыполнитьНаСервере()

    ///////////Получить Свободные Остатки по всей номенклатуре
    ТзОстатки = ПолучитьСвободныеОстатки();

    СписокЗаказов = ВыполнитьЗапросНаСервере();

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

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

    Если Прав(Элемент.ТекущаяОбласть.Имя,2)="C1" И Элементы.ТипОтчета.ТекстРедактирования = "Дебиторка по расходникам" Тогда
    СтандартнаяОбработка = Ложь;

    НомерДокумента = СтрРазделить(Элемент.ТекущаяОбласть.Текст," ")[2];
    СсылкаНаДок = ПолучитьСсылкуНаДокументРеализацииПоНомеру(НомерДокумента);
    ПараметрыФормы = Новый Структура("Ключ", СсылкаНаДок);
    ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта", ПараметрыФормы);

    КонецЕсли;

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

У каждой области (ячейки) есть имя (пересечение строки и колонки). ( в примере кода выше "Элемент.ТекущаяОбласть.Имя".

Возьмём для примера колонку "выручка":

1. Вам нужно зайти в отладку.
2. Узнать номер колонки "выручка".
3. Написать своё условие, открытия регистратора этой выручки, если пользователь нажмет в эту колонку.
---
1. Сделать форму отчета.

2. В форме у ТабличногоДокумента "Результат" добавить событие "Обработка расшифровки".

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

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

    Если Прав(Элемент.ТекущаяОбласть.Имя,2)="C1" И Элементы.ТипОтчета.ТекстРедактирования = "Дебиторка по расходникам" Тогда
    СтандартнаяОбработка = Ложь;

    НомерДокумента = СтрРазделить(Элемент.ТекущаяОбласть.Текст," ")[2];
    СсылкаНаДок = ПолучитьСсылкуНаДокументРеализацииПоНомеру(НомерДокумента);
    ПараметрыФормы = Новый Структура("Ключ", СсылкаНаДок);
    ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта", ПараметрыФормы);

    КонецЕсли;

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

У каждой области (ячейки) есть имя (пересечение строки и колонки). ( в примере кода выше "Элемент.ТекущаяОбласть.Имя".

Возьмём для примера колонку "выручка":

1. Вам нужно зайти в отладку.
2. Узнать номер колонки "выручка".
3. Написать своё условие, открытия регистратора этой выручки, если пользователь нажмет в эту колонку.
Вот пример в ордере отражения излишек товаров, хотя много где еще подобная проблема. Можно ли дефолтными средствами сделать этот динамический поиск в колонке "номенклатура" более умным? Сейчас ищет только по начальному вхождению строки. Хотелось бы иметь поиск по любому слову в названии номенклатуры, а также и в других полях (например по коду, артикулу и тд).
Если по умолчанию решения нет, подскажите как реализовать и куда копать в плане кода?
УТ 11, 8.3
---
Есть настройки объекта метаданных, отвечающие за это. Но чтобы не изменять типовой объект, лично я бы добавил в расширение событие модуля менеджера объекта ОбработкаПолученияДанныхВыбора, чтобы переопределять выдачу при вводе по строке.
---
Есть настройки объекта метаданных, отвечающие за это. Но чтобы не изменять типовой объект, лично я бы добавил в расширение событие модуля менеджера объекта ОбработкаПолученияДанныхВыбора, чтобы переопределять выдачу при вводе по строке.
---
спасибо!
Нужно реализовать следующий функционал в конфигурации, которая находится на поддержке, Как с помощью разширений можно оптимально сделать запрет проведения определенних документов, для пользователей. Видел где то в нете как ето делели с помощью доп. реквизитов, вожможно есть какие то лучшие варианти решения
---
ПередЗаписью()

```1c
    Если РежимЗаписи = РежимЗаписиДокумента.Проведение И РольДоступна(") Тогда
    Отказ = Истина;
    Возврат;
    КонецЕсли;
```

Благодарю за критику.
---
БСП, группы и профили доступа...
---
Если "по простому", то в расширении добавляем роль, её указываем пользователю, и в "ОбработкаПроведения()"

```1c
    Если РольДоступна(") Тогда
    Отказ = Истина;
    КонецЕсли;
```
---
И почему все пытаются хардкодные права на проведение проверить в момент самого проведения, а не ДО? До сих пор загадка...
---
ПередЗаписью()

```1c
    Если РежимЗаписи = РежимЗаписиДокумента.Проведение И РольДоступна(") Тогда
    Отказ = Истина;
    Возврат;
    КонецЕсли;
```

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