Создание нескольких Поступлений с Реализации

1. Tailor_Made 20.11.19 11:57 Сейчас в теме
Здравствуйте! УТП 8.3(Обычные формы)

Есть документ "Реализация товаров и услуг", в нём ТЧ.Расшифровка(куда вписаны Исполнители(Контрагенты) и задачи, которые они сделали).
Далее на основании Реализации создаю "Поступление товаров и услуг", где есть такая же ТЧ.Расшифровка. Но одно не могу понять: как сделать, чтобы для Каждого исполнителя из ТЧ.Расшифровка(из Реализации) создавалась отдельное Поступление и туда попадали только его Задачи. Прошу помочь
Прикрепленные файлы:
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
25. Ганс 20.11.19 13:13 Сейчас в теме +0.3 $m
(1)
1) Создать кнопку ( создать Поступление товаров и услуг)
2) далее прописываем:
ТЧИсполнитель= Док.Расшифровка.Свернуть("Исполнитель");
	Для Каждого стр из ТЧИсполнительЦикл
		ДокПтиУ = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
		ДокПтиУ.ДополнительныеСвойства.Вставить("Исполнитель", стр.Исполнитель );
		ДокПтиУ.Заполнить(ссылка);
		Док.ПолучитьФорму().Открыть(); 
	КонецЦикла;


3) В модуле документа Постпления ищем процедуру "ОбработкаЗаполнения"

в ней находим где у нас заполняется ТЧ Расшифровка и дальше делаем что-то типа:
Если ДополнительныеСвойства.Свойство("Исполнитель") И ЗначениеЗаполнено(ДополнительныеСвойства.Исполнитель) Тогда
//Тут пишем заполнения по сотруднику, можно в лоб перебрать все строки из документа основания и проверить совпадает ли у нас исполнитель с тем что находится в ДополнительныеСвойства.Исполнитель
Иначе
//а тут оставляем типовое заполнение ТЧ Расшифровки
КонецЕсли;


Не претендую на истину, но вполне рабочий вариант
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. YannikAlx 43 20.11.19 12:01 Сейчас в теме
(1)
Но одно не могу понять

Так обычным циклом по срокам ТЧ и заполняйте...
В чем ваши проблемы конкретно не понятно ...
+
3. Tailor_Made 20.11.19 12:03 Сейчас в теме
(2)Если в ТЧ.Расшифровка документа Реализация товаров есть к примеру Исполнитель1 и Исполнитель2, то нужно создать два документа Поступление товаров и услуг. В одном Контрагентом будет выступать Исполнитель1, в другом - Исполнитель2
+
4. YannikAlx 43 20.11.19 12:07 Сейчас в теме
(3) ну так вы же создаете как-то 2 документа Поступления, вот и заполняйте соответствующими данными, ведь при создании вы же имеете текущие данные по конкретному Исполнителю, ну и берите данные для Поступления из этих текущих данных....
+
5. Tailor_Made 20.11.19 12:10 Сейчас в теме
(4)в том то и дело, что не создаю. Не знаю, как это сделать - чтобы с одной реализации создавались два Поступления(Или больше)
+
6. ben19791010 20.11.19 12:12 Сейчас в теме
(5) откройте любое типовое решение подобной задачи и всё станет яснее(в БП это много где реализовано, в вашей конфе не знаю )
+
7. Tailor_Made 20.11.19 12:13 Сейчас в теме
(6)могли бы вы подсказать, где искать?
+
8. ben19791010 20.11.19 12:15 Сейчас в теме
(7) у меня нет такой конфигурации УТП (в бп могу сказать)
+
9. Tailor_Made 20.11.19 12:16 Сейчас в теме
(8)бп это БСП? А в ней где?
+
10. ben19791010 20.11.19 12:23 Сейчас в теме
(9)откройте любой документ - ввод на основании / является основанием (и воспользуйтесь конструктором ввода на основании)
Прикрепленные файлы:
+
11. Tailor_Made 20.11.19 12:27 Сейчас в теме
(10)я, наверное, не правильно объяснил проблему. Как просто создать документ на основании другого я понимаю. Но у меня немного другая задача:
Есть Документ реализация товаров, в ней есть ТЧ.Расшифровка(Задача, Исполнитель...)
Нужно при создании документа Поступление товаров создать не один документ, а столько - сколько различных Исполнителей в ТЧ.Расшифровка(Чтобы для каждого исполнителя свой задачи записать)
+
12. ben19791010 20.11.19 12:30 Сейчас в теме
(11)вот столько раз и создадите документ сколько в цикле строк обойдёте с исполнителями (я же не могу за вас это сделать)
+
15. Tailor_Made 20.11.19 12:35 Сейчас в теме
(12)в где бы следовало этот цикл разместить? В Процедуре ПередОткрытием документа ПОступление товаров и услуг?
+
21. ben19791010 20.11.19 12:57 Сейчас в теме
(15) вы бы всё-таки попробовали конструктором воспользоваться... я ж не знаю есть ли в вашей конфе общий модуль ЗаполнениеДокументов (например)
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
	Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ФИЛ_УчетМЦ04") Тогда
		// Заполнение шапки
		Организация = ДанныеЗаполнения.Организация;
		Склад = ДанныеЗаполнения.Склад;
		Для Каждого ТекСтрокаМЦ04 Из ДанныеЗаполнения.МЦ04 Цикл   //МЦ04 это таб часть документа-основания 
			НоваяСтрока = Материалы.Добавить();
			НоваяСтрока.Номенклатура = ТекСтрокаМЦ04.Номенклатура;   //здесь соответств Реквизит ТЧ МЦ04 - документа-основания
		КонецЦикла;
	КонецЕсли;
	//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры
Показать
+
13. ZergKRSK 129 20.11.19 12:32 Сейчас в теме
(11) В Расшифровке может быть один и тот же Исполнитель но с разными задачами?
+
14. Tailor_Made 20.11.19 12:35 Сейчас в теме
(13)может быть и так
могут быть несколько разных Исполнителей с разными задачами
+
16. ZergKRSK 129 20.11.19 12:36 Сейчас в теме
(14) если один и тот же Исполнитель встречается два раза но с разными задачами - Поступлений будет сколько? Два или одно?
+
17. Tailor_Made 20.11.19 12:43 Сейчас в теме
(16)Одно. В ТЧРасшифровка документа "Поступления товаров" просто должны попасть эти две разные задачи
+
18. ZergKRSK 129 20.11.19 12:47 Сейчас в теме
(17) при всём этом Поступления еще должны заполниться данными по типовым алгоритмам? Или же вам просто надо создать пустые Поступления, но главное правильное их количество?
+
19. Tailor_Made 20.11.19 12:54 Сейчас в теме
(18)К примеру
Есть Реализация в которой:
Услуги
Услуга | 30 часов

Расшифровка
Исполнитель1 | Задача1 | 10 часов
Исполнитель1 | Задача2 | 5 часов
Исполнитель2 | Задача3 | 15 часов

Создаются 2 Поступления:
- в одном Контрагент = Исполнитель1
Услуги = Услуга | 15 часов
Расшифровка =
Задача1 | 10 часов
Задача2 | 5 часов

-второе поступление Контрагент = Исполнитель2
Услуги = Услуга | 15 часов
Расшифровка =
Задача3 | 15 часов
+
20. Tailor_Made 20.11.19 12:54 Сейчас в теме
(18)то есть, нужно бы делить по поступлениям Задачи каждого Исполнителя из Расшифровок
+
23. user856012 13 20.11.19 13:03 Сейчас в теме
(1)
Далее на основании Реализации создаю "Поступление товаров и услуг"
Вручную создаете? Или хотите, чтобы эти два (или больше) документа создавались автоматически?

В первом случае заполнение ТЧ.Расшифровка должно делаться в документе Поступление после выбора Исполнителя - надо в цикле заполнения ТЧ.Расшифровка вставить проверку на равенство Исполнителя в строках ТЧ и выбранного в Поступлении, несовпадающих - пропускать.

Вот втором варианте надо делать отдельную обработку или дописывать функционал в документ Реализация - например, создавать кнопку с соответствующим кодом.
+
22. Kovekh 20.11.19 12:59 Сейчас в теме
Вам бы для начала хоть литературу почитать по программированию. Здесь-то за вас многое могут сделать, но вечно на чужом горбу не получится кататься) Задачка-то элементарная и буквально на 5 минут, если иметь хотя бы начальный уровень программирования
+
24. Tailor_Made 20.11.19 13:04 Сейчас в теме
(22)возможно вы правы
+
25. Ганс 20.11.19 13:13 Сейчас в теме +0.3 $m
(1)
1) Создать кнопку ( создать Поступление товаров и услуг)
2) далее прописываем:
ТЧИсполнитель= Док.Расшифровка.Свернуть("Исполнитель");
	Для Каждого стр из ТЧИсполнительЦикл
		ДокПтиУ = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
		ДокПтиУ.ДополнительныеСвойства.Вставить("Исполнитель", стр.Исполнитель );
		ДокПтиУ.Заполнить(ссылка);
		Док.ПолучитьФорму().Открыть(); 
	КонецЦикла;


3) В модуле документа Постпления ищем процедуру "ОбработкаЗаполнения"

в ней находим где у нас заполняется ТЧ Расшифровка и дальше делаем что-то типа:
Если ДополнительныеСвойства.Свойство("Исполнитель") И ЗначениеЗаполнено(ДополнительныеСвойства.Исполнитель) Тогда
//Тут пишем заполнения по сотруднику, можно в лоб перебрать все строки из документа основания и проверить совпадает ли у нас исполнитель с тем что находится в ДополнительныеСвойства.Исполнитель
Иначе
//а тут оставляем типовое заполнение ТЧ Расшифровки
КонецЕсли;


Не претендую на истину, но вполне рабочий вариант
+
26. Tailor_Made 20.11.19 13:40 Сейчас в теме
(25)
ТЧИсполнитель= Док.Расшифровка.Свернуть("Исполнитель");
Для Каждого стр из ТЧИсполнительЦикл
ДокПтиУ = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
ДокПтиУ.ДополнительныеСвойства.Вставить("Исполнитель", стр.Исполнитель );
ДокПтиУ.Заполнить(ссылка);
Док.ПолучитьФорму().Открыть();
КонецЦикла;


Сейчас испытаю. А возможно ли без создания кнопки обойти? Можно этот фрагмент кода вставить в стандартное формирование документа на основании?
+
27. Ганс 20.11.19 13:50 Сейчас в теме
стандартное формирование уходит сразу в заполнение, поэтому через кнопку. Можно добавить кнопку туда же где и типовая, просто в скобочках указать что-нибудь например "по исполнителям" и они будут рядом, одна под другой)
+
28. Tailor_Made 20.11.19 14:08 Сейчас в теме
(27)такая вот ошибка вышла
{Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента.Форма(4261)}: Обращение к процедуре объекта как к функции (Свернуть)
ТЧИсполнитель= ЭтотОбъект.Расшифровка.Свернуть("Исполнитель");
+
29. Tailor_Made 20.11.19 14:09 Сейчас в теме
(27)так вот процедура выглядит
Процедура ДействияФормыСоздатьПоступлениеТоваровИУслуг(Кнопка)

ТЧИсполнитель= ЭтотОбъект.Расшифровка.Свернуть("Исполнитель");
Для Каждого стр из ТЧИсполнитель Цикл
ДокПтиУ = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
ДокПтиУ.ДополнительныеСвойства.Вставить("Исполнитель", стр.Исполнитель );
ДокПтиУ.Заполнить(ссылка);
ЭтотОбъект.ПолучитьФорму().Открыть();
КонецЦикла;

КонецПроцедуры
+
30. Ганс 20.11.19 14:15 Сейчас в теме
(29) Пропустил я строчку, надо так:
ТЧИсполнитель= ЭтотОбъект.Расшифровка.Выгрузить(,"Исполнитель");
ТЧИсполнитель.Свернуть("Исполнитель");
Tailor_Made; +1
31. Tailor_Made 20.11.19 14:21 Сейчас в теме
(30)Отладчиком посмотрел, вроде на этом моменте всё верно, но документы не создаются/не открываются
+
32. Ганс 20.11.19 14:25 Сейчас в теме +0.28 $m
(31)
ЭтотОбъект.ПолучитьФорму().Открыть();
Меняем на
ДокПтиУ.ПолучитьФорму().Открыть();

Но не прописав ничего в модуле поступления вы получите столько документов, сколько у вас Исполнителей в расшифровке и они будут все одинаковые.
+
33. Tailor_Made 20.11.19 14:30 Сейчас в теме
(32)оооо, так получилось. Буду теперь думать, как правильно описать заполнение по Исполнителях
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот