arefaste/1C_Forums huggingface dataset:
Добрый вечер.
При переносе данных через "Перенос данных из прежних программ" в 1с 3.1 1с выдает ошибку :
Ошибка записи объекта
    ТипОбъекта = Перенос данных
    Объект = Перенос данных ОстОтп от 26.07.2017
    ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Запись с такими ключевыми полями существует! : НачальныеОстаткиОтпусков: ФИО, Основной, 31.08.2013 0:00:00, 01.09.2012 0:00:00 (Регистр сведений: Начальные остатки отпусков; Номер строки: 2)
    ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(6040)
    КодСообщения = 26
---
Остатки отпусков организаций прошлых лет там было за двоение
---
Вариантов много,как например,что у вас задвоен сотрудник( не физлицо,хотя и это не исключено),или задвоены документы приказ на отпуск,начисление отпуска.
---
Да дело в том что сотрудник отработал 4 месяца и из кадровых документов только приём и увольнение
---
Тут дело не в количестве кадровых документов,скорей всего в количестве карточек одинаковых.При этом видно,что это сотрудник который либо принят был 01.09 какого то года,либо мамочка,у которой рабочий период сдвинулся из за отпуска по уходу на рабочий период с 01.09.2012-31.08.2013,У вас ошибка говорит о том,что не может записать запись в регистр,потому что совпадают данные по ФИО,виду отпуска и рабочему периоду.Судя по всему переносите из 8.2,наверное образовательное учреждение?Тут нужно смотреть справочник сотрудники.Искать двойников.
---
Вы нашли на кого он ругается?
---
Было похожее. В базе из которой пренос делал удалил данные по этому сотруднику из регистра сведений и после переноса добавил их в 3.1
---
подскажите,пожалуйста,аналогичная ситуация,из какого регистра Вы удалили сведения?под каким наименованием?
---
Так в тексте ошибки у вас должен быть указан какой регистр.
Например:
Ошибка записи объекта
ТипОбъекта = Перенос данных
Объект = Перенос данных ОстОтп от 26.07.2017
ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Запись с такими ключевыми полями существует! : НачальныеОстаткиОтпусков: ФИО, Основной, 31.08.2013 0:00:00, 01.09.2012 0:00:00 (Регистр сведений: Начальные остатки отпусков; Номер строки: 2)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(6040)
КодСообщения = 26
---
спасибо за помощь,этот регистр пустой
---
Так а ошибка то какая? Может там другой регистр?
Или может надо очистить регистр в 2.5 ДО переноса, а потом уже руками или обработкой перенести данные только этого регистра.
---
Остатки отпусков организаций прошлых лет там было за двоение
---
проще можно через обработку при переносе
---
подскажите,пожалуйста,как это можно сделать через обработку? не получается
Дан код:

```1c
    ПередЗаписью(Отказ)

    Если ОбменДанными.Загрузка Тогда
    Возврат;
    КонецЕсли;

    Если ПометкаУдаления ИЛИ Ссылка.ПометкаУдаления Тогда
    Возврат;
    КонецЕсли;

    Заголовок = "Запись банковского счета (" + Владелец + ") " + Наименование + ", код " + Код;

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

    Если НЕ ЗначениеЗаполнено(НомерСчета) Тогда
    ОбщегоНазначения.СообщитьОбОшибке("Не указан номер счета.", Отказ, Заголовок);
    КонецЕсли;
    Если НЕ ЗначениеЗаполнено(Банк) Тогда
    ОбщегоНазначения.СообщитьОбОшибке("Не выбран банк.", Отказ, Заголовок);
    КонецЕсли;

    КонецЕсли;

    Если Не ОтдельныйСчетГОЗ Тогда
    ГосударственныйКонтракт = Справочники.ГосударственныеКонтракты.ПустаяСсылка();
    КонецЕсли;

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

Сделал справочник иерархическим, как сделать так чтоб если это группа справочника, то проверка эта не срабатывала?
---
```1c
    Если НЕ ЭтоГруппа Тогда
    //проверки
    КонецЕсли
```
---
```1c
    Если НЕ ЭтоГруппа Тогда
    //проверки
    КонецЕсли
