Имя: Пароль:
1C
1C 7.7
v7: Не получить значение реквизита справочника
0 artmatru
 
07.06.13
16:17
Народ, может я совсем перегрелся, не могу понять почему не работает, хотя аналогичный код работает в другой обработке.

ТЗ = СоздатьОбъект("ТаблицаЗначений");
Док = СоздатьОбъект("Документ.Прайс");
Док.ВыбратьДокументы(ДатаДок-1,ДатаДок);
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
  ТЗ.НоваяСтрока();
  ТЗ.Товар = Док.Товар.Привязка.Наименование;  //вот тут не могу получить значение. Привязка имеет тип справочника Товар тоже справочник
КонецЦикла;
1 artmatru
 
07.06.13
16:18
Если что документ получаю, забыл написать
2 TulaScrap
 
07.06.13
16:20
А Док.Товар.Привязка не пустоеЗначение?
3 vinogradъ
 
07.06.13
16:21
когда проверяешь смотришь ТЗ.Товар или Док.Товар.Привязка.Наименование?
4 artmatru
 
07.06.13
16:23
(2) точно не пустое.
5 artmatru
 
07.06.13
16:23
(3) в отладчике смотрю Док.Товар.Привязка.Наименование
6 artmatru
 
07.06.13
16:24
если док.товар то значение есть, дальше пусто
7 Mikeware
 
07.06.13
16:25
(6)что вполне естественно....
товару присваивать наиименование самого себя, причем когда самого себя еще и нет...
я даже не представляю, чего нужно обкуриться...
8 artmatru
 
07.06.13
16:25
процедура модуля формы документа, но по идее это же не имеет значения
9 Mikeware
 
07.06.13
16:26
а, пардон, у самого косоглазие...
10 Mikeware
 
07.06.13
16:26
ПолучитьДокумент - где?
11 artmatru
 
07.06.13
16:26
(7) в смысле  самого себя, слева ведь таблица значений
12 artmatru
 
07.06.13
16:27
забыл написать просто, документ получаю перед ВыбратьСтроки()
13 Mikeware
 
07.06.13
16:28
(12) ну тогда скопирцуй сюда весь код, а то мало ли чеготы там еще "забыл"... :-)
14 vinogradъ
 
07.06.13
16:29
а так? ТЗ.Товар = "" + Док.Товар.Привязка;
я так понимаю в тз тип колонки Товар - строка
15 Boroda
 
07.06.13
16:29
ТЗ.Товар пустой что ли? Может тип у него не "строка"?
16 Boroda
 
07.06.13
16:29
(14) опоздал... :)
17 artmatru
 
07.06.13
16:30
(14) (15) Тип не указывал, щас проверю напишу...
18 vinogradъ
 
07.06.13
16:30
+(14) или Привязка периодический
19 oslokot
 
07.06.13
16:32
(0) Не верю (с)
Если только ТЗ.Товар = СокрЛП(Док.Товар.Привязка.Наименование)
20 Mikeware
 
07.06.13
16:33
(14) к строке он и так приведется...
21 artmatru
 
07.06.13
16:33
Хотя в принципе без разницы должно быть, я не вижу значения еще до записи в таблицу значений
(18) нет
22 artmatru
 
07.06.13
16:34
Точно не подходит
23 artmatru
 
07.06.13
16:34
если не указываю тип, то можно хранить любой
24 vinogradъ
 
07.06.13
16:35
всё таки (13)
25 artmatru
 
07.06.13
16:37
Таб = СоздатьОБъект("Таблица");
   Таб.ИсходнаяТаблица("Прайс");
   Таб.ВывестиСекцию("Шапка");
   
   ТЗ = СоздатьОбъект("ТаблицаЗначений");
   ТЗ.НоваяКолонка("Товар");
   
   
   Док = СоздатьОбъект("Документ.Прайс");
   Док.ВыбратьДокументы(ДатаДок-1,ДатаДок);
   
   Пока Док.ПолучитьДокумент()=1 Цикл
       Если Док.Проведен()=1 Тогда
           Если Док.ВидПрайса = Перечисление.ВидыТоваров.Товар Тогда
               Если Док.ДатаДок=ДатаДок-1 Тогда
                   Док.ВыбратьСтроки();
                   Пока Док.ПолучитьСтроку()=1 Цикл
                       ТЗ.НоваяСтрока();
                       ТЗ.Товар = Док.Товар.Привязка.Наименование;
                   КонецЦикла;
...
26 artmatru
 
07.06.13
16:45
Ну что народ, есть мысли?
27 oslokot
 
07.06.13
16:58
(26) а сообщить(Док.Товар.Привязка.Наименование) в цикле работает?
28 Эльниньо
 
07.06.13
17:00
Пока Док.ПолучитьСтроку()=1 Цикл
                       ТЗ.НоваяСтрока();
                       ТЗ.Товар = ?(ПустоеЗначение(Док.Товар.Привязка) = 1, "ФигВам",Док.Товар.Привязка.Наименование;
                   КонецЦикла;
...
29 artmatru
 
07.06.13
17:00
(27) Хм, как ни странно да
30 Эльниньо
 
07.06.13
17:01
//                        ТЗ.Товар = ?(ПустоеЗначение(Док.Товар.Привязка) = 1, "ФигВам",Док.Товар.Привязка.Наименование;                        ТЗ.Товар = ?(ПустоеЗначение(Док.Товар.Привязка) = 1, "ФигВам",Док.Товар.Привязка.Наименование);
31 deadng
 
07.06.13
17:05
[code]
Если ПустоеЗначение(Док.Товар) = 0 Тогда
Если ПустоеЗначение(Док.Товар.Привязка) = 0 Тогда
ТЗ.Товар = Док.Товар.Привязка.Наименование;
Иначе
Сообщить("У товара " + СокрЛП(Док.Товар) + " не заполена привязка");
КонецЕсли;
Иначе
Сообщить("В документе " + СокрЛП(Док) + " не заполнен товар, строка " + СокрЛП(Док.НомерСтроки));
КонецЕсли;
[code]
32 artmatru
 
07.06.13
17:07
Ребят, всем спасибо, все работало, просто реально надо отдыхать от компьютера больше, запарился я просто, неправильно интерпретировал результаты, и как раз первая строка было не заполнено значение, а я думал что везде проставлено.
33 artmatru
 
07.06.13
17:10
Короче жара, вечер пятницы, пора ехать пиво пить
34 Torquader
 
09.06.13
13:20
Я так понимаю, что и как у меня - запретили в документе оставлять строки с незаполненным товаром.
У меня "звери" быстро додумались - сделали товар с пустым названием (точнее пустое им запрещено, но один неразрывный пробел тоже не виден) и вставляют его в документ. В результате товар в строке есть, но не виден.
35 mishaPH
 
09.06.13
13:29
(34) А зачем в доке нужен товар пустой? с какой целью
36 Torquader
 
09.06.13
13:41
(35) Они так "продают" то, чего нет на складе, объясняя тем, что ввести не получается - дескать в кассе есть понятие "по свободной цене" - здесь также.
Ещё, оказывается, можно потом в печатную форму что-то вписать перед печатью, хотя этот режим "пофиксили".
В общем, если кто-то хочет 1С, но вводить нормально товар не хочет, то или мусор в справочнике или пустые строки.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.