Обновить данные на форме

1. user1008893 05.02.19 11:23 Сейчас в теме
На форме элемента,справочник Номенклатура. Изменяем объем и вес. Данные обновляются только после нового открытия номенклатуры.
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
	
	ПосчитатьОбъемы(Ссылка);

	-----------код-------
ЭтаФорма.Прочитать();	

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

Процедура ПосчитатьОбъемы(Ссылка) 
ЗапросОбъем=Новый Запрос; 
ЗапросОбъем.Текст= "ВЫБРАТЬ 
|	СУММА(ШаблоныСхемПакованияТЧСостав.ШаблонУпаковки.Вес) КАК Вес, 
|	ШаблоныСхемПакования.Владелец, 
|	СУММА(ШаблоныСхемПакованияТЧСостав.ШаблонУпаковки.Объем) КАК Объем, 
|	ШаблоныСхемПакования.Ссылка 
|ИЗ 
|	Справочник.ШаблоныСхемПакования.ТЧСостав КАК ШаблоныСхемПакованияТЧСостав 
|	ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ШаблоныСхемПакования КАК ШаблоныСхемПакования 
|	ПО ШаблоныСхемПакованияТЧСостав.Ссылка = ШаблоныСхемПакования.Ссылка 
|ГДЕ 
|	ШаблоныСхемПакования.Владелец = &Ссылка 
| 
|СГРУППИРОВАТЬ ПО 
|	ШаблоныСхемПакования.Владелец, 
|	ШаблоныСхемПакования.Ссылка" ; 
ЗапросОбъем.УстановитьПараметр("Ссылка", Ссылка); 
Выборка = ЗапросОбъем.Выполнить().Выбрать(); 

Пока Выборка.Следующий() Цикл 
Элемент = Выборка.Владелец.ПолучитьОбъект(); 
Элемент.Объем= Выборка.Объем; 
Элемент.Вес=Выборка.Вес; 
Элемент.Записать(); 
КонецЦикла;

КонецПроцедуры
Показать

Помогите пожалуйста...
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
48. Al-X 05.02.19 14:31 Сейчас в теме
(35) Если вы хотите, чтобы на форме элемента справочника обновлялись реквизиты после закрытия формы Шаблонов, то вам надо написать (для управляемых форм):

В форме элемента шаблонов:

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
      Оповестить("ЗаписалиШаблонДляНоменклатуры");
КонецПроцедуры


А на форме номенклатуры:

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	Если ИмяСобытия = "ЗаписалиШаблонДляНоменклатуры" Тогда 
        ЭтотОбъект.Прочитать();
    КонецЕсли;
КонецПроцедуры
user705522_constantin_h; +1
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. vlad636 4 05.02.19 11:30 Сейчас в теме
(1) Так в чем вопрос-то? Чем помочь?
+
3. user1008893 05.02.19 11:31 Сейчас в теме
(2)Данные обновляются только после нового открытия номенклатуры. Не обновляются данные на форме
+
4. vlad636 4 05.02.19 11:32 Сейчас в теме
(3) Ну так и написано в процедуре ПередОткрытием. А когда надо?
+
6. user1008893 05.02.19 11:34 Сейчас в теме
(4)Когда я в шаблоне меняю вес и объем,после этого сразу должно меняться. То есть прям в открытой форме
+
9. vlad636 4 05.02.19 11:38 Сейчас в теме
(6) В (5) правильно написали
ben19791010; +1
10. user1008893 05.02.19 11:43 Сейчас в теме
(9)нет,так не срабатывает
+
11. user1008893 05.02.19 11:46 Сейчас в теме
(9)Нажимаю Перейти -Шаблоны-там заполняю вес и объем.Закрываю потом и надо чтобы данные номенклатуры обновились
Прикрепленные файлы:
+
12. vlad636 4 05.02.19 11:52 Сейчас в теме
(11) Чтобы данные обновились на форме надо и менять элементы формы, а не объекта.
+
13. user1008893 05.02.19 11:54 Сейчас в теме
14. vlad636 4 05.02.19 11:56 Сейчас в теме
(11) Попробуй вместо:
Пока Выборка.Следующий() Цикл 
Элемент = Выборка.Владелец.ПолучитьОбъект(); 
Элемент.Объем= Выборка.Объем; 
Элемент.Вес=Выборка.Вес; 
Элемент.Записать(); 
КонецЦикла;


