Утробин Михаил | Руководитель отдела внедрения 1С | Группа Компаний ЛАД

«Как не надо внедрять 1С:ERP. Развеем мифы о внедрении»

На примере 8-9 советов хочу рассказать о том, как лучше подойти к внедрению ПП 1С у себя на предприятии. МИФ 1: Внедрим и автоматизируем сразу все! МИФ 2: Учет в единой базе - это хорошо! МИФ 3: Лучший внедренец - Программист, по совместительству Администратор МИФ 4: Установим и начнем вести учет, а там разберемся! МИФ 5: Хочу максимальную функциональность ERP! МИФ 6: Лучшее время перехода на новую систему - с 1 января МИФ 7: Ввод в эксплуатацию нам не нужен, так как пользователи прошли обучение, сами разберутся МИФ 8: На поддержке сэкономим. Кто не разберется урежем премию При этом в рассказе могу добавить примеры на реальных кейсах, как это было на наших проектах. К чему привело то или иное решение, как правильно, как неправильно. В целом, при подходе используя метод "как не нужно делать", объясняется, как же все-таки на самом деле нужно внедрять проект. В этом и есть суть доклада.

Автозаполнение Ответственного за правильность оформления факта хозяйственной жизни БП 2.0

Программирование - Практика программирования

Автозаполнение ответственного за правильность оформления факта хозяйственной жизни в УПД Бухгалтерия 2.0

ОбщийМодульОбщего назначения меняем

