Имя: Пароль:
1C
1C 7.7
v7: Поменять значение в реквизите формы программно
0 mnimo
 
22.08.11
12:27
На форме есть таблица, таблица формируется их файла.
Таблица=СоздатьОбъект("Таблица");  
Таблица.ИсходнаяТаблица("Ф_433_1");
Эта таблица-есть визуализация проводок.
Я пытаюсь проверить заполнено ли поле "договор".
И если оно пустое выбрать договор из справочника и подставить естестно.
При выборе договора, выпадает меню в котором ешё нужно выбрать Общие договоры или договоры контрагентов. Потом уже появляется справочник с отфильтрованным договором, где надо проверить на наличие вообще договора.

ВОт не получается нифига.


Док=СоздатьОбъект("Документ.ПоступлениеНаСчет");
Док.ВыбратьДокументы(НачДата,КонДата);
   Пока Док.ПолучитьДокумент() = 1 Цикл
       Сообщить("Проверяю документ "+Док.НомерДок);
ОснРас=Док.ПолучитьАтрибут("ОснованиеРасчетов");
       Если Док.Контрагент.Выбран()=1 Тогда
               Сообщить("Контрагент выбран, для документа №"+Док.НомерДок);
       Если ПустоеЗначение(ОснРас)=1 Тогда
           Сообщить("Не стоит договор у "+Док.Контрагент.Наименование);
КонецЕсли;
КонецЕсли;
КонецЦикла;
1 mnimo
 
22.08.11
12:29
Проблема в том что у меня проверка на наличие поставленного договора не отрабатывает.
2 Ёпрст
 
гуру
22.08.11
12:29
(0) это что-то бессознательное ?
Чего хотел то ?
При чем тут таблица и код, что ниже ?
3 mnimo
 
22.08.11
12:31
(2)Просто там строки таблицы (как я понимаю) программно формируются.Не могу проверить на наличие проставленного договора.
4 mnimo
 
22.08.11
12:32
(2)я просто буксую уже, надоело.Извиняюсь конечно.
5 __Se24
 
22.08.11
12:34
отладчиком непробовал пользоваться ???
6 Ork
 
22.08.11
12:35
(0) Попробуй

ПустоеЗначение(ОснРас)=1

заменить на

ПустоеЗначение(Док.ОснРас)=1

или

ПустоеЗначение(Док.Контрагент.ОснРас)=1
7 __Se24
 
22.08.11
12:36
(6) ОснРас не реквизит , это переменная , так что неполучится
8 Ork
 
22.08.11
12:39
(7) Судя по вот этому :

Если ПустоеЗначение(ОснРас)=1 Тогда
  Сообщить("Не стоит договор у " + Док.Контрагент.Наименование);

Проверяется таки реквизит. Документа или Элемента справочника - уж не знаю. Тут ТС виднее.
9 __Se24
 
22.08.11
12:39
Автор , ты сначала разберись , что у тебя не работает , потом вопросы на форуме задавай ! Эффективнее будет
10 __Se24
 
22.08.11
12:40
(8) проверяется переменная , которой присвоен реквизит .
11 Ork
 
22.08.11
12:40
+(8) А... Доглядел.
ОснРас=Док.ПолучитьАтрибут("ОснованиеРасчетов");

Таки переменная.
12 mnimo
 
22.08.11
12:41
(5)Пробовал.
ОснРас=Док.ПолучитьАтрибут("ОснованиеРасчетов");
Вот э
то постоянно пустое.
Хотя если взять счёт, который явно расположен на форме, то возвращает значение без проблем.
13 mnimo
 
22.08.11
12:44
(12)Наверное потому что нужно обращаться к табличной части???А потом уже к реквизиту табличной части???
14 mnimo
 
22.08.11
12:49
Строки перебрать нужно, так наверно???
15 mnimo
 
22.08.11
12:55
Что я затупил жёстко. Спасибо! раскочали хоть.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший