Как заполнить автоматически поле менеджер в реализации на основании заказа

1. ciddex 31.03.20 23:04 Сейчас в теме
Подскажите пожалуйста. Как настроить, чтобы поле Менеджер в документе реализации созданный на основании документа Заказ клиента заполнялось автоматически из заказа.
Догадываюсь, что в обработке заполнения модуля объекта Реализации. Но как именно это реализовать не знаю


Управление торговлей, редакция 11 (11.4.10.57)
По теме из базы знаний
Найденные решения
15. karamazoff 96 01.04.20 22:40 Сейчас в теме
(14)Вот код для процедуры ПослеОбработкаЗаполнения или вставляйте в модуль перед КонецПроцедуры

Если ТипДанныхЗаполнения = Тип("Структура") Тогда
		Если ДанныеЗаполнения.Свойство("ДокументОснование")
			И (ТипЗнч(ДанныеЗаполнения.ДокументОснование) = Тип("ДокументСсылка.ЗаказКлиента")) тогда
			Менеджер = ДанныеЗаполнения.ДокументОснование.Менеджер;
		КонецЕсли;	
	ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ЗаказКлиента") тогда
		Менеджер = ДанныеЗаполнения.ДокументОснование.Менеджер;
	КонецЕсли;	
Показать

работает
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
21. wertep 23 08.02.24 11:51 Сейчас в теме
(1) Зачем такие танцы с бубнами и программированием?
Поле "менеджер" в заказе клиента и в реализации заполняется из трех мест:
1. Поле "ответственный менеджер" в карточке клиента.
2. Поле "ответственный менеджер" из соглашения с клиентом.
3. Поле "ответственный менеджер" из договора с контрагентом.
В какой последовательности идет проверка точно не скажу, но вероятнее всего - договор, соглашение, клиент.
2. Sergex 58 01.04.20 04:10 Сейчас в теме
В модуле объекта документа реализации есть Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
В коде этой процедуры есть блок:
	Если ТипДанныхЗаполнения = Тип("Структура") Тогда
...
	ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ЗаказКлиента") Или
		ТипДанныхЗаполнения = Тип("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента") Тогда
		
		Дата = ЗаказыСервер.ПолучитьМинимальнуюДатуОтгрузкиЗаказа(ДанныеЗаполнения);
		ЗаполнитьДокументНаОснованииЗаказаКлиента(ДанныеЗаполнения, СкладОтгрузки, ВариантОформления);
		ЗаполненНаОснованииДокумента = Истина;
...
Показать

Вот стало быть нам надо модифицировать код процедуры "ЗаполнитьДокументНаОснованииЗаказаКлиента"
Где то в области этой процедуры которая готовит запросом и заполняет шапку документа реализации добавить заполнение менеджера
Запрос там приблизительно такой
Если ТипОснования = Тип("ДокументСсылка.ЗаказКлиента") Тогда
	
		Запрос = Новый Запрос("
		|ВЫБРАТЬ
		|	ЗаказКлиента.Ссылка                КАК ЗаказКлиента,
		|	ЗаказКлиента.Партнер               КАК Партнер,
		|	ЗаказКлиента.Контрагент            КАК Контрагент,
		|	ЗаказКлиента.КонтактноеЛицо        КАК КонтактноеЛицо,
		|	ЗаказКлиента.Договор               КАК Договор,
		|	ЗаказКлиента.Организация           КАК Организация,
		|	ЗаказКлиента.ФормаОплаты           КАК ФормаОплаты,
		|	ЗаказКлиента.Соглашение            КАК Соглашение,
		|	ЗаказКлиента.КартаЛояльности       КАК КартаЛояльности,
		|	ЗаказКлиента.Сделка                КАК Сделка,
		|	ЗаказКлиента.Валюта                КАК Валюта,
		|	ЗаказКлиента.Валюта                КАК ВалютаВзаиморасчетов,
		|	ЗаказКлиента.ГрафикОплаты          КАК ГрафикОплаты,
		|	ЗаказКлиента.Подразделение         КАК Подразделение,
		|	ЗаказКлиента.ДатаОтгрузки          КАК ДатаОтгрузки,
Показать

Добавляем
 |	ЗаказКлиента.Менеджер               КАК Менеджер,
...


Тогда вот эта строка: // Заполнение шапки
ЗаполнитьЗначенияСвойств(ЭтотОбъект, РеквизитыЗаказа);

Установит менеджера из заказа

а в процедуре этого же модуля: Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)