```
---
спасибо все получилось
Открываю форму с параметрами:

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

Далее в событии ПриСоздании и ПриОткрытии могу работать с переданными параметрами.
После открытия формы и нажатия в ней на кнопку смотрю в параметры формы, а там пусто - почему?
Пытался создать параметр в форму (закладка параметры) с именем "ТипОперации" (строка), но все равно параметры пустые.
В чем может быть дело?

ИСПРАВЛЕНИЕ: в событии ПриОткрытии (Клиент) параметров уже нет.
---
Добавь реквизит с типом "СписокЗначений" и передай параметры после открытия туда
---
https://its.1c.eu/db/v836doc#bookmark:dev:TI000000399
---
Сделай лучше так

```1c
    открытаяФорма = ОткрытьФорму(....);
    Открытаяформа.Параметр1 = ...;
    ОткрытаяФорма.Параметр2=....;
```
---
В каком месте это писать, если в форму ПриСоздании и ПриОткрытии параметры заполнены и есть. Они пропадают именно после события ПриОткрытии, а точнее его завершения.
---
Да, они доступны только в момент создания формы. Если вы хотите их использовать дальше — сохраняйте их в реквизитах формы.
---
А для чего тогда нужна вкладка "Параметры" в форме? Я думал если там объявить параметр, то он будет доступен и после создания на сервере. Объясните пожалуйста, либо поделитесь доступной статьей. Буду Вам очень благодарен.
---
Добавь реквизит с типом "СписокЗначений" и передай параметры после открытия туда
---
можно попробовать сделать параметры ключевыми
доступная статья:
http://v8.1c.ru/metod/faq2/answer.jsp?id=535

---
не, сам прочитал статью - параметры не используются для работы с формой только реквизиты, ключ нужен только для поиска открытой формы
---
Это ужасный паттерн, никому так не рекомендуйте.
Добрый день. имеется COMобмен данными.
при обмене создается контрагент с данными из базы источник.
так вот после обмена в базе приёмник контрагент создается, но в списке элементов документа ссылка не появляется. если удалить документ и заного все загрузить, то т.к контрагенты уже имееются ссылки появляются.
может как то нужно возвращать ссылки?
сильно не бейте я только начинающий.
---
в конец условия добавить строку "Найти = НовыйОбъект.Ссылка;" и всё заработает, я привёл выше исправленный вариант.
---
Посмотрите порядок загрузки, возможно у Вас документ записывается раньше, чем сохраняется контрагент.
Вам сначала нужно записать контрагента,а потом уже передать ссылку в Документ и сохранить уже сам документ.
---
тка

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

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

У вас если объект не найден, и он создаётся, то всё равно пустая ссылка возвращается.
---
возврат новыйОбъект?
---
в конец условия добавить строку "Найти = НовыйОбъект.Ссылка;" и всё заработает, я привёл выше исправленный вариант.
---
все отлично, работает. спасибо
Здравствуйте!

Помогите пожалуйста с решением задачи.

Появилась необходимость изменения реквизита номенклатуры (Булево) при проведении документа установка цен номенклатуры для каждой позиции из таблицы в документе.
Менеджер вбивает новые цены в документ установка цен номенклатуры и при проведении для каждой позиции в списке обновляется значение реквизита.

Пытались сами ничего не получилось.
Спасибо!

Конфигурация УТ 11.4.3
---
Добавляешь в расширение метод ОбработкаПроведения из модуля документа и в нем пишешь:

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

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

Создал документ.
Создал роль Администрирование - нажал кнопку Установить все права и поставил галочку Устанавливать права для новых объектов.
Появляется сообщение при запуске Приложения 1С из конфигуратора: "Недостаточно прав доступа!"
Это сообщение только в Конфигураторе, если просто запустить Приложение 1С, никаких сообщений нет.

Как его побороть? (там в конфигураторе сразу два одинаковых сообщения возникает "Недостаточно прав доступа!")
---
в предприятие переходил без прав
1C Предприятие запускалось под пользователем Администратор.
А вот сама конфигурация, кажется, была без него.

Решение: закрыть конфигуратор, послед создания пользователя с правами. И снова открыть Конфигуратор.
---
А вы пользователя завели с такой ролью или по-умолчанию работаете?
---
Пользователя создал (база самописная) и указал ему роль (которую создал) Администрирование.
Кстати, сейчас я такой ошибки не наблюдаю, а вчера была.
Видимо, нужно было закрыть конфигуратор и снова открыть. (необычный способ решения для такой ошибки)
---
он даже логичный) вы перезаашли уже под этим пользователем, а до этого были под пользователем по умолчанию, который по инерции администрировать в конфигураторе мог, а в предприятие переходил без прав
---
в предприятие переходил без прав
1C Предприятие запускалось под пользователем Администратор.
А вот сама конфигурация, кажется, была без него.

Решение: закрыть конфигуратор, послед создания пользователя с правами. И снова открыть Конфигуратор.
---
Спасибо, ваш комментарий помог понять почему так решилась проблема.
На рабочем столе есть каталог, в каталоге текстовый файл. Если пытаемся получить размер файла - то это работает и всё хорошо:

```1c
    Каталог = Новый Файл("C:\Users\Александр\Desktop\33\22.txt");
    Размер = Каталог.Размер();
```

Но если мы пытаемся получить размер каталога - то не работает, выдаёт ошибка доступа к файлу, будто бы каталог не существует:

```1c
    Каталог = Новый Файл("C:\Users\Александр\Desktop\33");
    Размер = Каталог.Размер();
```

Как можно узнать размер каталога?
---
```1c
    МассивНайденныхФайлов = НайтиФайлы(
    "c:\1", // где искать
    "*.*", // маска поиска
    Истина // если Истина, то будет искать и в подкаталогах
    );
    Размер =0;
    Для Каждого Файл Из МассивНайденныхФайлов Цикл
    Если Файл.ЭтоФайл() Тогда

    Сообщить("Найден " + Файл.Размер());
    Размер = Размер + Файл.Размер();
    Иначе

    КонецЕсли;

    КонецЦикла;

    Сообщить(Размер);
```
---
```1c
    Каталог = "c:\1";
    СтрокаКоманды = "powershell -noprofile -command "ls -r|measure -s Length" > c:\1\size.txt";
    КомандаСистемы( СтрокаКоманды,Каталог);
```

Затем читаешь созданный файл "c:\1\size.txt" и берешь из него размер

Можно использовать "НайтиФайлы" и обойти каждый файл в массиве, и сложить размеры файлов, получится размер каталога

```1c
    МассивНайденныхФайлов = НайтиФайлы(
    "c:\", // где искать
    "*.txt", // маска поиска
    Ложь // если Истина, то будет искать и в подкаталогах
    );

    Для Каждого Файл Из МассивНайденныхФайлов Цикл
    Сообщить("Найден " + Файл.Размер());
    КонецЦикла;
```
---
Но если мы пытаемся получить размер каталога - то не работает, выдаёт ошибка так в 1с нет метода получения размера каталога, вот и не работает
---
```1c
    МассивНайденныхФайлов = НайтиФайлы(
    "c:\1", // где искать
    "*.*", // маска поиска
    Истина // если Истина, то будет искать и в подкаталогах
    );
    Размер =0;
    Для Каждого Файл Из МассивНайденныхФайлов Цикл
    Если Файл.ЭтоФайл() Тогда

    Сообщить("Найден " + Файл.Размер());
    Размер = Размер + Файл.Размер();
    Иначе

    КонецЕсли;

    КонецЦикла;

    Сообщить(Размер);
```
---
Спасибо! Теперь буду знать такую функцию НайтиФайлы(). Весь интернет перерыл, никто не находил решение, но у многих была такая же проблема.
---
Работа с файлами:
https://helpme1c.ru/rabota-s-fajlovoj-sistemoj-v-yazyke-1s-8-v-primerax
---
посмотри в справке есть ли размер каталога.
А так либо сторонний софт.
Либо получаешь все файлы и затем складываешь их размер, что и делает сама винда.
---
```1c
    Каталог = "С:\1";
    СтрокаКоманды = "powershell -noprofile -command "ls -r|measure -s Length" > c:\1\size.txt";
    КомандаСистемы( СтрокаКоманды,Каталог);
```

https://forum.mista.ru/topic.php?id=28230
http://qaru.site/questions/87616/get-folder-size-from-windows-command-line
Трабл такой: создаю внешнюю обработку для ЗКГУ 3.0 для добавляения и изменения своих кастомных профилей.
С добавлением проблем нет, а с редактированием беда, хотя код более, чем примитивный:
Нахожу нужный профиль

```1c
    ИзменяемыйПрофиль = Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию(Объект.НаименованиеПрофиля);
```

Перед дбавлением в него своих ролей пытаюсь очистить табличную часть ролей

```1c
    ИзменяемыйПрофиль.Роли.Очистить();
```

 Получаю ошибку, мол Ошибка при вызове метода контекста (Очистить)
 ИзменяемыйПрофиль.Роли.Очистить();
по причине:
Объект недоступен для изменения.

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

```1c
    ВЫБРАТЬ
    Документ.Ссылка КАК Документ,
    ИЗ
    Документ.Документ КАК Документ
    Где
    Документ.Проект в(&СписокПроектов)
