arefaste/1C_Forums huggingface dataset:
Добрый день. Просто уже взрыв мозга, помогите пож. Есть типовые правила обмена данными Ут 11 2.3.185 и Тис 7.7 9.2. Не выгружается в файл данных номенклатура с одинаковыми наименованиями из 1С 7.7 (выгружается только одна позиция из нескольких с одинаковыми наименованиями), что только уже не пробовал. В чем может проблема? Спасибо.
---
Дайте всем одинаковым позициям дополнительные цифровые индексы. Дело в том что в УТ есть опция - контроль дублей наименования. Все равно такие позиции не запишутся, а если запишите с, то ничего не сможете потом поправить.
---
Дайте всем одинаковым позициям дополнительные цифровые индексы. Дело в том что в УТ есть опция - контроль дублей наименования. Все равно такие позиции не запишутся, а если запишите с, то ничего не сможете потом поправить.
---
Спасибо, попробую.
---
Вот выгрузка с комментариями. По дубликату ("Опора для ног правая WOLF(T2)250") , как о странно выгружается, останавливается на "Конвертация объекта или получение ссылки" и сразу переходит к следующему объекту.

"Выгрузка объекта выборки: Опора для ног правая WOLF(T2)250 (Справочник)

```1c
    Конвертация объекта или получение ссылки: Опора для ног правая WOLF(T2)250 (Справочник)
    Конвертация объекта или получение ссылки: Товар (пр. ТМЦ) (Перечисление)
    Конвертация объекта или получение ссылки: РАМА И ОБВЕС (Справочник)
    Конвертация объекта или получение ссылки: Товар (пр. ТМЦ) (Перечисление)
    Конвертация объекта или получение ссылки: 18% (Перечисление)
    Конвертация объекта или получение ссылки: шт (Справочник)
```

Выгрузка объекта выборки: Опора для ног правая WOLF(T2)250 (Справочник)
Конвертация объекта или получение ссылки: Опора для ног правая WOLF(T2)250 (Справочник)

//???????????????????????????

Выгрузка объекта выборки: Опора для ног правая в сборе GTS300, GTS250 (Справочник)"
Где-то видел, что УТ умеет печатать договора по шаблонам с клиентами, но найти не могу.
---
действительно видел в управлении сервисным центром, для ут обработку нашел
---
Вариант для УТ 10.3
---
Может вы видели стороннюю разработку? В самой управлении торговлей я тоже не видел.
---
действительно видел в управлении сервисным центром, для ут обработку нашел
---
Вариант для УТ 10.3
Добрый день!
Подскажите, пожалуйста, столкнулись с расхождениями в данных у отчетов Остатки и доступность товаров и Ведомость по товарам на складах. Отчет Остатки и доступность товаров показывает в наличии по определенному товару 250 шт., зарезервировано тоже 250 шт. Хотя по факту на складе 45 шт., что и подтверждает отчет Ведомость по товарам на складах.
Не подскажите, в чем может быть проблема? Или хотя бы в какую сторону копать?
---
Вопрос решен. Была ручная корректировка регистра
---
развернуть до регистратора и сравнивать
---
не, смотреть надо...
---
регистратор у остатков? ХМ, интересно))
---
у отчета Остатки и доступность товаров нет возможности выбрать период, он всегда показывает остатки на текущую дату. Неправильно - начальный остаток, поэтому здесь по регистратору не развернуть
---
Вы загляните в сами регистры, с отбором по вашей номенклатуре.
Эти отчеты выводят данные из разных регистров.
Ведомость по товарам из "Товары на складах", а остатки и доступность из регистра "Свободные остатки". И если у Вас не много было движений по этой номенклатуре, тогда будет несложно понять, какой документ неправильное движение сделал (или сделал правильное движение, но не то, которое было нужно Вам). И тогда сможете подправить нужный Вам документ.
---
Алексей, спасибо Вам!
---
Вопрос решен. Была ручная корректировка регистра
---
Всегда пожалуйста!
---
Сообщение было скрыто модератором.
Возник вопрос по загрузке данных из табличного документа в 1С:Бухгалтерию 8.3.
Не могу разобраться с тем, какие процедуры и функции выполняются только на сервере, а какие только на клиенте. На клиенте получилось открыть файл, а обработать данные надо на сервере.

В приложении - файл для обработки в формате mxl и сама обработка.
Буду благодарна всем участникам.
---
код конечно не ахти.
Поправил только что бы работал переход с клиента на сервер. Логику не трогал...
Немного поправил получение теста из ячеек, чтоб работало.
Код по поиску в базе и создание элементов даже не смотрел. Да и подходящей базы под рукой нет.
---
код конечно не ахти.
Поправил только что бы работал переход с клиента на сервер. Логику не трогал...
Немного поправил получение теста из ячеек, чтоб работало.
Код по поиску в базе и создание элементов даже не смотрел. Да и подходящей базы под рукой нет.
---
Cпасибо за советы.
---
Oleg Space (spacecraft)! Ещё раз спасибо за исправленную обработку.

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

В своё время думала, что писать код через две точки (Справочники.Сотрудники.Родитель.код) сильно замедляет работу.
Стиль могу корректировать по мере поступления задач.

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

```1c
    НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();

    СписокВидов = ПолучитьСпосокВидовТелефонов(Контрагент);
    СписокДоступныхВидов = ПолучитьСписокВсехВидовТелефонаСправочника(СписокВидов);

    НоваяЗапись = НаборЗаписей.Добавить();
    НоваяЗапись.Объект = Контрагент;
    НоваяЗапись.Представление = Телефон;
    НоваяЗапись.CRM_НомерТелефона = Телефон;
    НоваяЗапись.CTI_НомерТелефона = Телефон;
    НоваяЗапись.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон;
    НоваяЗапись.Вид = СписокДоступныхВидов[0].Значение;

    Попытка
    НаборЗаписей.Записать();
    Исключение
    Сообщить(ОписаниеОшибки());
    КонецПопытки
```

Вылетает такая ошибка, что в файле.
Есть у кого какие соображения, что может мне помочь?
---
```1c
    ЗаписьНеработающиеПенсионеры = РегистрыСведений.НеработающиеПенсионеры.СоздатьМенеджерЗаписи();
    ЗаписьНеработающиеПенсионеры.Период = ДатаИсключения;
    ЗаписьНеработающиеПенсионеры.Организация = Данные.Организация;
    ЗаписьНеработающиеПенсионеры.Пенсионер = Данные.Пенсионер;
    ЗаписьНеработающиеПенсионеры.ЯвляетсяНеработающимПенсионером = ЛОЖЬ;
    УдалосьЗаписатьПенсионера = ИСТИНА;
    Попытка
    ЗаписьНеработающиеПенсионеры.Записать();
    Исключение
    УдалосьЗаписатьПенсионера = ЛОЖЬ;
    Сообщить("Не удалось исключить "+Данные.Пенсионер+". "+ОписаниеОшибки());
    КонецПопытки;
    Возврат УдалосьЗаписатьПенсионера;
```
---
Когда создаете набор записей, накладывайте отборы. Вы только что попытались удалить все записи из всего регистра Контактной информации. Хорошо, что это у вас не получилось.
---
мне нужно создать новую запись. Какие отборы тогда? Походу нужно через СоздатьМенеджерЗаписи();
---
```1c
    ЗаписьНеработающиеПенсионеры = РегистрыСведений.НеработающиеПенсионеры.СоздатьМенеджерЗаписи();
    ЗаписьНеработающиеПенсионеры.Период = ДатаИсключения;
    ЗаписьНеработающиеПенсионеры.Организация = Данные.Организация;
    ЗаписьНеработающиеПенсионеры.Пенсионер = Данные.Пенсионер;
    ЗаписьНеработающиеПенсионеры.ЯвляетсяНеработающимПенсионером = ЛОЖЬ;
    УдалосьЗаписатьПенсионера = ИСТИНА;
    Попытка
    ЗаписьНеработающиеПенсионеры.Записать();
    Исключение
    УдалосьЗаписатьПенсионера = ЛОЖЬ;
    Сообщить("Не удалось исключить "+Данные.Пенсионер+". "+ОписаниеОшибки());
    КонецПопытки;
    Возврат УдалосьЗаписатьПенсионера;
```
---
Столкнулся с похожей проблемой, облазил весь интернет, долго не мог найти решение. Помогли тут: http://www.pro1c-alfa.ru/ Если вдруг еще сложности возникнут, попробуйте поискать ответ там.
На форме есть реквизит поле1.