Написать что-то типа этого:
Пока Выборка.Следующий() Цикл 
ЭтаФорма.ЭлементыФормы.Объем= Выборка.Объем; 
ЭтаФорма.ЭлементыФормы.Вес=Выборка.Вес; 
ЭтаФорма.Обновить();
КонецЦикла;
+
15. user1008893 05.02.19 11:58 Сейчас в теме
(14)Поле недоступно для записи.
Все правильно работает у меня.НО надо просто обновить данные на форме.
+
16. Xershi 1484 05.02.19 11:59 Сейчас в теме
(15) после программной записи объекта его нужно перечитать или обновить. Т.к. клиент не знает, что вы нахимили с объектом что-то!
+
18. vlad636 4 05.02.19 12:02 Сейчас в теме
(16) А зачем каждый раз перезаписывать объект, мне кажется достаточно обновить элементы формы
+
19. Xershi 1484 05.02.19 12:10 Сейчас в теме
(18) автору так больше нравится, хоть это и архитектурная ошибка.
+
20. user1008893 05.02.19 12:20 Сейчас в теме
(18)Поле объекта недоступно для записи (Объем)
ЭтаФорма.ЭлементыФормы.Объем= Выборка.Объем;
+
21. vlad636 4 05.02.19 12:31 Сейчас в теме
(20) Попробуйте так написать:
Пока Выборка.Следующий() Цикл 
Объем= Выборка.Объем; 
Вес=Выборка.Вес; 
КонецЦикла;
+
22. user1008893 05.02.19 12:35 Сейчас в теме
(21)обновить не дает теперь
Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(218)}: Ошибка при установке значения атрибута контекста (Доступность)
ЭлементыФормы.НоменклатурнаяГруппа.Доступность = мфНоменклатураИспользуется;
по причине:
Несоответствие типов
+
23. vlad636 4 05.02.19 12:40 Сейчас в теме
(22) Может я не до конца понял задачу?
В открываете Номенклатуру. Из нее подчиненный справочник ШаблоныСхемПакования, там меняете объем и вес в табличной части Состав и нажав ОК Хотите увидеть пересчитанные объем и вес в уже открытой форме номенклатуры?
+
24. user1008893 05.02.19 12:40 Сейчас в теме
25. vlad636 4 05.02.19 12:45 Сейчас в теме
(24) Тогда как-то так: Записываете объект Номенклатуры как Вы первоначально писали, только не в процедуре формы справочника номенклатура, а при записи элемента справочника ШаблоныСхемПакования, а затем ищете форму элемента справочника Номенклатура и обновляете ее.
+
26. vlad636 4 05.02.19 12:49 Сейчас в теме
(24) Я искал открытую форму так (Это для примера, подставите свое наименование формы и имя объекта):
ФормаЭлемента = Объект.ПолучитьФорму("ФормаЭлемента");
+
27. user1008893 05.02.19 12:54 Сейчас в теме
(26)обновлять не дает из за вот этой строки
ЭлементыФормы.НоменклатурнаяГруппа.ТолькоПросмотр = мфНоменклатураИспользуется;
+
29. vlad636 4 05.02.19 13:00 Сейчас в теме
(27) Какая конфигурация? Типовая?
+
31. user1008893 05.02.19 13:02 Сейчас в теме
28. user1008893 05.02.19 12:59 Сейчас в теме
(26)
Процедура ПриЗаписи(Отказ)
	ПосчитатьОбъемы(Ссылка);
КонецПроцедуры

Процедура ПосчитатьОбъемы(Ссылка) 
ЗапросОбъем=Новый Запрос; 
ЗапросОбъем.Текст= "ВЫБРАТЬ 
|	СУММА(ШаблоныСхемПакованияТЧСостав.ШаблонУпаковки.Вес) КАК Вес, 
|	ШаблоныСхемПакования.Владелец, 
|	СУММА(ШаблоныСхемПакованияТЧСостав.ШаблонУпаковки.Объем) КАК Объем, 
|	ШаблоныСхемПакования.Ссылка 
|ИЗ 
|	Справочник.ШаблоныСхемПакования.ТЧСостав КАК ШаблоныСхемПакованияТЧСостав 
|	ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ШаблоныСхемПакования КАК ШаблоныСхемПакования 
|	ПО ШаблоныСхемПакованияТЧСостав.Ссылка = ШаблоныСхемПакования.Ссылка 
|ГДЕ 
|	ШаблоныСхемПакования.Владелец = &Ссылка 
| 
|СГРУППИРОВАТЬ ПО 
|	ШаблоныСхемПакования.Владелец, 
|	ШаблоныСхемПакования.Ссылка" ; 
ЗапросОбъем.УстановитьПараметр("Ссылка", Ссылка); 
Выборка = ЗапросОбъем.Выполнить().Выбрать(); 
формаэл=Справочники.Номенклатура.ПолучитьФорму("ФормаЭлемента");