```

Но если проекты не заполнены ничего не выводит.
Подскажите, как передать в запросе это условие?
---
```1c
    Где
    Документ.Проект в(&СписокПроектов)
    ИЛИ Документ.Проект ЕСТЬ NULL
```
---
```1c
    Где
    Документ.Проект в(&СписокПроектов)
    ИЛИ Документ.Проект ЕСТЬ NULL
```
Пожалуйста помогите решить задачу (не получается, уже долго бьюсь): нужно заполнить выражение у вычисляемого поля и его ресурса.

Задача следующая. Есть таблица данных:

колонка 1 | колонка 2
----------------------------------------
ссылка 1_1 null
ссылка 1_1 null
ссылка 1_1 ссылка 2_1
ссылка 1_1 null
ссылка 1_2 null
ссылка 1_2 null
ссылка 1_2 ссылка 2_2
ссылка 1_2 ссылка 2_3

К этому добавлена колонка с вычисляемым полем "колонка 3".

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

Для первого варианта отображения данных нужно вычислить колонку 3 следующим образом:

если колонка 2 пустая, то константа 1
если колонка 2 не пустая, то константа 2

Для второго варианта отображения данных (где группировка по первой колонке) нужно вычислить колонку 3 следующим образом:

для каждой ссылки первой колонки нужно вывести количество ссылок второй колонки соответствующих текущей записи из первой колонки.

Такой ресурс колонки 3 "расчитываемый по" первой колонке не работает (вычисляемое поле для данной колонки оставил пустым):

```1c
    выбор когда количество(Колонка2) = 0 тогда "1"
    иначе
    (
    выбор когда количество(Колонка2) > 0 тогда "2"
    конец
    )
    конец
```
---
Получилось решить тем что сделал отбор "выбор" внутри скобок количество(), потому-что там где я думал был null, null не был.
---
Получилось решить тем что сделал отбор "выбор" внутри скобок количество(), потому-что там где я думал был null, null не был.
Здравствуйте,возник вопрос.
Можно ли реализовать закрытие формы через определенное время после его открытие?
Заранее спасибо!)
---
а почитать описание и подумать? )

в процедуре ПриОткрытии():

```1c
    ПодключитьОбработчикОжидания("ЗакрытьФорму", 300, Истина)
```

потом сам обработчик:

```1c
    &НаКлиенте
    Процедура ЗакрытьФорму()
    Закрыть();
    КонецПроцедуры
```
---
можно, при открытии формы создаешь обработчик ожидания, который сработает через указанное время

```1c
    ПодключитьОбработчикОжидания(<ИмяПроцедуры>, <Интервал>, <Однократно>)
```
---
А конкретней как будет выглядеть код?
---
а почитать описание и подумать? )

в процедуре ПриОткрытии():

```1c
    ПодключитьОбработчикОжидания("ЗакрытьФорму", 300, Истина)
```

потом сам обработчик:

```1c
    &НаКлиенте
    Процедура ЗакрытьФорму()
    Закрыть();
    КонецПроцедуры
```
---
Ну вот я написал. Ошибка.

```1c
    &НаКлиенте
    Процедура ПриОткрытии(Отказ, СтандартнаяОбработка)
    // Вставить содержимое обработчика.

    ПодключитьОбработчикОжидания("ПередЗакрытием",50,Истина)
    КонецПроцедуры

    &НаКлиенте
    Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    // Вставить содержимое обработчика.
    Результат.Записать("E:\backup\images\Лист Microsoft Excel1.xlsx",ТипФайлаТабличногоДокумента.XLSX);
    Закрыть();
    КонецПроцедуры