Закомментировать:
Менеджер                  = Пользователи.ТекущийПользователь();


Примеры коды приведены по конфигурации 1С:ERP Управление предприятием 2 (2.4.11.43) но я думаю что эти области кода в УТ 11.4 - подобны
3. karamazoff 96 01.04.20 07:26 Сейчас в теме
Зачем так сложно, да ещё и с порчей типового кода? В конце процедуры обработказаполнения ставим
Ответственный=то что надо,
А ещё лучше в расширении добавить фунцию ПослеОбработкаЗаполнения и прописать эту строчку там
4. PhoenixAOD 62 01.04.20 08:42 Сейчас в теме
(3)Можно и Вместо использовать, туда весь код запилить и править в расширении как надо
8. ciddex 01.04.20 20:47 Сейчас в теме
(4) Подскажите пожалуйста как именно это сделать? Не знаю как получить менеджера из документа основания
5. Sergex 58 01.04.20 10:17 Сейчас в теме
(3)Практика показывает что для ненагруженных систем, для небольших клиентов оптимальнее вносить изменения в конфигурацию что бы там кто не советовал. Потому что обновления управленческой учетной системы случаются в целом раз в несколько лет. Геморроя с расширениями при переходе с платформы на платформу тоже достаточно встречается. Но даже и обновление конфы обвешенной расширениями задача нетривиальная. Сравнимая с обновлением доработанной если уметь это делать конечно.
6. karamazoff 96 01.04.20 11:48 Сейчас в теме
(5)Согласен, но если есть возможность дописать свои строки, а не менять типовые, лучше дописать.
7. ciddex 01.04.20 20:15 Сейчас в теме
(6) Подскажи пожалуйста, а как правильно дописать? В расширении модуле объекта тоже писать в ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка) код как самой конфигурации? или как?
9. karamazoff 96 01.04.20 20:59 Сейчас в теме
как вариант, подменять менеджера при создании на сервере
расширение во вложении

&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	Если Параметры.Свойство("Основание") и Параметры.Основание.Свойство("ДокументОснование") и типзнч(Параметры.Основание.ДокументОснование) = тип("ДокументСсылка.ЗаказКлиента") тогда
		объект.Менеджер = Параметры.Основание.ДокументОснование.Менеджер;
	КонецЕсли;		
КонецПроцедуры
Прикрепленные файлы:
АдаптацияУТ.cfe
10. ciddex 01.04.20 21:11 Сейчас в теме
Спасибо огромное! Я думал в модуля объекта нужно, а не в модуле формы.

Вот что я пробовал
&После("ОбработкаЗаполнения")
Процедура Расш1_ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
	
	Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
		Менеджер = ДанныеЗаполнения.Менеджер;
	КонецЕсли;
	
