Имя: Пароль:
1C
1С v8
1с 8.2 Хранилище значений и ТЗ
0 zvivla
 
16.01.12
16:24
Здравствуйте! столкнулась вот с какой проблемой:
Есть форма документа, реквизит документа-хранилище значений, в которое при закрытии сохраняется ТЗ, а при открытии разворачивается в ТЗ из хранилища.

Из этой формы я открываю другую форму, передаю ей имя активной ячейки и номер строки, пользователь совершает какие-то действия и при закрытии второй формы в активную ячейку первой формы должно передаваться значение, но выдается ошибка. Оказывается если из второй формы посмотреть количество строк ТЗ первой формы, то оно равно нулю, хотя это не так.

Вопрос- Почему?? =)
1 vmv
 
16.01.12
16:26
очевидно 2-ая форма читает НЕ Акутальный контескст 1-0й формы, если есть фото, то можно подумать.

а блин, я не посмотрел пол, сегодня понедельник - не будем занудами
2 Scooter
 
16.01.12
16:29
(0)а зачем ТЗ в ХЗ?
3 zvivla
 
16.01.12
16:32
форма слишком громоздкая и проще работать, сохраняя ее в ХЗ
4 zvivla
 
16.01.12
16:32
Как может быть контекст не актуален из-за чего?
5 vmv
 
16.01.12
16:33
(2) это приемлемо, почему нет в исключительных случаях, если ТЗ не содержит критичные данные БД, а скорее сервисные формы
7 GROOVY
 
16.01.12
16:35
Как передаете данные во вторую форму?
8 vmv
 
16.01.12
16:36
(4) пока вы не уточните логику по ключевой фразе темы

"Оказывается если из второй формы посмотреть количество строк ТЗ первой формы"(с)

то наш диалог будет похож на беседу слепого с глухим - это забавно, но не продуктивно
9 zvivla
 
16.01.12
16:44
http://s018.radikal.ru/i506/1201/9d/97ee094c05d2.jpg фото

При активизации ячейки в ТЗ первой формы открывается вторая
&НаКлиенте
Процедура ЛистПриАктивизацииЯчейки(Элемент)
   Если Элемент.ТекущийЭлемент.Имя <> "Наименование" и Элемент.ТекущийЭлемент.Имя <> "ЧислоРазТаб" Тогда
       ФФ = ПолучитьФорму("Документ.ПроцедурныйЛист.Форма.Форма");
       ФФ.Наименование = НаименованиеПолное;          
       ФФ.ЧислоРазНазначено = Лист[Элемент.ТекущаяСтрока]["ЧислоРаз"];
       ФФ.ЧислоРазСделано=Лист[Элемент.ТекущаяСтрока][Элемент.ТекущийЭлемент.Имя]    ;
   //    ФФ.ОсталосьРаз = ЧислоРаз-ФФ.ЧислоРазСделано;
       ФФ.День = Элемент.ТекущийЭлемент.Имя;
       ФФ._Строка = Элемент.ТекущаяСтрока;
       ФФ._Имя = Элемент.ТекущийЭлемент.Имя;
       Сообщить(строка(Элемент.ТекущаяСтрока)+"*"+Элемент.ТекущийЭлемент.Имя+"г");

       ФФ.Открыть();
   КонецЕсли;

КонецПроцедуры


Открывается корректно

Изменяю что мне надо во второй форме и при нажатии на кнопку ОК
пытаюсь передать в ячейку ТЗ первой формы значение последней строки из таблицы "Сделано"

&НаКлиенте
Процедура Ок(Команда)
   ФФ = ПолучитьФорму("Документ.ПроцедурныйЛист.Форма.ФормаДокумента");      
   Если  ВыдачаЛекарств.Количество()>0 Тогда
       Сообщить(Строка(фф.Лист.Количество()));            
       фф.Лист[_Строка][_Имя]=ВыдачаЛекарств[ВыдачаЛекарств.Количество()-1]["Сделано"];
   КонецЕсли;      
   ЭтаФорма.Закрыть();

КонецПроцедуры


Не срабатывает ибо Сообщить(Строка(фф.Лист.Количество()));    показывает 0
10 zvivla
 
16.01.12
16:46
передаю имя и строку активной ячейки ТЗ первой формы в реквизиты второй формы
11 GROOVY
 
16.01.12
16:49
Передавайте третьим параметрос в открываемою форму форму-владелец. И обращайтесь к ней напрямую по выражению "Владелец" вызывая из нее экспортную процедуру.
12 zvivla
 
16.01.12
17:16
а целиком ТЗ нельзя передать? через Выгрузить.
Пардон за возможно глупый вопрос
13 GROOVY
 
16.01.12
17:19
Нет
14 zvivla
 
16.01.12
17:50
Не могу сообразить как передавать владельца, какого типа должен быть реквизит у формы приемщика?
15 V_V_V
 
16.01.12
17:56
(14) ПолучитьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>)
16 zvivla
 
16.01.12
18:07
ФФ = ПолучитьФорму("Документ.ПроцедурныйЛист.Форма.ФормаДокумента", Новый Структура("Владелец", ЭтаФорма));  


Работает!)

Всем большое спасибо!
17 V_V_V
 
16.01.12
18:13
(16) А можно было проще, пропустив параметры:
ФФ = ПолучитьФорму("Документ.ПроцедурныйЛист.Форма.ФормаДокумента", , ЭтаФорма);