Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Как вызвать функцию из управляемой формы содержащейся в модуле другого объекта?

Как вызвать функцию из управляемой формы содержащейся в модуле другого объекта?

Пробую:
&НаСервере
Процедура МояПроцедура()
    Обработка = РеквизитФормыВЗначение("Запись",Тип("ОбработкаОбъект.НужнаяОбработка")); 
    Результат = Обработка.ЭкспортнаяПроцедураВМодулеНужнойОбработки("НужныйПараметр");
КонецПроцедуры

Ошибка: неверный параметр № 1
Ответ: И это касается не только обработок - а вообще в принципе даже любых объектов.

Также ты можешь из одной обработки запонять в другой реквизиты и прочие херовины которые там есть.
Вопрос: Авто запись модуля формы и объекта

Всем доброго времени суток и с наступающим.
1С:Предприятие 8.3 (8.3.10.2561)

Кто знает, есть ли типовой функционал или может быть стороннее приложение, что бы во время разработки, внешней обработки, автоматически сохранялся текст модуля формы (модуля объекта).?
Ответ:

Так мне контроль синтаксиса как раз не нужен( не важен).
Давайте я всё таки объясню, для чего всё это. Может я не прав и кто-то предложит альтернативу.

В последнее время, очень часто стал работать с внешними обработками и чем больше делал, тем больше путался.
Для логирования и протоколирования своих действий, задумался по поводу прикрутить что-нибудь типа контроля версий(Git).
Так как есть небольшой опыт работы с Github (работаю с ним при разработке на C#) в связке с Smart git
Но! Так сама обработка это бинарник, то чтобы видеть свои изменения в коде, необходимо записывать тексты модуля и иногда при commit - е, я это забываю сделать и вот как раз бы мою забывчивость и можно было бы исключить с помощью механизма автозаписи.
Вопрос: Вызов формы другой обработки. Заполнение. Как программно выполнить команду?

Есть обработка. В ней я вызываю форму другой обработки. Заполняю реквизиты.

Как мне теперь нажать на кнопку это формы?
Ответ: () что то не пойму
Вопрос: Расширение конфигурации: как перехватить событие модуля формы без её заимствования?

Пример: в типовой конфигурации есть документ РеализацияТоваровУслуг. Я хочу с помощью расширения в табличную часть Товары основной формы документа программно добавить колонку с остатками. Создал расширение, добавил (заимствовал) из типовой конфигурации форму документа и в модуль формы прописал такой код:


// перехватчики событий формы
&НаКлиенте
Процедура Расш1_ПриОткрытииПосле(Отказ)
    ЗаполнитьОстаткиНаСкладе();
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ТоварыНоменклатураПриИзмененииПосле(Элемент)
    ЗаполнитьОстаткиНаСкладе();
КонецПроцедуры

&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    // добавляем реквизит для колонки остатков

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

    НовыйЭлементФормы = Элементы.Добавить("ТоварыОстатки", Тип("ПолеФормы"), Элементы.Товары);             
    НовыйЭлементФормы.Вид = ВидПоляФормы.ПолеВвода; 
    НовыйЭлементФормы.ТолькоПросмотр = Истина;
    НовыйЭлементФормы.ПутьКДанным = "Объект.Товары.Остатки"; 

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


// вспомогательная процедура заполнения колонки остатков 

// используется запрос к соответствующему регистру накопления остатков

Процедура ЗаполнитьОстаткиНаСкладе()
    
    // для каждой Стр из табличной части Объект.Товары записываем Стр.Остатки = полученное из регистра значение

    // полный код не привожу, потому что суть вопроса сейчас не в этом

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

Расширение работает как нужно, колонка добавляется, остатки заполняются.

Теперь, если я правильно понимаю, после обновления типовой конфигурации пользователь по-прежнему продолжит работать с ранее заимствованной версией формы документа, и её визуальная часть (со всеми элементами, которые, возможно, в новой версии типовой формы уже использоваться не будут) останется неизменной. Поэтому чтобы в расширении привести форму документа в актуальное состояние, нужно будет её после обновления конфигурации, скажем так, "перезаимствовать".

Но визуальная часть ранее заимствованной формы в расширении мне не нужна, потому что колонка остатков добавляется на форму программно (главное, чтобы после очередного обновления типовой конфигурации табличная часть формы Товары никуда не далась, а это мало вероятно). Тогда можно было бы один раз залить расширение и спокойно обновлять конфигурацию, не заморачиваясь о том, что визуальная часть формы из расширения с каждым обновлением типовой конфигурации устаревает.

В общем, после каждого обновления типовой конфигурации я хочу всегда видеть новую форму документа, но с перехватчиками событий из старого расширения.
Возможно ли такое реализовать в принципе?
Ответ: + ()
>>Вот если изначально что-то делалось с типовой в конфигураторе и эту измененную заимствовали в расширение,

согласен, но это частный случай... поставшику конфы что мешает в след раз изменить форму и она уже будет не соотв. сохрформе и что там будет без обновления сохрформы в резултформе одна только хрусталева знает )
Вопрос: Связь формы и объекта

Здравствуйте Гуру. Подскажите, пожалуйста, в каком направление капать. Простое задание проделать манипуляции с формой при отказе от проведения. Но есть загвозка - документ не записан. Я придумал только два пути решения не записывая его.
1) Насколько я понимаю не записанный документ связан с формой только событиями формы. Но из стандартных не нашел подходящего. Записи нет - нет и события ПриЗаписи. Есть ли какое-то событие которое мне подходит?
2) Возможно существует какая-то коллекция в которой хранятся открытые формы?
Ответ:
Сообщение от MakcNmyc
Хотя нет событие срабатывает (так как перед проведением он его записывает), но мне в любом случае нужно событие после проведения, так как данные получаются в обработке проведения
Добавлено через 4 минуты
Так как документ записан получается я могу получить его форму и запустить функцию в ней с нужным параметром
Это где такие задания ты берёшь?
Вопрос: Отобразить таблицу справочника на форме как Табличную Часть, с выборкой

Друзья, начал изучать 1С 8,3 и столкнулся с рядом проблем. Какие-то я решил (кажется коряво, но тем не менее работает), а какие-то не очень.
Собственно задача проста и тривиальна:
Есть Справочники:

-Материалы
-Объекты

Справочник объект состоит из данных об объекте (эта информация располагается в реквизитах и проблем не вызывает) и есть так же табличная часть с этапами работы. Получается что на каждый ОБЪЕКТ есть своя табличная часть. Но на каждый этап работы нужна еще табличка с материалами для работы. Получается табличная часть табличной части. 1С этого не может (да видимо и не нужно, просто руки у меня из Ж, поэтому и требуется)

Мои действия дальше - Я создаю справочник Этапы Работы, в нем создаю табличную часть. То есть тут все окейно, есть реквизит с номером объекта (может и должен повторяться), и остальные параметры.

Я добавляю через динамический список этот справочник в форму элемента ОБЪЕКТА. И все отображается. Именно ВСЕ, а не только то, что относится к конкретному объекту.

Собственно вопрос: как заставить этот динамический список работать так же как и Табличную Часть справочника Объекты? То есть чтобы он выдавал только относящиеся к конкретному объекту строки с этапами? Другого решения я не вижу, как связывать реквизиты между собой пока не разобрался. А задачу выполнить как-то нужно (((

И может быть есть иное решение? Куда более правильное и умное? Повторюсь, изучать только начал, читаю Радченко, но как то пока вот так (((
Ответ:
Цитата Сообщение от SerJant_moscow Посмотреть сообщение
Как сделать так чтобы этот отбор происходил автоматически?
добавить параметр (условие) в запрос динамического списка, и устанавливать его нужным значением
Цитата Сообщение от SerJant_moscow Посмотреть сообщение
6. Вопрос на опережение ) Я из этой формы открою другую форму - форму создания новой сметы. Как автоматически ввести в нее данные объекта и этапа? На скрине видно, что в таблице ЭтапыВыполнения я добавил реквизит Смета, тип которого - Ссылка на Справочник ЗатратнЧасть.
вместо быстрого выбора сметы можно показывать форму выбора смет, в эту форму передать нужные параметры для создания, и там, в обработчике "СписокПередНачаломДобавления" организовать свою процедурку по заполнению нового элемента... это как вариант - уверен есть способ получше
Вопрос: Как при открытии формы на нее вывести реквизит объекта?

Есть обработка которая может запускаться по регламентному заданию и в ручном режиме для отладки.
Основной код прописан в модуле объекта обработки.
Но, для отладки хочу при открытии формы вывести на нее реквизиты объекта которые заполняются при вызове экспортной функции модуля объекта

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

//но, на форме реквизит объекта КаталогОбменаИнформацией пустой
КонецПроцедуры
Ответ: разобрался.
В конце модуля обработки вызвал эту процедуру
ЗаполненыВсеКонстанты();

и на форме все реквизиты объекта заполнены
Вопрос: Как обновить значения элементов обычной формы по объекту, измененному программно?

1) Есть обработка с обычной формой
2) У формы обработки есть реквизит "ДокОбъект" типа ДокументОбъект.хххх. Реквизиты документа выведены на форму.
3) Навешен обработчик ПодключитьОбработчикИзмененияДанных("ДокОбъект", "ДокументИзменен", Истина);
4) В Процедура ДокументИзменен() у ДокОбъект программно могут быть изменены реквизиты, выведенные на форму.

Вопросы
1) почему-то автоматически измененные реквизиты в п.4 на форме не меняюся. Если смотреть отладчиком, то у элемента формы в свойстве Значение старое значение реквизита, хотя в объекте новое. Свойстов элемента формы "Данные" заполнен корректно.
2) как одним движением обновить значения элементов формы привязанных к ДокОбъект, чтобы у них было тоже, что и в объекте? ЭтаФорма.Обновить() не помогает. Программно перебрать все элементы и самому установить значение - крайний вариант.
Ответ: () наверно процедура процедуре подключенная по ПодключитьОбработчикИзмененияДанных какая-то левая
Вопрос: Вызов дополнительной формы документа

У меня ЗУП 3.0 на управляемых формах.

Есть документ Изменение штатного расписания. Я в него добавил кнопку для вызова не основной формы документа, а дополнительной, т.е. созданной мною. На эту форму я вынес настройки печати приказа.

Вопрос: Как мне сделать так, чтоб в открытой форме Объект, т.е. основной реквизит формы, ссылался бы на тот документ из которого его открыли. а он выдает форму где Объект.Ссылка - ПУСТАЯ. Соот-но все реквизиты шапки тоже пустые и если изменить что-либо данные не появляются в основной форме.
Ответ: без обид. Что касается что пишу... всё норм. Разрабатывается сложный механизм печати приказов. для этого в документы добавлены реквизиты и табличные части для ввода настроек. но курочить типовую форму очень не хорошо. для этого создана новая. но нужно чтоб в новой форме отображались реквизиты документа некоторые. вот такая задача
Вопрос: Как правильно прикрутить внешнюю форму печати этикеток в документ Поступление УТ 10.3

Всем привет народ! Поздравляю всех с Майскими Праздниками! Есть один вопрос, с которым бьюсь уже второй день! В Управлении торговлей 10.3 Базовая, нужно сделать внешнюю форму печати этикеток, так как в данной конфигурации не устраивает настройка по умолчанию, все сдвинуто в левую сторону, и еще нужно было доработать в Модуле этикетки Артикул, скопировал встроенную обработку печати этикеток из конфигурации, добавил в Модуль Артикул, создал свой Макет для внешней обработки и все отцентрировал. Данная внешняя обработка стабильно работает, выводит табличные структуры загружает и выводит товар, на печать все нормально выводит по центу и с Артикулом! Но, еще эту обработку нужно прикрутить к Документу Поступление Товаров и Услуг, создал Реквизит СсылкаНаОбъект Тип: ДокументСсылка.ПоступлениеТоваровУслуг, установил в программу как внешние печатные формы, указал документ Поступление Товаров и Услуг, в Документе Поступление Товаров и Услуг вижу эту печать, но, когда нажимаю на печать этикетки, выводит ошибку:

Не удалось сформировать внешнюю печатную форму!
Метод объекта не обнаружен (Печать)

Мне 3 Мая нужно сдать данную обработку в рабочем виде, вот совмещаю Маевку с данной работой, помогите пожалуйста, подскажите, что мной еще не доработано в данной обработке!?
Ответ: () Всё что хочешь.
стандартно, эта функция возвращает заполненный табдок. но ты можешь и форму открыть, если тебе надо.
как-то так: ЭтотОбъект().ПолучитьФорму().Открыть()