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

1. slitov 7 26.07.17 17:09 Сейчас в теме
Необходимо загрузить из таблички банковские счета контрагентов в УПП 1.3, банки надо искать по двум реквизитам БИК и Кор.счет, т.е. по значениям из двух колонок. Вот не могу придумать, как найти сразу по двум реквизитам, ведь запрос в этой обработке как я понимаю сделать нельзя, может есть идеи.

Вот несто подобное нужно, только чтоб по двум реквизитам искал:
Банк = Справочники.Банки.НайтиПоРеквизиту("КоррСчет", ТекущиеДанные["КорреспСчет"]);


В тексте выражения можно использовать следующие предопределенные параметры:
Результат - результат вычисления (на входе - значение по умолчанию)
ТекстЯчейки - текст текущей ячейки
ТекстыЯчеек - массив текстов ячеек строки
ТекущиеДанные - структура загруженных значений
ОписаниеОшибки - описание ошибки, выводимое в примечание ячейки и в окно сообщений
Встроенные функции, функции общих модулей.
Найденные решения
4. andron77777 26.07.17 17:30 Сейчас в теме
(3)Пример на коленке:

Запрос = новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Спр.Ссылка КАК Ссылка из Справочник.Банки КАК Спр ГДЕ Реквизит1 = &Реквизит1 и Реквизит2 = &Реквизит2";
Запрос.УстановитьПараметр("Реквизит1", ТекущиеДанные["Реквизит1"]);
Запрос.УстановитьПараметр("Реквизит2", ТекущиеДанные["Реквизит2"]);
Выборка = запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
      Результат = Выборка.ссылка;
КонецЕсли;
slitov; Infector; +2 Ответить
6. slitov 7 27.07.17 10:27 Сейчас в теме
Спасибо за помощь! Вчера не было времени отписаться. Как оказалось в ТекущиеДанные передавалась не таблица значений, а одно значение ячейки. Отпишусь тут для истории, может еще кому понадобится, вот так в итоге сделал в выражении:
Запрос = новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |	Банки.Ссылка
               |ИЗ
               |	Справочник.Банки КАК Банки
               |ГДЕ
               |	Банки.Код = &Код
               |	И Банки.КоррСчет = &КоррСчет";
Запрос.УстановитьПараметр("Код", ТекстыЯчеек[6]);
Запрос.УстановитьПараметр("КоррСчет", ТекстыЯчеек[5]);
Выборка = запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
      Результат = Выборка.ссылка;
КонецЕсли;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Infector 205 26.07.17 17:12 Сейчас в теме
А запрос почему нельзя-то?
3. slitov 7 26.07.17 17:26 Сейчас в теме
(2) Ну я просто не нашел, чтоб использовали запрос в этой обработке в выражениях. Может и можно, сейчас попробую найти примеры.
4. andron77777 26.07.17 17:30 Сейчас в теме
(3)Пример на коленке:

Запрос = новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Спр.Ссылка КАК Ссылка из Справочник.Банки КАК Спр ГДЕ Реквизит1 = &Реквизит1 и Реквизит2 = &Реквизит2";
Запрос.УстановитьПараметр("Реквизит1", ТекущиеДанные["Реквизит1"]);
Запрос.УстановитьПараметр("Реквизит2", ТекущиеДанные["Реквизит2"]);
Выборка = запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
      Результат = Выборка.ссылка;
КонецЕсли;
slitov; Infector; +2 Ответить
5. Infector 205 26.07.17 17:30 Сейчас в теме
(3) так а кто мешает Вам набросать такой запрос? И вроде бы БИК штука более уникальная, чем КоррСчет только может быть срезан первый ноль в базе или в источнике.
6. slitov 7 27.07.17 10:27 Сейчас в теме
Спасибо за помощь! Вчера не было времени отписаться. Как оказалось в ТекущиеДанные передавалась не таблица значений, а одно значение ячейки. Отпишусь тут для истории, может еще кому понадобится, вот так в итоге сделал в выражении:
Запрос = новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |	Банки.Ссылка
               |ИЗ
               |	Справочник.Банки КАК Банки
               |ГДЕ
               |	Банки.Код = &Код
               |	И Банки.КоррСчет = &КоррСчет";
Запрос.УстановитьПараметр("Код", ТекстыЯчеек[6]);
Запрос.УстановитьПараметр("КоррСчет", ТекстыЯчеек[5]);
Выборка = запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
      Результат = Выборка.ссылка;
КонецЕсли;
Показать
7. resonance 83 19.02.21 23:42 Сейчас в теме
Доброго времени суток всем. У меня проблема не много иная. У меня при задача, заполнить Номенклатуру в табличной части, по Штрихкоду, который находиться соседнем столбце.
Делаю это так
Запрос = Новый Запрос("ВЫБРАТЬ
	|	Штрихкоды.Владелец КАК Номенклатура,
	|ИЗ
	|	РегистрСведений.Штрихкоды КАК Штрихкоды
	|ГДЕ
	|	Штрихкоды.Штрихкод = &Штрихкод И Штрихкоды.Владелец ССЫЛКА Справочник.Номенклатура");

	
	Запрос.УстановитьПараметр("Штрихкод", ТекстыЯчеек[1]); //Второй слева столбце в Табличном документе как раз штрихкод.

	Выборка = Запрос.Выполнить().Выгрузить();
Результат = Выборка[0].Номенклатура;
Показать


Во время загрузки получаю "Индекс находиться за границами массива".
Пробовал размещать этот код и в разделе "События", в "Вычислить".

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот