arefaste/1C_Forums huggingface dataset:
Осваиваю сей замечательный продукт. В целях отладки нужно ограничить объем выгружаемых данных.
Например справочник "Номенклатура", делаю произвольный алгоритм, и выгружаю 100 записей.
Теперь очередь выгрузки единиц. И собственно вопрос: как из обработчика выгрузки номенклатуры, передать список выгруженной номенклатуры в обработчик "Перед обработкой" для единиц? Чтобы в запросе выгружать не все единицы (и не просто первые 100) а именно единицы для выгруженной номенклатуры.
не могу найти как это делается(
---
получилось через глобальные Параметры.
Выгружая номенклатуру добавляю свойство Параметры.Вставить("ВыгруженнаяНоменклатура", реузльтатЗапроса.Выгрузить().ВыгрузитьКолонку"Ссылка")
ну и далее при выгрузке единиц уже делать отбор в запросе по этому массиву
---
не выгружать отдельно единицы, они сами по ссылкам выгрузятся, какие надо.
---
получилось через глобальные Параметры.
Выгружая номенклатуру добавляю свойство Параметры.Вставить("ВыгруженнаяНоменклатура", реузльтатЗапроса.Выгрузить().ВыгрузитьКолонку"Ссылка")
ну и далее при выгрузке единиц уже делать отбор в запросе по этому массиву
Как сделать посередине колонку итого по ресурсам в скд?
---
На картинке все понятно, надеюсь
---
посередине чего ?
---
спрашивается зачем? Вы ходите увидеть итог по определенным колонкам?
---
На картинке все понятно, надеюсь
---
Нет, не понятно.
---
можете показать как есть и как надо?
---
Переместить итог не в конце ресурсов, а в начале
---
Вам в (5) дали точный отчет
ПРочитайте все строчки и вы найдете "Расположение итогов по горизонтали", укажите начало или конец, и получите нужный вариант.
---
Можно так:
Добрый день! Прошу совета в следующем вопросе. Групповой обработкой программно создаю документы (Д.Приемник) с заполнением реквизитов из другого вида документов (Д.Источник). Так же имеется справочник Сканы с загруженными сканами, у которого реквизит Основание ссылается на какой-либо из докуметов. Нужно при создании Д.Приемник перезаписывать ссылку в реквизите элемента справочника Сканы с Д.Источник на Д.Приемник

Код создания новых документов:

```1c
    &НаСервере
    Процедура СоздатьПриемникНаСервере()

    Для Каждого СтрТЧ ИЗ ЭтотОбъект.Документы Цикл
    НовДок = Документы.Приемник.СоздатьДокумент();
    НовДок.Автор = СтрТЧ.Источник .Автор;
    НовДок.Дата = СтрТЧ.Источник .Дата;
    // и т.д. для кучи реквизитов
    НовДок.Записать(РежимЗаписиДокумента.Проведение);
    Сообщить(НовДок.Ссылка)

    КонецЦикла;

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

Код запроса для получения:

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

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Источник .Ссылка КАК Источник ,
    | ВложенныйЗапрос.Скан КАК Скан
    |ИЗ
    | Документ.Источник КАК Источник
    | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    | Сканы .Ссылка КАК Скан,
    | Сканы .ДокСсылка КАК ДокСсылка
    | ИЗ
    | Справочник.Сканы КАК Сканы
    | ГДЕ
    | Сканы .ПометкаУдаления = ЛОЖЬ) КАК ВложенныйЗапрос
    | ПО Источник .Ссылка = ВложенныйЗапрос.ДокСсылка
    |ГДЕ
    | Источник .ПометкаУдаления = ЛОЖЬ
    | И Источник .Проведен = ИСТИНА;

    ЭтотОбъект.Документы.Очистить();
    ЭтотОбъект.Документы.Загрузить(Запрос.Выполнить().Выгрузить());

    КонецПроцедуры
```
---
попробуйте так

```1c
    &НаСервере
    Процедура СоздатьПриемникНаСервере()

    Для Каждого СтрТЧ ИЗ ЭтотОбъект.Документы Цикл
    НовДок = Документы.Приемник.СоздатьДокумент();
    НовДок.Автор = СтрТЧ.Источник .Автор;
    НовДок.Дата = СтрТЧ.Источник .Дата;
    // и т.д. для кучи реквизитов
    НовДок.Записать(РежимЗаписиДокумента.Проведение);
    Сообщить(НовДок.Ссылка);

    //изменяем Скан
    обСкан = СтрТЧ.Скан.ПолучитьОбъект();
    обСкан.ДокСсылка = НовДок.Ссылка;
    обСкан.Записать();

    КонецЦикла;

    КонецПроцедуры
```
---
Спасибо! Отлично работает
---
попробуйте так

```1c
    &НаСервере
    Процедура СоздатьПриемникНаСервере()

    Для Каждого СтрТЧ ИЗ ЭтотОбъект.Документы Цикл
    НовДок = Документы.Приемник.СоздатьДокумент();
    НовДок.Автор = СтрТЧ.Источник .Автор;
    НовДок.Дата = СтрТЧ.Источник .Дата;
    // и т.д. для кучи реквизитов
    НовДок.Записать(РежимЗаписиДокумента.Проведение);
    Сообщить(НовДок.Ссылка);

    //изменяем Скан
    обСкан = СтрТЧ.Скан.ПолучитьОбъект();
    обСкан.ДокСсылка = НовДок.Ссылка;
    обСкан.Записать();

    КонецЦикла;

    КонецПроцедуры
```
---
Спасибо! Отлично работает
Добрый день, уважаемые специалисты 1с.
Есть вопрос по 1с 8.3 управляемая форма:

Необходимо вывести на печать товарную Налоговую Накладную (НН) из макета.
НН выходит, всё замечательно, но, согласно законодательству страны, где я обитаю, в НН строго регламентировано количество строк (для горизонтальной НН - 12 строк, для вертикальной НН - 30 строк). Только так и никак иначе.
Если заполнено всего 3, то остальные 9 (или 27) строк должны выйти на печать пустыми незаполненными.
Если предполагается больше чем 12 (или 30) заполненных строк, то они должны выводиться на дополнительное приложение.
Я реализовал эту задачу добавлением вручную недостающих строк (на рисунке красной стрелкой), но это не комильфо.
И, вот, как реализовать, чтобы программа сама высчитывала количество оставшихся строк, которые необходимо вывести пустыми?... Большая проблема.
Даже не знаю, какую дополнительную информацию предоставить, картинки, процедуры...
Подскажите, пожалуйста
---
обычно в момент печати табличной части есть цикл, в котором выводятся на печать строки...
(точнее, добавляются в конец Табличного Документа)

и вот, надо считать эти строки.... при попытке вывести 13ую, что-то делать (напр. выводить шапку приложения)

а после печати всех строк, делать так:

```1c
    Пока КоличествоСтрок<12 Цикл
    КоличествоСтрок=КоличествоСтрок+1;
    //Вывести пустую строку
    КонецЦикла;
```
---
если я правильно понимаю, то надо редактировать не форму для ввода документа, а процедуру формирующую печатный документ.
---
Думаю да...
Я ещё вот что подумал, а если вывести количество строк в каждой табличной части, сложить их и от 12-ти отнять это общее количество?... Чем не решение?
---
Чем не решение?Решение чего?

Задача то какая? если задача найти количество пустых строк, то наверно да....

но тогда это задача подготовительной группы детского сада, а не форума разработчиков 1С, из разряда:
"У Пети было 5 яблок и 7 груш, половину он отдал Кате, сколько осталось фруктов".
---
обычно в момент печати табличной части есть цикл, в котором выводятся на печать строки...
(точнее, добавляются в конец Табличного Документа)

и вот, надо считать эти строки.... при попытке вывести 13ую, что-то делать (напр. выводить шапку приложения)

а после печати всех строк, делать так:

```1c
    Пока КоличествоСтрок<12 Цикл
    КоличествоСтрок=КоличествоСтрок+1;
    //Вывести пустую строку
    КонецЦикла;
```
---
(5) [Сейчас попробую...
---
Нет, здесь мои знания заканчиваются...
     Тут только teamviewer может решить задачу...
Нужно добавить предопределенному элементу справочника видимость, в зависимости от значения общего реквизита или константы. Как это правильно сделать?
---
```1c
    &НаСервереБезКонтекста
    Функция ПолучитьЗначениеКонстанты()

    Возврат Константы.СкрыватьПредопределенное.Получить();

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

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)

    СкрыватьПредопределенное=ПолучитьЗначениеКонстанты();

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

    Возврат Константы.СкрыватьПредопределенное.Получить();

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

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)

    СкрыватьПредопределенное=ПолучитьЗначениеКонстанты();

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

Я написал такой код:

```1c
    Если
    Объект.ПунктПогрузки <> Неопределено Тогда
    Область.Параметры.ПунктПогрузки = Объект.ПунктПогрузки; Иначе
    Область.Параметры.ПунктПогрузки = СерверныеМеханизмы.ПолучитьАдресОрганизации();
    КонецЕсли;
```

Но, выводится на печать информация, которая берётся из серверных механизмов...
Подскажете?... :)
---
Вместо

```1c
    Если Объект.ПунктПогрузки <> Неопределено Тогда
```

Сделайте

```1c
    Если ЗначениеЗаполнено(Объект.ПунктПогрузки) Тогда
```

И, судя по информации от вас, Объект.ПунктПогрузки имеет составной тип данных и всегда равно Неопределено.
---
Если Объект.ПунктПогрузки <> Справочники.ОбъектыПогрузки.ПустаяСсылка() Тогда
Или
Если ЗначениеЗаполнено(Объект.ПунктПогрузки) Тогда

В реквизите никогда не будет Неопределено, так как объекты погрузки скорее всего типизированы. Если бы был составной тип, то другое дело
---
Вместо

```1c
    Если Объект.ПунктПогрузки <> Неопределено Тогда
```

Сделайте

```1c
    Если ЗначениеЗаполнено(Объект.ПунктПогрузки) Тогда
```

И, судя по информации от вас, Объект.ПунктПогрузки имеет составной тип данных и всегда равно Неопределено.
---
Всё получилось!
Спасибо!
---
Значит выясняйте, почему у вас Объект.ПунктПогрузки = Неопределено или = какому-то пустому значению
---
Если Объект.ПунктПогрузки <> Справочники.ОбъектыПогрузки.ПустаяСсылка() Тогда
Или
Если ЗначениеЗаполнено(Объект.ПунктПогрузки) Тогда

В реквизите никогда не будет Неопределено, так как объекты погрузки скорее всего типизированы. Если бы был составной тип, то другое дело
---
Всё получилось!
Благодарю!
Можно ли в УФ такси в форме списка вывести в одной колонке одно поле под другим? Как, например, в журнале регистрации. Или только на ОФ так можно?
---
Например, так:
---
Конечно. Жмем ИЗМЕНИТЬ ФОРМУ, и понеслось....
---
Можно, смотри группу колонок.
---
Например, так:
Здравствуйте.

Имеется самописная конфигурация, версия 8.3.18.1128.

Итак:
Имеется один населенный пункт, N торговых точек, M номенклатуры.
В каждой торговой точке у номенклатуры своя цена.
В обработке подается список номенклатуры, требуется выдать список торговых точек, что бы сумма покупки была минимальной (т.е. мы готовы обойти несколько ТТ, что бы каждую номенклатуру купить по минимальной цене).
Так же в конфигурации будет отчет, который должен показывать изменение цены номенклатуры в определенной ТТ, списка номенклатуры (списки хранятся в отдельном справочнике) и средней цены номенклатуры по всем ТТ с течением времени.

Каждый день в определенное время на e-mail приходит рассылка с списком номенклатуры и ценой на нее в каждой торговой точке (номенклатура/ТТ/цена если смотреть по столбикам).
С помощью Mozilla Thunderbird и расширения под него автоматически скачиваю вложения из письма, регламентным заданием читаю файл, готовлюсь записывать данные в справочники и вот тут у меня вопросы:

1) Как мне организовать связь "ТТ - Номенклатура - ЦенаНаНоменклатуруВОпределеннойТТ" в конфигурации?

Вот у меня справочник "Торговые точки" (название ТТ/адрес/id/координаты), вот у меня справочник "Номенклатура" (Название/СредняяЦенаВГороде), каким образом мне записать в каждую торговую точку всю номенклатуру с ее ценой?

Сделать для справочника "Торговые точки" табличную часть "ЦеныНоменклатуры" с реквизитами "Номенклатура" и "Цена" или зеркально для справочника "Номенклатура" делать табличную часть "ЦеныВТорговыхТочках" с реквизитами "ТорговаяТочка" и "Цена"?
Или вместо табличной части тупо создать справочник с реквизитами Номенклатура/ТТ/Цена и писать все туда?

2) Исходя из п.1. мне, в худшем случае, придется каждый день переписывать M x N записей в справочниках + столько же записей добавлять в регистр сведений "ЦеныНоменклатурыВТорговыхТочках" для отчета.
Не сильно ли это загрузит конфигурацию, как повлияет на размер базы (я не хочу, что бы каждый месяц база увеличивалась на 500+мб)?
---
Создаете новое измерение "Торговая точка" в регистре Цены номенклатуры
---
Прошу прощения, почему-то сам вопрос не отображается.
---
Создаете новое измерение "Торговая точка" в регистре Цены номенклатуры
---
Т.е. вы предлагаете не плодить табличные части или еще лишний справочник, а сразу все писать в регистр?
А если я потом захочу посмотреть актуальную цену на номенклатуру по всем торговым точкам, мне же вроде как это будет удобнее сделать в справочнике или я ошибаюсь?
---
Создаете РС с измерениями Номенклатура и Торговая точка и ресурсом Цена. Какие справочники? Почитайте литературу по регистрам сведений
---
Актуальные цены получаются элементарно запросом

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

Элементы.Количество.ТекстПодвала = ВсегоКоличество;
---
Попробуйте организовать текст подвала не так, а иным способом:
В случае с таблицей значений положите на форму реквизит куда вы будете класть данные подвала.
А в самом элементе таблицы укажите путь к данным подвала. Тогда все будет отображаться само и подвал не нужно будет назначать программно. В случае если это динамический список то там должны при выборе пути к подвалу быть агрегатные функции в самой таблице которые возможно вам пригодятся чтобы сформировать необходимый вам подвал. Если нет поступайте по аналогии с ТЗ.
---
Спасибо, так заработало, вот только хотелось бы с минимальными телодвижениями это делать.
---
Ну а как меняете? Типа ТЗ = таблица.Выгрузить(); ТЗ[Х].Количество = У;Таблица.Загрузить( ТЗ ); ?
---
Просто событие ПриИзменении
---
```1c
    Текстрока = Элементы.ТЧ.ТекущеиДанные();
    Текстрока.Сумма = Текстрока.Количество * ТекСтрока.Цена;
```
---
попробуйте добавить

```1c
    ТекущийЭлемент =Элемент;
```
---
Не работает
---
```1c
    СтрокаТаблицы = Объект.ТабличнаяЧасть.НайтиПоИдентификатору(Элементы.ТЧ.ТекущаяСтрока);
    СтрокаТаблицы.Сумма = СтрокаТаблицы.Цена * СтрокаТаблицы.Количество;
```

Но вообще не должно быть проблем и в иных случаях.

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

{Документ.ЗаказНаряд.Форма.ФормаДокумента.Форма(1044)}: Значение не является значением объектного типа (Значение)
 Если ВыбранноеЗначение.Значение = "Заказ-Наряд" Тогда

Помогите решить задачу, не могу сообразить почему она так со мной...

```1c
    //Выпадающий список кнопки "Печать"
    &НаКлиенте
    Процедура Печать(Команда)

    СписокВыбора = Новый СписокЗначений;
    СписокВыбора.Добавить("Заказ-Наряд");
    СписокВыбора.Добавить("Заявка на Ремонт");
    СписокВыбора.Добавить("Накладная Горизонтально");
    СписокВыбора.Добавить("Накладная Вертикально");
    СписокВыбора.Добавить("Акт");
    СписокВыбора.Добавить("Счёт на Оплату");

    ВыбранноеЗначение = ВыбратьИзСписка(СписокВыбора, Элементы,0);

    Если ВыбранноеЗначение.Значение = "Заказ-Наряд" Тогда
    ПечатьЗаказНаряд (Команда);ИначеЕсли
    ВыбранноеЗначение.Значение = "Заявка на Ремонт" Тогда
    ПечатьЗаявкаНаРемонт(Команда);ИначеЕсли
    ВыбранноеЗначение.Значение = "Накладная Горизонтально" Тогда
    ПечатьНакладнаяГор (Команда);ИначеЕсли
    ВыбранноеЗначение.Значение = "Накладная Вертикально" Тогда
    ПечатьНакладнаяВерт (Команда);ИначеЕсли
    ВыбранноеЗначение.Значение = "Акт" Тогда
    ПечатьАкт (Команда);ИначеЕсли
    ВыбранноеЗначение.Значение = "Счёт на Оплату" Тогда
    ПечатьСчетНаОплату (Команда);
    КонецЕсли;

    КонецПроцедуры
```
---
Нужно добавить после "ВыбратьИзСписка":

Если ВыбранноеЗначение=Неопределено Тогда
    Возврат;
КонецЕсли;
---
Перед строкой

```1c
    Если ВыбранноеЗначение.Значение = "Заказ-Наряд" Тогда
```

добавить
```1c
    Если ВыбранноеЗначение <> Неопределено Тогда
```
---
Благодарствую!
Всё получилось!
---
Нужно добавить после "ВыбратьИзСписка":

Если ВыбранноеЗначение=Неопределено Тогда
    Возврат;
КонецЕсли;
---
Благодарствую!
Всё получилось!
---
Перед строкой

```1c
    Если ВыбранноеЗначение.Значение = "Заказ-Наряд" Тогда
```

добавить
```1c
    Если ВыбранноеЗначение <> Неопределено Тогда
```
---
Благодарю.
Только работает со знаком равенства.
Ребят подскажите пожалуйста с вопросом! есть процедура в конце которой нужно сделать поле на форме активным(поставить курсор ввода)
 Элемент расположен на форме("ШКНом" тип:строка)
Форма:обычная

```1c
    Процедура ШКУчОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)

    //////что то там

    ТекущийЭлемент = ЭлементыФормы.ШКНом;

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

пробовал такой вариант,он работает но вначале ругается "Введены некорректные данные,отменить ввод ?Да/НЕт"
подскажите что не так?
---
А зачем вы цепляете процедуру в обработчик события ОкончаниеВводаТекста? Может все таки в обработчик ПриИзменении?
---
так, не?

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