КонецПроцедуры
Показать
16. ciddex 01.04.20 23:47 Сейчас в теме
(9) тут кстати выходит ошибка такая: " Значение не является значением объектного типа (Свойство)" при попытке открыть документы реализации
11. karamazoff 96 01.04.20 21:32 Сейчас в теме
Можно и в модуле, можно и в форме, мне показалось, проще в форме
12. ciddex 01.04.20 21:33 Сейчас в теме
(11) но то как я сделал не заработало, так и не понял что не так и можно ли подобным образом
13. karamazoff 96 01.04.20 21:35 Сейчас в теме
(12)у вас тоже рабочий вариант, только надо добавить условие, если данныезаполнения структура, то выуживать основание от туда
14. ciddex 01.04.20 21:47 Сейчас в теме
(13) Не работает.. а я ничего не упускаю? только проверку на структуру?
&После("ОбработкаЗаполнения")
Процедура од_ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
	
	ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);
	
	Если ТипДанныхЗаполнения = Тип("Структура") Тогда
		
		Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
			Менеджер = ДанныеЗаполнения.Менеджер;
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры
Показать
15. karamazoff 96 01.04.20 22:40 Сейчас в теме
(14)Вот код для процедуры ПослеОбработкаЗаполнения или вставляйте в модуль перед КонецПроцедуры

Если ТипДанныхЗаполнения = Тип("Структура") Тогда
		Если ДанныеЗаполнения.Свойство("ДокументОснование")
			И (ТипЗнч(ДанныеЗаполнения.ДокументОснование) = Тип("ДокументСсылка.ЗаказКлиента")) тогда
			Менеджер = ДанныеЗаполнения.ДокументОснование.Менеджер;
		КонецЕсли;	
	ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ЗаказКлиента") тогда
		Менеджер = ДанныеЗаполнения.ДокументОснование.Менеджер;
	КонецЕсли;	
Показать

работает
17. ciddex 01.04.20 23:58 Сейчас в теме
(15) В модуле объекта вписал, ошибок синтаксиса нет, но работать не хочет..
&После("ОбработкаЗаполнения")
Процедура од_ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
	
	ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);
	
	Если ТипДанныхЗаполнения = Тип("Структура") Тогда
		
		Если ДанныеЗаполнения.Свойство("ДокументОснование")
			И (ТипЗнч(ДанныеЗаполнения.ДокументОснование) = Тип("ДокументСсылка.ЗаказКлиента")) тогда
			Менеджер = ДанныеЗаполнения.ДокументОснование.Менеджер;
		КонецЕсли;
		
	ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ЗаказКлиента") тогда
		Менеджер = ДанныеЗаполнения.ДокументОснование.Менеджер;
		
	КонецЕсли;
	
КонецПроцедуры
Показать
18. ciddex 02.04.20 00:02 Сейчас в теме
Если кто столкнется, то отключите безопасный режим. Все работает отлично!
19. claus66 06.02.24 15:50 Сейчас в теме
Тема актуальная для версии (11.5.13.104) у меня в реализации в поле менеджер берет менеджера из Клиента (поле Основной менеджер)
Пробовал Вашу адаптацию и вписывать в нее код, ошибок нет, менеджера в реализации так и не меняет, уже и не знаю куда капать. Безопасный режим галку снимал.
20. claus66 08.02.24 11:38 Сейчас в теме
(18)
Приветствую Вас, проблема актуальна для УТ 11.5 случайно не пробовал переделывать ?
Делаю все как описано, но ничего не происходит, если пользоваться вашим кодом. Галочка снята

&После("ОбработкаЗаполнения")
Процедура од_ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
    
    ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);
    
    Если ТипДанныхЗаполнения = Тип("Структура") Тогда
        
        Если ДанныеЗаполнения.Свойство("ДокументОснование")
            И (ТипЗнч(ДанныеЗаполнения.ДокументОснование) = Тип("ДокументСсылка.ЗаказКлиента")) тогда
            Менеджер = ДанныеЗаполнения.ДокументОснование.Менеджер;
        КонецЕсли;
        
    ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ЗаказКлиента") тогда
        Менеджер = ДанныеЗаполнения.ДокументОснование.Менеджер;
        
    КонецЕсли;
    
КонецПроцедуры
Показать


Пока решил проблему так:
Менеджер = справочники.Пользователи.НайтиПоНаименованию(ПараметрыСеанса.ТекущийПользователь); 


Но тут чуть чуть не правильно, т.к. менеджер берется из строки Автор (т.е. кто создает документ, тот встает в поле менеджер)
Оставьте свое сообщение

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