Тип "СписокЗначений"
Тип знч - хз какой поставить тот же наверное.

Вообще хочу свой создать список значений для отбора .

```1c
    СписокЗначений = Новый СписокЗначений;
    СписокЗначений.Добавить( "один");
    СписокЗначений.Добавить("два");
```

Когда я его подставляю в форму нечего не выбирается.
ЭтаФорма.поле1.ДоступныеЗначения = СписокЗначений;
---
Если надо именно программно: у элемента формы "Поле1" устанавливаем свойство "КнопкаСпискаВыбора" в значение "Да".
и назначаем такой обработчик

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

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

    ПеречитатьТаблЧастьНаСервере();

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

    &НаСервере
    Процедура ПеречитатьТаблЧастьНаСервере()

    СтруктураДляПоиска = Новый Структура;

    СтруктураДляПоиска.Вставить("КоличествоУпаковокФакт", 0);
    СтруктураДляПоиска.Вставить("КоличествоУпаковок", 0);

    МассивПустыхСтрок = Объект.Товары.НайтиСтроки(СтруктураДляПоиска);

    Для каждого Строка Из МассивПустыхСтрок Цикл
    Объект.Товары.Удалить(Строка);
    КонецЦикла;

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

Написал код, который удаляет пустые строки в пересчете товаров.

Проблема: хорошо работает в конфигурации, но не работает как внешняя обработка.
При подключении в документе пересчета появилась кнопка "заполнить", а в ней моя обработка, но теперь возникает ошибка:

{ВнешняяОбработка.Инвентаризация.Форма.Форма.Форма(16)}: Поле объекта не обнаружено (Товары)
    МассивПустыхСтрок = Объект.Товары.НайтиСтроки(СтруктураДляПоиска);

Я так понял тут Объект - это не тот объект.

Подскажите, как заменить Объект.Товары
---
А подключенная обработка открывает свою форму ?
Если да, наверно можно так:

МассивПустыхСтрок = ВладелецФормы.Объект.Товары.НайтиСтроки(СтруктураДляПоиска);
---
А подключенная обработка открывает свою форму ?
Если да, наверно можно так:

МассивПустыхСтрок = ВладелецФормы.Объект.Товары.НайтиСтроки(СтруктураДляПоиска);
---
Возникла ошибка:

{ВнешняяОбработка.Инвентаризация.Форма.Форма.Форма(16)}: Ошибка при получении значения атрибута контекста (ВладелецФормы)
    МассивПустыхСтрок = ВладелецФормы.Объект.Товары.НайтиСтроки(СтруктураДляПоиска);
по причине:
Свойство недоступно на сервере

Сделал процедуру клиентской, и всё заработало.

Огромное спасибо!
Привет всем подскажите такой момент есть обработка которая выдает сообщение при записи объектов, как можно эти сообщения писать в лог файл
---
Ну напиши простую функцию что-то типа

```1c
    Функция ВЛогфайл(имяФайлаПолное, строкаВЛог)

    // если имя файла пустое
    Если имяФайлаПолное = " или строкаВЛог = " тогда
    Возврат -1;
    КонецЕсли;

    // если указан файл без пути - назначим путь - каталог программы
    Если Найти(имяФайлаПолное, "\") = 0 тогда
    имяФайлаПолное = КаталогПрограммы() + имяФайлаПолное;
    сообщить("Лог:" + имяФайлаПолное);
    КонецЕсли;

    ТекстовыйДокумент = Новый ТекстовыйДокумент;
    кодировка = "UTF8" ;
    разделительСтрок = Символы.ВК + Символы.ПС; //Значение по умолчанию: ВК+ПС

    МассивФайлов = НайтиФайлы(имяФайлаПолное);

    // если файл еще не создан добавим строку с именем файла
    Если МассивФайлов.Количество() = 0 тогда
    ТекстовыйДокумент.ДобавитьСтроку(имяФайлаПолное);
    иначе
    // если файл с таким именем уже создан прочитаем его
    ТекстовыйДокумент.Прочитать(имяФайлаПолное,кодировка);
    КонецЕсли;

    // добавим время к строке
    строкаВЛог = "[" + ТекущаяДата() + "] " + строкаВЛог;
    // добавим строку в объект ТекстовыйДокумент
    ТекстовыйДокумент.ДобавитьСтроку(строкаВЛог);
    // закрываем ТекстовыйДокумент файл
    ТекстовыйДокумент.Записать(имяФайлаПолное,кодировка);

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

и вызывай

ВЛогфайл("C:\МойЛогФайл.txt","Это строка лога");

в гугле полно примеров разных - не ленись :)
---
В свой лог файл или в журнал событий?
---
В свой лог файл к примеру в обычный txt который на рабочем столе будет

(2)
---
Ну напиши простую функцию что-то типа

```1c
    Функция ВЛогфайл(имяФайлаПолное, строкаВЛог)

    // если имя файла пустое
    Если имяФайлаПолное = " или строкаВЛог = " тогда
    Возврат -1;
    КонецЕсли;

    // если указан файл без пути - назначим путь - каталог программы
    Если Найти(имяФайлаПолное, "\") = 0 тогда
    имяФайлаПолное = КаталогПрограммы() + имяФайлаПолное;
    сообщить("Лог:" + имяФайлаПолное);
    КонецЕсли;

    ТекстовыйДокумент = Новый ТекстовыйДокумент;
    кодировка = "UTF8" ;
    разделительСтрок = Символы.ВК + Символы.ПС; //Значение по умолчанию: ВК+ПС

    МассивФайлов = НайтиФайлы(имяФайлаПолное);

    // если файл еще не создан добавим строку с именем файла
    Если МассивФайлов.Количество() = 0 тогда
    ТекстовыйДокумент.ДобавитьСтроку(имяФайлаПолное);
    иначе
    // если файл с таким именем уже создан прочитаем его
    ТекстовыйДокумент.Прочитать(имяФайлаПолное,кодировка);
    КонецЕсли;

    // добавим время к строке
    строкаВЛог = "[" + ТекущаяДата() + "] " + строкаВЛог;
    // добавим строку в объект ТекстовыйДокумент
    ТекстовыйДокумент.ДобавитьСтроку(строкаВЛог);
    // закрываем ТекстовыйДокумент файл
    ТекстовыйДокумент.Записать(имяФайлаПолное,кодировка);

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

и вызывай

ВЛогфайл("C:\МойЛогФайл.txt","Это строка лога");

в гугле полно примеров разных - не ленись :)
---
Спасибо большое все получилось
Что-то не соображу совсем.

Я отбираю по какому нить контрагенту и мне выдается 2 строки.

догвася - Вася - 100 - пусто
догвася - Вася - пусто- 200

Почему результат в 1ну строку не слипся?

Пример запроса в низу.

```1c
    ВЫБРАТЬ
    Продажи.ДоговорКонтрагента
    Продажи.Контрагент,
    Продажи.сумма,
    "
    ИЗ
    РегистрНакопления.Продажи КАК Продажи

    ОБЪЕДИНИТЬ все

    ВЫБРАТЬ
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент,
    ",
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток
    ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
```
---
Как то так:

```1c
    ВЫБРАТЬ
    Продажи.ДоговорКонтрагента
    Продажи.Контрагент,
    Продажи.сумма,
    0 КАК СуммаВзаиморасчетовНачальныйОстаток
    ПОМЕСТИТЬ ВТ
    ИЗ
    РегистрНакопления.Продажи КАК Продажи

    ОБЪЕДИНИТЬ все

    ВЫБРАТЬ
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент,
    0 КАК сумма,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток
    ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
    ;
    ВЫБРАТЬ
    ВТ.ДоговорКонтрагента,
    ВТ.Контрагент,
    СУММА(ВТ.сумма),
    СУММА(ВТ.СуммаВзаиморасчетовНачальныйОстаток)
    ИЗ
    ВТ
    СГРУППИРОВАТЬ ПО
    ВТ.ДоговорКонтрагента,
    ВТ.Контрагент
```

Но того же самого можно добиться одним запросом с соединением.
---
Все верно, они и не должны слипаться. Чтобы их схлопнуть, нужно сгруппировать по ДоговорКонтрагента и Контрагент.
Текущий запрос поместить во временную таблицу или во вложенный запрос, а потом результат сгруппировать.
---
Система не может сложить пустую строку и число. Вместо "" укажите 0 КАК <ИмяПоля>, настройте ресурсы в схеме
---
Не получилось чет.
Указал вместо "" -> 0 результат тот же 2 строки.
---
Используйте NULL, и "слипнется" на группировке по Контрагенту или Договору с обязательным указанием Ресурсов.
---
Как то так:

```1c
    ВЫБРАТЬ
    Продажи.ДоговорКонтрагента
    Продажи.Контрагент,
    Продажи.сумма,
    0 КАК СуммаВзаиморасчетовНачальныйОстаток
    ПОМЕСТИТЬ ВТ
    ИЗ
    РегистрНакопления.Продажи КАК Продажи

    ОБЪЕДИНИТЬ все

    ВЫБРАТЬ
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент,
    0 КАК сумма,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток
    ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
    ;
    ВЫБРАТЬ
    ВТ.ДоговорКонтрагента,
    ВТ.Контрагент,
    СУММА(ВТ.сумма),
    СУММА(ВТ.СуммаВзаиморасчетовНачальныйОстаток)
    ИЗ
    ВТ
    СГРУППИРОВАТЬ ПО
    ВТ.ДоговорКонтрагента,
    ВТ.Контрагент
```

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

```1c
    "ВЫБРАТЬ
    | МЗ_Списание.Материалы.(
    | Номенклатура),
    | МЗ_Списание.Ссылка,
    |ИЗ
    | Документ.МЗ_Списание КАК МЗ_Списание
    |ГДЕ
    | МЗ_Списание.Материалы.Номенклатура В(&Ном)";
```

таким образом, чтобы исключить документы "МЗ_списание" из списка сторнированных, т.е. типа "ГДЕ МЗ_Списание.Ссылка НЕ В (ВЫБРАТЬ СторнируемыйДокумент из Документы.Сторно)".
---
```1c
    "ВЫБРАТЬ
    | МЗ_Списание.Материалы.(
    | Номенклатура),
    | МЗ_Списание.Ссылка,
    |ИЗ
    | Документ.МЗ_Списание КАК МЗ_Списание
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.Сторно КАК Сторно ПО МЗ_Списание.Ссылка = Сторно.СторнируемыйДокумент
    |ГДЕ
    | Сторно.СторнируемыйДокумент is null И МЗ_Списание.Материалы.Номенклатура В(&Ном)"
```
---
Если вы хотите исключить сторнируемые документы МЗ_Списание, то вы пишите условие правильно. Либо так написать, либо сделать соединение с таблицей сторнируемых по условию неравенства.
---
```1c
    "ВЫБРАТЬ
    | МЗ_Списание.Материалы.(
    | Номенклатура),
    | МЗ_Списание.Ссылка,
    |ИЗ
    | Документ.МЗ_Списание КАК МЗ_Списание
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.Сторно КАК Сторно ПО МЗ_Списание.Ссылка = Сторно.СторнируемыйДокумент
    |ГДЕ
    | Сторно.СторнируемыйДокумент is null И МЗ_Списание.Материалы.Номенклатура В(&Ном)"
```
---
ANNA, спасибо большое! Работает. Просто и гениально! А я со вложенными запросами ковырялся.. Тема закрыта.
Всем привет!

