Имя: Пароль:
1C
1С v8
Вопрос по УФ. Режим отладки пока не могу запустить. Помоги понять.
,
0 razbiralshik
 
22.02.13
11:23
&НаКлиенте
Процедура СчетФактураНажатие(Элемент, СтандартнаяОбработка)
   ФормаСФПолученный = ОбработкаУФ.уфСчетФактураНажатие(ЭтаФорма,Элемент,"СчетФактураПолученный");
   ФормаСФПолученный.Открыть();
КонецПроцедуры

Функция уфСчетФактураНажатие(ЭтаФорма, Элемент, ВидСФ) Экспорт
   МассивВидов       = Новый Массив(1);
   МассивВидов[0]    = ВидСФ;
   МассивПодчиненных = уфПолучитьМассивПодчиненных(Этаформа.Ссылка,МассивВидов, Истина);
   Если (НЕ МассивПодчиненных = Неопределено) И (МассивПодчиненных.Количество() > 0) Тогда
       // счет-фактура найден, откроем его
       СчетФактура = МассивПодчиненных[0].Ссылка;
   Иначе
       // счет-фактура НЕ найден, введем новый
       СчетФактура = Документы[ВидСФ].СоздатьДокумент();
       СчетФактура.Заполнить(ЭтаФорма.Ссылка);
   КонецЕсли;
   // откроем форму
   ФормаСФ = СчетФактура.ПолучитьФорму( ,ЭтаФорма);
   ФормаСФ.ПараметрОснование = ЭтаФорма.Ссылка;
   Возврат ФормаСФ;
КонецФункции// уфСчетФактураНажатие()


{ОбщийМодуль.ОбработкаУФ.Модуль(12,17)}: Переменная не определена (Документы)
       СчетФактура = <<?>>Документы[ВидСФ].СоздатьДокумент();


А если ставишь функцию уфСчетФактураНажатие с тегом &НаСервере, то вообще не видит ее. У ОМ стоит Клиент (УП), Клиент (ОП), Сервер, Вызов сервере.
1 GANR
 
22.02.13
11:24
(0) в поиск, ключевое слово DEBUG
2 razbiralshik
 
22.02.13
11:25
(1) не "не умею запускать в режиме отладки", а не могу по определенным причинам, нельзя рестартить пока сервак, может тока в пн получится.
3 GANR
 
22.02.13
11:32
(2) ПолучитьФорму на сервере никогда не сработает. подожди - сейчас пришлю код.
4 Жан Пердежон
 
22.02.13
11:36
(2) разверни базу в файловый вариант и там отлаживай
5 razbiralshik
 
22.02.13
11:39
(4) не развернется, там регистры адовые
6 Рыцарь
 
22.02.13
11:46
Процедура СчетФактураНажатие находится в обработке уфСчетФактураНажатие?
7 Рыцарь
 
22.02.13
11:47
(6) * ОбработкаУФ
8 GANR
 
22.02.13
11:48
(2) Обе процедуры в модуль формы и...
как-то так... точно знать не могу - конфы перед глазами нету, остальное - в синтаксис-помощнике

&НаКлиенте
Процедура СчетФактураНажатие(Элемент, СтандартнаяОбработка)

   СсылкаНаСФ = ПолучитьСчетФактуру(Этаформа.Объект.Ссылка);

   // форма откроется и получится ТОЛЬКО на клиенте
   // алгоритм заполнения - перепиши САМ в ПриСозданииНаСервере докуметна СФ
   // если ЭтаФорма.Параметры.Ключ.Пустая() - признак нового и незаписанного документа

   ПараметрыФормы = Новый Структура("Ключ, Основание", СсылкаНаСФ, Этаформа.Объект.Ссылка);
   ОткрытьФорму("Документ.СчетФактура.ФормаОбъекта", ПараметрыФормы);
   
КонецПроцедуры

&НаСервереБезКонтекста
Функция уфСчетФактураНажатие(СсылкаНаОснование) Экспорт

   МассивВидов       = Новый Массив(1);
   МассивВидов[0]    = "СчетФактураПолученный";
   МассивПодчиненных = уфПолучитьМассивПодчиненных(СсылкаНаОснование, МассивВидов, Истина);

   Если МассивПодчиненных <> Неопределено
     И МассивПодчиненных.Количество() <> 0 Тогда

       СчетФактура = МассивПодчиненных[0].Ссылка;
   Иначе
       СчетФактура = Документы.СчетФактура.ПустаяСсылка();
   КонецЕсли;

   Возврат СчетФактура;

КонецФункции
9 GANR
 
22.02.13
11:54
А на код из (0) - почему он должен работать???

- ОбработкаОбъект на клиенте не виден
- ПолучитьФорму на сервере не сработает
- Элемент, передаваемый в процедуру потенциально может вообще выдать ошибку "мутабельное значение" (сейчас не вызывает - повезло)
10 GANR
 
22.02.13
11:57
>&НаСервереБезКонтекста
Функция уфСчетФактураНажатие(СсылкаНаОснование) Экспорт

&НаСервереБезКонтекста
Функция ПолучитьСчетФактуру(СсылкаНаОснование) Экспорт
11 GANR
 
22.02.13
11:57
&НаКлиенте
Процедура СчетФактураНажатие(Элемент, СтандартнаяОбработка)

   СсылкаНаСФ = ПолучитьСчетФактуру(Этаформа.Объект.Ссылка);

   // форма откроется и получится ТОЛЬКО на клиенте

   // алгоритм заполнения - перепиши САМ в ПриСозданииНаСервере докуметна СФ

   // если ЭтаФорма.Параметры.Ключ.Пустая() - признак нового и незаписанного документа


   ПараметрыФормы = Новый Структура("Ключ, Основание", СсылкаНаСФ, Этаформа.Объект.Ссылка);
   ОткрытьФорму("Документ.СчетФактура.ФормаОбъекта", ПараметрыФормы);
   
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьСчетФактуру(СсылкаНаОснование) Экспорт

   МассивВидов       = Новый Массив(1);
   МассивВидов[0]    = "СчетФактураПолученный";
   МассивПодчиненных = уфПолучитьМассивПодчиненных(СсылкаНаОснование, МассивВидов, Истина);

   Если МассивПодчиненных <> Неопределено
     И МассивПодчиненных.Количество() <> 0 Тогда

       СчетФактура = МассивПодчиненных[0].Ссылка;
   Иначе
       СчетФактура = Документы.СчетФактура.ПустаяСсылка();
   КонецЕсли;

   Возврат СчетФактура;

КонецФункции
12 acsent
 
22.02.13
11:58
поставь сервер у себя, скопируй базу
13 razbiralshik
 
22.02.13
12:00
(11) ну да, можно и так, только документов таких с вводом СФ много и в каждом такой код прописывать... много строк повторяющихся получится...
14 GANR
 
22.02.13
12:06
(13) тогда ПолучитьСчетФактуру - в общий модуль с галочками "На сервере" и "Вызов сервера"
15 razbiralshik
 
22.02.13
12:35
(14) спасибо! адаптировал под себя, заработало.
чето я совсем запутался в этих флажках общих модулей, почему у меня не работало с моими флажками? разве если ставишь один флажок, то он не дополняет возможности?