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

Автор Тема: Копирование подчиненных документов при интерактивном копировании документа  (Прочитано 1406 раз)

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

Оффлайн dtritus

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2016-01-13
  • Сайт: 
Есть документ "Задача". Он может быть связан с другими "Задачами" следующим образом: в состав Задачи могут входить подзадачи (это простые "Задачи" ссылающиеся реквизитом "Родитель" на главную задачу). В Форме списка можно скопировать Задачу (нажатием F9), при этом происходит открытие формы документа (создание задачи), но подчиненные задачи не копируются и не устанавливается на них связь. При копировании срабатывает:
Процедура ПриКопировании(ОбъектКопирования)
в модуле объекта (тут я могу получить необходимые подзадачи от ОбъектКопирования и скопировать их, но сослаться на саму новую Задачу как родитель не получается - так как этот документ ещё не записан) Далее происходит:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
     в модуле ФормаДокумента. В ней я также могу получить подзадачи и скопировать их, но установить ссылку на родителя не получается, так как у меня ещё по прежнему не записан новый документ, а обратиться к документу тоже не могу он ещё не создан как объект. Далее происходит
&НаКлиенте
Процедура ПриОткрытии(Отказ)
в модуле ФормаДокумента.

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


Оффлайн Vladimir_Sh

  • 1С:Специалист
  • ****
  • Сообщений: 356
  • РЕПУТАЦИЯ: 68
  • КПД: 19%
  • Регистрация: 2015-10-16
  • Компания: Центр бизнес решений "ALT"
  • Профессия: Разработчик 1С
Я бы наверное сделал так:
1. Создал параметр формы, например ПодчиненныеЗадачи
2. В событии "ПриКопировании" заполнял параметр
3. В событии "ПослеЗаписи" (там уже будет ссылка на созданную задачу), брал значения из параметра и заполнял как нужно.
4. Добавить необходимые условия в события (по вкусу :D ).
Если я Вам помог, нажми - Спасибо!

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1097
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
для УЖЕ СУЩЕСТВУЮЩЕЙ задачи придумать кнопку "Копировать подзадачи из другой задачи"....
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн dtritus

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2016-01-13
  • Сайт: 
Я бы наверное сделал так:
1. Создал параметр формы, например ПодчиненныеЗадачи
2. В событии "ПриКопировании" заполнял параметр
3. В событии "ПослеЗаписи" (там уже будет ссылка на созданную задачу), брал значения из параметра и заполнял как нужно.
4. Добавить необходимые условия в события (по вкусу :D ).

А как из модуля объекта (ПриКопировании) получить доступ к параметру формы ПодчиненныеЗадачи?

Оффлайн Vladimir_Sh

  • 1С:Специалист
  • ****
  • Сообщений: 356
  • РЕПУТАЦИЯ: 68
  • КПД: 19%
  • Регистрация: 2015-10-16
  • Компания: Центр бизнес решений "ALT"
  • Профессия: Разработчик 1С
dtritus, вот жешь :( . Что-то я забыл такой маленький момент :). Тогда реквизит, его даже можно в дальнейшем где нить использовать.
Если я Вам помог, нажми - Спасибо!

Оффлайн dtritus

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2016-01-13
  • Сайт: 
dtritus, вот жешь :( . Что-то я забыл такой маленький момент :). Тогда реквизит, его даже можно в дальнейшем где нить использовать.

А ПослеЗаписи это в модуле Формы или модуле объекта делать ? И как получить объект подчиненное задание из реквизита основного?

Оффлайн Vladimir_Sh

  • 1С:Специалист
  • ****
  • Сообщений: 356
  • РЕПУТАЦИЯ: 68
  • КПД: 19%
  • Регистрация: 2015-10-16
  • Компания: Центр бизнес решений "ALT"
  • Профессия: Разработчик 1С
Кстати Вы можете на самом деле в Собитий ПриЗаписи в модуле объекта запросом (или еще каким образом) собирать подчиненные объекты документа основания и делать с ними что угодно, не добавляя доп. реквизиты.
Важный момент если будете править этот же документ в событии его будет необходимо записать повторно и в этом случае событие отработает повторно будьте внимательны.
Если я Вам помог, нажми - Спасибо!

Оффлайн dtritus

  • *
  • Сообщений: 4
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2016-01-13
  • Сайт: 
Кстати Вы можете на самом деле в Собитий ПриЗаписи в модуле объекта запросом (или еще каким образом) собирать подчиненные объекты документа основания и делать с ними что угодно, не добавляя доп. реквизиты.
Важный момент если будете править этот же документ в событии его будет необходимо записать повторно и в этом случае событие отработает повторно будьте внимательны.
в событии ПриЗаписи (если не использовать доп. реквизитов) у меня уже нет доступа к документу от которого скопировали Текущий (соответственно не могу получить(скопировать и сослаться на Текущий) подчиненные документы). Поэтому реквизит такой нужен. Но Ваша мысль мне помогла, и именно в модуле объекта ПриЗаписи я буду доставать документ от которого был скопирован Текущий (если такой есть) и получать подчиненные.
Добавлено: 13 Янв 2016, 17:03

Добавил реквизит в объект СкопированОт. В модуле объекта ПриКопировании устанавливал СкопированОт=ОбъектКопирования.Ссылка . Далее в этом же модуле ПриЗаписи брал СкопированОт от него получал подчиненные документы, их копировал и устанавливал им родителя ЭтотОбъект.Ссылка. Ну и добавил пару условий чтобы при первой записи после копирования документа реквизит СкопированОт очищался и объект ещё раз записывался.

Модуль Объекта
Процедура ПриКопировании(ОбъектКопирования)	
    #Область ДОБАВЛЕНИЯ
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
//
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Задание.Ссылка КАК Задание,
| Задание.Номер КАК Номер,
| Задание.Дата КАК Дата,
| Задание.Выполнено,
| Задание.ТекущийИсполнитель,
| Задание.ТекущийЭтап,
| Задание.Тема,
| Задание.ТекущийЭтап.НавСсылка КАК НавСсылка,
| Задание.Процесс,
| Задание.Сервис
|ИЗ
| Документ.Задание КАК Задание
|ГДЕ
| Задание.Родитель = &Родитель
| И Задание.Родитель <> ЗНАЧЕНИЕ(Документ.Задание.ПустаяСсылка)
| И НЕ Задание.ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| Дата,
| Номер,
| Задание.Ссылка
|АВТОУПОРЯДОЧИВАНИЕ";

Запрос.УстановитьПараметр("Родитель", ОбъектКопирования.Ссылка);
РезультатЗапроса = Запрос.Выполнить();       
Если НЕ РезультатЗапроса.Пустой() Тогда
СкопированОт = ОбъектКопирования.Ссылка;
КонецЕсли
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
#КонецОбласти
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
#Область ДОБАВЛЕНИЯ
Если ЗначениеЗаполнено(ЭтотОбъект.СкопированОт) Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Задание.Ссылка КАК Задание,
| Задание.Номер КАК Номер,
| Задание.Дата КАК Дата,
| Задание.Выполнено,
| Задание.ТекущийИсполнитель,
| Задание.ТекущийЭтап,
| Задание.Тема,
| Задание.ТекущийЭтап.НавСсылка КАК НавСсылка,
| Задание.Процесс,
| Задание.Сервис
|ИЗ
| Документ.Задание КАК Задание
|ГДЕ
| Задание.Родитель = &Родитель
| И Задание.Родитель <> ЗНАЧЕНИЕ(Документ.Задание.ПустаяСсылка)
| И НЕ Задание.ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| Дата,
| Номер,
| Задание.Ссылка
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("Родитель", ЭтотОбъект.СкопированОт.Ссылка);
РезультатЗапроса = Запрос.Выполнить();       
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Задание = ВыборкаДетальныеЗаписи.Задание.Скопировать();
Задание.Дата = ТекущаяДата();
Задание.Родитель = ЭтотОбъект.Ссылка;
Задание.Записать();
КонецЦикла;
ЭтотОбъект.СкопированОт = NULL;
ЭтотОбъект.Записать();
КонецЕсли;
#КонецОбласти
КонецПроцедуры
В общем как то так получилось. Протестировал - полёт нормальный.

Последний раз редактировалось: dtritus; 13 Янв 2016, 17:03. Причина: Объединение сообщений


Теги:
 

Не открывает форму сохраненного документа, открывает форму нового.

Автор EHOTРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 4375
Последний ответ 13 Апр 2012, 23:26
от Vit1501
Автоматическое заполнение табличной части документа из табличной части другого

Автор WillРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 15388
Последний ответ 16 Авг 2012, 12:07
от Will
Заполнение поля табличной части документа из табличной части справочника.

Автор Kurt_WagnerРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 4040
Последний ответ 06 Апр 2015, 20:08
от Kurt_Wagner
Заполнение табличной части документа реквизитами табличной части справочника

Автор kaf_infoРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 503
Последний ответ 10 Май 2017, 20:44
от ilnur75
Добавление сведений в графу "основание" документа "ТОРГ-12"

Автор Ярослав1984Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 7558
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

oleg-x
90 Сообщений
alex0402
54 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
44 Сообщений
AIFrame
40 Сообщений
Oldman06
31 Сообщений
Golickoff Golickoff
30 Сообщений
vitasw
29 Сообщений
MuI_I_Ika MuI_I_Ika
18 Сообщений
BuhRust
14 Сообщений
AsadRoman
13 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal