0
- 12.03.2012 - 12:44
|
Здравствуйте! Подскажите, пожалуйста, по управляемым формам. Есть документ с основной управляемой формой и есть еще доп. упр.форма, которая открывается по команде из основной формы. В модуле доп. формы написана процедура заполнения табличной части основной формы, т.к. на доп. форме указываются реквизиты отбора для заполнения и на осн.форме они не нужны. так вот после заполнения таблиной части осн. формы табличная часть не обновляется. после записи документа и повторного входа в него видно, что табличная часть заполнена. в чем причина? что не так? | |
1
- 12.03.2012 - 13:26
| В том, что кто-то заполняет не коллекцию данных формы документа, представляющую табличную часть документа на клиенте, а табличную часть объекта на сервере. | |
2
- 12.03.2012 - 13:36
| (2) В таком случае при закрытии основной формы, система ругалась бы на коллизию версий. Что то автор намутил с открытием этой внешней формы и передачей/возвратом параметров. | |
3
- 13.03.2012 - 04:45
|
Хорошо. Тогда подскажите, пожалуйста, как реализовать решение следующей задачи: по кнопке на осн. упр.форме нужно вызвать команду - Заполнение ТЧ формы, при вызове команды нужно открывать форму, в которой указать доп. параметры, необходимые для отбора для формирования запроса, чтобы заполнить ТЧ осн. упр. формы. Затем заполнить ТЧ осн.упр.формы. как сделать? | |
4
- 13.03.2012 - 06:38
|
расскажу, как реализаую: есть док. "МойДок", в котором есть осн. упр.форма. создаю команду "ЗаполнитьПоОстаткам" в документе, модуль команды: &НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ПараметрыФормы = Новый Структура("Ключ", ПараметрКоманды); ИмяФормы = "Документ." + ПараметрКоманды.Метаданные().Имя + ".Форма.ФормаДокументаЗаполнитьПоОстаткам"; ОткрытьФормуМодально(ИмяФормы, ПараметрыФормы, ПараметрыВыполненияКоманды.Источник); КонецПроцедуры ФормаДокуметаЗаполнитьПоОстаткам - это доп. форма, в которй задаются параметры, нужные для отбора: Склад и Номенклатура. Далее в модуле этой формы "ФормаДокуметаЗаполнитьПоОстаткам" создаю процедуры: + Code &НаКлиенте Процедура ЗаполнитьПоОстаткам(Команда) // Вставить содержимое обработчика. Если Объект.Материалы.Количество() > 0 Тогда ТекстВопроса = "Перед заполнением табличная часть будет очищена. Заполнить?"; Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да, ); Если Ответ <> КодВозвратаДиалога.Да Тогда Возврат; КонецЕсли; Объект.Материалы.Очистить(); КонецЕсли; Выборка = ЗаполнитьПоОстаткамНаСервере(); Для каждого ТекСтрока из Выборка Цикл СтрокаТабличнойЧасти = Объект.Материалы.Добавить(); СтрокаТабличнойЧасти.Номенклатура = ТекСтрока.Номенклатура; СтрокаТабличнойЧасти.Количество = ТекСтрока.Количество; СтрокаТабличнойЧасти.Склад = СкладОтбор; КонецЦикла; Закрыть(Истина); КонецПроцедуры &НаСервере Функция ЗаполнитьПоОстаткамНаСервере() Документ = РеквизитФормыВЗначение("Объект"); ДатаОстатков = НачалоДня(Документ.Дата+1); Запрос = Новый Запрос; .... .... // текст запроса ТЗ = Запрос.Выполнить().Выгрузить(); ЗначениеВРеквизитФормы(Документ, "Объект"); Возврат ТЗ; КонецФункции все. заполнение происходит, но появляется только после закрытия и повторного открытия документа. | |
| Интернет-форум Краснодарского края и Краснодара |