Имя: Пароль:
1C
1С v8
Обращение к ЕдиницаИзмеренияМест
,
0 zzzLEXzzz
 
27.02.14
15:34
Здравствуйте, 1С 8.2. Комплексная, Создал печатную форму с помощью конструктора, мне надо чтобы параметр "поддоны" заполнялись таким образом. Количество делить на коэффициент с наименованием "Под", я сделал так, знаю не правильный вариант, как правильно обратиться к  ЕдиницаИзмеренияМест с наименованием "Под". Заранее спасибо.

Для Каждого ТекСтрокаТовары Из Товары Цикл
        
        ОбластьТовары.Параметры.поддоны = ТекСтрокаТОвары.Количество / ТекСтрокаТовары.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент;
        ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
        ТабДок.Вывести(ОбластьТовары);
    КонецЦикла;
1 salvator
 
27.02.14
15:38
Метод Заполнить() делай ДО явной установки параметров.
2 zzzLEXzzz
 
27.02.14
15:45
(1) А можно пожалуйста по подробнее, я просто начинающий
3 salvator
 
27.02.14
15:49
(2) Сначала
ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
а потом уже
ОбластьТовары.Параметры.поддоны = ...

Это просто общее замечание. Если к примеру в строке ТЧ есть реквизит "Поддоны", то в твоем случае метод Заполнить() затрет значение, которое ты выше рассчитал. Поэтому все расчеты параметров лучше делать после него.
4 zzzLEXzzz
 
27.02.14
15:55
(3) В моём случае в ТЧ нет реквизита "Поддоны", хорошо я сделаю после, но всё же как обратиться к ЕдиницаИзмеренияМест с наименованием "Под"?
5 salvator
 
27.02.14
15:57
(4) Какой тип у ЕдиницаИзмеренияМест?
6 zzzLEXzzz
 
27.02.14
16:02
(5) СправочникСсылка.ЕдиницыИзмерения
7 salvator
 
27.02.14
16:06
(6) Ну так и ищи в этом справочнике по наименованию и вытягивай потом из этой ссылки коэффициент.
8 zzzLEXzzz
 
27.02.14
16:08
(7) в этом и проблема я не знаю как это правильно реализовать )))) туплю ещё ))
9 salvator
 
27.02.14
16:10
(8) В синтаксис-помощнике забанили?
10 zzzLEXzzz
 
27.02.14
16:15
(9) Нет ещё ))) ладно буду мучится, спасибо за помощь
11 salvator
 
27.02.14
16:21
(10) Че мучиться-то?
Для Каждого ТекСтрокаТовары Из Товары Цикл
   ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
   ЕдИзм = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("Под",Истина);
   Если ЕдИзм.Пустая() Тогда
      КоэфПоддоны = 0;
   Иначе
      КоэфПоддоны = ТекСтрокаТОвары.Количество/ЕдИзм.Коэффициент; // тут еще по-хорошему сделать проверку что к-т не равен 0
   КонецЕсли;
   ОбластьТовары.Параметры.поддоны = Поддоны;
   ТабДок.Вывести(ОбластьТовары);
КонецЦикла;
12 salvator
 
27.02.14
16:21
+(11) не
ОбластьТовары.Параметры.поддоны = Поддоны;
а
ОбластьТовары.Параметры.поддоны = КоэфПоддоны;
13 salvator
 
27.02.14
16:26
И конечно же не в цикле искать. Погорячился второпях )

Вот так надо:

ЕдИзм = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("Под",Истина);
Если ЕдИзм.Пустая() Тогда
   КоэфПоддоны = 0;
Иначе
   КоэфПоддоны = ТекСтрокаТОвары.Количество/ЕдИзм.Коэффициент; // тут еще по-хорошему сделать проверку что к-т не равен 0
КонецЕсли;

Для Каждого ТекСтрокаТовары Из Товары Цикл
   ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
   ОбластьТовары.Параметры.поддоны = КоэфПоддоны;
   ТабДок.Вывести(ОбластьТовары);
КонецЦикла;
14 zzzLEXzzz
 
27.02.14
16:38
(12) тогда ж  КоэфПоддоны = ТекСтрокаТОвары.... будет выдавать ошибку
15 salvator
 
27.02.14
16:39
(14) Чо?
16 zzzLEXzzz
 
27.02.14
16:40
(15) Если из цикла выводить поиск тогда выйдет токая ошибка

{Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента.Форма(4973,21)}: Переменная не определена (ТекСтрокаТОвары)
      КоэфПоддоны = <<?>>ТекСтрокаТОвары.Количество/ЕдИзм.Коэффициент; // тут еще по-хорошему сделать проверку что к-т не равен 0 (Проверка: Толстый клиент (обычное приложение))
17 mikecool
 
27.02.14
16:41
делаем параметр или константу, заполняем единицей из классификатора поддон
далее в расчете получаем единицу у номенклатуры, у которой значение классификатора из константы и делим на ее коэффициент
и все!
18 mikecool
 
27.02.14
16:41
+17 не забывая проверять - есть ли такая единица
19 salvator
 
27.02.14
16:44
(16) Ну да. Сделай тогда до цикла расчет коэффициента из элемента справочника.
А в цикле уже дели на него, с проверкой на "не 0"
20 mikecool
 
27.02.14
16:44
у меня таких единиц было две - ящик и поддон, в обе приходилось пересчитывать
21 zzzLEXzzz
 
27.02.14
16:50
(19) Выводить стало, но не правильно, видимо что-то не то сделал, должно выходить значение 10, а выходит 126

ЕдИзм = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("под",Истина);
          
    Для Каждого ТекСтрокаТовары Из Товары Цикл
        
        ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
        КоэфПоддоны = ТекСтрокаТОвары.Количество/ЕдИзм.Коэффициент;
          ОбластьТовары.Параметры.поддоны = КоэфПоддоны;
        
        ТабДок.Вывести(ОбластьТовары);
    КонецЦикла;
22 zzzLEXzzz
 
27.02.14
16:54
(17) Для меня это как китайская кириллица ))
23 mikecool
 
27.02.14
16:57
(22) вон из профессии )
24 zzzLEXzzz
 
27.02.14
16:59
(23) ну я ж пытаюсь разобраться ))) даже курсы прошёл, но иногда просто не могу разобраться и всё ((((
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс