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

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

 //Таблица=ТабличноеПоле.ВыгрузитьКолонку("Номер");
 //ТТ=ТабличноеПоле.ВыгрузитьКолонку("НаКакогоАгентаИзменить");

Для Каждого СтрокаТЗ из ТабличноеПолецикл
ДокументССылка=Документы.ЗаказПокупателя.НайтиПоНомеру(СокрЛП(СтрокаТЗ.Номер),Дата('2019-06-15'));
Если Не ДокументССылка.Пустая() Тогда
ДокументОбъект=ДокументССылка.ПолучитьОбъект();
ДокументОбъект.ТорговыйПредставитель=Справочники.ТорговыеПредставители.НайтиПоНаименованию(СокрЛП(СтрокаТЗ.НаКакогоАгентаИзменить),Истина);
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
Попытка
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки
КонецЕсли;
КонецЦикла;
  КонецПроцедуры
---
```1c
    ДокументОбъект=СсылкаНаДокумент.ПолучитьОбъект();
    ДокументОбъект.НужныйРеквизит=НужноеЗначениеДляНужногоРеквизита;
    ДокументОбъект.записать(РежимЗаписиДокумента.Проведение);
```
---
Как получить те накладные, которые в фале excel есть?Нужно взять запросом документы и сравнить с таблицей значений в обработке?
Если да,то как сравнить? Я пытаюсь сравнить так, но выдает , что совпадений не найдено
---
вот так пытаюсь:

```1c
    Таблица=ТабличноеПоле.ВыгрузитьКолонку("Накладная");
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
    | РеализацияТоваровУслуг.Номер
    |ИЗ
    | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    | РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания";
    Запрос.УстановитьПараметр("ДатаНачала",'20190701230156');
    Запрос.УстановитьПараметр("ДатаОкончания",ТекущаяДата());
    Выборка=Запрос.Выполнить().Выгрузить();
    Выбор=Выборка.ВыгрузитьКолонку("Номер");
    Для Каждого Строка Из Выбор Цикл
    Если Строка=Таблица Тогда
    Сообщить("равно");
    Иначе
    Сообщить("Не равно");
    КонецЕсли;
    КонецЦикла;
```
---
Если Строка=Таблица Тогда - надо сравнивать с ОДНИМ элементом из Таблица
---
можете привести пример?
---
А не проще ли тогда будет сделать запрос
запрос1 - виртуальная таблица с выборкой из ТЗ
запрос2 - выборка доков из базы
запрос3 - выборка из первых двух запросов с соединением по номеру?
Такой вариант куда эффективнее с точки зрения производительности.
---
```1c
    Для Каждого СтрокаТЗ из Таблица цикл
    ДокументССылка=Документы.ЗаказПокупателя.НайтиПоНомеру(СокрЛП(СтрокаТЗ),Дата('2019-06-15'));
    Если ДокументССылка<> " Тогда
    ДокументОбъект=Документы.ЗаказПокупателя.ПолучитьОбъект();
    ДокументОбъект.ТорговыйПредставитель=ТТ;
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    КонецЕсли;
    КонецЦикла;
```

выдает ошибку:
{ВнешняяОбработка.ЧтениеИзExcelВТабличныйДокумент.Форма.Форма.Форма(65)}: Метод объекта не обнаружен (ПолучитьОбъект)
ДокументОбъект=Документы.ЗаказПокупателя.ПолучитьОбъект();
---
```1c
    Для Каждого СтрокаТЗ из ТЗ цикл
    ДокументССылка=Документы.РеализацияТоваровУслуг.НайтиПоНомеру(СтрокаТЗ.Номер);
    Конеццикла
```
---
{ВнешняяОбработка.ЧтениеИзExcelВТабличныйДокумент.Форма.Форма.Форма(56)}: Значение не является значением объектного типа (Номер)
      ДокументССылка=Документы.РеализацияТоваровУслуг.НайтиПоНомеру(СтрокаТЗ.Номер);
---
Ну блин я тебе не точный код написал, ты подгоняй его под своё решение
---
Для Каждого СтрокаТЗ из ТабличноеПоле цикл
      ДокументССылка=Документы.РеализацияТоваровУслуг.НайтиПоНомеру(СтрокаТЗ.Номер);
КонецЦикла;
сделал так, но ничего не происходит
---
отладчиком пройдись, и ты вообще уверен что номера из Экселя совпадают с номерами документов?
---
они должны совпадать.Первые 10 проверил, совпадают
---
Значит иди в отладчик и смотри находит ли у тебя документ по номеру или нет. Если находит то добавляй те строчки что я написал в первом сообщении.
---
Документ ссылку нужно проверить?
---
судя по скрину тебе вернулась ПустаяСсылка, значит по номеру что в СтрокаТЗ.Номер ничего не нашлось.
---
в базе эти номера есть.В чем может быть причина?
---
ДокументССылка=Документы.РеализацияТоваровУслуг.НайтиПоНомеру(СокрЛП(СтрокаТЗ.Номер))

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

так тоже ничего не происходит
---
Номер не периодический? Латинские/русские символы не затесались? Попробуйте добавь второй параметр в НайтиПоНомеру. Если не получается, давайте пруф на наличие таких доков, иначе мистика.
---
периодический номер документа?такие бывают?)
---
стоит в пределах года
---
ничего не происходит

```1c
    Таблица=ТабличноеПоле.ВыгрузитьКолонку("Накладная");
    Для Каждого СтрокаТЗ из Таблица цикл
    ДокументССылка=Документы.ЗаказПокупателя.НайтиПоНомеру(СтрокаТЗ,Дата ('2019-06-15'));
    Сообщить(ДокументССылка);
    КонецЦикла;
```
---
кинь скрин с документом где есть такой номер как на предыдущем скрине.
---
получилось сделать, спасибо
---
допустим в нескольких номерах есть русские символы, но остальные должны же находится
---
Мне отсюда не видно, в нескольких или во всех. В таком варианте НайтиПоНомеру гарантированно работает, что-то с данными у вас.
Либо запускаете не этот код.
---
```1c
    Таблица=ТабличноеПоле.ВыгрузитьКолонку("Накладная");
    Для Каждого СтрокаТЗ из Таблица цикл
    ДокументССылка=Документы.ЗаказПокупателя.НайтиПоНомеру(СтрокаТЗ,Дата('2019-06-15'));
    Сообщить(ДокументССылка);
    КонецЦикла;
```

 так не получается почему-то
---
А тип документа точно тот? А то в начале темы были реализации, теперь заказы
---
просто и в реализациях и заказах тоже нужно, решил проверить , может в заказ будет работать.Такой же резульат
---
у СтрокаТЗ тип строка. Так должно быть?
---
А номер какой тип?
---
как посмотреть? в реквизитах документа нету номера, в конфигурации
---
Тип номера на той же закладке, что я давала в (25)
---
строка
---
У меня последнее предположение, что у вас там в конце не пробелы, покажите СокрЛП(СтрокаТЗ)
И пруфы, что вручную документы находятся.
---
сделал так

```1c
    Таблица=ТабличноеПоле.ВыгрузитьКолонку("Накладная");
    Для Каждого СтрокаТЗ из Таблица цикл
    СтрокаТЗ=СокрЛП(СтрокаТЗ);
    ДокументССылка=Документы.ЗаказПокупателя.НайтиПоНомеру(СтрокаТЗ,Дата('2019-06-15'));
    Сообщить(ДокументССылка);
    КонецЦикла;
```

такой же результат
---
Менять итератор внутри цикла - плохая идея. И я просила показать значение, а не код.
---
СокрЛП(СтрокаТЗ)
---
так?

```1c
    Таблица=ТабличноеПоле.ВыгрузитьКолонку("Накладная");
    СтрокаТЗ=СокрЛП(СтрокаТЗ);
    Для Каждого СтрокаТЗ из Таблица цикл
    ДокументССылка=Документы.ЗаказПокупателя.НайтиПоНомеру(СтрокаТЗ,Дата('2019-06-15'));
    Сообщить(ДокументССылка);
    КонецЦикла;
```
---
Блин. Значение из табло покажите СокрЛП(СтрокаТЗ)
---
пробел возвращается
---
Дату проверяйте, проверяйте, что ищите точно по номеру, а не по какому-то другому реквизиту.
---
я копирую и из экселя номер и ищу в базе 1с. И находит эти номера, но они не по порядку идут.Порядок не важен,да?Не понимаю почему не находит
---
Нет, не важен.
---
На скрине номер хранится в СтрокаТЗ, в коде (11) поиск по СтрокаТЗ.Номер. Вы путаетесь в показаниях, как вам помогать-то?
---
Блин, мне бы такую внимательность)
---
я так делаю:

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

```1c
    Таблица=ТабличноеПоле.ВыгрузитьКолонку("Накладная");
    Для Каждого СтрокаТЗ из Таблица цикл
    ДокументССылка=Документы.ЗаказПокупателя.НайтиПоНомеру(СокрЛП(СтрокаТЗ),Дата('2019-06-15'));
    Сообщить(ДокументССылка);
    КонецЦикла;
```
---
Код рабочий, данные вы не предоставляете, как помочь - я не знаю.
---
обработку скинуть?
---
в (51) картинка - код рабочий. Проверяйте данные.

Дату проверяйте, проверяйте, что ищите точно по номеру, а не по какому-то другому реквизиту.
---
ничего не происходит снова
---
А вас реализации точно в этом году?
---
да наичная с 26.06.2019 и заканчивается 26.07.2019
---
табло показывает, что у СтрокаТЗ все равно пробел в конце
---
Конечно у строкаТЗ пробелы будут, у СокрЛП(СтрокаТЗ) не будет
---
то есть , если использовать ваш код,то можно не беспокоиться , что дело в пробелах?
---
Пришлите картинку документа с номером
---
получилось)
---
Так вы ищите заказ по номеру накладной, у вас номер заказа это другая колонка

```1c
    Таблица=ТабличноеПоле.ВыгрузитьКолонку("Номер");
    Для Каждого СтрокаТЗ из Таблица цикл
    ДокументССылка=Документы.ЗаказПокупателя.НайтиПоНомеру(СокрЛП(СтрокаТЗ),Дата('2019-06-15'));
    Сообщить(ДокументССылка);
    КонецЦикла;
```
---
что не так делаю?

```1c
    Для Каждого СтрокаТЗ из Таблица цикл
    ДокументССылка=Документы.ЗаказПокупателя.НайтиПоНомеру(СокрЛП(СтрокаТЗ),Дата('2019-06-15'));
    Если ДокументССылка<> " Тогда
    ДокументОбъект=Документы.ЗаказПокупателя.ПолучитьОбъект();
    ДокументОбъект.ТорговыйПредставитель=ТТ;
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    КонецЕсли;
    КонецЦикла;
```

выдает ошибку:
{ВнешняяОбработка.ЧтениеИзExcelВТабличныйДокумент.Форма.Форма.Форма(65)}: Метод объекта не обнаружен (ПолучитьОбъект)
ДокументОбъект=Документы.ЗаказПокупателя.ПолучитьОбъект();

метода получить объект нету. как можно получить объект?
---
ДокументОбъект = ДокументССылка.ПолучитьОбъект();
---
спасибо.1с пишет, что невозможно провести документ

{ВнешняяОбработка.ЧтениеИзExcelВТабличныйДокумент.Форма.Форма.Форма(67)}: Ошибка при вызове метода контекста (Записать)
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
по причине:
Не удалось провести "Заказ покупателя А0000022172 от 28.06.2019 11:29:16"!
Как сделать так, чтобы остальные документы сразу пытался провести, а не останавливался?
---
```1c
    Попытка
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    Исключение
    КонецПопытки
```
---
спасибо
---
Нужно так написать
Если Не ДокументССылка.Пустая() Тогда
---
сделал так:

```1c
    Таблица=ТабличноеПоле.ВыгрузитьКолонку("Номер");
    ТТ=ТабличноеПоле.ВыгрузитьКолонку("НаКакогоАгентаИзменить");

    Для Каждого СтрокаТЗ из Таблица Цикл
    ДокументССылка=Документы.ЗаказПокупателя.НайтиПоНомеру(СокрЛП(СтрокаТЗ),Дата('2019-06-15'));
    Если Не ДокументССылка.Пустая() Тогда
    ДокументОбъект=ДокументССылка.ПолучитьОбъект().ТорговыйПредставитель;
    ДокументОбъект.ТорговыйПредставитель=ТТ;
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    КонецЕсли;
    КонецЦикла
```

но теперь не удается записать документ

выдает ошибку:
{ВнешняяОбработка.ЧтениеИзExcelВТабличныйДокумент.Форма.Форма.Форма(67)}: Метод объекта не обнаружен (Записать)
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
---
```1c
    Для Каждого СтрокаТЗ из Таблица цикл
    ДокументССылка=Документы.ЗаказПокупателя.НайтиПоНомеру(СокрЛП(СтрокаТЗ),Дата('2019-06-15'));
    Если Не ДокументССылка.Пустая() Тогда
    ДокументОбъект=ДокументССылка.ПолучитьОбъект();
    ДокументОбъект.ТорговыйПредставитель=ТТ;
    ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
    Попытка
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    Исключение
    Сообщить(ОписаниеОшибки());
    КонецПопытки
    КонецЕсли;
    КонецЦикла
```
---
поля "Торговый представитель" после этого кода стали пустыми из-за того,что у реквизита документа "торговый представитель" тип значения -справочник физические лица и там нету торговых представителей на которых хочу заменить?
---
не из-за того что нету их в справочнике.Они есть, но все равно на пустые значения почему-то меняет
---
наверное из-за того, что у реквизита документа торговый представитель тип справочники.физические лица, а я хочу изменить на строку. Поэтому на пустое значение меняет?
---
Можно полный код обработки
---
```1c
    Таблица=ТабличноеПоле.ВыгрузитьКолонку("Номер");
    ТТ=ТабличноеПоле.ВыгрузитьКолонку("НаКакогоАгентаИзменить");

    Для Каждого СтрокаТЗ из Таблица цикл
    ДокументССылка=Документы.ЗаказПокупателя.НайтиПоНомеру(СокрЛП(СтрокаТЗ),Дата('2019-06-15'));
    Если Не ДокументССылка.Пустая() Тогда
    ДокументОбъект=ДокументССылка.ПолучитьОбъект();
    ДокументОбъект.ТорговыйПредставитель=ТТ;
    ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
    Попытка
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    Исключение
    Сообщить(ОписаниеОшибки());
    КонецПопытки
    КонецЕсли;
    КонецЦикла;
```
---
вот полный, но навряд ли первая процедура мешает чем-то:

```1c
    Процедура ФайлНачалоВыбора(Элемент, СтандартнаяОбработка)

    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "Выбор файла";
    Диалог.МножественныйВыбор = Ложь;
    Диалог.Фильтр = "Книга excel (*.xls*)|*.xls*";
    Диалог.ПолноеИмяФайла = Файл;

    Если Диалог.Выбрать() Тогда

    Файл = Диалог.ПолноеИмяФайла;

    //Вывод в табличный документ
    ЭлементыФормы.ПолеТабличногоДокумента.Очистить();

    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.Прочитать(Файл, СпособЧтенияЗначенийТабличногоДокумента.Значение);
    ЭлементыФормы.ПолеТабличногоДокумента.Вывести(ТабличныйДокумент);

    //вывод в таблицу значений
    ТабличноеПоле.Очистить();

    ПЗ = Новый ПостроительЗапроса;
    ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());//передаем ТЗ
    ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
    ПЗ.ЗаполнитьНастройки();
    ПЗ.Выполнить();

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

    КонецЕсли;

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

    Процедура ИзменитьТТНажатие(Элемент)

    Таблица=ТабличноеПоле.ВыгрузитьКолонку("Номер");
    ТТ=ТабличноеПоле.ВыгрузитьКолонку("НаКакогоАгентаИзменить");

    Для Каждого СтрокаТЗ из Таблица цикл
    ДокументССылка=Документы.ЗаказПокупателя.НайтиПоНомеру(СокрЛП(СтрокаТЗ),Дата('2019-06-15'));
    Если Не ДокументССылка.Пустая() Тогда
    ДокументОбъект=ДокументССылка.ПолучитьОбъект();
    ДокументОбъект.ТорговыйПредставитель=ТТ;
    ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
    Попытка
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    Исключение
    Сообщить(ОписаниеОшибки());
    КонецПопытки
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
```
---
Процедура ИзменитьТТНажатие(Элемент)

 //Таблица=ТабличноеПоле.ВыгрузитьКолонку("Номер");
 //ТТ=ТабличноеПоле.ВыгрузитьКолонку("НаКакогоАгентаИзменить");

Для Каждого СтрокаТЗ из ТабличноеПолецикл
ДокументССылка=Документы.ЗаказПокупателя.НайтиПоНомеру(СокрЛП(СтрокаТЗ.Номер),Дата('2019-06-15'));
Если Не ДокументССылка.Пустая() Тогда
ДокументОбъект=ДокументССылка.ПолучитьОбъект();
ДокументОбъект.ТорговыйПредставитель=Справочники.ТорговыеПредставители.НайтиПоНаименованию(СокрЛП(СтрокаТЗ.НаКакогоАгентаИзменить),Истина);
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
Попытка
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки
КонецЕсли;
КонецЦикла;
  КонецПроцедуры
---
не поменял
---
Ну какие-то ошибки писал?
---
получилось, видимо 1с не до конца успел загрузить.Спасибо большое