Пока Выборка.Следующий() Цикл 
Элемент = Выборка.Владелец.ПолучитьОбъект();
Элемент.Объем= Выборка.Объем; 
Элемент.Вес=Выборка.Вес; 
Элемент.Записать(); 
КонецЦикла;

КонецПроцедуры
Показать
+
32. vlad636 4 05.02.19 13:05 Сейчас в теме
(28) Перед КонецПроцедуры попробуй написать:
ФормаЭлемента = Элемент.ПолучитьФорму("ФормаЭлемента");
ФормаЭлемента.Обновить();
+
33. vlad636 4 05.02.19 13:07 Сейчас в теме
(28) Это же процедура ПриЗаписи элемента справочника ШаблоныСхемПакования?
+
34. user1008893 05.02.19 13:07 Сейчас в теме
(33)да,обновлять не дает
+
36. vlad636 4 05.02.19 13:09 Сейчас в теме
(34) Попробуй как в (30) советуют, без обновления
+
37. user1008893 05.02.19 13:11 Сейчас в теме
(36)работает,но надо перезаходить в номенклатуру
т.е. так же как и было
+
38. vlad636 4 05.02.19 13:13 Сейчас в теме
(37) Надо тогда разбираться с ошибкой в строке
ЭлементыФормы.НоменклатурнаяГруппа.ТолькоПросмотр = мфНоменклатураИспользуется; и обновлять форму
+
39. user1008893 05.02.19 13:13 Сейчас в теме
(38)ну типо только просмотр,может поэтому?
+
40. vlad636 4 05.02.19 13:20 Сейчас в теме
(39) Попробуй закомменти эту строку, обновится форма?
+
41. user1008893 05.02.19 13:25 Сейчас в теме
(40)перенесла вызов процедуры ПосчитатьОбъемы чуть пониже и все работает,но форме не обновляется
+
42. Swetlana 25 05.02.19 13:37 Сейчас в теме
(41) на форме надо писать этот код в процедуре при изменении данного поля формы
+
43. user1008893 05.02.19 13:41 Сейчас в теме
(42)так не работает вообще
+
44. Swetlana 25 05.02.19 13:44 Сейчас в теме
(43) у вас же не управляемые формы, судя по картинке в (11) ?

если так все должно работать, просто на картинке покажите что и как вы делаете

иначе получаются одни гадания
+
45. user1008893 05.02.19 13:47 Сейчас в теме
(44)нажимаю,перейти-там справочник шаблонов-там меняю вес и объем и в номенклатуре должно поменяться объем и вес
+
17. vlad636 4 05.02.19 12:01 Сейчас в теме
(15) Подкорректировал код в (14).
+
7. ben19791010 05.02.19 11:34 Сейчас в теме
(4)
А когда надо?
ванга думает что при записи )) Форма.Записать();
+
5. SedovSU@mail.ru 297 05.02.19 11:34 Сейчас в теме
(3) Вам нужно процедуру ПосчитатьОбъемы(Ссылка) вызывать при изменении объема и веса в процедурах ОбъемПриИзменении(Элемент), ВесПриИзменении(Элемент). А сейчас у вас только лишь при открытии
Swetlana; ben19791010; +2
58. ilya_i 06.02.19 12:50 Сейчас в теме
раскуривать событие ОбработкаОжидания, смотреть в СП ПодключитьОбработчикОжидания
+
8. vlad636 4 05.02.19 11:37 Сейчас в теме
Я смотрю тут одни экстрасенсы собрались... =)
+
30. Swetlana 25 05.02.19 13:01 Сейчас в теме
ЭтаФорма.ЭлементыФормы.Вес.Значение=Выборка.Вес;
+
35. user1008893 05.02.19 13:08 Сейчас в теме
(30)Все работает,но не обновляется
+
46. user1088693 05.02.19 14:24 Сейчас в теме
(35) Попробуете так написать:

Объект.Вес = Выборка.Вес
+
47. user1008893 05.02.19 14:26 Сейчас в теме
(46)
ЗапросОбъем=Новый Запрос; 
ЗапросОбъем.Текст= "ВЫБРАТЬ 
|    СУММА(ШаблоныСхемПакованияТЧСостав.ШаблонУпаковки.Вес) КАК Вес, 
|    ШаблоныСхемПакования.Владелец, 
|    СУММА(ШаблоныСхемПакованияТЧСостав.ШаблонУпаковки.Объем) КАК Объем, 
|    ШаблоныСхемПакования.Ссылка 
|ИЗ 
|    Справочник.ШаблоныСхемПакования.ТЧСостав КАК ШаблоныСхемПакованияТЧСостав 
|    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ШаблоныСхемПакования КАК ШаблоныСхемПакования 
|    ПО ШаблоныСхемПакованияТЧСостав.Ссылка = ШаблоныСхемПакования.Ссылка 
|ГДЕ 
|    ШаблоныСхемПакования.Владелец = &Ссылка 
| 
|СГРУППИРОВАТЬ ПО 
|    ШаблоныСхемПакования.Владелец, 
|    ШаблоныСхемПакования.Ссылка" ; 
ЗапросОбъем.УстановитьПараметр("Ссылка", Ссылка); 
Выборка = ЗапросОбъем.Выполнить().Выбрать(); 

Пока Выборка.Следующий() Цикл 
Элемент = Выборка.Владелец.ПолучитьОбъект(); 
Элемент.Объем= Выборка.Объем; 
Элемент.Вес=Выборка.Вес; 
Элемент.Записать(); 
КонецЦикла;
Показать

Вернула обратно,к виду который был. Потому что надо прям записывать,т.к. до этого в отчет брались неправильные данные
+
48. Al-X 05.02.19 14:31 Сейчас в теме
(35) Если вы хотите, чтобы на форме элемента справочника обновлялись реквизиты после закрытия формы Шаблонов, то вам надо написать (для управляемых форм):

В форме элемента шаблонов:

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
      Оповестить("ЗаписалиШаблонДляНоменклатуры");
КонецПроцедуры


А на форме номенклатуры:

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	Если ИмяСобытия = "ЗаписалиШаблонДляНоменклатуры" Тогда 
        ЭтотОбъект.Прочитать();
    КонецЕсли;
КонецПроцедуры
user705522_constantin_h; +1
49. user1008893 05.02.19 14:33 Сейчас в теме
50. Al-X 05.02.19 14:35 Сейчас в теме
(49)Для обычных просто убрать &НаКлиенте
+
51. user1008893 05.02.19 14:44 Сейчас в теме
(50)нет,не срабатывает
+
52. Al-X 05.02.19 14:55 Сейчас в теме +1 $m
Надеюсь процедуры "ПриЗакрытии" и "ОбработкаОповещения" ты прописываешь через события формы? Ну тогда не знаю...
+
53. user1008893 05.02.19 14:56 Сейчас в теме
(52)да, через события
+
54. user1008893 05.02.19 15:04 Сейчас в теме
(52)Все сработало,Сделала вот так

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ЗаписалиШаблонДляНоменклатуры" Тогда 
	ПосчитатьОбъемы(Ссылка);
	ЭтаФорма.Прочитать();
    КонецЕсли;
+
55. user1008893 06.02.19 09:47 Сейчас в теме
(52)сейчас,вышла проблема. Раньше когда делали копирование номенклатуры,происходило копирование с некотрыми заполнеными реквизитами,а сейчас пустые реквизиты. поняла,что в процедуре ПередОткрытием мы написали

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

Из за этого вся форма обновляется и теряет те данные. Можно это как то подправить?
+
56. Al-X 06.02.19 11:05 Сейчас в теме
(55) Самый простой вариант, в Процедуре "ПриОткрытии" перед "ПосчитатьОбъемы(Ссылка);" записать реквизиты, не МЕНЯЮЩИЕСЯ в расчете объема, в переменные ,а потом после "ЭтаФорма.Прочитать()" вернуть реквизитам объекта данные из временных переменных...
+
57. user1008893 06.02.19 11:07 Сейчас в теме
подскажите пожалуйста,подробнее с примерами
Там очень много реквизитов
+
59. ilya_i 06.02.19 13:04 Сейчас в теме
Как вариант вместо
ЭтаФорма.Прочитать();
написать
Если НЕ ЭтоНовый() Тогда ЭтаФорма.Прочитать(); КонецЕсли;
+
60. user1008893 06.02.19 13:09 Сейчас в теме
(59)Спасибо,так и сделала уже
+
61. user1008893 06.02.19 13:10 Сейчас в теме
(59)теперь надо,чтобы при копировании не копировались данные веса и объема ,т.е. были 0
+
62. Irishka_87 07.02.19 08:36 Сейчас в теме
(61) В модуле объекта нужно прописать процедуру ПриКопировании:
Процедура ПриКопировании(ОбъектКопирования)
Объем = 0;
Вес =0;
КонецПроцедуры
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот