Имя: Пароль:
1C
1С v8
Ошибка : Переменная не определена (Справочники)
,
0 ils108
 
11.01.16
10:25
Добра всем. Выскакивает такая ошибка (Переменная не определена (Справочники)) в тонком клиенте рабочей конфигурации. В толстом все хорошо работает. При этом в моей тестовой конфе срабатывает в тонком клиенте. Подскажите пожалуйста в чем может быть причина?
1 Волшебник
 
модератор
11.01.16
10:26
в тонком клиенте
2 НаборДанных
 
11.01.16
10:27
(1)Тонко!)
3 ils108
 
11.01.16
10:27
(1) а почему тогда срабатывает в другой аналогичной конфигурации и тоже тонком клиенте?
4 ДенисЧ
 
11.01.16
10:28
(3) Потому что здесь вкралась одна из трёх черепашек...
5 patria0muerte
 
11.01.16
10:29
Рабочая конфигурация на клиент-сервере, вестимо...

Зайди в конфигураторе в Параметры - Модули - Проверка и поставь галочки на Сервер и Тонкий Клиент.
6 ils108
 
11.01.16
10:32
(4) черепашек-ниндзя ? скажите яснее)
7 ДенисЧ
 
11.01.16
10:35
8 ils108
 
11.01.16
10:40
Как решить ситуацию то? )
желательно без ветвистых аналогий из мира фауны :)
9 hhhh
 
11.01.16
10:43
(8) делайте &НаСервере
10 ils108
 
11.01.16
10:49
(9) не сработает на сервере, другую переменную там не найдет. я пробовал получить объект на сервере и его потом передавать. может что-то не так сделал. пример бы посмотреть или описание как это надо делать
11 hhhh
 
11.01.16
10:51
(10) всё он найдет. Руки немного подрихтуйте.
12 Остап Сулейманович
 
11.01.16
10:52
(10) "другую переменную там не найдет". Ну так передай ее параметром с клиента.
14 ils108
 
11.01.16
11:04
(11) Переменная не определена (ГУГОЛКлиент)

(12) переменная в данном случае это общий модуль на клиенте. как его передать параметром и есть ли смысл.


Конкретнее опишу ситуацию
Есть документ, в нем хранится ссылка на другой документ. при нажатии кнопки "печать" вызывается процедура(1) общего модуля, которая другой процедурой(2) выбирает принадлежащие документу печатные формы, потом (1) проверяет некоторые условия и выводит форму выбора печатной формы.
15 hhhh
 
11.01.16
11:09
(14) ну выделите эту строчку, где справочники, как отдельную процедуру на сервере. А всё остальное пусть на клиенте.
16 ils108
 
11.01.16
11:10
извините за мою супер связную и профессиональную речь. как получается так и описываю :)
17 ils108
 
11.01.16
11:19
(15) я делал так :

&НаСервере
Функция ПолучитьТекОбъект(ТекОтчет)
Д1 = ТекОтчет.ПолучитьОбъект();
Возврат Д1;
Конец

&НаКлиенте
Процедура КнопкаПечать
Отчет = ПолучитьТекОбъект(Объект.Документ);
ВызватьПроцедуруОбщегоМодуля(Отчет)
Конец

Ругается тогда на : Ошибка преобразования данных XDTO

Покурил интернет на эту тему, почистил кэш, сравнил версии, все равно та же история.

Правильно ли я понимаю, что кэш чистим только на клиента,а сервер в данном случае ни при чем.
18 ils108
 
11.01.16
11:38
Подскажите, что сделать, чтобы данные из ссылки на документ использовать на клиенте, как к нему правильно обращаться и чем не подходит вариант (17)
19 hhhh
 
11.01.16
11:40
объект нельзя передавать туда обратно. Вариант (17) вообще ничем не подходит.

всё выбирайте на сервере в структуру. И эту структуру возвращайте.
20 ils108
 
11.01.16
12:01
&НаСервере
Функция ПолучитьОбъект(ТекОтчет)
ТекДокумент = новый Структура;
ТекДокумент.Вставить("Документ",ТекОтчет);
Возврат ТекДокумент;
КонецФункции


&НаКлиенте
Процедура КомандаПечать(Команда)
ДокПечать = ПолучитьОбъект(Объект.Документ);    
ГУГОЛКлиент.ПечатьВнешнихПечатныхФорм(ДокПечать.Документ);
КонецПроцедуры

Сделал так, результат тот же.
21 vicof
 
11.01.16
12:05
&НаСервере
Функция ПолучитьОбъект(ТекОтчет)
ТекДокумент = новый Структура;
ТекДокумент.Вставить("Документ",ТекОтчет);
Возврат ТекДокумент;
КонецФункции

это бессмысленно

