На форме элемента,справочник Номенклатура. Изменяем объем и вес. Данные обновляются только после нового открытия номенклатуры.
Помогите пожалуйста...
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
ПосчитатьОбъемы(Ссылка);
-----------код-------
ЭтаФорма.Прочитать();
КонецПроцедуры
Процедура ПосчитатьОбъемы(Ссылка)
ЗапросОбъем=Новый Запрос;
ЗапросОбъем.Текст= "ВЫБРАТЬ
| СУММА(ШаблоныСхемПакованияТЧСостав.ШаблонУпаковки.Вес) КАК Вес,
| ШаблоныСхемПакования.Владелец,
| СУММА(ШаблоныСхемПакованияТЧСостав.ШаблонУпаковки.Объем) КАК Объем,
| ШаблоныСхемПакования.Ссылка
|ИЗ
| Справочник.ШаблоныСхемПакования.ТЧСостав КАК ШаблоныСхемПакованияТЧСостав
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ШаблоныСхемПакования КАК ШаблоныСхемПакования
| ПО ШаблоныСхемПакованияТЧСостав.Ссылка = ШаблоныСхемПакования.Ссылка
|ГДЕ
| ШаблоныСхемПакования.Владелец = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ШаблоныСхемПакования.Владелец,
| ШаблоныСхемПакования.Ссылка" ;
ЗапросОбъем.УстановитьПараметр("Ссылка", Ссылка);
Выборка = ЗапросОбъем.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Элемент = Выборка.Владелец.ПолучитьОбъект();
Элемент.Объем= Выборка.Объем;
Элемент.Вес=Выборка.Вес;
Элемент.Записать();
КонецЦикла;
КонецПроцедуры
ПоказатьПомогите пожалуйста...
По теме из базы знаний
Найденные решения
(35) Если вы хотите, чтобы на форме элемента справочника обновлялись реквизиты после закрытия формы Шаблонов, то вам надо написать (для управляемых форм):
В форме элемента шаблонов:
А на форме номенклатуры:
В форме элемента шаблонов:
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Оповестить("ЗаписалиШаблонДляНоменклатуры");
КонецПроцедуры
А на форме номенклатуры:
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ЗаписалиШаблонДляНоменклатуры" Тогда
ЭтотОбъект.Прочитать();
КонецЕсли;
КонецПроцедуры
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(11) Попробуй вместо:
Написать что-то типа этого:
Пока Выборка.Следующий() Цикл
Элемент = Выборка.Владелец.ПолучитьОбъект();
Элемент.Объем= Выборка.Объем;
Элемент.Вес=Выборка.Вес;
Элемент.Записать();
КонецЦикла;
Написать что-то типа этого:
Пока Выборка.Следующий() Цикл
ЭтаФорма.ЭлементыФормы.Объем= Выборка.Объем;
ЭтаФорма.ЭлементыФормы.Вес=Выборка.Вес;
ЭтаФорма.Обновить();
КонецЦикла;
(21)обновить не дает теперь
Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(218)}: Ошибка при установке значения атрибута контекста (Доступность)
ЭлементыФормы.НоменклатурнаяГруппа.Доступность = мфНоменклатураИспользуется;
по причине:
Несоответствие типов
Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(218)}: Ошибка при установке значения атрибута контекста (Доступность)
ЭлементыФормы.НоменклатурнаяГруппа.Доступность = мфНоменклатураИспользуется;
по причине:
Несоответствие типов
(22) Может я не до конца понял задачу?
В открываете Номенклатуру. Из нее подчиненный справочник ШаблоныСхемПакования, там меняете объем и вес в табличной части Состав и нажав ОК Хотите увидеть пересчитанные объем и вес в уже открытой форме номенклатуры?
В открываете Номенклатуру. Из нее подчиненный справочник ШаблоныСхемПакования, там меняете объем и вес в табличной части Состав и нажав ОК Хотите увидеть пересчитанные объем и вес в уже открытой форме номенклатуры?
(24) Тогда как-то так: Записываете объект Номенклатуры как Вы первоначально писали, только не в процедуре формы справочника номенклатура, а при записи элемента справочника ШаблоныСхемПакования, а затем ищете форму элемента справочника Номенклатура и обновляете ее.
(26)
Процедура ПриЗаписи(Отказ)
ПосчитатьОбъемы(Ссылка);
КонецПроцедуры
Процедура ПосчитатьОбъемы(Ссылка)
ЗапросОбъем=Новый Запрос;
ЗапросОбъем.Текст= "ВЫБРАТЬ
| СУММА(ШаблоныСхемПакованияТЧСостав.ШаблонУпаковки.Вес) КАК Вес,
| ШаблоныСхемПакования.Владелец,
| СУММА(ШаблоныСхемПакованияТЧСостав.ШаблонУпаковки.Объем) КАК Объем,
| ШаблоныСхемПакования.Ссылка
|ИЗ
| Справочник.ШаблоныСхемПакования.ТЧСостав КАК ШаблоныСхемПакованияТЧСостав
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ШаблоныСхемПакования КАК ШаблоныСхемПакования
| ПО ШаблоныСхемПакованияТЧСостав.Ссылка = ШаблоныСхемПакования.Ссылка
|ГДЕ
| ШаблоныСхемПакования.Владелец = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ШаблоныСхемПакования.Владелец,
| ШаблоныСхемПакования.Ссылка" ;
ЗапросОбъем.УстановитьПараметр("Ссылка", Ссылка);
Выборка = ЗапросОбъем.Выполнить().Выбрать();
формаэл=Справочники.Номенклатура.ПолучитьФорму("ФормаЭлемента");
Пока Выборка.Следующий() Цикл
Элемент = Выборка.Владелец.ПолучитьОбъект();
Элемент.Объем= Выборка.Объем;
Элемент.Вес=Выборка.Вес;
Элемент.Записать();
КонецЦикла;
КонецПроцедуры
Показать
(46)
Вернула обратно,к виду который был. Потому что надо прям записывать,т.к. до этого в отчет брались неправильные данные
ЗапросОбъем=Новый Запрос;
ЗапросОбъем.Текст= "ВЫБРАТЬ
| СУММА(ШаблоныСхемПакованияТЧСостав.ШаблонУпаковки.Вес) КАК Вес,
| ШаблоныСхемПакования.Владелец,
| СУММА(ШаблоныСхемПакованияТЧСостав.ШаблонУпаковки.Объем) КАК Объем,
| ШаблоныСхемПакования.Ссылка
|ИЗ
| Справочник.ШаблоныСхемПакования.ТЧСостав КАК ШаблоныСхемПакованияТЧСостав
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ШаблоныСхемПакования КАК ШаблоныСхемПакования
| ПО ШаблоныСхемПакованияТЧСостав.Ссылка = ШаблоныСхемПакования.Ссылка
|ГДЕ
| ШаблоныСхемПакования.Владелец = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ШаблоныСхемПакования.Владелец,
| ШаблоныСхемПакования.Ссылка" ;
ЗапросОбъем.УстановитьПараметр("Ссылка", Ссылка);
Выборка = ЗапросОбъем.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Элемент = Выборка.Владелец.ПолучитьОбъект();
Элемент.Объем= Выборка.Объем;
Элемент.Вес=Выборка.Вес;
Элемент.Записать();
КонецЦикла;
ПоказатьВернула обратно,к виду который был. Потому что надо прям записывать,т.к. до этого в отчет брались неправильные данные
(35) Если вы хотите, чтобы на форме элемента справочника обновлялись реквизиты после закрытия формы Шаблонов, то вам надо написать (для управляемых форм):
В форме элемента шаблонов:
А на форме номенклатуры:
В форме элемента шаблонов:
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Оповестить("ЗаписалиШаблонДляНоменклатуры");
КонецПроцедуры
А на форме номенклатуры:
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ЗаписалиШаблонДляНоменклатуры" Тогда
ЭтотОбъект.Прочитать();
КонецЕсли;
КонецПроцедуры
Надеюсь процедуры "ПриЗакрытии" и "ОбработкаОповещения" ты прописываешь через события формы? Ну тогда не знаю...
(52)сейчас,вышла проблема. Раньше когда делали копирование номенклатуры,происходило копирование с некотрыми заполнеными реквизитами,а сейчас пустые реквизиты. поняла,что в процедуре ПередОткрытием мы написали
Из за этого вся форма обновляется и теряет те данные. Можно это как то подправить?
ПосчитатьОбъемы(Ссылка);
ЭтаФорма.Прочитать();
Из за этого вся форма обновляется и теряет те данные. Можно это как то подправить?
(55) Самый простой вариант, в Процедуре "ПриОткрытии" перед "ПосчитатьОбъемы(Ссылка);" записать реквизиты, не МЕНЯЮЩИЕСЯ в расчете объема, в переменные ,а потом после "ЭтаФорма.Прочитать()" вернуть реквизитам объекта данные из временных переменных...
Как вариант вместо
ЭтаФорма.Прочитать();
написать
Если НЕ ЭтоНовый() Тогда ЭтаФорма.Прочитать(); КонецЕсли;
ЭтаФорма.Прочитать();
написать
Если НЕ ЭтоНовый() Тогда ЭтаФорма.Прочитать(); КонецЕсли;
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот