Имя: Пароль:
1C
1C 7.7
v7: Выбрать значение справочника
0 lg2marvel
 
27.05.13
18:20
Добрый день. Есть справочник:

Спр = СоздатьОбъект("Справочник."+тВыписка.ВидНДС.Вид());

Копирую его в Список значений:

Сп = СоздатьОбъект("СписокЗначений");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл                Сп.ДобавитьЗначение(Спр.ТекущийЭлемент());
КонецЦикла;

Есть таблица, с колонкой ВидНДС:

ТВыписка.НоваяКолонка("ВидНДС",,,,"Вид НДС",12,,);

Подскажите пожалуйста как ТВыписка.ВидНДС установить значение из списка значений?
1 viktor_vv
 
27.05.13
18:22
И по какому принципу устанавливать ? Какое значение из списка установить в строке Твыписка ?
2 Simod
 
27.05.13
18:41
В чем проблема: как получить из списка или как установить в ТЗ?
3 Shaman100M
 
27.05.13
18:56
ТВыписка.КоличествоСтрок(Сп.РазмерСписка());
ТВыписка.Заполнить(Сп,,,"ВидНДС");
4 lg2marvel
 
27.05.13
20:27
Процедура ПроверитьНДС()
   
   Спр = СоздатьОбъект("Справочник."+тВыписка.ВидНДС.Вид());
   Сп = СоздатьОбъект("СписокЗначений");
   Спр.ВыбратьЭлементы();
   Пока Спр.ПолучитьЭлемент() = 1 Цикл
       Сп.ДобавитьЗначение(Спр.ТекущийЭлемент());
   КонецЦикла;
   тВыписка.ВыбратьСтроки();
   Пока тВыписка.получитьСтроку() = 1 Цикл
       Если (Найти(тВыписка.Содержание, "Без ПДВ") <> 0) или (Найти(тВыписка.Содержание, "Без НДС") <> 0) Тогда      
           тВыписка.ВидНДС =            //здесь нужно присвоить значение из Сп.            
       КонецЕсли;
   КонецЦикла;
   КонецПроцедуры //ПроверитьНДС

Сп.ВыбратьЗначение(Зн,,,,1) - показывает все значений которые есть в Сп в окне или менюшкой, но нужно конкретное и присвоить его без всяких телодвижений со стороны пользователя.
Поидее банальщина, но найти как сделать не могу.
5 Тьма
 
27.05.13
20:37
тВыписка.ВидНДС = СП.получитьЗначение(1);
6 lg2marvel
 
27.05.13
21:01
Да, спасибо большое.
7 viktor_vv
 
27.05.13
21:05
(6) А вдруг там первым в списке будет НДС 20% ? А судя по тексту тебе надо именно без НДС.
8 lg2marvel
 
27.05.13
21:20
Даааа, беда. Первым в списке не 20% конечно, а гораздо хуже... Перебором конечно к утру найду, а нельзя более конкретно задать?)
9 lg2marvel
 
27.05.13
21:21
Или в цикле просмотреть Сп, найти где находится "Без НДС" и тогда уже по номеру присваивать?
10 viktor_vv
 
27.05.13
21:26
Ну есть у справочника есть всякие НайтиПоНаименованию() НайтиПоКоду().
11 Злой Бобр
 
27.05.13
23:14
(0) Начни с того как у тебя в конфе задан НДС - это перечисление или справочник. Просто в разных конфах реализовано по разному.
12 lg2marvel
 
28.05.13
09:47
(11) Справочник.
Спр.НайтиПоКоду("БезНДС"); - нахожу, но возвращает значение 0 или 1, а не ссылку на сам элемент
13 Ork
 
28.05.13
09:51
(12)Если вернулась единичка - нужно брать Спр.ТекущийЭлемент()
14 lg2marvel
 
28.05.13
10:06
Всем спасибо.

Рабочий вариант:

Процедура ПроверитьНДС()
   Спр = СоздатьОбъект("Справочник."+тВыписка.ВидНДС.Вид());
   Спр.ВыбратьЭлементы();
   тВыписка.ВыбратьСтроки();      
   Пока тВыписка.получитьСтроку() = 1 Цикл
       Если (Найти(тВыписка.Содержание, "Без ПДВ") <> 0) или (Найти(тВыписка.Содержание, "Без НДС") <> 0) Тогда      
           Спр.НайтиПоКоду("БезНДС",);    
           тВыписка.ВидНДС = Спр.ТекущийЭлемент();            //здесь нужно присвоить значение из Сп.            
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры //ПроверитьНДС
15 vinogradъ
 
28.05.13
10:13
Процедура ПроверитьНДС()
   Спр = СоздатьОбъект("Справочник."+тВыписка.ВидНДС.Вид());
   Спр.НайтиПоКоду("БезНДС",);    
   БезНДС = Спр.ТекущийЭлемент();        
   тВыписка.ВыбратьСтроки();      
   Пока тВыписка.получитьСтроку() = 1 Цикл
       Если (Найти(тВыписка.Содержание, "Без ПДВ") <> 0) или (Найти(тВыписка.Содержание, "Без НДС") <> 0) Тогда      
           
           тВыписка.ВидНДС = БезНДС   //здесь нужно присвоить значение из Сп.            

       КонецЕсли;
   КонецЦикла;
КонецПроцедуры //ПроверитьНДС