```
---
Вот ошибка.
{Отчет.ОстаткиНашиИПоставщиков.Форма.ФормаОтчета.Форма(45)}: Ошибка при вызове метода контекста (ПодключитьОбработчикОжидания)
ПодключитьОбработчикОжидания("ПередЗакрытием",50,Истина)
по причине:
Недопустимое значение параметра (параметр номер '1')
---
ну правильно, потому что так делать нельзя, и в моем примере не так сделано.
Почитайте описание к ПодключитьОбработчикОжидания()
---
Благодарю!) Разобрался!) Заработало!)
Появилась ли возможность в одной ячейка табличного документа использовать разное форматирование для текста?
Может я упустил что-то, а то спрашивают. Или все осталось как прежде?
---
Мне, например, нужно было ярлыки с составом продукции печатать с динамическим расположением на странице и обязательным выделением некоторых слов. Делать это в HTML мне показалось не лучшим вариантом :) Через HTML сделал выделение слов пользователями в составе продукции в справочнике. А при печати "переводил" это на подчеркивание с помощью спец-символов.
---
Пример форматирования. -:)
---
оригинальный у вас подход к такому форматированию)))))) А что - как вариант!!!
---
На безрыбье и рак рыба. -:)
---
Так наверное не получиться, каждая часть текста может быть разной, а весь текст многострочный
---
А другими способами, не выходя за рамки функциональности 1С - не выйдет. Одна ячейка - один формат
---
Все как прежде.
Как-то сильно прижало и нашел среди страдальцев хитрый способ выводить подчеркивание. Выручило.
Во, нашел.
---
Таблицу в HTML выводить, как вариант. Можно ещё заморочиться и собрать xlsx-файл.
---
Мне, например, нужно было ярлыки с составом продукции печатать с динамическим расположением на странице и обязательным выделением некоторых слов. Делать это в HTML мне показалось не лучшим вариантом :) Через HTML сделал выделение слов пользователями в составе продукции в справочнике. А при печати "переводил" это на подчеркивание с помощью спец-символов.
При открытии номенклатуры выходит ошибка: преобразование значения к типу булево не может быть выполнено, код из конфигуратора в фото, конфигурация типовая.
Предполагаю что ошибка получилась при некорректном завершении работы 1с.
Вопрос: как ошибку исправить если номенклатура уже участвовала в документообороте?
---
Ошибка разрешилась простым переносом мышкой документа в одну из групп нижнего по иерархии элемента
---
Нажмите кнопку подробно, там выведется ошибка, может из неё будет более понятно в чем дело. Кстати когда ошибка выведется можно будет нырнуть в конфигуратор и пройтись отладчиком по коду и понять что же там происходит.
Мое первое предположение что не заполнен какой то из реквизитов.
---
То к чему приравнивается переменная имеет значение NULL, поэтому и ошибка.
Когда создаешь номенклатуру указать Вид Номенклатуры верхний элемент (группу) нельзя, наиболее вероятно номенклатура появилась при синхронизации, только как ее теперь изменить, ведь это реквизит формы и он существует только когда форма открыта (по моему так)
---
Увидел в справочнике номенклатура, что так же не открываются и другие номенклатуры, они отражаются когда выделена группа (фото ниже),

те виды номенклатур что появляются при нажатии на плюс в группе открываются нормально
---
Ошибка разрешилась простым переносом мышкой документа в одну из групп нижнего по иерархии элемента
Есть реквизит "ВидЗакупки". тип Справочник
Исходя из ВидаЗакупки надо сделать отбор по реквизиту "Статья" тип Справочник.

точнее открывать форму выбора с определенным отбором.
Как правильнее это сделать?
---
Сделал так, все работает.

```1c
    Отбор = Новый Структура;
    Отбор.Вставить("Наименование", СписокСтатей);
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("Отбор", Отбор);
```
---
Уточните пожалуйста, форму выбора чего? Какого-то третьего справочника?
---
форма выбора элмеентов справочника.
То есть я выбираю Вид Закупки: Ит Оборудование, потом выбираю Статью бюджета: 101. И вот тут при выборе статьи бюджета необходимо чтобы для выбора были доступны только те статьи, которые связаны с ИТ ОБОРУДОВАНИЕМ.
1. ИТ оборудование – 101, 2000, 2857, 2858
2. Прочее – 2796, 2798, 3251, 3602, 3616, 374, 646, 495
3. Мебель - 2796, 2798, 3251, 3602, 3616, 374, 646, 495, 3366
4. Спец.одежда – 247,2798, 3251, 3602, 3616
5. Расходные материалы – 102, 2753, 2859, 374, 495
6. Инструменты – 241, 246, 247, 3602, 3616, 495, 646

Вот виды закупок, и статьи.
---
по подробнее можете описать задачу?
---
в (4)
---
```1c
    Отбор = Новый Структура;
    Отбор.Вставить("ВидЗакупки",ИтОборудование);
    Отбор.Вставить("СтатьюБюджета",СтатьюБюджета);
    ОткрытьФорму("названиеФормы",,Отбор);
```

Все, форма откроется с заданными отборами. Правда имя реквизитов напиши как правильно, так как они называются в форме списка выбора.
---
Не работает.

```1c
    Отбор = новый Структура;
    Отбор.Вставить("Наименование", СписокСтатей);
    ОткрытьФорму("Справочник.СтатьиБюджета.ФормаВыбора",,Отбор);
```
---
Сделал так, все работает.

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