Покажи, что в:
ГУГОЛКлиент.ПечатьВнешнихПечатныхФорм(ДокПечать.Документ);
22 ils108
 
11.01.16
12:06
(21)
писокПечатныхФорм = ГУГОЛСервер.ПолучитьСписокМакетовПечати(СсылкаНаОбъект);
    
    Если СписокПечатныхФорм.Количество() = 0 Тогда
        Предупреждение("Печатные формы отсутствуют!");
        Возврат;
    КонецЕсли;
    
    Если СписокПечатныхФорм.Количество() = 1 Тогда
        ВыбраннаяПечатнаяФорма = СписокПечатныхФорм[0];
    Иначе
        ВыбраннаяПечатнаяФорма = СписокПечатныхФорм.ВыбратьЭлемент("Выбор печатной формы");
    КонецЕсли;
    Если ВыбраннаяПечатнаяФорма <> Неопределено Тогда
        ТабДокументИлиСписок = ГУГОЛСервер.НапечататьВнешнююФорму(СсылкаНаОбъект, ВыбраннаяПечатнаяФорма.Значение);    
        
        Если ТипЗнч(ТабДокументИлиСписок) = Тип("СписокЗначений") Тогда
            Для Каждого ТекЭлемент Из ТабДокументИлиСписок Цикл
                ТабДокумент = ТекЭлемент.Значение;
                ФормаПечати = ПолучитьФорму("ОбщаяФорма.ГУ_ПечатнаяФормаУправляемая",,,Новый УникальныйИдентификатор);
                ФормаПечати.Заголовок = ТекЭлемент.Представление;
                ФормаПечати.ПолеТабличногоДокумента = ТабДокумент;
                ФормаПечати.Открыть();    
            КонецЦикла;
        Иначе
            ТабДокумент = ТабДокументИлиСписок;
            ФормаПечати = ПолучитьФорму("ОбщаяФорма.ГУ_ПечатнаяФормаУправляемая");
            ФормаПечати.ПолеТабличногоДокумента = ТабДокумент;
            ФормаПечати.Открыть();
        КонецЕсли;
        
    КонецЕсли;

    
КонецПроцедуры
23 vicof
 
11.01.16
12:08
Чото я не вижу тут сабж:
"Ошибка : Переменная не определена (Справочники)"
24 ils108
 
11.01.16
12:12
(23) сам не вижу, поэтому и спрашиваю здесь :(
но ошибка есть.

{(ОбщийМодуль.ГУГОЛКлиент.Модуль(236,12)}:Переменная не определена (Справочники)
25 ils108
 
11.01.16
12:15
(23) подскажите как правильно структуру создать/передать?
26 vicof
 
11.01.16
12:18
(24) (ОбщийМодуль.ГУГОЛКлиент.Модуль(236,12)}:Переменная не определена (Справочники)

строка тебе показана, место показано. Отладчик запускать умеешь?
27 ils108
 
11.01.16
12:28
в целом все заработало. ошибка была совершено в другой процедуре модуля.

и все таки подскажите как получить значение из справочника на клиенте?
28 Мыш
 
11.01.16
12:31
(27) На тонком клиенте - написать письмо с требованием в фирму 1С.
29 oslokot
 
11.01.16
12:32
ага, 1с совсем распоясалась
30 ils108
 
11.01.16
12:48
дорогие форумчане, помощь человеку развивает вас, но троллинг только тратит ваше драгоценное время. спасибо вам.

вопрос актуален.
есть необходимость использовать значение справочника в процедуре, что на клиенте написана. куда почитать об этом?:)
31 Мыш
 
11.01.16
12:54
(30) Дорогой форумчанин. Данная необходимость в тонком (sic) клиенте недоступна.
32 Остап Сулейманович
 
11.01.16
12:54
(27) "получить значение из справочника на клиенте?"
&НаКлиенте
Процедура ...
...
ЗначениеРеквизита = ПолучитьРеквизит(СсылкаНаЭлементСправочника);
КонецПроцедуры

&НаСервереБезКонтекста()
Функция ПолучитьРеквизит(СсылкаНаЭлементСправочника)
   Возврат СсылкаНаЭлементСправочника.ИмяРеквизита;
КонецФункции
33 hhhh
 
11.01.16
12:56
(30)

&НаСервере
Функция ПолучитьКонтрагентаПоНаименованию(Наименование)
    Возврат Справочники.Контрагенты.НайтиПоНаименованию(Наименование);
КонецФункции

&НаКлиенте
Процедура МояПроцедура
   Вася = ПолучитьКонтрагентаПоНаименованию("Вася");


КонецПроцедуры
34 ils108
 
11.01.16
12:57
(31) (32) (33) Спасибо большое, речь именно об этом.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой