Не работает обработка форма

Внешняя обработка: не обновляется уже открытая форма после изменений в табличной части

Создана внешняя обработка. Добавляется кнопкой в документ в 1С ЗУП 3.1 в документах ДанныеДляРасчетаЗарплаты(создаются с помощью шаблонов). В открытой форме нажатие на кнопку вызывает обработку, делает изменения, но форма не обновляется. Ф-ция Сообщить выдает правильные результаты изменений.Чего-то не хватает, может быть знает кто-нибудь что еще нужно дописать? Если такой код запускаю в документе РазовоеНачисление — все работает, форма сразу обновляется и документ можно провести.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Розница 2.2.Внешняя обработка заполнения табличной части
Конфа розница 2.2, платформа 8.3.8. Как правильно заполнить ТЧ часть? Пытаюсь через Владельца.

Внешняя обработка Печать ценников: ошибка при попытке получения реквизита табличной части документа.
Хочу получить табличную часть товары документа установка цен номенклатуры. &НаКлиенте.

Обработка табличной части
Здравствуйте. Подскажите с чего начать или что нужно сделать. Есть документ, который должен.

Запрос. Условие: строка из первой табличной части равна любой строке из другой табличной части
Есть документ «РаспределениеМатериаловНаВыпуск». У этого документа имеется «Форма документа». На.

Добавлено через 1 минуту
Еще можно попробовать все перенести на клиент
и избавиться от таких вещей как
ОснРеквизит1 = ВладелецФормы.Объект;
ТЧ =ОснРеквизит1.ЗначенияПоказателей;
А все реквизиты получать через точку, т.е работать непосредтсвенно с объектом владельца формы а не его копией.

Источник

Вызов обработки без открытия формы и получение при завершении данных

(1) Идея кривая с самого начала.
Я бы сделал так:
1) перенёс всю обработку данных из модуля формы в модуль менеджера и объявил бы её экспортной функцией. Из формы вызывал бы функцию в модуле менеджера.
2) Открытие формы — отдельно. Выполнение обработки — отдельно. Выполнение обработки вызывать явным образом — из менеджера. Форма вызывается только тогда, когда надо именно посмотреть форму (изменить настройки?).

Кстати, если всё правильно сделать, можно было бы и рег.задание повесить, и вообще не запускать обработку вручную — только ради настроек.

(1) Идея кривая с самого начала.
Я бы сделал так:
1) перенёс всю обработку данных из модуля формы в модуль менеджера и объявил бы её экспортной функцией. Из формы вызывал бы функцию в модуле менеджера.
2) Открытие формы — отдельно. Выполнение обработки — отдельно. Выполнение обработки вызывать явным образом — из менеджера. Форма вызывается только тогда, когда надо именно посмотреть форму (изменить настройки?).

Кстати, если всё правильно сделать, можно было бы и рег.задание повесить, и вообще не запускать обработку вручную — только ради настроек.

Читайте также:  Таргет для мастера маникюра как настроить

(16) Клиент НЕ МОЖЕТ соединяться с SQL. Это только сервер.
Клиент НЕ МОЖЕТ записать данные в базу. Это только сервер.

В форме так или иначе ВЫЗЫВАЕТСЯ сервер. Только правильно при его вызове оставить только заглушку, вызывающую функцию в модуле менеджера. Тогда и данными можно будет управлять не только из формы, и рег.задание настроить, да и не нагружать клиента несвойственными ему функциями.

И почему я объясняю Вам такие азбучные истины?

Кто-то тут предлагал читать то, что писал автор вопроса, не Вы? 🙂

Обработка возвращает ТОЛЬКО статус. Булево. Ну, и описание ошибки. Всё.
Форма ОБЯЗАНА вызывать сервер. Так что, хватит Вам флудить.

и потом заменил

Ну, это, разумеется, если у Вас имена колонок таблицы совпадает с внешней БД.

Тогда на сервере в модуле формы, при вызове этой функции, когда заполняете МассивИмен, вместо этого создаёте пустую таблицу значений с нужной структурой.

Потом, получив результат, в форме можете его обработать и заполнять табличную часть простым ТабличнаяЧасть.Загрузить(тзТрансакции), если всё ОК, либо выводить сообщение об ошибке.
В рег.задании можно обрабатывать при успехе и отбрасывать при неудаче. Конечно, хорошо бы при этом в журнал регистрации писать.

А ещё я бы на Вашем месте озаботился переписать всё это дело в асинхронный вариант. Но это — уже долго и печально (хотя результат того стОит).

Ну, и да, я не люблю COM. Во-первых, отпадают все варианты, кроме Windows. Во-вторых, это большая «дыра» в безопасности. И да, Вы правы, я использую для таких целей внешние источники данных, там хоть как-то можно прошерстить под Linux.

Источник

Методика решения проблемы с открытием старой версии внешней обработки

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

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

Причина возникновения проблемы

Причина возникновения подобной проблемы заключается в самой обработке. Она возникает в том случае, если разработчик допустил возникновение циклических ссылок.

Рассмотрим ситуацию несколько подробнее. В режиме исполнения (1С:Предприятие) объект обработка существует в памяти в качестве реквизита формы обработки. При закрытии формы обработка прекращает свое существование.

Данная схема нарушается в двух случаях. На саму обработку возникла дополнительная ссылка, либо ссылка возникла на форму, в этом случае закрытие окна формы не означает уничтожение объекта — формы. Соответственно, остается в памяти и обработка.

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

Читайте также:  Какие симптомы если не работает бензонасос

Рекомендации по предотвращению возникновения проблемы

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

Если «обратная связь» между обработкой и формой все же необходима, следует явным образом позаботиться о ее разрыве. Это можно сделать, например, в обработчике закрытия формы.

Методика устранения проблемы

Даже следование всем рекомендациям не может застраховать от возникновения подобной проблемы.

В первую очередь следует проанализировать алгоритм исполнения обработки на предмет циклических ссылок. Иногда источник проблемы не очевиден. Циклы могут носить достаточно сложный характер, да и возникновение проблемы можно заметить не сразу.

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

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

Примерно определив место возникновения проблемы, следует блоками комментировать код соответствующих процедур в модуле, и после каждой итерации проверять обработку. Разумеется нельзя забывать, что после каждого возникновения проблемы следует перегружать 1С:Предприятие.

Таким способом конкретное место возникновения обычно удается определить достаточно быстро. После чего причина возникновения цикла, в большинстве случаев, становится очевидной.

Источник

Пустая форма при открытии обработки 1С

Последняя статья рассказывала, как исправить с ошибку «Внешняя обработка не может быть прочитана текущей версией программы», а сегодня разберем следующие вопрос:
При открытии обработки вижу пустую форму.

Такое часто видят пользователи, у которых конфигурации построены на основе управляемого приложения. Узнать что такое управляемое приложение «1С:Предприятие 8.2» можно в посте 1С интерфейс.

Почему форма обработки пустая?

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

Такие обработки не работают в управляемом приложении.

Решение есть
1 Создать для обработки управляемую форму. (сам улыбнулся)
2 Запустить конфигурацию в обычном режиме, об этом подробно рассказано в статье: Запуск обычного приложения в УТ 11.

Читайте также:  Как отремонтировать кожаную куртку если она облезла

Будьте внимательны, если обработка не является универсальной, то она должна быть предназначена для конкретной конфигурации иначе ….. может не открыться.

Все выше перечисленное относится не только к обработкам «1С:Предприятия 8.2», но и к отчетам.

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

Спасибо за внимание, с Вами был Программер.

Пожалуйста делитесь своим мнением в комментариях.

Постовой: Услуги по обслуживанию 1С, внедрению, поддержке и обучению 1С. Можно записаться на курсы 1с в Чехове.

Источник

Еще раз про отладку внешних печатных форм в Управляемом приложении

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

Итак в модуле внешней обработки мы имеем процедуру:

Процедура стандартная, она вызывает функцию формирования табличного документа ПечатьСчетДоговор(МассивОбъектов), эту самую функцию нам и нужно вызвать из добавленой формы и показать результат.

добавляем в отчет реквизит СсылкаНаОбъект того типа что нам нужен здесь, один в один как в толстом клиенте. Создаем форму — реквизит на ней добавится автоматом. Добавляем на форме кнопку — Печать, привязываем к ней команду Печать и создаем автоматом процедуру на сервере и на клиенте.

Здесь немного уже доработано руками. Во первых процедуру на сервере заменяем на функцию. На клиенте сответственно дописываем метод Показать(). Мы же хотим увидеть сформированный табличный документ? В функции Команда1НаСервере() мы вытягиваем табличный документ — напрямую обращаемся к функции модуля ПечатьСчетДоговора(. ) — и передаем этот табличный документ на клиента, понятно что сервер нам его не покажет. РеквизитФормыВЗначение(..) нужен чтоб перегнать объект в состояние — когда его процедуры(модуля) может увидеть клиент, как пишет 1с получаем объект прикладного типа, иначе ничего не получится.

Если мы запустим обработку в таком варианте, то увидим ошибку — функция ПечатьСчетДоговора(массив1) не обнаружена. Делаем последний штрих — в модуле на сделать эту функцию экспортной.

Доработка минимальная, и займет немногим больше времени чем в толстом клиенте. Отлаженную печатную форму без всяких изменений можно добавить во внешние отчеты и обработки — она будет полностью работоспособна.

Теперь мы можем свободно отлаживать форму открыв ее через меню файл. Переходить на ошибки напрямую в конфигуратор/обработку и вставлять готовую печатную форму в дополнительные отчеты и обработки без всяких допиливаний — как есть.

Источник

Оцените статью