Функция ОтветственныеЛица(Организация, ДатаСреза, Подразделение = Неопределено) Экспорт
	
	СобиратьПоОрганизации = Истина;
	Результат = Новый Структура("Руководитель, РуководительДолжность, РуководительФИО, РуководительПредставление, 
								|ГлавныйБухгалтер, ГлавныйБухгалтерДолжность, ГлавныйБухгалтерФИО, ГлавныйБухгалтерПредставление, 
								|Кассир, КассирДолжность, КассирФИО, КассирПредставление,  
								|УПД, УПДДолжность, УПДФИО, УПДПредставление,
								|ОтветственныйЗаРегистры, ОтветственныйЗаРегистрыДолжность, ОтветственныйЗаРегистрыФИО, ОтветственныйЗаРегистрыПредставление");

	Если Организация <> Неопределено тогда

		ЗапросПоЛицам = Новый Запрос();
		ЗапросПоЛицам.УстановитьПараметр("ДатаСреза",   ДатаСреза);
		ЗапросПоЛицам.УстановитьПараметр("Организация", Организация);
		ЗапросПоЛицам.УстановитьПараметр("ПризнакФизЛица",   Перечисления.ЮрФизЛицо.ФизЛицо);
		
		ЗапросПоЛицам.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
		                      |	ФИОФизЛицСрезПоследних.Фамилия,
		                      |	ФИОФизЛицСрезПоследних.Имя,
		                      |	ФИОФизЛицСрезПоследних.Отчество,
		                      |	ФИОФизЛицСрезПоследних.ФизЛицо КАК ФизическоеЛицо
		                      |ИЗ
		                      |	РегистрСведений.ФИОФизЛиц.СрезПоследних(&ДатаСреза, ) КАК ФИОФизЛицСрезПоследних
		                      |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
		                      |		ПО ФИОФизЛицСрезПоследних.ФизЛицо = Организации.ИндивидуальныйПредприниматель
		                      |			И (Организации.Ссылка = &Организация)
		                      |			И (Организации.ЮрФизЛицо = &ПризнакФизЛица)";
		
		Руководители = ЗапросПоЛицам.Выполнить().Выбрать();
		
		Пока Руководители.Следующий() Цикл
			
			ФИО = Новый Структура("Фамилия, Имя, Отчество, Представление");
			Если НЕ (НЕ ЗначениеЗаполнено(Руководители.Фамилия) или Руководители.Фамилия = NULL) Тогда
				ФИО.Фамилия = Руководители.Фамилия;
			КонецЕсли;
			Если НЕ (НЕ ЗначениеЗаполнено(Руководители.Имя) или Руководители.Имя = NULL) Тогда
				ФИО.Имя = Руководители.Имя;
			КонецЕсли;
			Если НЕ (НЕ ЗначениеЗаполнено(Руководители.Отчество) или Руководители.Отчество = NULL) Тогда
				ФИО.Отчество = Руководители.Отчество;
			КонецЕсли;
			Представление = ПолучитьФамилиюИмяОтчество(ФИО.Фамилия, ФИО.Имя, ФИО.Отчество);
			
			Результат.Руководитель               = Руководители.ФизическоеЛицо;
			Результат.РуководительДолжность      = "";
			Результат.РуководительФИО            = ФИО;
			Результат.РуководительПредставление  = Представление;
			
		КонецЦикла;
		
		Если СобиратьПоОрганизации Тогда
			
			ЗапросПоЛицам.Текст = 
			"ВЫБРАТЬ РАЗРЕШЕННЫЕ
			|	ОтветственныеЛицаОрганизацийСрезПоследних.ОтветственноеЛицо,
			|	ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо,
			|	ОтветственныеЛицаОрганизацийСрезПоследних.Должность,
			|	ФИОФизЛицСрезПоследних.Фамилия,
			|	ФИОФизЛицСрезПоследних.Имя,
			|	ФИОФизЛицСрезПоследних.Отчество
			|ИЗ
			|	РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(&ДатаСреза, СтруктурнаяЕдиница = &Организация) КАК ОтветственныеЛицаОрганизацийСрезПоследних
			|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(&ДатаСреза, ФизЛицо ССЫЛКА Справочник.ФизическиеЛица) КАК ФИОФизЛицСрезПоследних
			|		ПО ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо = ФИОФизЛицСрезПоследних.ФизЛицо";
			Руководители = ЗапросПоЛицам.Выполнить().Выбрать();
		КонецЕсли;

		Пока Руководители.Следующий() Цикл

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

			ИначеЕсли Руководители.ОтветственноеЛицо = Перечисления.ОтветственныеЛицаОрганизаций.ГлавныйБухгалтер Тогда
				Результат.ГлавныйБухгалтер           = Руководители.ФизическоеЛицо;
				Результат.ГлавныйБухгалтерДолжность  = Руководители.Должность;
                Результат.ГлавныйБухгалтерФИО        = ФИО;
				Результат.ГлавныйБухгалтерПредставление  = Представление;
				
			ИначеЕсли Руководители.ОтветственноеЛицо = Перечисления.ОтветственныеЛицаОрганизаций.Кассир Тогда
				Результат.Кассир                     = Руководители.ФизическоеЛицо;
				Результат.КассирДолжность      		 = Руководители.Должность;
                Результат.КассирФИО            		 = ФИО;
				Результат.КассирПредставление  = Представление;
				
			ИначеЕсли Руководители.ОтветственноеЛицо = Перечисления.ОтветственныеЛицаОрганизаций.УПД Тогда
				Результат.УПД                     = Руководители.ФизическоеЛицо;
				Результат.УПДДолжность      		 = Руководители.Должность;
                Результат.УПДФИО            		 = ФИО;
				Результат.УПДПредставление  = Представление;

				
			ИначеЕсли Руководители.ОтветственноеЛицо = Перечисления.ОтветственныеЛицаОрганизаций.ОтветственныйЗаНалоговыеРегистры Тогда
				Результат.ОтветственныйЗаРегистры    = Руководители.ФизическоеЛицо;
				Результат.ОтветственныйЗаРегистрыДолжность      = Руководители.Должность;
				Результат.ОтветственныйЗаРегистрыФИО = ФИО;
				Результат.ОтветственныйЗаРегистрыПредставление  = Представление;

			КонецЕсли;

		КонецЦикла;

	КонецЕсли;

	Возврат Результат;

КонецФункции

 

 

Документ Реализация товаров и услуг меняем

Процедура УстановитьРуководителяИГлавногоБухгалтера()
	
	Организация = ЭтотОбъект.Организация;
	Если Организация = Справочники.Организации.ПустаяСсылка() Тогда 
		Возврат;
	КонецЕсли;
	
	ДанныеУполномоченногоЛица = ОбщегоНазначения.ПолучитьДанныеУполномоченногоЛица(Организация, ЭтотОбъект.Ответственный);
	ОтветственныеЛица = ОбщегоНазначения.ОтветственныеЛица(Организация, ЭтотОбъект.Дата);
	
	Если ДанныеУполномоченногоЛица = Неопределено Тогда 
		ЭтотОбъект.Руководитель = ОтветственныеЛица.Руководитель;
		ЭтотОбъект.ГлавныйБухгалтер = ОтветственныеЛица.ГлавныйБухгалтер;
		ЭтотОбъект.ОтветственныйЗаОформление = ОтветственныеЛица.УПД ;
		ЭтотОбъект.ЗаРуководителяПоПриказу = "";
		ЭтотОбъект.ЗаГлавногоБухгалтераПоПриказу = "";
	Иначе
		ЭтотОбъект.Руководитель = ?(ДанныеУполномоченногоЛица.Руководитель=Неопределено,ОтветственныеЛица.Руководитель,ДанныеУполномоченногоЛица.Руководитель);
		ЭтотОбъект.ОтветственныйЗаОформление = ?(ДанныеУполномоченногоЛица.УПД=Неопределено,ОтветственныеЛица.УПД,ДанныеУполномоченногоЛица.УПД);
		ЭтотОбъект.ГлавныйБухгалтер = ?(ДанныеУполномоченногоЛица.ГлавныйБухгалтер=Неопределено,ОтветственныеЛица.ГлавныйБухгалтер,ДанныеУполномоченногоЛица.ГлавныйБухгалтер);
		ЭтотОбъект.ЗаРуководителяПоПриказу = ?(ДанныеУполномоченногоЛица.Руководитель=Неопределено,"",ДанныеУполномоченногоЛица.ПриказРуководитель);
		ЭтотОбъект.ЗаГлавногоБухгалтераПоПриказу = ?(ДанныеУполномоченногоЛица.ГлавныйБухгалтер=Неопределено,"",ДанныеУполномоченногоЛица.ПриказГлавныйБухгалтер);
	КонецЕсли;
	
КонецПроцедуры

 

См. также

Комментарии
Сортировка: Древо
1. user900448 26.01.18 13:42 Сейчас в теме
при формировании УПД выдает

{ОбщийМодуль.ОбщегоНазначения.Модуль(7585)}: Поле объекта не обнаружено (УПД)
ИначеЕсли Руководители.ОтветственноеЛицо = Перечисления.ОтветственныеЛицаОрганизаций.УПД Тогда
Оставьте свое сообщение