Имя: Пароль:
1C
1С v8
Пропадает кнопка Заполнить в управляемых формах
,
0 Velber
 
11.03.14
09:49
Написал внешнюю обработку табличной части под управляемые формы.
Обработка работает нормально, но после нажатия на кнопку вызова обработки, кнопка "Заполнить" пропадает и появляется, если форму повторно открыть.

1С:Предприятие 8.3 (8.3.4.437)
Бухгалтерия предприятия, редакция 3.0 (3.0.29.8)
1 NcSteel
 
11.03.14
09:49
Проблема в самой обработке.
2 Wobland
 
11.03.14
09:51
(0) как ты этого добился?
3 Velber
 
11.03.14
09:51
Ок, в чем может быть проблема?
4 NcSteel
 
11.03.14
09:52
Видимо видимость какого либо элемента на форме меняет обработка. За это надо руки отрывать.
5 Velber
 
11.03.14
09:53
В обработку добавил форму и в ней добавил процу

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
    //Спросим у пользователя разрешение на продолжение обработки
    Режим = РежимДиалогаВопрос.ДаНет;
    Текст = "Текущие данные документа будут заменены новыми без возможности восстановления.
    |Продолжить?";
    Ответ = Вопрос(Текст, Режим, 0);
    Если Ответ = КодВозвратаДиалога.Да Тогда

        //Если пользователь дал разрешение на продолжение, то начнем перебирать все
        //документы, у которых мы планируем заполнить табличную часть
        Для каждого Элемент из ОбъектыНазначенияМассив Цикл

            //Зададим ключ поиска документа, из которого вызвана данная обработка,
            //чтобы получить ссылку на редактирумый документ в удобном виде для
            //функции ОткрытьФорму()
            КлючПоиска = Новый Структура("Ключ", Элемент);

            //Но нам не надо открывать новую форму (окно) для изменяемого документа, а
            //Нам надо все изменения показать в уже открытых у клиента окнах
            Окна = ПолучитьОкна();
            Для каждого Окно из Окна Цикл

                //Окно изменяемого документа будет точно не основным, а вспомогательным, поэтому
                //сразу пропускаем основное окно, а далее идем на не очень хороший способ поиска открытого окна
                //изменяемого документа. Мы просто переберем все окна, а в заголовке, которых будет встречаться
                //Наименование, номер и дата нужного документа - будем изменять
                Если НЕ Окно.Основное
                    И Найти(Окно.Заголовок, Элемент) Тогда
                    //Передадим ключ поиска (можно сказать ссылку на объект) и данные о найденном открытом окне
                    //в функцию ОткрытьФорму()
                    //Код находится в цикле на тот случай, если открытых окон изменяемого документа больше одного
                    Форма = ОткрытьФорму("Документ.ОтчетПроизводстваЗаСмену.Форма.ФормаДокумента",КлючПоиска,,,Окно);

                    //Далее мы получаем объект только, что повторно открытой формы и помещаем её в переменную
                    //В объекте содержатся все реквизиты (элементы) формы
                    НовыйОбъект = Форма.Объект;

                    //Мы помещаем объект формы в переменную,
                    //так как должны передать её в процедуру на сервере,
                    //где нельзя изменять объект формы, зато можно править переменную содержащую его
                    ЗаполнитьОбъект(НовыйОбъект);

                    //После выполнения процедуры на сервере мы получаем изменную переменную НовыйОбъект,
                    //которую необходимо передать в уже полученную нами форму
                    КопироватьДанныеФормы(НовыйОбъект, Форма.Объект);
                КонецЕсли;
            КонецЦикла;

        КонецЦикла;
    КонецЕсли;
КонецПроцедуры
6 NcSteel
 
11.03.14
09:55
Форма = ОткрытьФорму("Документ.ОтчетПроизводстваЗаСмену.Форма.ФормаДокумента",КлючПоиска,,,Окно);

в этом и проблема. А теперь закоментирую и проверь.
7 Velber
 
11.03.14
09:56
В функции СведенияОВнешнейОбработке вызов сделал ВызовКлиентскогоМетода.

ДобавитьКоманду(ТаблицаКоманд, до_Синоним, до_ИмяМакета, "ВызовКлиентскогоМетода", Истина);
8 Velber
 
11.03.14
09:57
(6) если эту строку закоментить, нельзя будет получить форму и объект соответственно и тогда дальше смысла работы не будет(
9 Wobland
 
11.03.14
09:59
с таким обилием комментариев даже стесняюсь спросить: на зачем это всё?
10 Velber
 
11.03.14
09:59
(6) Если после этой строки все комментить, то тогда действительно не пропадает кнопка "Заполнить".
11 Velber
 
11.03.14
10:00
(9)Пример реализации, просто с инфостарта брал.
12 Wobland
 
11.03.14
10:01
(11) нене, вопрос был "на зачем?"
13 Новиков
 
11.03.14
10:02
3,14стец полнейший, товарищи!
14 Новиков
 
11.03.14
10:03
код в (5) нужно Ctrl+A, del, Ctrl+S.
15 Velber
 
11.03.14
10:05
(14) Ок, есть альтернатива?
16 Новиков
 
11.03.14
10:08
(15) Естественно есть. Воспользуйся штатным функционалом БСП, и не би мозги себе, и людям ;)
17 Velber
 
11.03.14
10:14
(16) http://its.1c.ru/db/bspdoc#content:200:1 я вычитал всю статью, но так и не понял как сделать.
18 Новиков
 
11.03.14
10:16
(17) ты в каком сейчас типовом мире? какой конфы?
19 Новиков
 
11.03.14
10:16
И какая версия БСП там в твоем мире ;)
20 Velber
 
11.03.14
10:27
(20) Демонстрационная конфигурация "Библиотека стандартных подсистем", редакция 2.2 (2.2.1.35) (http://v8.1c.ru/ssl)
Copyright © ООО "1C", 2009-2013. Все права защищены
(http://www.1c.ru)