Имя: Пароль:
1C
1С v8
Работа со СпискомЗначений Help
0 kasazanov
 
02.12.12
14:21
Начинающему прогеру нужна помощь
Нужно добавить в список 2 значения если я выбираю первое значение тогда выполняется определенное действие если выбираю второе то выполняется другое действие, подскажите пожалуйста как это сделать до чего дошел сам:

Значения = Новый СписокЗначений;
   Значения.Добавить(Справочники.Номенклатура.НайтиПоНаименованию("Транспортные услуги (рейс)"));
   Значения.Добавить(Справочники.Номенклатура.НайтиПоНаименованию("Транспортные услуги (км)"));
   Значения.ОтметитьЭлементы();
   
   МассивЗначений = новый Массив;
   Для каждого Элемент Из Значения Цикл
   Если Элемент.Пометка Тогда
   МассивЗначений.Добавить(Элемент.Значение);    
           
       
   ПеремСоздать = ЭтотОбъект.Услуги.Добавить();
   ПеремСоздать.Номенклатура = Элемент.Значение;
   ПеремСоздать.Содержание = "Транспортные услуги";
   ПеремСоздать.Количество = "1";
   ПеремСоздать.Цена = ЭтотОбъект.АвтомобильМаршрут.Итог("Ставка");
   ПеремСоздать.Сумма = ЭтотОбъект.АвтомобильМаршрут.Итог("Ставка");
   ПеремСоздать.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
   
   КонецЕсли;
   КонецЦикла;

В ТЧ подставляется либо первое либо второе значение ПеремСоздать.Номенклатура как я выберу, но мне нужно чтобы я выбирал первое значение выполнялось то что забито в коде а если выберу второе то выполнилосб другое действие(подставились другие значения(ПеремСоздать.Количество, ПеремСоздать.Цена, ПеремСоздать.сумма)

Как это сделать? заранее спасибо.
1 Noroving
 
02.12.12
14:40
Бред канешно... но если уже на то пошло, что тебе мешает проверять по тому же наименованию элемент и в условии подставлять те данные которые тебе нужно?
2 kasazanov
 
02.12.12
14:41
(1) Просто не знаю как это написать (( - проверить по наименованию.
3 Wobland
 
02.12.12
14:42
попроси свой сз выбрать элемент
4 Noroving
 
02.12.12
14:46
Значения = Новый СписокЗначений;
   Значения.Добавить(Справочники.Номенклатура.НайтиПоНаименованию("Транспортные услуги (рейс)"), "ПервыйЭлемент");
   Значения.Добавить(Справочники.Номенклатура.НайтиПоНаименованию("Транспортные услуги (км)"), "ВторойЭлемент");
   Значения.ОтметитьЭлементы();
   
   МассивЗначений = новый Массив;
   Для каждого Элемент Из Значения Цикл
   Если Элемент.Пометка Тогда
   МассивЗначений.Добавить(Элемент.Значение);    
           
       
   ПеремСоздать = ЭтотОбъект.Услуги.Добавить();
   ПеремСоздать.Номенклатура = Элемент.Значение;
   ПеремСоздать.Содержание = "Транспортные услуги";
Если Элемент.Представление = "ПервыйЭлемент" Тогда
   ПеремСоздать.Количество = "1";
   ПеремСоздать.Цена = ЭтотОбъект.АвтомобильМаршрут.Итог("Ставка");
   ПеремСоздать.Сумма = ЭтотОбъект.АвтомобильМаршрут.Итог("Ставка");
Иначе
//второе условие
КонецЕсли
   ПеремСоздать.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
   
   КонецЕсли;
   КонецЦикла;


///ну типа такого бреда)
5 Noroving
 
02.12.12
14:47
или по индексу проверять
6 kasazanov
 
02.12.12
15:12
(4) сделал так же, первое условие не видит, всегда выполняет второе условие ..
7 Wobland
 
02.12.12
15:15
(6) ОтметитьЭлементы тебе зачем?
8 kasazanov
 
02.12.12
15:24
(7) ну у меня будет 2 варианта подстановки в табличную часть если я выбираю рейс тогда туда подставляется количество 1 цена и сумма равны, а если выбираю км тогда количество подставляется из другого места а цена и сумма рассчитываются.

А если не отмечать элементы то список почему то не выходит..
9 Wobland
 
02.12.12
15:27
(8) что предполагается делать, когда отмечены оба?
10 kasazanov
 
02.12.12
15:28
(9) вроде заработало как в варианте (4) я тут немного ошибок наделал просто.
11 kasazanov
 
02.12.12
15:28
(9) наверно сообщение какое то будет
12 Wobland
 
02.12.12
15:29
(11) какое? о чём?
13 kasazanov
 
02.12.12
15:31
(12) наверно я так оставлю, когда оба выбрано то выполняются сразу два условия.
14 Wobland
 
02.12.12
15:32
ни хрена не понял, но тебе оттуда виднее
15 Noroving
 
02.12.12
15:34
Если Элемент.Представление = "ПервыйЭлемент" Тогда  
ПеремСоздать = ЭтотОбъект.Услуги.Добавить();
   ПеремСоздать.Номенклатура = Элемент.Значение;
   ПеремСоздать.Содержание = "Транспортные услуги";
   ПеремСоздать.Количество = "1";
   ПеремСоздать.Цена = ЭтотОбъект.АвтомобильМаршрут.Итог("Ставка");
   ПеремСоздать.Сумма = ЭтотОбъект.АвтомобильМаршрут.Итог("Ставка");
   ПеремСоздать.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
   
   КонецЕсли;

Если Элемент.Представление = "ВторойЭлемент" Тогда
ПеремСоздать = ЭтотОбъект.Услуги.Добавить();
   ПеремСоздать.Номенклатура = Элемент.Значение;
   ПеремСоздать.Содержание = "Транспортные услуги";
   ПеремСоздать.Количество = .............;
   ПеремСоздать.Цена = ....................;
   ПеремСоздать.Сумма = ................;
   ПеремСоздать.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;

КонецЕсли;
16 Wobland
 
02.12.12
15:37
.Количество = "1";
переделать на
.Количество = "один";
17 kasazanov
 
02.12.12
15:44
Спасибо вам огромное, все работает ))
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn