Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: контекст формы для разных пользователей
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
DAS_Alex
Интересует как ведет себя 1С в следующем случае. На форме документа А есть кнопка с помощью которой открывается вспомогательный документ Б.
код такой:

Парам = СоздатьОбъект("СписокЗначений"); 
Парам.ДобавитьЗначение(Контекст,"Конт");    
ОткрытьФорму("Документ.вспомогательный Парам,);


В ПриЗаписи() вспомогательного

Если ТипЗначения(Форма.Параметр) = 100 Тогда
    формаА = Форма.Параметр.Получить("Конт");
    формаА.реквизит=номердок;  
    формаА.форма.обновить();
КонецЕсли;


На двух разных компах, в одно время, открывают документ А и вызывают вспомогательный документ Б, передается контекст формы документа одного вида
разных по номеру. Как в ПриЗаписи() вспомогательного документа 1С различит контекст формы документа А?
igmig65
Используйте Транзакцию
-=VJ=-
Цитата(DAS_Alex @ 10.06.11, 14:43) необходимо зарегистрироваться для просмотра ссылки
На двух разных компах, в одно время, открывают документ А и вызывают вспомогательный документ Б, передается контекст формы документа одного вида
разных по номеру. Как в ПриЗаписи() вспомогательного документа 1С различит контекст формы документа А?


Не понимаю суть вопроса. Это же разные объекты, зачем 1С различать, если она об этом и так знает?
awp
Цитата(DAS_Alex @ 10.06.11, 15:43) необходимо зарегистрироваться для просмотра ссылки
Интересует как ведет себя 1С в следующем случае. На форме документа А есть кнопка с помощью которой открывается вспомогательный документ Б.
код такой:

Парам = СоздатьОбъект("СписокЗначений"); 
Парам.ДобавитьЗначение(Контекст,"Конт");    
ОткрытьФорму("Документ.вспомогательный Парам,);


В ПриЗаписи() вспомогательного

Если ТипЗначения(Форма.Параметр) = 100 Тогда
    формаА = Форма.Параметр.Получить("Конт");
    формаА.реквизит=номердок;  
    формаА.форма.обновить();
КонецЕсли;


На двух разных компах, в одно время, открывают документ А и вызывают вспомогательный документ Б, передается контекст формы документа одного вида
разных по номеру. Как в ПриЗаписи() вспомогательного документа 1С различит контекст формы документа А?


Никак не различит. Если вспомогательный документ будет разный то каждый из них будет видеть свой номер. При записи главного документа - будет блокировка.
DAS_Alex
Цитата
Не понимаю суть вопроса. Это же разные объекты, зачем 1С различать, если она об этом и так знает?


Бывают случаи, когда номер вспомогательного записывается не в тот документ А из которого его создавали 02000000.gif 09000000.gif
-=VJ=-
Цитата(DAS_Alex @ 11.06.11, 8:27) необходимо зарегистрироваться для просмотра ссылки
Бывают случаи, когда номер вспомогательного записывается не в тот документ А из которого его создавали 02000000.gif 09000000.gif


Так не бывает. Параметр передан из определенного контекста и возвращается обратно туда же.
Если что-то такое и происходит, то причина должна быть в чем-то другом.
awp
Цитата(DAS_Alex @ 10.06.11, 15:43) необходимо зарегистрироваться для просмотра ссылки
На форме документа А есть кнопка с помощью которой открывается вспомогательный документ Б.
На двух разных компах, в одно время, открывают документ А



Цитата(DAS_Alex @ 11.06.11, 9:27) необходимо зарегистрироваться для просмотра ссылки
Бывают случаи, когда номер вспомогательного записывается не в тот документ А из которого его создавали 02000000.gif 09000000.gif



Что-то не вяжется.
DAS_Alex
Цитата
Так не бывает. Параметр передан из определенного контекста и возвращается обратно туда же.
Если что-то такое и происходит, то причина должна быть в чем-то другом.

Так бывает, а почему хотелось бы узнать. Может кто-то знает, что там у 1С внутри делается? В каких ситуациях такое может произойти?
-=VJ=-
Цитата(DAS_Alex @ 13.06.11, 16:57) необходимо зарегистрироваться для просмотра ссылки
Так бывает, а почему хотелось бы узнать. Может кто-то знает, что там у 1С внутри делается? В каких ситуациях такое может произойти?


Ни в каких.
Можно ещё попробовать поспорить, можно поискать вместо этого реальную причину.
5_kopeek
Если у Вас возникают сомнения, не путаются ли между собой значения параметров, передаваемых из разных основных документов, можете получить значение атрибута Параметр в ПриОткрытии() вспомогательного документа. И в дальнейшем работать с локальной переменной, дабы избежать использования атрибута Форма.Параметр после открытия второго основного документа:
Перем СписокПараметров;

Процедура ПриОткрытии()
    ...
    СписокПараметров=Форма.Параметр;
    ...
КонецПроцедуры


ПриЗаписи()
    ...
    ФормаА=СписокПараметров.Получить("Конт");
    ...
    ФормаА.УстановитьАтрибут("Реквизит",НомерДок);
    ...
КонецПроцедуры()


Или значение контекста основного документа получить еще в ПриОткрытии() и работать в дальнейшем с уже полученным контекстом:

Перем ФормаА;

Процедура ПриОткрытии()
    СписокПараметров=Форма.Параметр;
    ФормаА=СписокПараметров.Получить("Конт");
    ...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.