Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
13 Дек 2017, 08:35
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: 1С:Предприятие 7.70.027.Как в принудительно завершить обработку в коде?  (Прочитано 5112 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sten_d

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-11-17
  • Сайт: 
метод "Закрыть()" не помогает, он ставит только флаг на закрытие и обработка висит пока не завершаться все процедуры.


Оффлайн sten_d

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-11-17
  • Сайт: 
Опишу подробнее:
Конфигурация Зарплата и Кадры. Правлю распределение НДФЛ по источникам финансирования. Для этого в глобальном модуле вызываю обработку "Форма1НДФЛ2009", чтобы получить данные по НДФЛ по отдельному человеку. При формировании любого отчета по определенному источнику финансирования для всех людей из списка данные берутся из первой налоговой карточки, потому что она не закрывается и соответственно не открывается новая. Метод "Закрыть()" поставил в процедуре "При открытии" в обработке "Форма1НДФЛ2009". Что тут можно придумать?

Оффлайн sten_d

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-11-17
  • Сайт: 
Проблема я думаю в этом или я ошибаюсь?:
"Действие данного метода не прерывает выполнения текущей процедуры программы, т.е. процедура доработает до конца. Данный метод лишь устанавливает признак, который отрабатывает после окончания выполнения процедуры." (цитата их Синтаксиса-помощника)

Получается так: я формирую отчет -->в отчета идет обращение к глобальному модулю --> здесь мой вызов обработку вот так: "ОткрытьФорму("Обработка.Форма1НДФЛ2009",Параметры1);". Для первого человека из списка все отработало, нормально. Для второго вот это "ОткрытьФорму("Обработка.Форма1НДФЛ2009",Параметры1);" уже не срабатывает, потому что эта обработка не закрылась после первого открытия. И собственно когда отчет сформировался обработка закрывается. Мне нужно чтобы для каждого человека из списка при формировании отчета вызывалась его налоговая карточка. Что делать?

Оффлайн 1cFree

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 1
  • КПД: 10%
  • Регистрация: 2010-06-23
  • Компания: Услуги 1с
Не совсем понятно, что Вы хотите. Попробуем на примере отчета налоговая отчетность/налоговая карточка 1-НДФЛ. Такой отчет Вы хотите получить?

Оффлайн sten_d

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-11-17
  • Сайт: 
Не совсем понятно, что Вы хотите. Попробуем на примере отчета налоговая отчетность/налоговая карточка 1-НДФЛ. Такой отчет Вы хотите получить?

Я правлю распределение НДФЛ по источникам финансирования в глобальном модуле процедура "глПолучитьРаспределениеРезультата". Задача состоит в том чтобы получить в коде данные по НДФЛ(вычеты в этом месяце, облагаемая база с начала года, удержанный НДФЛ с начала года) и записать их в переменные. Потом я эти данные использую для распределения. Вот эта процедура "глПолучитьРаспределениеРезультата" вызывается во всех отчетах(расчетный листок, свод по зарплате, расчетная ведомость и т.д.), когда мы формируем отчет по определенному источнику финансирования. Так вот я все написал и когда я формирую любой отчет, а в список сотрудников ставлю отдного человека, тогда все работает отлично. Но когда в списке сотрудников несколько человек или мы формируем отчет "по всем", "по подразделению", тогда правильное распределение получается только для первого человека из списка.

В процедуре "глПолучитьРаспределениеРезультата" я вызываю обработку вот так: "ОткрытьФорму("Обработка.Форма1НДФЛ2009",Параметры1);" и пытаюсь ее завершить вот так: "Форма.Закрыть(0);"(эта строчка стоит в конце процедуры "При открытии" в самой обработке.). После того как обработка запустилась в первый раз, она завершается только после окончания формирования отчета, и соответственно второй, третий и т.д. разы обработка не запускается потому что она уже запущена, а она должна запускаться для каждого человека из списка.

Оффлайн sten_d

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-11-17
  • Сайт: 
Попробую объяснить пролему по другому(у меня проблемы с постановкой вопроса):

Задача состоит в том чтобы вызвать обработку Форма1НДФЛ2009 для конкретного человека, записать нужные данные в константы и завершить ее. И так по списку для всех сотрудников.

Вызываю я вот так: "ОткрытьФорму("Обработка.Форма1НДФЛ2009",Параметры1);"
Завершить пытаюсь так: "Форма.Закрыть(0);"(эта строчка стоит в конце процедуры "При открытии" в самой обработке.) Обработка не завершается, пока мы не пройдем весь список. И получается что для всех людей мы используем данные из констант записанных для первого человека.

Оффлайн prog1c7.7

  • Модератор
  • *****
  • Сообщений: 784
  • РЕПУТАЦИЯ: 260
  • КПД: 33%
  • ну - да , ну - да...
  • Регистрация: 2010-10-20
  • Сайт: 
  • Профессия: Программист 1С
я конечно мало что понял в вашем алгоритме мыслей, НО
если уж так вам это надо, то запишите в ТЗ все данные по всем переменным которые вы хотите получить, а потом берите их из ТЗ наздоровье, так как если я правильно понимаю вам все равно нужны данные по всему списку сотрудников, правильно понял?

Оффлайн 1cFree

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 1
  • КПД: 10%
  • Регистрация: 2010-06-23
  • Компания: Услуги 1с
Как я понял, форма самой обработки не должна появляться на экране? Тогда в этой обработке  в процедуре "приОткрытии" вы принимаете параметры для расчета, вызываете процедуру расчета, готовите параметры для возврата и пишите СтатусВозврата(0); Возврат; 

Оффлайн 1cFree

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 1
  • КПД: 10%
  • Регистрация: 2010-06-23
  • Компания: Услуги 1с
да, форма должна открываться модально.

Оффлайн sten_d

  • *
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-11-17
  • Сайт: 
Как я понял, форма самой обработки не должна появляться на экране? Тогда в этой обработке  в процедуре "приОткрытии" вы принимаете параметры для расчета, вызываете процедуру расчета, готовите параметры для возврата и пишите СтатусВозврата(0); Возврат; 

спасибо, теперь все работает.


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
172 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
38 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 519
  • Точка Скрытых: 1
  • Точка Пользователей: 9
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal