Найти значение в Таблице Значений по заданному критерию - совпадение по выбранным колонкам и вернуть значение указанной колонки.
Например, Таблица значений содержит 3 колонки - Наименование, Цвет, Цена. Условие "Наименование = Тюльпан, Цвет = Красный", получить "Цена".
Код на встроенном языке 1С:Предприятие 7.7 (позже будет доступен класс для 1С++ и функционал для 1С:Предприятие 8.x).
Условие задаются в виде списка значений (_Условия = СоздатьОбъект("СписокЗначений"))
Функция НайтиЗначениеВ_ТЗ(АТЗ, АЗначения, АКолонкаРезультат)
_ТС = 0;
АТЗ.ВыбратьСтроки();
Пока АТЗ.ПолучитьСтроку() > 0 Цикл
_ТС = _ТС + 1;
_Найдено = 1;
Для Сч = 1 По АЗначения.РазмерСписка() Цикл
_Стр = "";
_Знач = АЗначения.ПолучитьЗначение(Сч, _Стр);
Если АТЗ.ПолучитьЗначение(_ТС, _Стр) <> _Знач Тогда
_Найдено = 0;
Прервать;
КонецЕсли;
КонецЦикла;
Если _Найдено = 1 Тогда
Возврат АТЗ.ПолучитьЗначение(_ТС, АКолонкаРезультат);
КонецЕсли;
КонецЦикла;
Возврат ПолучитьПустоеЗначение();
КонецФункции
Пример использования
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Номенклатура");
ТЗ.НоваяКолонка("Цвет");
ТЗ.НоваяКолонка("Тип");
ТЗ.НоваяКолонка("Колво");
Для Сч = 1 по 10 Цикл
ТЗ.НоваяСтрока();
ТЗ.Номенклатура = "Ном " + Строка(Сч);
ТЗ.Цвет = "Цвет " + Строка(Сч);
ТЗ.Тип = "Тип " + Строка(Сч);
ТЗ.Колво = Сч;
КонецЦикла;
_СЗ = СоздатьОбъект("СписокЗначений");
_СЗ.ДобавитьЗначение("Ном 3", "Номенклатура");
_СЗ.ДобавитьЗначение("Цвет 3", "Цвет");
_СЗ.ДобавитьЗначение("Тип 3", "Тип");
Сообщить(НайтиЗначениеВ_ТЗ(ТЗ, _СЗ, "Колво"));
Такой код выведет значение "3", чуть позже внесу модификацию, которая будет возвращать СписокЗначений для совпадений с условиями или таблицу значений, с остальными полями выборки, не попавшими в условие.
Продолжение смотрим вот тут (http://fzdev.ru/weblog/)