Имя: Пароль:
1C
1С v8
Перевод номенклатуры.
, ,
0 Tasechka
 
22.11.12
14:34
Добрый всем день!
у меня есть функция перевода номенклатуры
Функция Перевод (Товар)
    Запрос = Новый Запрос;
    Запрос.Текст=
        "ВЫБРАТЬ ПЕРВЫЕ 1
     |    НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента
     |ИЗ
     |    РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
     |ГДЕ
     |    НоменклатураКонтрагентов.Номенклатура = &Номенклатура";
   
    Запрос.УстановитьПараметр("Номенклатура", Товар);
    Результат = Запрос.Выполнить().Выбрать();
    Если Результат.Следующий() Тогда
       
        Данные = Результат.НаименованиеНоменклатурыКонтрагента;
       
    Иначе
       Сообщить("Заполните регистр сведений");
    КонецЕсли;
   
       Возврат Данные;    
КонецФункции //ПереводНоменклатуры
Нужно перевести номенклатуру на украинский язык, перевод находится в регистре сведений. Выдает сообщение: "заполните регистр сведений", хотя он заполнен. В чем может быть ошибка?
1 Eugene_life
 
22.11.12
14:36
(0) а где же фото?
2 fizeg
 
22.11.12
14:36
Товар - это ссылка или объект?
3 butterbean
 
22.11.12
14:37
значит там нет этого товара, ну и в отладчике посмотри до кучи
4 rotting
 
22.11.12
14:37
YНу значит для этой номенклатуры не заполнен
5 Eugene_life
 
22.11.12
14:38
(2) + то же самое хотел написать - скорее всего в регистре ссылка, а передаешь в параметр - объект
6 Tasechka
 
22.11.12
14:38
(2)ссылка
7 Шапокляк
 
22.11.12
14:39
Вместо Если Результат.Следующий()...
Сделайте
    Пока Результат.Следующий() Цикл
       
        Данные = Результат.НаименованиеНоменклатурыКонтрагента;
    Возврат Данные;
КонецЦикла;
        Сообщить("Заполните регистр сведений");
8 Tasechka
 
22.11.12
14:40
(3),(4) есть этот товар в регистре
9 Eugene_life
 
22.11.12
14:42
(8) в регистре поле "Номенклатура" - тоже ссылка?
10 Tasechka
 
22.11.12
14:44
(9) да
11 Eugene_life
 
22.11.12
14:47
(10) Убери "Выбрать первые 1" из запроса
12 sanja26
 
22.11.12
14:49
(11) :))
13 ssh2012
 
22.11.12
14:49
(8) > есть этот товар в регистре

Не трать время, посмотри в отладчике, что передается в параметр товар. Другого не дано.
14 Tasechka
 
22.11.12
14:56
(11) неа(( все равно говорит что заполните регистр
15 ssh2012
 
22.11.12
15:02
(14) Добавь код в твою функцию перед запросом. Выводится сообщение?

Если НЕ(ТипЗнч(Товар) = Тип("СправочникСсылка.Номенклатура") И ЗначениеЗаполнено(Товар)) Тогда

Сообщить("Сиське"); //шуточное сообщение

КонецЕсли;
16 Tasechka
 
22.11.12
15:08
(15) да
17 sanja26
 
22.11.12
15:10
Курсы = РегистрыСведений.КурсыВалют;
ОтборВалют = Новый Структура("Валюта");
ОтборВалют.Валюта = ВыбВалюта;
ВыборкаКурсовВалют = Курсы.Выбрать(,,ОтборВалют);
Пока ВыборкаКурсовВалют.Следующий() Цикл

КонецЦикла;
18 sanja26
 
22.11.12
15:10
(18) так у вас не товар девушка)
19 sanja26
 
22.11.12
15:12
Номенклатура= РегистрыСведений.НоменклатураКонтрагентов ;
ОтборНоменклатура = Новый Структура("Номенклатура");
ОтборНоменклатура .Номенклатура= Товар;
ВыборкаНоменклатуры = Номенклатура.Выбрать(,,ОтборНоменклатура );
Пока ВыборкаНоменклатуры .Следующий() Цикл

КонецЦикла;
20 Tasechka
 
22.11.12
15:19
(19) оно вывело, но старую номенклатуру, а не из регистра
21 ssh2012
 
22.11.12
15:21
(20) умеешь отладчиком пользоваться?
22 sanja26
 
22.11.12
15:22
(20)ВыборкаНоменклатуры.НаименованиеНоменклатурыКонтрагента
23 sanja26
 
22.11.12
15:22
фото нада
24 Tasechka
 
22.11.12
15:27
(21) нет(
25 Tasechka
 
22.11.12
15:29
(22) это куда?
26 sanja26
 
22.11.12
15:32
Номенклатура= РегистрыСведений.НоменклатураКонтрагентов ;
ОтборНоменклатура = Новый Структура("Номенклатура");
ОтборНоменклатура .Номенклатура= Товар;
ВыборкаНоменклатуры = Номенклатура.Выбрать(,,ОтборНоменклатура );
Пока ВыборкаНоменклатуры .Следующий() Цикл
Данные = ВыборкаНоменклатуры.НаименованиеНоменклатурыКонтрагента;
КонецЦикла;
27 Tasechka
 
22.11.12
15:34
(26) все равно на русском
28 sanja26
 
22.11.12
15:39
Номенклатура= РегистрыСведений.НоменклатураКонтрагентов ;
ОтборНоменклатура = Новый Структура("Номенклатура", Товар);
ВыборкаНоменклатуры = Номенклатура.Выбрать(ОтборНоменклатура );
Пока ВыборкаНоменклатуры .Следующий() Цикл
Данные = ВыборкаНоменклатуры.НаименованиеНоменклатурыКонтрагента;
КонецЦикла;

Измерение номенклатура сделай индексируемым и ведущим, если регистр сами добавляли.
А вообще проверяй, что у тебя в "Товар" передается, точно ли ссылка, а не строка. в (15) сообщение должно было дать повод подумать
29 ILM
 
гуру
22.11.12
15:41
Тасечка, добавьте контрагента "Украинский язык" и внесите для него все наименования товаров.