INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Бачаева Юлия | Руководитель проектов | ГК «Софт-сервис»

«Как не потерять контроль над управлением проектом»

Изменение первоначальных условий договоренностей в процессе проекта, как основные факторы риска. Удовлетворение потребностей заказчика в рамках проекта и избежание переработки участников проекта. Эффективность проектной документации, как средство коммуникации между участниками проекта. Убеждение заказчика в рациональности предложенного решения задач автоматизации. Распределение ресурсов проекта на этапе проектирования и во время внедрения. Защита проекта: ожидания от функционала системы и реальный результат.

1. Elsveir 16.05.18 14:29 Сейчас в теме

Создание внешней печатной формы ПКО Бухгалтерия 3.0 с доработкой поля "корреспондирующий счет,субсчет".

Доброе время суток, делаю тренировочное задание суть которого заключается в том что бы создать внешнюю печатную форму Приходного кассового ордера и доработать в ней поле "корреспондирующий счет,субсчет" так чтобы в нем отображалась проводка по кредиту документа "Поступление наличных", проблема заключается в том что я не могу понять как эту проводку "взять", думаю что наверняка нужно создать какой-нибудь запрос к регистру бухгалтерии, прошу подсказать в каком направлении копать, буду рад любой полезной информации.




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

// Функция формирует табличный документ с печатной формой ПКО
//
// Возвращаемое значение:
//  Табличный документ - печатная форма
//
Функция ПечатьПКО(МассивОбъектов, ОбъектыПечати)
	Перем ПодразделениеОтветственныхЛиц;
	
	УстановитьПривилегированныйРежим(Истина);
	
	ВалютаРегламентированногоУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПриходныйКассовыйОрдер_КО1";
	
	Макет = УправлениеПечатью.МакетПечатнойФормы("ОбщийМакет.ПФ_MXL_КО1");
	
	Запрос = Новый Запрос();
	Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
	Запрос.Текст = ПолучитьТекстЗапросаДляФормированияПечатнойФормыПКО();
	
	// Введенно пользователем начало
	//  
	//ЗапросКт = Новый Запрос();
	//ЗапросКт.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
	//ЗапросКт.Текст = ЗапросКредит();
	//КредитШапка = ЗапросКт.Выполнить().Выбрать();
	
	//Введено пользователем конец
	
	Шапка = Запрос.Выполнить().Выбрать();
	
	ПервыйДокумент = Истина;
	Пока Шапка.Следующий() Цикл
		
		Если НЕ ПервыйДокумент Тогда
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		ПервыйДокумент = Ложь;
		// Запомним номер строки, с которой начали выводить текущий документ.
		НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
		
		ЕстьРасчетыСКонтрагентами = УчетДенежныхСредствКлиентСервер.ЕстьРасчетыСКонтрагентами(Шапка.ВидОперации);
		ЕстьРасчетыПоКредитам     = УчетДенежныхСредствКлиентСервер.ЕстьРасчетыПоКредитам(Шапка.ВидОперации);
		
		Валютный = Шапка.ВалютаДокумента <> ВалютаРегламентированногоУчета;
		
		// Выводим шапку ПКО
		СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента);
		
		ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
		
		ОбластьМакета.Параметры.Заполнить(Шапка);
		ОбластьМакета.Параметры.ПредставлениеОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,");
		
		ОбластьМакета.Параметры.СуммаРубКоп       = ?(Валютный, Формат(Шапка.Сумма, "ЧЦ=15; ЧДЦ=2") + " " + СокрЛП(Шапка.ВалютаДокумента), РубКоп(Шапка.Сумма));
		ОбластьМакета.Параметры.Сумма             = Формат(Шапка.Сумма, "ЧЦ=15; ЧДЦ=2") + ?(Валютный, " " + СокрЛП(Шапка.ВалютаДокумента), "");
		ОбластьМакета.Параметры.СуммаПрописью     = ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(Шапка.Сумма, Шапка.ВалютаДокумента);
		
		ОбластьМакета.Параметры.ОрганизацияПоОКПО = СведенияОбОрганизации.КодПоОКПО;
		ОбластьМакета.Параметры.ДатаДокумента     = Шапка.ДатаДокумента;
		ОбластьМакета.Параметры.НомерДокумента    = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Шапка.Номер, Истина, Ложь);
		
		КодыСчетСубсчет = ОпределитьКодыСчетСубсчет(ВалютаРегламентированногоУчета, Шапка);
		
		ОбластьМакета.Параметры.КодДебета = КодыСчетСубсчет.Дебет;
	
		//Если КодыСчетСубсчет.Кредит = " 62.01, 62.02" ИЛИ " 62.02, 62.02"  Тогда
		//	КодыСчетСубсчет.Кредит = "62.02";
		//Иначе
		//	 КодыСчетСубсчет.Кредит = "62.01";
		// КонецЕсли;
		
		
		 
		        
		//ЕСЛИ НЕ Шапка.СчетУчетаРасчетовСКонтрагентом = NULL     Тогда
			  ОбластьМакета.Параметры.СубСчет  = Шапка.СчетУчетаРасчетовСКонтрагентом;
		//Иначе 
		//	ОбластьМакета.Параметры.СубСчет  = КодыСчетСубсчет.Кредит  ;
		
		   //КонецЕсли;
		 
		//ОбластьМакета.Параметры.СубСчет   = КодыСчетСубсчет.Кредит;
		
		ТабНДС = Шапка.РасшифровкаПлатежа.Выгрузить();
		ТабНДС.Свернуть("СтавкаНДС", "СуммаНДС");
		
		ТекстСуммаНДС = "";
		
		Если ЕстьРасчетыСКонтрагентами ИЛИ ЕстьРасчетыПоКредитам 
			ИЛИ Шапка.ВидОперации = Перечисления.ВидыОперацийПКО.РозничнаяВыручка Тогда
			
			Для каждого СтрокаНДС Из ТабНДС Цикл
				ТекстСуммаНДС = ТекстСуммаНДС + Символы.ПС + "НДС ("
					+ ?(НЕ ЗначениеЗаполнено(СтрокаНДС.СтавкаНДС), "без налога", СтрокаНДС.СтавкаНДС) + ") "
					+ Формат(СтрокаНДС.СуммаНДС, "ЧЦ=15;ЧДЦ=2;ЧРД=-;ЧН=0-00") + " " + Шапка.ВалютаПредставление;
			КонецЦикла;
			
		Иначе
			ТекстСуммаНДС = ТекстСуммаНДС + Символы.ПС + "НДС (без налога) "
				+ Формат(0, "ЧЦ=15;ЧДЦ=2;ЧРД=-;ЧН=0-00") + " " + Шапка.ВалютаПредставление;
		КонецЕсли;
		
		ТекстСуммаНДС = Сред(ТекстСуммаНДС, 2);
		
		ОбластьМакета.Параметры.ВТомЧисле = ТекстСуммаНДС;
		
		ПодразделениеОтветственныхЛиц = Шапка.ПодразделениеОрганизации;
		
		ОтветственныеЛица = ОтветственныеЛицаБП.ОтветственныеЛица(Шапка.Организация, Шапка.ДатаДокумента, ПодразделениеОтветственныхЛиц);
		
		ОбластьМакета.Параметры.ФИОГлавногоБухгалтера = ОтветственныеЛица.ГлавныйБухгалтерПредставление;
		ОбластьМакета.Параметры.ФИОКассира            = ОтветственныеЛица.КассирПредставление;
		
		ОбластьМакета.Параметры.ПринятоОт  = Шапка.ПринятоОт;
		ОбластьМакета.Параметры.Основание  = Шапка.Основание;
		ОбластьМакета.Параметры.Приложение = Шапка.Приложение;
		
		ТабличныйДокумент.Вывести(ОбластьМакета);
		
		// В табличном документе зададим имя области, в которую был
		// выведен объект. Нужно для возможности печати покомплектно.
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
		
	КонецЦикла;
	
	Возврат ТабличныйДокумент;
	
КонецФункции

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	// Проверяем, нужно ли для макета ПКО формировать табличный документ.
			
		// Формируем табличный документ и добавляем его в коллекцию печатных форм.
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
			"ПриходныйКассовыйОрдер_КО1", "ПриходныйКассовыйОрдер_КО1", ПечатьПКО(МассивОбъектов, ОбъектыПечати));
	
	
	ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
	
КонецПроцедуры

Показать
Прикрепленные файлы:
Шаблон2.epf
Ответы
Сортировка: Древо
2. buriZa 30 16.05.18 15:38 Сейчас в теме
Добрый день!
1) Этот запрос писали вы или он типовой?
2) Счёта Кт может быть два в одном документе. И 62.01 и 62.02, как тогда выводить строки? По строкам счёт и их суммы или одной строкой и общую сумму в ней?
3) Если задача только в том, что вы описали, то вы можете без обращения в документу в запросе сразу брать виртуальную таблицу Регистры бухгалтерии "Хозрасчетный.ОборотыДтКт". В параметрах виртуальной таблицы указывать УсловияСчётаКт (62.01 и 62.02 (Массивом)) и Условия (СубконтоКт3 = Ссылке на приходник). Этого должно быть достаточно (ещё можно указать Периодичность = Авто, там же в параметрах) (Скрин). И в регистре все данные для печати, вроде, есть.
Прикрепленные файлы:
3. Elsveir 17.05.18 00:11 Сейчас в теме
Здравствуйте.
1) Запрос типовой, был вырван из документа Приходный кассовый ордер в Бухгалтерии.
2) Если честно над этим не задумывался, думаю удобней по строкам.
3) Спасибо!, попробую сделать отпишусь по результату.
4. Elsveir 17.05.18 07:50 Сейчас в теме
Пока к сожалению ничего не вышло, вот что сделал добавил новый запрос и через него пытаюсь найти поле.
Функция СчетКт()
	ТекстЗапроса =
	"ВЫБРАТЬ
		|	ХозрасчетныйОборотыДтКт.СчетКт,
		|	ХозрасчетныйОборотыДтКт.СубконтоКт3,
		|	ХозрасчетныйОборотыДтКт.Регистратор
		|ИЗ
		|	РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(, , Авто, , , , , ) КАК ХозрасчетныйОборотыДтКт
		|ГДЕ
		|	&СубконтоКт3 = ЗНАЧЕНИЕ(ПриходныйКассовыйОрдер.СубконтоКт3)
		|	 ХозрасчетныйОборотыДтКт.СчетКт = &СчетКт
		|    
		|    
		|
		|СГРУППИРОВАТЬ ПО
		|	ХозрасчетныйОборотыДтКт.ПериодСекунда,
		|	ХозрасчетныйОборотыДтКт.СчетКт,
		|	ХозрасчетныйОборотыДтКт.СубконтоКт3,
		|	ХозрасчетныйОборотыДтКт.Регистратор";
	Возврат ТекстЗапроса

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

Функция ПечатьПКО(МассивОбъектов, ОбъектыПечати)
	Перем ПодразделениеОтветственныхЛиц;
	
	УстановитьПривилегированныйРежим(Истина);
	
	ВалютаРегламентированногоУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПриходныйКассовыйОрдер_КО1";
	
	Макет = УправлениеПечатью.МакетПечатнойФормы("ОбщийМакет.ПФ_MXL_КО1");
	
	Запрос = Новый Запрос();
	Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
	Запрос.Текст = ПолучитьТекстЗапросаДляФормированияПечатнойФормыПКО();
	
	// Введенно пользователем начало
	  
	ЗапросКт = Новый Запрос();
	//ЗапросКт.УстановитьПараметр("СубконтоКт3", СубконтоКт3);
	 Массив = Новый Массив;
	Массив.Добавить("62.01");
	Массив.Добавить("62.02");
	ЗапросКт.УстановитьПараметр("СчетКт", Массив);
	ЗапросКт.Текст = СчетКт();
	КредитШапка = ЗапросКт.Выполнить().Выбрать();
	
	//Введено пользователем конец
	
	Шапка = Запрос.Выполнить().Выбрать();
	
	ПервыйДокумент = Истина;
	Пока Шапка.Следующий() Цикл
		
		Если НЕ ПервыйДокумент Тогда
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		ПервыйДокумент = Ложь;
		// Запомним номер строки, с которой начали выводить текущий документ.
		НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
		
		ЕстьРасчетыСКонтрагентами = УчетДенежныхСредствКлиентСервер.ЕстьРасчетыСКонтрагентами(Шапка.ВидОперации);
		ЕстьРасчетыПоКредитам     = УчетДенежныхСредствКлиентСервер.ЕстьРасчетыПоКредитам(Шапка.ВидОперации);
		
		Валютный = Шапка.ВалютаДокумента <> ВалютаРегламентированногоУчета;
		
		// Выводим шапку ПКО
		СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента);
		
		ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
		
		ОбластьМакета.Параметры.Заполнить(Шапка);
		ОбластьМакета.Параметры.ПредставлениеОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,");
		
		ОбластьМакета.Параметры.СуммаРубКоп       = ?(Валютный, Формат(Шапка.Сумма, "ЧЦ=15; ЧДЦ=2") + " " + СокрЛП(Шапка.ВалютаДокумента), РубКоп(Шапка.Сумма));
		ОбластьМакета.Параметры.Сумма             = Формат(Шапка.Сумма, "ЧЦ=15; ЧДЦ=2") + ?(Валютный, " " + СокрЛП(Шапка.ВалютаДокумента), "");
		ОбластьМакета.Параметры.СуммаПрописью     = ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(Шапка.Сумма, Шапка.ВалютаДокумента);
		
		ОбластьМакета.Параметры.ОрганизацияПоОКПО = СведенияОбОрганизации.КодПоОКПО;
		ОбластьМакета.Параметры.ДатаДокумента     = Шапка.ДатаДокумента;
		ОбластьМакета.Параметры.НомерДокумента    = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Шапка.Номер, Истина, Ложь);
		
		КодыСчетСубсчет = ОпределитьКодыСчетСубсчет(ВалютаРегламентированногоУчета, Шапка);
		
		ОбластьМакета.Параметры.КодДебета = КодыСчетСубсчет.Дебет;
	
		//Если КодыСчетСубсчет.Кредит = " 62.01, 62.02" ИЛИ " 62.02, 62.02"  Тогда
		//	КодыСчетСубсчет.Кредит = "62.02";
		//Иначе
		//	 КодыСчетСубсчет.Кредит = "62.01";
		// КонецЕсли;
		
			 ОбластьМакета.Параметры.СубСчет  = КредитШапка.СчетКт;


Показать
5. buriZa 30 17.05.18 08:32 Сейчас в теме
(4) Цикл сами заполните, надеюсь. Когда в запросе обращаетесь в параметру Массива и т.п. пишите "В (...)". Посмотрите куры Чистова по запросам, очень доходчиво. Я с них начинал. И можете пробовать пользоваться консолью запросов, в гугле их море.
Счета в регистре, да и почти везде хранятся НЕ как ТИП Строка ("62.01"...), а как ссылка на объект ПланыСчетов.Хозрасчетный...
Я в предыдущем сообщение ошибся, МассивОбъектов, что вы печатаете надо приравнивать к регистратору, а не к СубконтоКт3. Третий субконто счетов 62.01 и 62.02 - это партия. Партия может быть как Приходник денег (в случае аванса 62.02), так и документ реализации товаров (если 62.01 оплата закрывает долг покупателя НЕ авансом).
Функция ПечатьПКО(МассивОбъектов, ОбъектыПечати)
	
	Запрос       = Новый Запрос;
	Запрос.Текст = ПолучитьТекстЗапроса();
	
	Массив62 = Новый Массив;
    Массив62.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПокупателями); // 62.01
    Массив62.Добавить(ПланыСчетов.Хозрасчетный.РасчетыПоАвансамПолученным); // 62.02
	
	Запрос.УстановитьПараметр("Массив62", Массив62);
	Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
	
	РезультатЗапроса = Запрос.Выполнить();
	Шапка            = РезультатЗапроса.Выбрать();
	
	Пока Шапка.Следующий() Цикл
		
		// к примеру у вас 2а документа, в одном СчётКт = 62.02, во втором 62.01 и 62.02
		// При выполение запроса получим три строки
		// Обойдите в цикле, но не забывайте про мой 2й вопрос и берите НЕ сумму документа, а СуммаОборот из запроса
		// т.к. во втором документе сумма документа может = 10 руб., а по запросу и проводкам на 62.01 = 4 руб. | на 62.02 = 6 руб.
		
	КонецЦикла;
		
КонецФункции // ПечатьПКО()

Функция ПолучитьТекстЗапроса()
	
	Текст = 
	"ВЫБРАТЬ
	|	ХозрасчетныйОборотыДтКт.Регистратор КАК Регистратор,
	|	ХозрасчетныйОборотыДтКт.СубконтоКт3 КАК ДокументПартии,
	|	ХозрасчетныйОборотыДтКт.СчетКт КАК СчетКт,
	|	СУММА(ХозрасчетныйОборотыДтКт.СуммаОборот) КАК СуммаОборот
	|ИЗ
	|	РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(, , Авто, , , СчетКт В (&Массив62), , ) КАК ХозрасчетныйОборотыДтКт
	|ГДЕ
	|	ХозрасчетныйОборотыДтКт.Регистратор В(&МассивОбъектов)
	|
	|СГРУППИРОВАТЬ ПО
	|	ХозрасчетныйОборотыДтКт.СчетКт,
	|	ХозрасчетныйОборотыДтКт.Регистратор,
	|	ХозрасчетныйОборотыДтКт.СубконтоКт3";
	
	Возврат Текст;
	
КонецФункции // ПолучитьТекстЗапроса()
Показать
6. Elsveir 17.05.18 08:44 Сейчас в теме
Спасибо!, сейчас попробую реализовать,
с запросами у меня действительно не очень.....
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Одесса (Украина)
зарплата от 40 000 руб.
Полный день

Программист 1С
Санкт-Петербург
Полный день

Аналитик 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Полный день

1С Developer
Одесса (Украина)
зарплата от 60 000 руб. до 120 000 руб.
Полный день

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 70 000 руб. до 90 000 руб.
Полный день