Кусочек кода:

```1c
    НоваяГруппа = Элементы.Добавить("Гр_"+ИмяТЗНаФорме,Тип("ГруппаФормы"),Элементы.СтраницыСписка);
    НоваяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
    НоваяГруппа.Заголовок = ИмяНаФорме;
```

При попытке исполнения тонкий клиент падает с дампом.
Что я делаю не так? Или это просто глюк?
Платформа 8.3.9.1850
---
Тему можно закрывать, решил через Элементы.Переместить()
---
используйте метод - "ИзменитьРеквизиты(<ДобавляемыеРеквизиты>, <УдаляемыеРеквизиты>)"
---
ИзменитьРеквизиты() чтобы добавить элемент?!
---
Конечно. Все действия по добавлению/удалению элементов выполняются на сервере. После этого обяз выполняется ИзменитьРеквизиты(...)
---
Вот сейчас не понял как мне группу связать с реквизитом, можно с примером?
---
Да и код в таком виде:

```1c
    НоваяГруппа = Элементы.Добавить("Гр_"+ИмяТЗНаФорме,Тип("ГруппаФормы"));
```

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

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

Из этого:
Ссылка_1 - Номенклатура_1
Ссылка_1 - Номенклатура_2
Ссылка_1 - Номенклатура_3
Ссылка_2 - Номенклатура_1
Ссылка_2 - Номенклатура_2
...

Получить это:
Ссылка_1 - Номенклатура_1
Ссылка_2 - Номенклатура_1
...

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

Если способа нет, то придется запрос разбивать.
---
"Первые" в твоем контексте не совсем однозначный термин. Но как вариант, еще таким макаром:

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

```1c
    ВЫБРАТЬ *
    ИЗ
    МояТЧ КАК ТЧ
    ГДЕ
    ТЧ.Номенклатура В (ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ <СколькоНадо> Номенклатура ИЗ МояТЧ УПОРЯДОЧИТЬ ПО <Критерий>)
```
---
```1c
    ВЫБРАТЬ
    _МаршрутныйЛистТабличнаяЧасть.Грузополучатель,
    _МаршрутныйЛистТабличнаяЧасть.РТУ
    ИЗ
    (ВЫБРАТЬ ПЕРВЫЕ 1
    _МаршрутныйЛистТабличнаяЧасть.Грузополучатель КАК Грузополучатель
    ИЗ
    Документ._МаршрутныйЛист.ТабличнаяЧасть КАК _МаршрутныйЛистТабличнаяЧасть
    ГДЕ
    _МаршрутныйЛистТабличнаяЧасть.Ссылка = &Ссылка) КАК ВложенныйЗапрос
    ЛЕВОЕ СОЕДИНЕНИЕ Документ._МаршрутныйЛист.ТабличнаяЧасть КАК _МаршрутныйЛистТабличнаяЧасть
    ПО (_МаршрутныйЛистТабличнаяЧасть.Грузополучатель = ВложенныйЗапрос.Грузополучатель)
    ГДЕ
    _МаршрутныйЛистТабличнаяЧасть.Ссылка = &Ссылка
```

Вот так у меня работает, отбирая все РТУ-шки для первого Грузополучателя в табличной части маршрутного листа.
Надеюсь допилите под себя.
---
Ага, точно. Вложенный запрос с выбором ПЕРВЫЙ и сортировкой (упорядочиванием).
Спасибо