Написал запрос, добавил на форму реквизит "Контрагент", нужно чтобы при выборе только подгруппы контрагентов получались документы

1. user973528 08.10.18 14:29 Сейчас в теме
Функция ПолучитьДокумент(Кон, Дог)
	
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	               |	АктСверкиВзаиморасчетов.Ссылка
	               |ИЗ
	               |	Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
	               |ГДЕ
	               |	АктСверкиВзаиморасчетов.Дата = &Дата
	               |	И АктСверкиВзаиморасчетов.Организация = &Организация
	               |	И АктСверкиВзаиморасчетов.Контрагент = &Контрагент
	               |	И АктСверкиВзаиморасчетов.ДоговорКонтрагента = &ДоговорКонтрагента";
				   
	Запрос.УстановитьПараметр("Дата", НачалоДня(ЭтотОбъект.ДатаДокументов));
	Запрос.УстановитьПараметр("Организация", ЭтотОбъект.Организация);
	Запрос.УстановитьПараметр("Контрагент", Кон.Ссылка);
	Запрос.УстановитьПараметр("ДоговорКонтрагента", Дог.Ссылка);
	
	ТЗ = Запрос.Выполнить().Выгрузить();
	Если ТЗ.Количество() > 0 Тогда
		Стр = ТЗ.Получить(0);
		Возврат Стр.Ссылка;
	КонецЕсли;
	
	Возврат Неопределено;
КонецФункции
Показать


Как сделать чтобы при выборе подгрупп, документы получить только по контрагентам которые входят в подгруппу?
По теме из базы знаний
Найденные решения
5. iliya2009 08.10.18 14:37 Сейчас в теме
ВЫБРАТЬ
| АктСверкиВзаиморасчетов.Ссылка
|ИЗ
| Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
|ГДЕ
| АктСверкиВзаиморасчетов.Дата = &Дата
| И АктСверкиВзаиморасчетов.Организация = &Организация
| И АктСверкиВзаиморасчетов.Контрагент = &Контрагент
| И АктСверкиВзаиморасчетов.ДоговорКонтрагента = &ДоговорКонтрагента
| И АктСверкиВзаиморасчетов.Контрагент.Родитель = &Родитель";
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. VZyryanov 08.10.18 14:35 Сейчас в теме
И АктСверкиВзаиморасчетов.Контрагент В ИЕРАРХИИ(&Контрагент)
3. user973528 08.10.18 14:36 Сейчас в теме
(2)
В ИЕРАРХИИ(&Контрагент)


А ссылку как передать?
Так же сделать

Запрос.УстановитьПараметр("Контрагент1", Кон.Ссылка); ?
96. bmk74 233 09.10.18 15:32 Сейчас в теме
(3)
(94) Так студенту я и предлагал дописать обработку :)

ЕСТЬNULL( АктСверкиВзаиморасчетов.Ссылка,"Нет Акта Сверки") КАК АктСверки

Ну да есть, привычка, просто...уже..обычно это использую ток на числах...
А сложнее...да :)..ну так учиться учится и еще раз учиться, при том вы просили я написал, с учетом регистра бухгалтерии что в принципе в задаче было :) и я считаю условие правильное, выше написал почему...
4. user973528 08.10.18 14:36 Сейчас в теме
(2) Просто должна работать и при выборе одного контрагента и если выбирают допустим группу
5. iliya2009 08.10.18 14:37 Сейчас в теме
ВЫБРАТЬ
| АктСверкиВзаиморасчетов.Ссылка
|ИЗ
| Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
|ГДЕ
| АктСверкиВзаиморасчетов.Дата = &Дата
| И АктСверкиВзаиморасчетов.Организация = &Организация
| И АктСверкиВзаиморасчетов.Контрагент = &Контрагент
| И АктСверкиВзаиморасчетов.ДоговорКонтрагента = &ДоговорКонтрагента
| И АктСверкиВзаиморасчетов.Контрагент.Родитель = &Родитель";
9. YannikAlx 43 08.10.18 14:44 Сейчас в теме
(5) Вы пробовали сами получить хоть что либо по этому запросу?
Вечная пустота, при наличии кучи документов...
6. YannikAlx 43 08.10.18 14:40 Сейчас в теме
Вы включили в параметры &ДоговорКонтрагента для чего?

По тексту программы и тексту вопроса ясности нет - уточните что вы хотите вводить в качестве параметров и что получить на выходе
7. user973528 08.10.18 14:42 Сейчас в теме
(6)
Вы включили в пар


Получается находим Договор по акту и подтягиваем этот же договор в наш новый созданный по обработке
8. user973528 08.10.18 14:43 Сейчас в теме
(6) По подгруппе я уже сделал, спасибо. Вопрос еще в том, что не все поставщики находятся в подгруппе
10. YannikAlx 43 08.10.18 14:46 Сейчас в теме
Вот я и уточняю чего вы хотите получить?
Ибо ваши тексты противоречат друг другу
12. user973528 08.10.18 14:49 Сейчас в теме
(10)
Я всё настроил, всё хорошо работает. Проблема только в том, что не все Поставщики (Контрагенты) занесены в подгруппу "Поставщики". Вот я и не могу понять как их туда тоже засунуть, чтобы 1С поняла что это тоже поставщики
14. YannikAlx 43 08.10.18 15:04 Сейчас в теме
(12) что значит - "засунуть" - перенесите всех кто не в группе в эту группу.
Но это не очень хороший метод - группа - очень условное место, сегодня они все в группе а завтра кто-то взял да и перетащил их еще куда .
Лучше использовать на мой взгляд Реквизит Договора с контрагентом ВидДоговора (если это БП3) и отбирать тех у кого есть договор с видом "С поставщиком"
15. user973528 08.10.18 15:04 Сейчас в теме
(14) Да, как раз таки сейчас такой случай, что некоторые контрагенты находятся не в группе
11. YannikAlx 43 08.10.18 14:49 Сейчас в теме
Ибо даже параметр
АктСверкиВзаиморасчетов.Дата = &Дата
Вам не позволит корректно получить требуемые документы.
Не используют обычно знак равенства... или МЕЖДУ двух интервалов или больше-меньше
13. user973528 08.10.18 15:02 Сейчас в теме
(11) Не подскажете откуда Оборотно-сальдовая ведомость при формировании берет данные?
16. YannikAlx 43 08.10.18 15:05 Сейчас в теме
(13) Из регистра бухгалтерии (еще раз если это у вас БП)
17. user973528 08.10.18 15:06 Сейчас в теме
(16)
У меня Аренда
Аренда и управление недвижимостью для "1С:Бухгалтерия 8",
18. user973528 08.10.18 15:06 Сейчас в теме
(16) Да, в договорах есть "С поставщиком"
19. user973528 08.10.18 15:09 Сейчас в теме
(16) А как тогда можно проверку сделать в запросе?
21. YannikAlx 43 08.10.18 15:12 Сейчас в теме
22. user973528 08.10.18 15:13 Сейчас в теме
20. user973528 08.10.18 15:10 Сейчас в теме
(16) Получается мне нужно что Если Объект.Контрагент = "Подгруппа поставщики" тогда ищем по виду договора и создаём
42. user973528 08.10.18 16:26 Сейчас в теме
(16) Полный код


Процедура КнопкаВыполнитьНажатие(Кнопка)
	
	ЭтотОбъект.Состав.Очистить();
	
	Если (Не ЗначениеЗаполнено(ЭтотОбъект.НачПериода)) или (Не ЗначениеЗаполнено(ЭтотОбъект.КонПериода)) Тогда
		Предупреждение("Не заполнен период сверки расчетов!!!");
		Возврат;
	КонецЕсли;
	Если ЭтотОбъект.ВыбКонтрагент.ЭтоГруппа Тогда
		Выборка = Справочники.Контрагенты.Выбрать(ВыбКонтрагент.Ссылка);
	    Пока Выборка.Следующий() Цикл
			Состояние("Обрабатывается контрагент: " + СокрЛП(Выборка.Наименование));
			ВыборкаД = Справочники.ДоговорыКонтрагентов.Выбрать(,Выборка.Ссылка);
			Пока ВыборкаД.Следующий() Цикл
				Состояние("Обрабатывается контрагент: " + СокрЛП(Выборка.Наименование) + "; по договору: " + СокрЛП(ВыборкаД.Наименование));
				Если ЭлементыФормы.Переключатель1.Значение = 2 Тогда
					СформироватьАктСверки(Выборка.Ссылка, ВыборкаД.Ссылка);
				ИначеЕсли ЭлементыФормы.Переключатель1.Значение = 1 Тогда
					Если Расторгнут(Выборка.Ссылка, ВыборкаД.Ссылка) Тогда
						СформироватьАктСверки(Выборка.Ссылка, ВыборкаД.Ссылка);
					КонецЕсли;
				ИначеЕсли ЭлементыФормы.Переключатель1.Значение = 0 Тогда
					Если Расторгнут(Выборка.Ссылка, ВыборкаД.Ссылка) Тогда
						Продолжить;
					КонецЕсли;
					СформироватьАктСверки(Выборка.Ссылка, ВыборкаД.Ссылка);
				КонецЕсли;
			КонецЦикла;		
		КонецЦикла;
	Иначе
		Состояние("Обрабатывается контрагент: " + СокрЛП(ЭтотОбъект.ВыбКонтрагент.Наименование));
		ВыборкаД = Справочники.ДоговорыКонтрагентов.Выбрать(, ЭтотОбъект.ВыбКонтрагент);
		Пока ВыборкаД.Следующий() Цикл
			Состояние("Обрабатывается контрагент: " + СокрЛП(ЭтотОбъект.ВыбКонтрагент.Наименование) + "; по договору: " + СокрЛП(ВыборкаД.Наименование));
			Если ЭлементыФормы.Переключатель1.Значение = 2 Тогда
				СформироватьАктСверки(Выборка.Ссылка, ВыборкаД.Ссылка);
			ИначеЕсли ЭлементыФормы.Переключатель1.Значение = 1 Тогда
				Если Расторгнут(Выборка.Ссылка, ВыборкаД.Ссылка) Тогда
					СформироватьАктСверки(Выборка.Ссылка, ВыборкаД.Ссылка);
				КонецЕсли;
			ИначеЕсли ЭлементыФормы.Переключатель1.Значение = 0 Тогда
				Если Расторгнут(Выборка.Ссылка, ВыборкаД.Ссылка) Тогда
					Продолжить;
				КонецЕсли;
				СформироватьАктСверки(Выборка.Ссылка, ВыборкаД.Ссылка);
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
КонецПроцедуры

Процедура ВыбПериодНажатие(Элемент)
	НастройкаПериода = Новый НастройкаПериода;
	НастройкаПериода.РедактироватьКакИнтервал = Истина;
	НастройкаПериода.РедактироватьКакПериод = Истина;
	НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
	НастройкаПериода.УстановитьПериод(НачПериода, ?(КонПериода='0001-01-01', КонПериода, КонецДня(КонПериода)));
	Если НастройкаПериода.Редактировать() Тогда
		НачПериода = НастройкаПериода.ПолучитьДатуНачала();
		КонПериода = НастройкаПериода.ПолучитьДатуОкончания();
	КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()
	
	ЭтотОбъект.ВыбКонтрагент = Справочники.Контрагенты.НайтиПоКоду("000000001");
	ЭтотОбъект.Организация = Справочники.Организации.НайтиПоКоду("000000001");
	ЭтотОбъект.ДатаДокументов = НачалоДня(ТекущаяДата());
	ЭтотОбъект.КолКопий = 2;
	ЭтотОбъект.ПредставительОрганизации = Справочники.ФизическиеЛица.НайтиПоКоду("0000000221");
	
КонецПроцедуры

Процедура СформироватьАктСверки(Кон, Дог)
	
		ТемпДок = ПолучитьДокумент(Кон, Дог);
	
	Если ТемпДок <> Неопределено Тогда
		Если ЭтотОбъект.ОбновлятьДокументы Тогда
			Объект = ТемпДок.ПолучитьОбъект();
			Сообщить("Акт сверки расчетов № " + Объект.Номер + " от " + Объект.Дата + " для контрагента: " + Объект.Контрагент + " существует и будет перезаполнен.");
		Иначе
			Сообщить("Акт сверки расчетов № " + ТемпДок.Номер + " от " + ТемпДок.Дата + " для контрагента: " + ТемпДок.Контрагент + " существует и НЕ будет перезаполнен.");
			СтрТЧ = ЭтотОбъект.Состав.Добавить();
			СтрТЧ.Документ = ТемпДок.Ссылка;
			СтрТЧ.Контрагент = Кон.Ссылка;
			СтрТЧ.Договор = Дог.Ссылка;
			Возврат;
		КонецЕсли;
	Иначе
		Объект = Документы.АктСверкиВзаиморасчетов.СоздатьДокумент();
		Объект.Дата = НачалоДня(ЭтотОбъект.ДатаДокументов);
		Объект.УстановитьНовыйНомер();
		Объект.ДатаНачала = ЭтотОбъект.НачПериода;
		Объект.ДатаОкончания = ЭтотОбъект.КонПериода;
		Объект.Контрагент = Кон.Ссылка;
		Объект.ДоговорКонтрагента = Дог.Ссылка;
		Объект.Организация = ЭтотОбъект.Организация;
		
		СтрСч = Объект.СписокСчетов.Добавить();
		СтрСч.Счет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60");
		СтрСч.УчаствуетВРасчетах = Истина;
		СтрСч = Объект.СписокСчетов.Добавить();
		СтрСч.Счет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62");
		СтрСч.УчаствуетВРасчетах = Истина;
		СтрСч = Объект.СписокСчетов.Добавить();
		СтрСч.Счет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("66");
		СтрСч.УчаствуетВРасчетах = Истина;
		СтрСч = Объект.СписокСчетов.Добавить();
		СтрСч.Счет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("67");
		СтрСч.УчаствуетВРасчетах = Истина;
		СтрСч = Объект.СписокСчетов.Добавить();
		СтрСч.Счет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("76");
		СтрСч.УчаствуетВРасчетах = Истина;
		Объект.ВалютаДокумента = Дог.ВалютаВзаиморасчетов;
		Объект.ВыводитьПолныеНазванияДокументов = Истина;
		Объект.УчитыватьДепозит = ОпределитьДепозит(Кон, Дог);
		Объект.УчитыватьДепозитПоДоговору = Объект.УчитыватьДепозит;
	КонецЕсли;
			
	Если Объект.ПоДаннымОрганизации.Количество() > 0 Тогда
		Объект.ПоДаннымОрганизации.Очистить();
		Объект.ПоДаннымКонтрагента.Очистить();
	КонецЕсли;
	
	Объект.ПредставительОрганизации = ЭтотОбъект.ПредставительОрганизации;
	
	Объект.ЗаполнитьПоДаннымБухгалтерскогоУчета();
	Объект.ЗаполнитьПоДаннымОрганизации();
	
	Если Найти(Объект.ДоговорКонтрагента, " П") > 0 Тогда
		Объект.УчитыватьДепозит = Ложь;
	КонецЕсли;
	
	Если Найти(Объект.ДоговорКонтрагента, " ПАП") > 0 Тогда
		Объект.УчитыватьДепозит = Ложь;
	КонецЕсли;
	
	Если Объект.ПоДаннымОрганизации.Количество() > 0 Тогда
		Попытка
			Объект.Записать(РежимЗаписиДокумента.Запись);
			СтрТЧ = ЭтотОбъект.Состав.Добавить();
			СтрТЧ.Документ = Объект.Ссылка;
			СтрТЧ.Контрагент = Кон.Ссылка;
			СтрТЧ.Договор = Дог.Ссылка;
		Исключение
			Сообщить("Не удалось записать акт сверки с " + СокрЛП(Кон.Наименование) + " по договору " + СокрЛП(Дог.Наименование));
		КонецПопытки;
	КонецЕсли;
	
КонецПроцедуры

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

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

Процедура ОсновныеДействияФормыПечатьОбычная(Кнопка)
	
	ТабДок = Новый ТабличныйДокумент;
	
	Для Каждого Стр Из ЭтотОбъект.Состав Цикл
		Объект = Стр.Документ.ПолучитьОбъект();
		ТабДокТемп = Объект.ПечатьГрупповая();
		й = 1;
		Пока й <= ЭтотОбъект.КолКопий Цикл
			ТабДок.Вывести(ТабДокТемп);
			ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
			й = й + 1;
		КонецЦикла;
	КонецЦикла;
	
	ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
	ТабДок.АвтоМасштаб = Истина;
	ТабДок.ОтображатьЗаголовки = Ложь;
	ТабДок.ОтображатьСетку = Ложь;
	ТабДок.ТолькоПросмотр = Истина;
    ТабДок.Показать("Акты сверки взаиморасчетов");
	
КонецПроцедуры

Процедура ОсновныеДействияФормыПечатьЗаполненная(Кнопка)
	
	ТабДок = Новый ТабличныйДокумент;
	
	Для Каждого Стр Из ЭтотОбъект.Состав Цикл
		й = 1;
		ТабДокТемп = ПечатьЗаполненный(Стр.Документ.Ссылка);
		Пока й <= ЭтотОбъект.КолКопий Цикл
			ТабДок.Вывести(ТабДокТемп);
			ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
			й = й + 1;
		КонецЦикла;
	КонецЦикла;
	
	ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
	ТабДок.АвтоМасштаб = Истина;
	ТабДок.ОтображатьЗаголовки = Ложь;
	ТабДок.ОтображатьСетку = Ложь;
	ТабДок.ТолькоПросмотр = Истина;
    ТабДок.Показать("Акты сверки взаиморасчетов");
	
КонецПроцедуры

Функция ПечатьЗаполненный(СсылкаНаОбъект) Экспорт

	СверкаСогласована = Истина;
	
	ТабДок = Новый ТабличныйДокумент;
	ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АктСверкиВзаиморасчетов_АктСверки";
	Макет  = ПолучитьМакет("АктСверки");

	ОбластьЗаголовок    = Макет.ПолучитьОбласть("Заголовок");
	ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
	ОбластьНачОстатки   = Макет.ПолучитьОбласть("НачОстатки");
	ОбластьНачОстаткиД  = Макет.ПолучитьОбласть("НачОстаткиДепозит");
	ОбластьНачОстаткиП  = Макет.ПолучитьОбласть("НачОстаткиПени");
	ОбластьДоговор      = Макет.ПолучитьОбласть("Договор");
	ОбластьДоговорИтоги = Макет.ПолучитьОбласть("ДоговорИтоги");
	ОбластьОбороты      = Макет.ПолучитьОбласть("Обороты");
	ОбластьОборотыИтог  = Макет.ПолучитьОбласть("ОборотыИтог");
	ОбластьКонОстатки   = Макет.ПолучитьОбласть("КонОстатки");
	ОбластьКонОстаткиД  = Макет.ПолучитьОбласть("КонОстаткиДепозит");
	ОбластьКонОстаткиП  = Макет.ПолучитьОбласть("КонОстаткиПени");
	ОбластьПодвал       = Макет.ПолучитьОбласть("Подвал");
	
	СведенияОбОрганизации    = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(СсылкаНаОбъект.Организация, СсылкаНаОбъект.Дата);
	ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,");
	
	СведенияОКонтрагенте     = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(СсылкаНаОбъект.Контрагент, СсылкаНаОбъект.Дата);
	ПредставлениеКонтрагента = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,");
	
	ОбластьЗаголовок.Параметры.НазваниеОрганизации     = ПредставлениеОрганизации;
	ОбластьЗаголовок.Параметры.НаименованиеКонтрагента = ПредставлениеКонтрагента;
	Если СсылкаНаОбъект.ДатаНачала = '00010101' Тогда
		Если СсылкаНаОбъект.ПоДаннымОрганизации.Количество()>0 Тогда
			ДатаНачалаОтчета=СсылкаНаОбъект.ПоДаннымОрганизации[0].Дата;
		Иначе
			ДатаНачалаОтчета = '00010101';
		КонецЕсли;
	Иначе
		ДатаНачалаОтчета = СсылкаНаОбъект.ДатаНачала;
	КонецЕсли;

	ОписаниеПериода = "за период: " + ПредставлениеПериода(НачалоДня(ДатаНачалаОтчета), КонецДня(СсылкаНаОбъект.ДатаОкончания), "ФП = Истина");
	
	ТекстЗаголовка = "взаимных расчетов " + ОписаниеПериода  + Символы.ПС
					+ "между " + ПредставлениеОрганизации + Символы.ПС + "и " + ПредставлениеКонтрагента;
	Если ЗначениеЗаполнено(СсылкаНаОбъект.ДоговорКонтрагента) Тогда
		Если СсылкаНаОбъект.ДоговорКонтрагента.ЭтоГруппа Тогда
			МассивДоговоров = СсылкаНаОбъект.ПоДаннымОрганизации.ВыгрузитьКолонку("Договор");
			МассивДоговоров = ОбщегоНазначения.УдалитьПовторяющиесяЭлементыМассива(МассивДоговоров);
			ТекстЗаголовка = ТекстЗаголовка + Символы.ПС + "по договору ";
			ТекстДоговоров = "";
			Для каждого ТекДоговор Из МассивДоговоров Цикл
				ТекстДоговоров = ТекстДоговоров + ?(ПустаяСтрока(ТекстДоговоров), "", ", ") + ТекДоговор;
			КонецЦикла; 
			ТекстЗаголовка = ТекстЗаголовка + ТекстДоговоров;
		Иначе
		    ТекстЗаголовка = ТекстЗаголовка + Символы.ПС + "по договору " + СсылкаНаОбъект.ДоговорКонтрагента;
		КонецЕсли;
	КонецЕсли;
	
	ОбластьЗаголовок.Параметры.ТекстЗаголовка = ТекстЗаголовка;
	
	ДанныеПредставителяОрганизации = ОбщегоНазначения.ДанныеФизЛица(СсылкаНаОбъект.Организация, СсылкаНаОбъект.ПредставительОрганизации, СсылкаНаОбъект.Дата);
	ФИОПредставителя = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Фамилия),"",ДанныеПредставителяОрганизации.Фамилия
					+ ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Имя),""," "+ДанныеПредставителяОрганизации.Имя)
					+ ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Отчество),""," "+ДанныеПредставителяОрганизации.Отчество));
	
	СтрЗаголовокТаблица = "Мы, нижеподписавшиеся, " + ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Должность),"________________",ДанныеПредставителяОрганизации.Должность) + " " + ПредставлениеОрганизации
				+ " " + ?(ФИОПредставителя<>"",ФИОПредставителя,"_______________________") + ", с одной стороны, "
				+ "и " + ?(НЕ ЗначениеЗаполнено(СсылкаНаОбъект.ПредставительКонтрагента.Должность),"________________",СсылкаНаОбъект.ПредставительКонтрагента.Должность) + " " + ПредставлениеКонтрагента + " " 
				+ ?(НЕ ЗначениеЗаполнено(СсылкаНаОбъект.ПредставительКонтрагента),"_______________________",СсылкаНаОбъект.ПредставительКонтрагента) + ", с другой стороны, "
				+ "составили настоящий акт сверки в том, что состояние взаимных расчетов по данным учета следующее:";
	
	ОбластьЗаголовок.Параметры.СтрЗаголовокТаблица = СтрЗаголовокТаблица;
	ОбластьЗаголовок.Параметры.ВалютаДокумента = СсылкаНаОбъект.ВалютаДокумента;
	
	СуммаДепозитаИзДоговора = ПолучитьСуммуДепозита(СсылкаНаОбъект);
	
	//альфа
	Если СсылкаНаОбъект.УчитыватьДепозит Тогда
		ТекстДеп = ?(СсылкаНаОбъект.УчитыватьДепозитПоДоговору, "предусмотрена в сумме "+Формат(СуммаДепозитаИзДоговора, "ЧЦ=21; ЧДЦ=2")+" "+Строка(СсылкаНаОбъект.ДоговорКонтрагента.ВалютаВзаиморасчетов), "не предусмотрена");
		ОбластьЗаголовок.Параметры.ИнфоДепозит = "По условиям договора оплата депозита " + ТекстДеп;
	КонецЕсли;
	//альфа
	
	ТабДок.Очистить();
	ТабДок.Вывести(ОбластьЗаголовок);
	ТабДок.Вывести(ОбластьШапкаТаблицы);
	
	ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокДт = ?(СсылкаНаОбъект.ОстатокНаНачало > 0, СсылкаНаОбъект.ОстатокНаНачало, 0);
	ОбластьНачОстатки.Параметры.СуммаНачальныйОстатокКт = ?(СсылкаНаОбъект.ОстатокНаНачало < 0, -СсылкаНаОбъект.ОстатокНаНачало, 0);
	ТабДок.Вывести(ОбластьНачОстатки);
	
	//альфа
	Если СсылкаНаОбъект.УчитыватьДепозит и СсылкаНаОбъект.УчитыватьДепозитПоДоговору Тогда
	//	ОбластьНачОстаткиД.Параметры.СуммаНачальныйОстатокДт = СуммаДепозита;
		ОбластьНачОстаткиД.Параметры.СуммаНачальныйОстатокКт = СсылкаНаОбъект.ОплатаДепозитаНаНачало;
		ТабДок.Вывести(ОбластьНачОстаткиД);
	КонецЕсли;
	Если СсылкаНаОбъект.ОплатаПениНаНачало > 0 Тогда
		ОбластьНачОстаткиП.Параметры.СуммаНачальныйОстатокКт = СсылкаНаОбъект.ОплатаПениНаНачало;
	Иначе
		ОбластьНачОстаткиП.Параметры.СуммаНачальныйОстатокДт = -СсылкаНаОбъект.ОплатаПениНаНачало;
	КонецЕсли;
	ТабДок.Вывести(ОбластьНачОстаткиП);
	//альфа
	
	ОборотыДт = 0;
	ОборотыКт = 0;
	ОборотыДтКонтр = 0;
	ОборотыКтКонтр = 0;

		
	Если СсылкаНаОбъект.ПоДаннымОрганизации.Количество()>0 ИЛИ СсылкаНаОбъект.ПоДаннымКонтрагента.Количество()>0 Тогда
		
		Запрос = Новый Запрос;
		Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
		Запрос.Текст =	
		"ВЫБРАТЬ
		|	ВлЗапрос.Договор КАК Договор,
		|	ВлЗапрос.Дата КАК Дата,
		|	ВлЗапрос.Документ,
		|	ВлЗапрос.Представление,
		|	ВлЗапрос.ДатаК,
		|	ВлЗапрос.ПредставлениеК,
		|	Дебет как СуммаДогДт,
		|	Кредит как СуммаДогКт,
		|	ДебетК как СуммаДогДтКонтр,
		|	КредитК как СуммаДогКтКонтр	
		|Из
		|	(Выбрать"
		+?(СсылкаНаОбъект.РазбитьПоДоговорам,"
		|		ПоДаннымОрганизации.Договор КАК Договор,","
		|		NULL КАК Договор,")
		+"	
		|		ПоДаннымОрганизации.Дата как Дата,
		|		NUll как ДатаК,
		|		ПоДаннымОрганизации.Документ КАК Документ,
		|		ПоДаннымОрганизации.Представление КАК Представление,
		|		NULL КАК ПредставлениеК,
		|		ПоДаннымОрганизации.Дебет КАК Дебет,
		|		ПоДаннымОрганизации.Кредит КАК Кредит,
		|		0 КАК ДебетК,
		|		0 КАК КредитК,
		|		ПоДаннымОрганизации.НомерСтроки КАК НомерСтроки,
		|		0 КАК НомерТабЧасти
		|	ИЗ
		|		Документ.АктСверкиВзаиморасчетов.ПоДаннымОрганизации КАК ПоДаннымОрганизации
		|	Где
		|		ПоДаннымОрганизации.Ссылка = &ТекущийДокумент
		|
		|	ОБЪЕДИНИТЬ ВСЕ
		|   
		|	Выбрать"
		+?(СсылкаНаОбъект.РазбитьПоДоговорам,"
		|		ПоДаннымКонтрагента.Договор,","
		|		NULL КАК Договор,")
		+"	
		|		NULL,
		|		ПоДаннымКонтрагента.Дата,
		|		NULL,
		|		NULL,
		|		ПоДаннымКонтрагента.Представление,
		|		0,
		|		0,
		|		ПоДаннымКонтрагента.Дебет,
		|		ПоДаннымКонтрагента.Кредит,
		|		ПоДаннымКонтрагента.НомерСтроки КАК НомерСтроки,
		|		1 КАК НомерТабЧасти
		|
		|	ИЗ
		|		Документ.АктСверкиВзаиморасчетов.ПоДаннымКонтрагента КАК ПоДаннымКонтрагента
		|	Где
		|		ПоДаннымКонтрагента.Ссылка = &ТекущийДокумент
		|     
		|     
		|)	КАК ВлЗапрос
		|	УПОРЯДОЧИТЬ ПО НомерТабЧасти,НомерСтроки
		|
		|	ИТОГИ
		|		СУММА(СуммаДогДт),
		|		СУММА(СуммаДогКт),
		|		СУММА(СуммаДогДтКонтр),
		|		СУММА(СуммаДогКтКонтр)
		|	ПО
		|		Общие,Договор";
		
		Результат = Запрос.Выполнить();		
		
		ОбходПоОбщимИтогам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Общие");
		ОбходПоОбщимИтогам.Следующий();	
		
		ОборотыДт = ОбходПоОбщимИтогам.СуммаДогДт;
		ОборотыКт = ОбходПоОбщимИтогам.СуммаДогКт;
		ОборотыДтКонтр = ОбходПоОбщимИтогам.СуммаДогДтКонтр;
		ОборотыКтКонтр = ОбходПоОбщимИтогам.СуммаДогКтКонтр;

		
		ОбходПоДоговорам = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Договор");
		Пока ОбходПоДоговорам.Следующий() Цикл
			
			Если СсылкаНаОбъект.РазбитьПоДоговорам Тогда
				//Выводим заголовок с договором
				ОбластьДоговор.Параметры.Договор = ОбходПоДоговорам.Договор;
				ОбластьДоговор.Параметры.Регистратор = ОбходПоДоговорам.Договор;
				ТабДок.Вывести(ОбластьДоговор);
				ОбходПоДокументам=ОбходПоДоговорам.Выбрать();
			Иначе
				ОбходПоДокументам=Результат.Выбрать();
			КонецЕсли;		
			
			//Создадим список документов по организации и контрагенту
			СписокДокументов = новый массив;
			СписокДокументовК = новый массив;
			Пока ОбходПоДокументам.Следующий() Цикл
				Если ОбходПоДокументам.Дата<>NULL Тогда
					СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт",
					ОбходПоДокументам.Дата,ОбходПоДокументам.Представление,ОбходПоДокументам.Документ,ОбходПоДокументам.СуммаДогДт,ОбходПоДокументам.СуммаДогКт));				
				КонецЕсли;
				
				Если ОбходПоДокументам.ДатаК<>NULL Тогда
					СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр",
					ОбходПоДокументам.ДатаК,ОбходПоДокументам.ПредставлениеК,ОбходПоДокументам.СуммаДогДтКонтр,ОбходПоДокументам.СуммаДогКтКонтр));				
				КонецЕсли; 
			КонецЦикла;
			
			//Для упрощения вывода, сравним списки по количеству элементов, добавив пустые
			МаксИндекс = Макс(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
			МинИндекс = Мин(СписокДокументов.Количество(), СписокДокументовК.Количество())-1;
			Если СписокДокументов.Количество()<СписокДокументовК.Количество() Тогда
				Для инд = МинИндекс По МаксИндекс-1 Цикл
					СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт","","","","",""));
				КонецЦикла;
			ИначеЕсли СписокДокументов.Количество()>СписокДокументовК.Количество() Тогда 
				Для инд = МинИндекс По МаксИндекс-1 Цикл
					СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр","","","",""));
				КонецЦикла;			
			КонецЕсли;
			
			Для Инд = 0 По МаксИндекс Цикл
				ОбластьОбороты.Параметры.Заполнить(СписокДокументов[Инд]);
				ОбластьОбороты.Параметры.Заполнить(СписокДокументовК[Инд]);			
				ТабДок.Вывести(ОбластьОбороты);
			КонецЦикла;
			
			Если СсылкаНаОбъект.РазбитьПоДоговорам Тогда
				//Выводим итоги по каждому договору
				ОбластьДоговорИтоги.Параметры.Заполнить(ОбходПоДоговорам);		
				ТабДок.Вывести(ОбластьДоговорИтоги);	
			Иначе
				Прервать;
			КонецЕсли;
			
		КонецЦикла;  
		
		ОбластьОборотыИтог.Параметры.СуммаОборотДт      = ОборотыДт;
		ОбластьОборотыИтог.Параметры.СуммаОборотКт      = ОборотыКт;
		Если СверкаСогласована тогда
			ОбластьОборотыИтог.Параметры.СуммаОборотДтКонтр = ОборотыДтКонтр;
			ОбластьОборотыИтог.Параметры.СуммаОборотКтКонтр = ОборотыКтКонтр;
		КонецЕсли;
		ТабДок.Вывести(ОбластьОборотыИтог);
		
	КонецЕсли;
	      
	ОстатокНаКонец = СсылкаНаОбъект.ОстатокНаНачало + ОборотыДт -  ОборотыКт;
	ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДт = ?(ОстатокНаКонец > 0, ОстатокНаКонец, 0);
	ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКт = ?(ОстатокНаКонец < 0, -ОстатокНаКонец, 0);
	
	Если СверкаСогласована тогда
		ОстатокНаКонецК = СсылкаНаОбъект.ОстатокНаНачало - ОборотыДтКонтр +  ОборотыКтКонтр;
		ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокКтКонтр = ?(ОстатокНаКонецК > 0, ОстатокНаКонецК, 0);
		ОбластьКонОстатки.Параметры.СуммаКонечныйОстатокДтКонтр = ?(ОстатокНаКонецК < 0, -ОстатокНаКонецК, 0);
	КонецЕсли;
	
	ТабДок.Вывести(ОбластьКонОстатки);
	
	//альфа
	Если СсылкаНаОбъект.УчитыватьДепозит и СсылкаНаОбъект.УчитыватьДепозитПоДоговору Тогда
	//	ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокДт = СуммаДепозита;
		Если СсылкаНаОбъект.ОплатаДепозитаНаКонец > 0 Тогда
			ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокКт = СсылкаНаОбъект.ОплатаДепозитаНаКонец;
			Если СверкаСогласована Тогда
				ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокДтКонтр = СсылкаНаОбъект.ОплатаДепозитаНаКонец;
			КонецЕсли;
			СуммаДолгаПоДепозиту = СуммаДепозитаИзДоговора - СсылкаНаОбъект.ОплатаДепозитаНаКонец;
		ИначеЕсли СсылкаНаОбъект.ОплатаДепозитаНаКонец < 0 Тогда
			ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокДт = -СсылкаНаОбъект.ОплатаДепозитаНаКонец;
			Если СверкаСогласована Тогда
				ОбластьКонОстаткиД.Параметры.СуммаКонечныйОстатокКтКонтр = -СсылкаНаОбъект.ОплатаДепозитаНаКонец;
			КонецЕсли;
			СуммаДолгаПоДепозиту = СуммаДепозитаИзДоговора + СсылкаНаОбъект.ОплатаДепозитаНаКонец;
		Иначе
			СуммаДолгаПоДепозиту = СуммаДепозитаИзДоговора;
		КонецЕсли;
		ТабДок.Вывести(ОбластьКонОстаткиД);
	КонецЕсли;
	
	Если СсылкаНаОбъект.ОплатаПениНаКонец >= 0 Тогда
		ОбластьКонОстаткиП.Параметры.СуммаКонечныйОстатокКт = СсылкаНаОбъект.ОплатаПениНаКонец;
		Если СверкаСогласована Тогда
			ОбластьКонОстаткиП.Параметры.СуммаКонечныйОстатокДтКонтр = СсылкаНаОбъект.ОплатаПениНаКонец;
		КонецЕсли;
	Иначе
		ОбластьКонОстаткиП.Параметры.СуммаКонечныйОстатокДт = -СсылкаНаОбъект.ОплатаПениНаКонец;
		Если СверкаСогласована Тогда
			ОбластьКонОстаткиП.Параметры.СуммаКонечныйОстатокКтКонтр = -СсылкаНаОбъект.ОплатаПениНаКонец;
		КонецЕсли;
	КонецЕсли;
	
	ТабДок.Вывести(ОбластьКонОстаткиП);
	//альфа
	//ОстатокНаКонецД = СуммаДепозитаИзДоговора - ОплатаДепозитаНаКонец;
	ОбщаяЗадолжность =  СуммаДепозитаИзДоговора + ОстатокНаКонец;
	
	// Результаты сверки
  	Если НЕ ЗначениеЗаполнено(СсылкаНаОбъект.ДатаОкончания) Тогда
   	    РезультатыСверки = "<не указана дата сверки>";
   	ИначеЕсли НЕ ЗначениеЗаполнено(СсылкаНаОбъект.Контрагент) Тогда
   	    РезультатыСверки = "<не указан контрагент>";
   	Иначе
		РезультатыСверки = "на " + Формат(СсылкаНаОбъект.ДатаОкончания, "ДФ=dd.MM.yyyy") + " задолженность ";
			
	   	Если ОстатокНаКонец > 0 Тогда		
			РезультатыСверки = РезультатыСверки + "в пользу " + ПредставлениеОрганизации + " " 
								+ Формат(ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " " 								
								+ строка(СсылкаНаОбъект.ВалютаДокумента)
								+" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(ОстатокНаКонец, СсылкаНаОбъект.ВалютаДокумента,Ложь)+")" ;								
	
	   	ИначеЕсли ОстатокНаКонец < 0 Тогда
			РезультатыСверки = РезультатыСверки + "в пользу " + ПредставлениеКонтрагента + " " 
								+ Формат(-ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " " 
								+ строка(СсылкаНаОбъект.ВалютаДокумента)
								+" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(-ОстатокНаКонец, СсылкаНаОбъект.ВалютаДокумента,Ложь)+")" ;								
	
	   	Иначе
	   		РезультатыСверки = РезультатыСверки + "отсутствует.";
	   	КонецЕсли;
	КонецЕсли;
	ОбластьПодвал.Параметры.РезультатыСверки = РезультатыСверки;
	
	Если СсылкаНаОбъект.УчитыватьДепозит Тогда
		// Результаты сверки доп
	  	Если НЕ ЗначениеЗаполнено(СсылкаНаОбъект.ДатаОкончания) Тогда
	   	    РезультатыСверкиДоп = "<не указана дата сверки>";
	   	ИначеЕсли НЕ ЗначениеЗаполнено(СсылкаНаОбъект.Контрагент) Тогда
	   	    РезультатыСверкиДоп = "<не указан контрагент>";
	   	Иначе
			//РезультатыСверкиДоп = "на " + Формат(ДатаОкончания, "ДФ=dd.MM.yyyy") + " задолженность ";
			РезультатыСверкиДоп = "задолженность с учетом депозита ";
				
		   	//Если ОстатокНаКонец > 0 Тогда
			Если ОбщаяЗадолжность > 0 Тогда
				РезультатыСверкиДоп = РезультатыСверкиДоп + "в пользу " + ПредставлениеОрганизации + " " 
									//+ Формат(ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " " 
									+ Формат(ОбщаяЗадолжность, "ЧЦ=21; ЧДЦ=2") + " " 
									+ строка(СсылкаНаОбъект.ВалютаДокумента)
									//+" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(ОстатокНаКонец, ВалютаДокумента,Ложь)+")" ;
									+" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(ОбщаяЗадолжность, СсылкаНаОбъект.ВалютаДокумента,Ложь)+")" ;
		
		   	//ИначеЕсли ОстатокНаКонец < 0 Тогда
			ИначеЕсли ОбщаяЗадолжность < 0 Тогда
				РезультатыСверкиДоп = РезультатыСверкиДоп + "в пользу " + ПредставлениеКонтрагента + " " 
									//+ Формат(-ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " " 
									+ Формат(-ОбщаяЗадолжность, "ЧЦ=21; ЧДЦ=2") + " " 
									+ строка(СсылкаНаОбъект.ВалютаДокумента)
									//+" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(-ОстатокНаКонец, ВалютаДокумента,Ложь)+")" ;
									+" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(-ОбщаяЗадолжность, СсылкаНаОбъект.ВалютаДокумента,Ложь)+")" ;
		
		   	Иначе
		   		РезультатыСверкиДоп = РезультатыСверкиДоп + "отсутствует.";
		   	КонецЕсли;
		КонецЕсли;
		ОбластьПодвал.Параметры.РезультатыСверкиДоп = РезультатыСверкиДоп;
		
		Если СуммаДолгаПоДепозиту = Неопределено Тогда
			СуммаДолгаПоДепозиту = 0;
		КонецЕсли;
	КонецЕсли;
		
	//альфа
	РезультатыСверкиД = "";
	Если СсылкаНаОбъект.УчитыватьДепозит и СсылкаНаОбъект.УчитыватьДепозитПоДоговору Тогда
		//РезультатыСверкиД = "в т.ч. депозит: " + Формат(ОплатаДепозитаНаКонец, "ЧЦ=21; ЧДЦ=2") + " " + Строка(ДоговорКонтрагента.ВалютаВзаиморасчетов) + Символы.ПС;
		
		//ОстатокНаКонецД = ОстатокНаКонец + ОплатаДепозитаНаКонец;
		Если СуммаДолгаПоДепозиту > 0 Тогда
			
			//РезультатыСверкиД = РезультатыСверкиД + "задолженность с учетом депозита в пользу " + ПредставлениеОрганизации + " " 
			РезультатыСверкиД = "задолженность по депозиту в пользу " + ПредставлениеОрганизации + " " 
								+ Формат(СуммаДолгаПоДепозиту, "ЧЦ=21; ЧДЦ=2") + " " 
								+ строка(СсылкаНаОбъект.ВалютаДокумента);
								//+" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(СуммаДолгаПоДепозиту, ВалютаДокумента,Ложь)+")" ;
									
		ИначеЕсли СуммаДолгаПоДепозиту < 0 Тогда
									
			//РезультатыСверкиД = РезультатыСверкиД + "задолженность с учетом депозита в пользу " + ПредставлениеКонтрагента + " " 
			РезультатыСверкиД = "задолженность по депозиту в пользу " + ПредставлениеКонтрагента + " " 
								+ Формат(-СуммаДолгаПоДепозиту, "ЧЦ=21; ЧДЦ=2") + " " 
								+ строка(СсылкаНаОбъект.ВалютаДокумента);
								//+" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(-СуммаДолгаПоДепозиту, ВалютаДокумента,Ложь)+")" ;
			
		Иначе
			
	   		РезультатыСверкиД = "задолжность по депозиту отсутствует.";
			
		КонецЕсли;
		
	КонецЕсли;
	
	Если СсылкаНаОбъект.ОплатаПениНаКонец < 0 Тогда
		//РезультатыСверкиП = "в т.ч. пени: " + Формат(ОплатаПениНаКонец, "ЧЦ=21; ЧДЦ=2") + " " + Строка(ДоговорКонтрагента.ВалютаВзаиморасчетов) + Символы.ПС + " (переплата)";
		РезультатыСверкиП = "задолженность по пени в пользу " + ПредставлениеОрганизации + " " 
								+ Формат(-СсылкаНаОбъект.ОплатаПениНаКонец, "ЧЦ=21; ЧДЦ=2") + " " 
								+ строка(СсылкаНаОбъект.ВалютаДокумента);
	ИначеЕсли СсылкаНаОбъект.ОплатаПениНаКонец > 0 Тогда
		//РезультатыСверкиП = "в т.ч. пени: " + Формат(-ОплатаПениНаКонец, "ЧЦ=21; ЧДЦ=2") + " " + Строка(ДоговорКонтрагента.ВалютаВзаиморасчетов) + Символы.ПС;
		РезультатыСверкиП = "задолженность по пени в пользу " + ПредставлениеКонтрагента + " " 
								+ Формат(СсылкаНаОбъект.ОплатаПениНаКонец, "ЧЦ=21; ЧДЦ=2") + " " 
								+ строка(СсылкаНаОбъект.ВалютаДокумента);
	Иначе
		РезультатыСверкиП = "задолжность по пени отсутствует.";
	КонецЕсли;
		
	ОбластьПодвал.Параметры.РезультатыСверкиД = РезультатыСверкиД;
	ОбластьПодвал.Параметры.РезультатыСверкиП = РезультатыСверкиП;

	//альфа
	
	Если СверкаСогласована тогда
		ОбластьПодвал.Параметры.ПоДаннымКонтрагента = "По данным " + ПредставлениеКонтрагента;
		
	  	Если НЕ ЗначениеЗаполнено(СсылкаНаОбъект.ДатаОкончания) Тогда
	   	    РезультатыСверки = "<не указана дата сверки>";
	   	ИначеЕсли НЕ ЗначениеЗаполнено(СсылкаНаОбъект.Контрагент) Тогда
	   	    РезультатыСверки = "<не указан контрагент>";
	   	Иначе
			РезультатыСверки = "на " + Формат(СсылкаНаОбъект.ДатаОкончания, "ДФ=dd.MM.yyyy") + " задолженность ";
				
		   	Если ОстатокНаКонецК > 0 Тогда
				РезультатыСверки = РезультатыСверки + "в пользу " + ПредставлениеОрганизации + " " 
									+ Формат(ОстатокНаКонецК, "ЧЦ=21; ЧДЦ=2") + " " 
									+ строка(СсылкаНаОбъект.ВалютаДокумента)
									+" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(ОстатокНаКонецК, СсылкаНаОбъект.ВалютаДокумента,Ложь)+")" ;

		
		   	ИначеЕсли ОстатокНаКонецК < 0 Тогда
				РезультатыСверки = РезультатыСверки + "в пользу " + ПредставлениеКонтрагента + " " 
									+ Формат(-ОстатокНаКонецК, "ЧЦ=21; ЧДЦ=2") + " " 
									+ строка(СсылкаНаОбъект.ВалютаДокумента)
									+" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(-ОстатокНаКонецК, СсылкаНаОбъект.ВалютаДокумента,Ложь)+")" ;

		
		   	Иначе
		   		РезультатыСверки = РезультатыСверки + "отсутствует.";
		   	КонецЕсли;
	   	КонецЕсли;
		
		ОбластьПодвал.Параметры.РезультатыСверкиК = РезультатыСверки;
		
		Если СсылкаНаОбъект.Расхождение<>0 Тогда                                                                                                                                                                                                                                                               
			 ИтогСверки = "В результате сверки выявлено расхождение информации о состоянии расчетов в размере "
			 			+Формат(?(СсылкаНаОбъект.Расхождение>0,1,-1)*СсылкаНаОбъект.Расхождение, "ЧЦ=21; ЧДЦ=2") 
						+" "+ Строка(СсылкаНаОбъект.ВалютаДокумента)
						+" ("+ФормированиеПечатныхФорм.ФорматироватьСуммуПрописьюПлатежногоДокумента(?(СсылкаНаОбъект.Расхождение>0,1,-1)*СсылкаНаОбъект.Расхождение, СсылкаНаОбъект.ВалютаДокумента,Ложь)+")" ;
			 ОбластьПодвал.Параметры.ИтогСверки = Символы.ПС+ ИтогСверки+Символы.ПС+" ";
		КонецЕсли; 
	КонецЕсли;
	              
	ОбластьПодвал.Параметры.НазваниеОрганизации     = ПредставлениеОрганизации;
	ОбластьПодвал.Параметры.НаименованиеКонтрагента = ПредставлениеКонтрагента;
	
	ОбластьПодвал.Параметры.Должность  = ?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации.Должность),"________________",ДанныеПредставителяОрганизации.Должность);
	ОбластьПодвал.Параметры.ДолжностьК = ?(НЕ ЗначениеЗаполнено(СсылкаНаОбъект.ПредставительКонтрагента.Должность),"________________",СсылкаНаОбъект.ПредставительКонтрагента.Должность);
	
	ОбластьПодвал.Параметры.ФИОПредставителя  = "("+?(НЕ ЗначениеЗаполнено(ДанныеПредставителяОрганизации),"_______________________",ДанныеПредставителяОрганизации.Представление)+")";
	ОбластьПодвал.Параметры.ФИОПредставителяК = "("+?(НЕ ЗначениеЗаполнено(СсылкаНаОбъект.ПредставительКонтрагента),"_______________________",ОбщегоНазначения.ФамилияИнициалыФизЛица(СсылкаНаОбъект.ПредставительКонтрагента.Фамилия + " " + СсылкаНаОбъект.ПредставительКонтрагента.Имя + " " + СсылкаНаОбъект.ПредставительКонтрагента.Отчество))+")";
	
	ТабДок.Вывести(ОбластьПодвал);
	
	Возврат ТабДок;
	
КонецФункции

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

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

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

	
КонецПроцедуры

Процедура СоставДокументПриИзменении(Элемент)
	
	Данные = ЭлементыФормы.Состав.ТекущиеДанные;
	
	Если ЗначениеЗаполнено(Данные.Документ) Тогда
		Данные.Контрагент = Данные.Документ.Контрагент;	
		Данные.Договор = Данные.Документ.ДоговорКонтрагента;
	Иначе
		Данные.Контрагент = "";
		Данные.Договор = "";
	КонецЕсли;
		
	
КонецПроцедуры
Показать
23. YannikAlx 43 08.10.18 15:13 Сейчас в теме
вы вот что-то там исправили и говорите - уже все работает, может приведете новый текст рабочий?
Чтобы мы о нем говорили...
24. user973528 08.10.18 15:16 Сейчас в теме
(23)

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


Процедура СформироватьАктСверки(Кон, Дог)
	
	ТемпДок = ПолучитьДокумент(Кон, Дог);
	
	Если ТемпДок <> Неопределено Тогда
		Если ЭтотОбъект.ОбновлятьДокументы Тогда
			Объект = ТемпДок.ПолучитьОбъект();
			Сообщить("Акт сверки расчетов № " + Объект.Номер + " от " + Объект.Дата + " для контрагента: " + Объект.Контрагент + " существует и будет перезаполнен.");
		Иначе
			Сообщить("Акт сверки расчетов № " + ТемпДок.Номер + " от " + ТемпДок.Дата + " для контрагента: " + ТемпДок.Контрагент + " существует и НЕ будет перезаполнен.");
			СтрТЧ = ЭтотОбъект.Состав.Добавить();
			СтрТЧ.Документ = ТемпДок.Ссылка;
			СтрТЧ.Контрагент = Кон.Ссылка;
			СтрТЧ.Договор = Дог.Ссылка;
			Возврат;
		КонецЕсли;
	Иначе
		Объект = Документы.АктСверкиВзаиморасчетов.СоздатьДокумент();
		Объект.Дата = НачалоДня(ЭтотОбъект.ДатаДокументов);
		Объект.УстановитьНовыйНомер();
		Объект.ДатаНачала = ЭтотОбъект.НачПериода;
		Объект.ДатаОкончания = ЭтотОбъект.КонПериода;
		Объект.Контрагент = Кон.Ссылка;
		Объект.ДоговорКонтрагента = Дог.Ссылка;
		Объект.Организация = ЭтотОбъект.Организация;
		
		СтрСч = Объект.СписокСчетов.Добавить();
		СтрСч.Счет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60");
		СтрСч.УчаствуетВРасчетах = Истина;
		СтрСч = Объект.СписокСчетов.Добавить();
		СтрСч.Счет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62");
		СтрСч.УчаствуетВРасчетах = Истина;
		СтрСч = Объект.СписокСчетов.Добавить();
		СтрСч.Счет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("66");
		СтрСч.УчаствуетВРасчетах = Истина;
		СтрСч = Объект.СписокСчетов.Добавить();
		СтрСч.Счет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("67");
		СтрСч.УчаствуетВРасчетах = Истина;
		СтрСч = Объект.СписокСчетов.Добавить();
		СтрСч.Счет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("76");
		СтрСч.УчаствуетВРасчетах = Истина;
		Объект.ВалютаДокумента = Дог.ВалютаВзаиморасчетов;
		Объект.ВыводитьПолныеНазванияДокументов = Истина;
		Объект.УчитыватьДепозит = ОпределитьДепозит(Кон, Дог);
		Объект.УчитыватьДепозитПоДоговору = Объект.УчитыватьДепозит;
	КонецЕсли;
			
	Если Объект.ПоДаннымОрганизации.Количество() > 0 Тогда
		Объект.ПоДаннымОрганизации.Очистить();
		Объект.ПоДаннымКонтрагента.Очистить();
	КонецЕсли;
	
	Объект.ПредставительОрганизации = ЭтотОбъект.ПредставительОрганизации;
	
	Объект.ЗаполнитьПоДаннымБухгалтерскогоУчета();
	Объект.ЗаполнитьПоДаннымОрганизации();
	
	Если Найти(Объект.ДоговорКонтрагента, " П") > 0 Тогда
		Объект.УчитыватьДепозит = Ложь;
	КонецЕсли;
	
	Если Найти(Объект.ДоговорКонтрагента, " ПАП") > 0 Тогда
		Объект.УчитыватьДепозит = Ложь;
	КонецЕсли;
	
	Если Объект.ПоДаннымОрганизации.Количество() > 0 Тогда
		Попытка
			Объект.Записать(РежимЗаписиДокумента.Запись);
			СтрТЧ = ЭтотОбъект.Состав.Добавить();
			СтрТЧ.Документ = Объект.Ссылка;
			СтрТЧ.Контрагент = Кон.Ссылка;
			СтрТЧ.Договор = Дог.Ссылка;
		Исключение
			Сообщить("Не удалось записать акт сверки с " + СокрЛП(Кон.Наименование) + " по договору " + СокрЛП(Дог.Наименование));
		КонецПопытки;
	КонецЕсли;
	
КонецПроцедуры
Показать
27. YannikAlx 43 08.10.18 15:35 Сейчас в теме
(24) Программа не рабочая!
И гда же вы реализовали свои ГРУППЫ?

Если она и выдает какой-то результат - то совершенно случайно, поверьте! Ибо вы писали ее под конкретный документ, она его и выдаст...
Еще раз говорю НЕКОРРЕКТНО сравнивать дату знаком равенства - может отличаться время и вы не получите правильный результат.
Только больше меньше!

Следующее
Закчем вы ищете по Контрагенту и Договору одновременно? Это совершенно избыточно.
Один договор полностью достаточен.
Опять же ОРГАНИЗАЦИЯ при поиске по договору совершенно не нужна - ведь она есть в договоре

| И АктСверкиВзаиморасчетов.Контрагент = &Контрагент
| И АктСверкиВзаиморасчетов.ДоговорКонтрагента = &ДоговорКонтрагента";


А еще интресно вы ищете ВСЕ Акты сверок, но возвращаете только первый полученный , а остальные куда?
гаврюша; +1 Ответить
28. user973528 08.10.18 15:43 Сейчас в теме
(27)
Процедура КнопкаВыполнитьНажатие(Кнопка)
	
	ЭтотОбъект.Состав.Очистить();
	
	Если (Не ЗначениеЗаполнено(ЭтотОбъект.НачПериода)) или (Не ЗначениеЗаполнено(ЭтотОбъект.КонПериода)) Тогда
		Предупреждение("Не заполнен период сверки расчетов!!!");
		Возврат;
	КонецЕсли;
	Если ЭтотОбъект.ВыбКонтрагент.ЭтоГруппа Тогда
		Выборка = Справочники.Контрагенты.Выбрать(ВыбКонтрагент.Ссылка);
	    Пока Выборка.Следующий() Цикл
			Состояние("Обрабатывается контрагент: " + СокрЛП(Выборка.Наименование));
			ВыборкаД = Справочники.ДоговорыКонтрагентов.Выбрать(, Выборка.Ссылка);
			Пока ВыборкаД.Следующий() Цикл
				Состояние("Обрабатывается контрагент: " + СокрЛП(Выборка.Наименование) + "; по договору: " + СокрЛП(ВыборкаД.Наименование));
				Если ЭлементыФормы.Переключатель1.Значение = 2 Тогда
					СформироватьАктСверки(Выборка.Ссылка, ВыборкаД.Ссылка);
				ИначеЕсли ЭлементыФормы.Переключатель1.Значение = 1 Тогда
					Если Расторгнут(Выборка.Ссылка, ВыборкаД.Ссылка) Тогда
						СформироватьАктСверки(Выборка.Ссылка, ВыборкаД.Ссылка);
					КонецЕсли;
				ИначеЕсли ЭлементыФормы.Переключатель1.Значение = 0 Тогда
					Если Расторгнут(Выборка.Ссылка, ВыборкаД.Ссылка) Тогда
						Продолжить;
					КонецЕсли;
					СформироватьАктСверки(Выборка.Ссылка, ВыборкаД.Ссылка);
				КонецЕсли;
			КонецЦикла;		
		КонецЦикла;
	Иначе
		Состояние("Обрабатывается контрагент: " + СокрЛП(ЭтотОбъект.ВыбКонтрагент.Наименование));
		ВыборкаД = Справочники.ДоговорыКонтрагентов.Выбрать(, ЭтотОбъект.ВыбКонтрагент);
		Пока ВыборкаД.Следующий() Цикл
			Состояние("Обрабатывается контрагент: " + СокрЛП(ЭтотОбъект.ВыбКонтрагент.Наименование) + "; по договору: " + СокрЛП(ВыборкаД.Наименование));
			Если ЭлементыФормы.Переключатель1.Значение = 2 Тогда
				СформироватьАктСверки(Выборка.Ссылка, ВыборкаД.Ссылка);
			ИначеЕсли ЭлементыФормы.Переключатель1.Значение = 1 Тогда
				Если Расторгнут(Выборка.Ссылка, ВыборкаД.Ссылка) Тогда
					СформироватьАктСверки(Выборка.Ссылка, ВыборкаД.Ссылка);
				КонецЕсли;
			ИначеЕсли ЭлементыФормы.Переключатель1.Значение = 0 Тогда
				Если Расторгнут(Выборка.Ссылка, ВыборкаД.Ссылка) Тогда
					Продолжить;
				КонецЕсли;
				СформироватьАктСверки(Выборка.Ссылка, ВыборкаД.Ссылка);
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
КонецПроцедуры
Показать
29. YannikAlx 43 08.10.18 15:51 Сейчас в теме
(28)
Ну хорошо вы мечетесь от простого запроса к сложным и медленным выборам из справочников...
Но ГДЕ вы используете в своих выборах ЭтотОбъект.НачПериода и ЭтотОбъект.КонПериода?
Или вам даты нужны просто для красоты на форме?
Имею виду если у вас 10 актов сверки по каждому договору ... В каждом месяце по одному - что выберет ваша программа?
30. user973528 08.10.18 15:52 Сейчас в теме
(29)
Процедура ВыбПериодНажатие(Элемент)
НастройкаПериода = Новый НастройкаПериода;
НастройкаПериода.РедактироватьКакИнтервал = Истина;
НастройкаПериода.РедактироватьКакПериод = Истина;
НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
НастройкаПериода.УстановитьПериод(НачПериода, ?(КонПериода='0001-01-01', КонПериода, КонецДня(КонПериода)));
Если НастройкаПериода.Редактировать() Тогда
НачПериода = НастройкаПериода.ПолучитьДатуНачала();
КонПериода = НастройкаПериода.ПолучитьДатуОкончания();
КонецЕсли;
КонецПроцедуры
31. user973528 08.10.18 15:53 Сейчас в теме
(29) Дата отвечает за дату создания документов, если документы не найдены
32. user973528 08.10.18 15:54 Сейчас в теме
(29) То есть в созданном документе проставляется За какой период создан документ
34. YannikAlx 43 08.10.18 15:56 Сейчас в теме
(32) то есть вы не ищете уже существующие акты?
35. user973528 08.10.18 15:57 Сейчас в теме
(34) Ищу, идет поиск если за данный период существуют то не создаем, если не существуют то создаем новые с таким же договором
37. user973528 08.10.18 15:58 Сейчас в теме
(34) Можно ли как то в запросе поставить вид договора и что если в поле контрагента выбрана подгруппа "Поставщики" то ищем по всем контрагентам?
33. user973528 08.10.18 15:55 Сейчас в теме
(29) Могу прислать вам обработку, чтобы точно посмотрели что там и как
36. YannikAlx 43 08.10.18 15:58 Сейчас в теме
(33) Лучше бы почетче нарисовали свою задачу. Я так и не понял ЧТО должна делать ваша обработка.
Я просто вижу кучу незалатанных дыр - вситуаций в которых будут неоднозначности
38. user973528 08.10.18 16:01 Сейчас в теме
(36) Честно сказать я её не делал с нуля, я её дописываю.

Мы выставляем период "С такого числа " По "такое число"
Выбираем контрагента по которому хотим искать или создавать акты
И при нажатии сформировать мы ищем
41. YannikAlx 43 08.10.18 16:20 Сейчас в теме
(38) Пок4ажите мне текст кода в котором вы ищете акты именно за указанный период
39. user973528 08.10.18 16:02 Сейчас в теме
(36) Если не нашли актов за заданный период, то создаём новый.
40. user973528 08.10.18 16:05 Сейчас в теме
(36) С этой обработкой всё работает, создаются договора при выборе подгруппы корректно
Задача стоит в том чтобы обработка при выборе контрагента "Поставщики" искала остальных контрагентов с видом договора "С поставщиком"
43. YannikAlx 43 08.10.18 16:29 Сейчас в теме
(40) Вот запрос который даст вам акты всех контрагентов у которых есть договоры "с поставщиком" и которые как-то цепляют выбранный период

ВЫБРАТЬ РАЗЛИЧНЫЕ
АктСверкиВзаиморасчетов.Ссылка КАК Ссылка,
ДоговорыКонтрагентов.Владелец КАК Контрагент
ИЗ
Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
ПО (АктСверкиВзаиморасчетов.Контрагент = ДоговорыКонтрагентов.Владелец)
ГДЕ
АктСверкиВзаиморасчетов.Организация = &Организация
И ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора
И ( АктСверкиВзаиморасчетов.ДатаНачала МЕЖДУ &ДатаНачала И &ДатаОкончания
ИЛИ АктСверкиВзаиморасчетов.ДатаОкончания МЕЖДУ &ДатаНачала И &ДатаОкончания )
46. user973528 08.10.18 16:31 Сейчас в теме
(43) Да, спасибо, но я не понимаю как подсунуть это чтобы особо не изменять написанный код в обработке, чтобы чего другого не сломать
49. YannikAlx 43 08.10.18 16:34 Сейчас в теме
(46) тебе никто не мешает не трогать старую обработку - как ты ее испортишь?
Пиши свою - используя где возможно старые заготовки.
Просто такие вещи НОРМАЛЬНО получать именно запросами - а то как сделано в вашей обработке - извращение натуральное
44. user973528 08.10.18 16:29 Сейчас в теме
(29) Я уже хрен его знает как это решить, уже сижу часа 3
45. YannikAlx 43 08.10.18 16:29 Сейчас в теме
(44) см 43
Не огорчайся о потерянном времени - оно не потеряно.
Очевидны серьезные пробелы в знаниях и ты их восполняешь все это время...
47. user973528 08.10.18 16:32 Сейчас в теме
(45)
см 43
Не огорчайся о потерянном времени - оно не потеряно.
Очевидны серьезные пробелы в знаниях и ты их восполняешь все это время...


Просто людям это стыдно даже говорить, вот так они ждут работы, а я сижу как тупой истукан только время чужое трачу
50. YannikAlx 43 08.10.18 16:36 Сейчас в теме
(47) через подобное ВСЕ проходили - поверь ты не первый и не последний!
я прекрасно помню твои ощущения у себя... ))))
48. user973528 08.10.18 16:33 Сейчас в теме
(45) Только и остается искать помощи либо в интернете, либо здесь на инфостарте
25. user973528 08.10.18 15:19 Сейчас в теме
(23) Получается что у меня формируются только для контрагентов которые в группе "Поставщики" а нужно чтобы и других которые вне группы тоже
26. user973528 08.10.18 15:24 Сейчас в теме
(23) Оборотно - сальдовая формирует 60 счет и там как раз выводятся те контрагенты которые поставщики
51. YannikAlx 43 08.10.18 16:39 Сейчас в теме
Мой запрос тебе выдаст за выбранный период все акты сверки именно тех контрагентов, которые ПОСТАВЩИКИ, ибо не бывает поставщиков без договора "С поставщиком"
Остальное прикрути ...
52. user973528 08.10.18 16:40 Сейчас в теме
(51)
Мой запрос тебе выдаст за выбранный период все акты сверки именно тех контрагентов, которые ПОСТАВЩИКИ, ибо не бывает поставщиков без договора "С поставщиком"
Остальное прикрути ...


А можно как то сделать чтобы и те которые в "Поставщиках" искались и те что в запросе?
53. YannikAlx 43 08.10.18 16:43 Сейчас в теме
Запрос выдаст ВСЕХ, и тех и тех, что тебе еще надо?
В ПОСТАВЩИКАХ может случайно затесаться контрагент не являющийся Поставщиком - ну так ктото случайно туда его занесет...
Мой запрос найдет именно всех Поставщиков - тебе разве не ЭТО надо?
54. user973528 08.10.18 16:45 Сейчас в теме
(53) А ведь документы то он создаст потом для всех...
А нужно для тех каких контрагентов Бух выбирает
55. user973528 08.10.18 16:46 Сейчас в теме
(53) Либо проверить если ЭтотОбъект.Контрагент = "Поставщики" И (ширануть наше условие с поиском по виду) и уже тогда дальше лупить цикл
56. user973528 08.10.18 16:47 Сейчас в теме
(53) Сейчас через минут 15 я пришлю скриншоты, как вообще работает эта чудо обработка и что она выдаёт
57. YannikAlx 43 08.10.18 16:47 Сейчас в теме
Погоди погоди ...
Мы искали АКТЫ изначально и запрос ищет на самом деле ведь не контрагентов - а акты за период!
58. user973528 08.10.18 16:49 Сейчас в теме
(57)
Мы искали АКТЫ изначально и запрос ищет на самом деле ведь не контрагентов - а акты за период!


Вот походу и Контрагент в том запросе как раз для выборки. Выбирают нужного контрагента и по нему ищут
59. user973528 08.10.18 16:50 Сейчас в теме
(57) Запрос.УстановитьПараметр("Контрагент", Кон.Ссылка);

Вот, в Кон.Ссылка передаётся ссылка на контрагента которого выбрал пользователь
60. user973528 08.10.18 16:51 Сейчас в теме
(57) А в Дог.Ссылка походу с ним же и договор этого контрагента
61. YannikAlx 43 08.10.18 16:55 Сейчас в теме
(60) Вот и вопрос изначально - ЗАЧЕМ тогда искать программе,если все задется вручную?
Театр абсурда....
62. user973528 08.10.18 16:58 Сейчас в теме
(61) Видимо я плохо доношу информацию.

Хотят чтобы при выборе группы "Поставщики" искались все поставщики во всем справочнике, так как в группе не все поставщики есть
63. YannikAlx 43 08.10.18 17:06 Сейчас в теме
(62) Не ты доносишь плохо , а они хотят бреда !
Если они хотят только группу ПОСТАВЩИКИ - Это одно, а если они хотят всех Поставщиков это совершенно другое - сначала выясни что им на самом деле нужно.
64. YannikAlx 43 08.10.18 17:09 Сейчас в теме
На мой взгляд лучше сделать выбор ДоговораКонтрагента и по одному этому искать акты, если же договор не выбран - искать всех поставщиков.
Выбор группы тут совершенно не нужен
65. YannikAlx 43 08.10.18 17:16 Сейчас в теме
ВЫБРАТЬ РАЗЛИЧНЫЕ
ДоговорыКонтрагентов.Владелец КАК Контрагент,
ВЫБОР
КОГДА АктСверкиВзаиморасчетов.ДатаНачала МЕЖДУ &ДатаНачала И &ДатаОкончания
ИЛИ АктСверкиВзаиморасчетов.ДатаОкончания МЕЖДУ &ДатаНачала И &ДатаОкончания
ТОГДА АктСверкиВзаиморасчетов.Ссылка
ИНАЧЕ "Нет акта"
КОНЕЦ КАК АктСверки
ИЗ
Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
ПО (АктСверкиВзаиморасчетов.Контрагент = ДоговорыКонтрагентов.Владелец)
ГДЕ
ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора

УПОРЯДОЧИТЬ ПО
ДоговорыКонтрагентов.Владелец.Наименование
72. bmk74 233 08.10.18 18:54 Сейчас в теме
(65)
ВЫБРАТЬ РАЗЛИЧНЫЕ
ДоговорыКонтрагентов.Владелец КАК Контрагент,
ВЫБОР
КОГДА АктСверкиВзаиморасчетов.ДатаНачала МЕЖДУ &ДатаНачала И &ДатаОкончания
ИЛИ АктСверкиВзаиморасчетов.ДатаОкончания МЕЖДУ &ДатаНачала И &ДатаОкончания
ТОГДА АктСверкиВзаиморасчетов.Ссылка
ИНАЧЕ "Нет акта"
КОНЕЦ КАК АктСверки
ИЗ
Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
ПО (АктСверкиВзаиморасчетов.Контрагент = ДоговорыКонтрагентов.Владелец)
ГДЕ
ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора
Показать


Вот интересно когда вы NULL получете в акте сверки, а вы получите его, так как далеко не по всем договорам акты есть, что будете с ошибкой делать так как у NULL нету ДатаНачала
74. YannikAlx 43 09.10.18 09:10 Сейчас в теме
(72) ошибки никакой с NULL в таком запросе не будет! Вы невнимательны...
При NULL в акте сверки запрос выдаст - "Нет акта"
84. bmk74 233 09.10.18 12:21 Сейчас в теме
(74)
ВЫБОР
КОГДА АктСверкиВзаиморасчетов.ДатаНачала МЕЖДУ &ДатаНачала И &ДатаОкончания
ИЛИ АктСверкиВзаиморасчетов.ДатаОкончания МЕЖДУ &ДатаНачала И &ДатаОкончания
ТОГДА АктСверкиВзаиморасчетов.Ссылка
ИНАЧЕ "Нет акта"
КОНЕЦ КАК АктСверки

Где проверка на NULL ?
Или У Вас
 NULL.ДатаНачала
это нормально ?
88. YannikAlx 43 09.10.18 12:51 Сейчас в теме
(84) Не нужна там проверка на NULL!
Ибо я отбираю только те которые имеют НЕ NULL значения дат.
Пустоты туда в принципе попасть не могут - потому никаких доп проверок не нужно.

Про NULL.дата - это ваши фантазии...
90. bmk74 233 09.10.18 13:03 Сейчас в теме
(88)Т.Е по вашему
NULL МЕЖДУ &ДатаНачала И &ДатаОкончания
Это нормально ?

И Где вы отбираете те которые имеют не NULL в запросе я не нашел
ГДЕ НЕ АктСверкиВзаиморасчетов ЕСТЬ NULL

А еще проще делать не левое а
 Внутреннее соединение
Тогда вы NULL точно не получите по этому полю да и левое поле ограничите сразу только теми записями что есть в правом
91. YannikAlx 43 09.10.18 13:26 Сейчас в теме
1. Сравнение типа "ЧТО-ТО МЕЖДУ &ДатаНачала И &ДатаОкончания" - Нормально - отберется только то что соответствует ЭТОМУ условию.
2. Не требуется такого отбора, потому что 1 исключает все что в него не входит, а не входит именно когда NULL
3. А вот внутренне как раз не годится, ибо мне нужны и NULL значения Актов - они будут отображаться текстом "Нет акта"
При внутреннем соединении вы просто получите тех контриков у кого есть акты, а это не полный список

Да вы возьмите сами создать попытайтесь рабочий запрос , чтобы выдал ВСЕХ поставщиков с данными о наличии актов сверки в периоде
92. bmk74 233 09.10.18 14:42 Сейчас в теме
Да вот пожалуйста, и 60 счет и период хоть год поставь он на каждый месяц покажет, главное что бы акты попадали в этот период....так же можно контрагентов выбрать как в иерархии так и вообще не выбирать.... а так подогнать под свои условия данный запрос можно всегда..И кстати бухгалтер права, зачем делать акты (показывать контрагентов по которым не было расчетов вообще за указанный период)
(91)ВЫБРАТЬ
	Контрагенты.Ссылка КАК Ссылка
ПОМЕСТИТЬ ВТ_Контрагенты
ИЗ
	Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
		ПО (ДоговорыКонтрагентов.Владелец = Контрагенты.Ссылка)
			И (Контрагенты.Ссылка В ИЕРАРХИИ (&Контрагент)
				ИЛИ &Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка))
ГДЕ
	ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПоставщиком)

СГРУППИРОВАТЬ ПО
	Контрагенты.Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ХозрасчетныйОборотыДтКт.СубконтоКт1 КАК Контрагент,
	СУММА(ХозрасчетныйОборотыДтКт.СуммаОборот) КАК СуммаОборот,
	СУММА(ЕСТЬNULL(ХозрасчетныйОборотыДтКт.КоличествоОборотКт, 0)) КАК Количество,
	НАЧАЛОПЕРИОДА(ХозрасчетныйОборотыДтКт.Период, МЕСЯЦ) КАК Месяц
ПОМЕСТИТЬ ВТ_РасчетыСКонтрагентом
ИЗ
	РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
			&ДатаНачала,
			&ДатаОкончания,
			Регистратор,
			,
			,
			,
			,
			СубконтоДт1 В
					(ВЫБРАТЬ
						Контрагенты.Ссылка
					ИЗ
						ВТ_Контрагенты КАК Контрагенты)
				ИЛИ СубконтоКт1 В
					(ВЫБРАТЬ
						Контрагенты.Ссылка
					ИЗ
						ВТ_Контрагенты КАК Контрагенты)) КАК ХозрасчетныйОборотыДтКт
ГДЕ
	ХозрасчетныйОборотыДтКт.СчетКт В (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПоставщиками))

СГРУППИРОВАТЬ ПО
	ХозрасчетныйОборотыДтКт.СубконтоКт1,
	НАЧАЛОПЕРИОДА(ХозрасчетныйОборотыДтКт.Период, МЕСЯЦ)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_РасчетыСКонтрагентом.Месяц КАК Месяц,
	ВТ_РасчетыСКонтрагентом.Контрагент КАК Контрагент,
	ВТ_РасчетыСКонтрагентом.СуммаОборот КАК СуммаОборот,
	ВТ_РасчетыСКонтрагентом.Количество КАК Количество,
	ЕСТЬNULL(АктСверкиВзаиморасчетов.ОстатокНаНачало, 0) КАК ОстатокПоАкту,
	ВЫБОР
		КОГДА АктСверкиВзаиморасчетов.Ссылка ЕСТЬ NULL
			ТОГДА "Нет Акта Сверки"
		ИНАЧЕ АктСверкиВзаиморасчетов.Ссылка
	КОНЕЦ КАК АктСверки
ИЗ
	ВТ_РасчетыСКонтрагентом КАК ВТ_РасчетыСКонтрагентом
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
		ПО (ВТ_РасчетыСКонтрагентом.Контрагент = АктСверкиВзаиморасчетов.Контрагент
				И АктСверкиВзаиморасчетов.Проведен
				И АктСверкиВзаиморасчетов.ДатаНачала >= ВТ_РасчетыСКонтрагентом.Месяц
				И АктСверкиВзаиморасчетов.ДатаОкончания < КОНЕЦПЕРИОДА(ВТ_РасчетыСКонтрагентом.Месяц, МЕСЯЦ))
Показать
93. YannikAlx 43 09.10.18 15:15 Сейчас в теме
(92) Теперь я понимаю как писалась 1С ЗУП 3... )))
Там враг наш ногу сломит...

Ваш запрос безусловно вполне стройный, но насколько он сложнее - ради чего?

Вы сравните размеры и сложность вашего запроса с моим, при том что функциональность - одинаковая. точнее у вас избыточная - не запрашиваемая изначально
94. YannikAlx 43 09.10.18 15:23 Сейчас в теме
(92) А кроме того зачем такая этажерка???

ВЫБОР
КОГДА АктСверкиВзаиморасчетов.Ссылка ЕСТЬ NULL
ТОГДА "Нет Акта Сверки"
ИНАЧЕ АктСверкиВзаиморасчетов.Ссылка
КОНЕЦ КАК АктСверки

Если есть совершенно простая схемка

ЕСТЬNULL( АктСверкиВзаиморасчетов.Ссылка,"Нет Акта Сверки") КАК АктСверки

Которую вы сами же использовали строкой выше?
Чтоб запутать студента?
95. YannikAlx 43 09.10.18 15:29 Сейчас в теме
(92) И самое интересное как вы думаете что выдаст ваш запрос при наличии актов скажем за даты с 01.01.18 по 31.05.18 если вы зададите в параметрах запроса ДатаНачала 1.04.18 и ДатаКонца 31.07.18?

Попадет туда существующий Акт? - нет..... ;-)
97. bmk74 233 09.10.18 15:33 Сейчас в теме
(95)Я и написал, что акты должны быть помесячные, что я предпологаю они и делают этой обработкой, ну читайте внимательно :)
98. YannikAlx 43 09.10.18 15:38 Сейчас в теме
(97) А на каких основаниях вы накладываете подобные ограничения на работу бухгалтерии?
Не хотят они помесячно....
да и с чего бы им хотеть...?
99. bmk74 233 09.10.18 15:45 Сейчас в теме
(98)О господи, ну хотите получить не помесячно а все за период, достаточно условие в соединении поменять, я же написал, подогнать под свои условия труда не составит...
А хотеть им это с того что они этой обработкой акты создают...
101. YannikAlx 43 09.10.18 16:07 Сейчас в теме
(99) Вы то написали , что труда не составит - но труд составит, уж поверьте автор не великий специалист в запросах...
Думаю он даже не использовал никогда временные таблицы.

А я с самого начала предложил вариант именно когда запрос выдаст все существующие АКТЫ , задевающие своим периодом заданные даты.
При том что запрос был в разы короче и проще.
Ну зачем усложнять то что можно получить простым способом?
102. YannikAlx 43 09.10.18 16:20 Сейчас в теме
(99) И кстати совершенно не понял зачем вы нагородили огород в первой временной таблице
Безо всяких соединений вы получите тот же результат

ВЫБРАТЬ РАЗЛИЧНЫЕ
ДоговорыКонтрагентов.Владелец КАК Владелец
ИЗ
Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ГДЕ
ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПоставщиком)
И (ДоговорыКонтрагентов.Владелец.Ссылка В ИЕРАРХИИ (&Контрагент)
ИЛИ &Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) )
104. bmk74 233 09.10.18 17:28 Сейчас в теме
(102)Затем что у вас неявное соединение идет, и как правило, не рекомендуется условия задавать по неявному соединению...так вас устроит ? поэтому лучше писать сразу правильно запросы
112. YannikAlx 43 10.10.18 09:11 Сейчас в теме
(104) Соединение вы где увидели в 102 ?
103. YannikAlx 43 09.10.18 16:25 Сейчас в теме
(99) А вот можете расшифровать назначение такого хитрого условия

СубконтоДт1 В
(ВЫБРАТЬ
Контрагенты.Ссылка
ИЗ
ВТ_Контрагенты КАК Контрагенты)
ИЛИ СубконтоКт1 В
(ВЫБРАТЬ
Контрагенты.Ссылка
ИЗ
ВТ_Контрагенты КАК Контрагенты)

Это явно чтоб запутать бедного студента?
105. bmk74 233 09.10.18 17:34 Сейчас в теме
(103)А чет тут расшифровывать то ? Хотите посмотреть допустим отработку ограничений как я делал
вот там точно можно долго думать...зато данную добавку к любому запросу приладить можно...правда здесь используется отдельный справочник с ограничениями по статьям и пользователям, почти RLS в принципе и мысдь была содрана оттуда,
А то что вы показываете, так...детские игрушки, можно было и соединением это сделать...просто способ показал

И
	ИСТИНА В
			(ВЫБРАТЬ ПЕРВЫЕ 1
				ИСТИНА
			ИЗ
				Справочник.NF_ОграниченияСтатейРасходов.СтатьиДохода КАК СтатьиДохода
			ГДЕ
				(СтатьиДохода.Ссылка.Пользователь = &Пользователь
						И НЕ СтатьиДохода.Ссылка.РазрешеныДоходы
						И ЗНАЧЕНИЕ(ПланВидовХарактеристик.СтатьиДоходов.ВыручкаОтПродаж) = СтатьиДохода.СтатьяДоходов
					ИЛИ НЕ &Пользователь В
							(ВЫБРАТЬ
								ВТСтатьиДохода.Пользователь
							ИЗ
								Справочник.NF_ОграниченияСтатейРасходов КАК ВТСтатьиДохода
							ГДЕ НЕ ВТСтатьиДохода.ПометкаУдаления))
					ИЛИ СтатьиДохода.Ссылка.Пользователь = &Пользователь 
					И СтатьиДохода.Ссылка.РазрешеныДоходы
					И  НЕ ЗНАЧЕНИЕ(ПланВидовХарактеристик.СтатьиДоходов.ВыручкаОтПродаж) В (ВЫБРАТЬ
								ВТСтатьиДохода.СтатьяДоходов
							ИЗ
								Справочник.NF_ОграниченияСтатейРасходов.СтатьиДохода КАК ВТСтатьиДохода
								ГДЕ ВТСтатьиДохода.Ссылка.Пользователь = &Пользователь))
Показать
107. YannikAlx 43 09.10.18 17:38 Сейчас в теме
(105) даааа .... Вы видимо так и не поняли что нужно расшифровать!
Зачем дважды одно и то же условие прописали?
110. bmk74 233 09.10.18 18:58 Сейчас в теме
(107)Здрасти, вы субконтоКТ от СубконтоДТ уже и отличить не могете ? Ну тогда я пас....
108. YannikAlx 43 09.10.18 17:39 Сейчас в теме
100. YannikAlx 43 09.10.18 15:59 Сейчас в теме
(97) Я запустил ваш запрос на живой базе и как и предполагалось - он по всем контрикам выдал НЕТ АКТА, хотя все акты есть в наличии.
Неувязочка у вас с датами - никто не делает акты сверок по месяцам...
106. bmk74 233 09.10.18 17:38 Сейчас в теме
(100) Ну реально я не говорил что все так делают, !!!!! сколько можно одно и то же
Я могу больше сказать если будет сделано более одного акта за месяц он задвоит и "более" записи..., еще раз ЭТО ШАБЛОН, подогнать под свои потребности никто не мешает. Я показал как МОЖНО сделать а не как надо...
109. YannikAlx 43 09.10.18 17:48 Сейчас в теме
(106) Вот кстати опять же запрос проще вашего но уже с учетом 60 счета. Я просто все пытаюсь поянть - зачем вы все усложняете?
И самое страшное, что ваши запросы в РАЗЫ медленнее .
Ваша вторая временная таблица выполнялась у меня 36,149. Моя временная за 7,125. и это стабильный результат.

ВЫБРАТЬ РАЗЛИЧНЫЕ
ДоговорыКонтрагентов.Владелец КАК Владелец,
СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК СуммаОборотДт,
СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК СуммаОборотКт
ПОМЕСТИТЬ ВТ_Обороты
ИЗ
Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНачала, &ДатаОкончания, Период, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПоставщиками), , , , ) КАК ХозрасчетныйОбороты
ПО (ХозрасчетныйОбороты.Субконто1 = ДоговорыКонтрагентов.Владелец)
ГДЕ
ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПоставщиком)
И (ДоговорыКонтрагентов.Владелец.Ссылка В ИЕРАРХИИ (&Контрагент)
ИЛИ &Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка))
И (НЕ ХозрасчетныйОбороты.СуммаОборотДт Есть NULL ИЛИ НЕ ХозрасчетныйОбороты.СуммаОборотКт Есть NULL )


СГРУППИРОВАТЬ ПО
ДоговорыКонтрагентов.Владелец
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВТ_Обороты.Владелец КАК Контрагент,
ВТ_Обороты.СуммаОборотДт КАК СуммаОборотДт,
ВТ_Обороты.СуммаОборотКт КАК СуммаОборотКт,
ВЫБОР
КОГДА АктСверкиВзаиморасчетов.ДатаНачала МЕЖДУ &ДатаНачала И &ДатаОкончания
ИЛИ АктСверкиВзаиморасчетов.ДатаОкончания МЕЖДУ &ДатаНачала И &ДатаОкончания
ТОГДА АктСверкиВзаиморасчетов.Ссылка
ИНАЧЕ "Нет акта"
КОНЕЦ КАК АктСверки
ИЗ
ВТ_Обороты КАК ВТ_Обороты
ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
ПО (АктСверкиВзаиморасчетов.Контрагент = ВТ_Обороты.Владелец И (АктСверкиВзаиморасчетов.ДатаНачала МЕЖДУ &ДатаНачала И &ДатаОкончания
ИЛИ АктСверкиВзаиморасчетов.ДатаОкончания МЕЖДУ &ДатаНачала И &ДатаОкончания) )
111. bmk74 233 09.10.18 19:20 Сейчас в теме
(109) [Да вы много я смотрю чего понять не можете :)..Взяли Оборотку только без ДТ И КТ, и потом условие наложите
а теперь сравните вот это с вашей То что вы кор счет убрали я молчу, вам то нафиг конечно он не сдался, вы же знаете что такое активные и пассивные счета, ч то на ДТ ляжет а что на КТ, я как то все больше по старинке, знаете...
Кстати специально для ВАШЕЙ базы что бы вы акты увидели....
ВЫБРАТЬ
	Контрагенты.Ссылка КАК Ссылка
ПОМЕСТИТЬ ВТ_Контрагенты
ИЗ
	Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
		ПО (ДоговорыКонтрагентов.Владелец = Контрагенты.Ссылка)
			И (Контрагенты.Ссылка В ИЕРАРХИИ (&Контрагент)
				ИЛИ &Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка))
ГДЕ
	ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПоставщиком)

СГРУППИРОВАТЬ ПО
	Контрагенты.Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ХозрасчетныйОборотыДтКт.Субконто1 КАК Контрагент,
	ХозрасчетныйОборотыДтКт.СуммаОборот КАК СуммаОборот,
	ЕСТЬNULL(ХозрасчетныйОборотыДтКт.КоличествоОборотКт, 0) КАК Количество,
	ХозрасчетныйОборотыДтКт.Период КАК Месяц
ПОМЕСТИТЬ ВТ_РасчетыСКонтрагентом
ИЗ
	РегистрБухгалтерии.Хозрасчетный.Обороты(
			&ДатаНачала,
			&ДатаОкончания,
			МЕСЯЦ,Счет В (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПоставщиками))
			,
			,
			
			
			Субконто1 В
					(ВЫБРАТЬ
						Контрагенты.Ссылка
					ИЗ
						ВТ_Контрагенты КАК Контрагенты)
				) КАК ХозрасчетныйОборотыДтКт
ГДЕ
	ХозрасчетныйОборотыДтКт.СуммаОборот <> 0

//СГРУППИРОВАТЬ ПО
//	ХозрасчетныйОборотыДтКт.Субконто1,
//	НАЧАЛОПЕРИОДА(ХозрасчетныйОборотыДтКт.Период, МЕСЯЦ)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ АктСверкиВзаиморасчетов.Ссылка) КАК КоличествоЗаМесяц,
	НАЧАЛОПЕРИОДА(АктСверкиВзаиморасчетов.ДатаНачала, МЕСЯЦ) КАК ДатаНачала,
	КОНЕЦПЕРИОДА(АктСверкиВзаиморасчетов.ДатаОкончания, МЕСЯЦ) КАК ДатаОкончания,
	МАКСИМУМ(АктСверкиВзаиморасчетов.Ссылка) КАК АктВзаиморасчетов,
	АктСверкиВзаиморасчетов.Контрагент КАК Контрагент,
	МАКСИМУМ(АктСверкиВзаиморасчетов.Дата) КАК Дата
ПОМЕСТИТЬ ВТ_Акты
ИЗ
	Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
ГДЕ
	АктСверкиВзаиморасчетов.ДатаОкончания <= &ДатаОкончания
	И АктСверкиВзаиморасчетов.Проведен
	И АктСверкиВзаиморасчетов.Контрагент В (ВЫБРАТЬ
						Контрагенты.Ссылка
					ИЗ
						ВТ_Контрагенты КАК Контрагенты)

СГРУППИРОВАТЬ ПО
	НАЧАЛОПЕРИОДА(АктСверкиВзаиморасчетов.ДатаНачала, МЕСЯЦ),
	КОНЕЦПЕРИОДА(АктСверкиВзаиморасчетов.ДатаОкончания, МЕСЯЦ),
	АктСверкиВзаиморасчетов.Контрагент
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_РасчетыСКонтрагентом.Контрагент КАК Контрагент,
	МИНИМУМ(ВТ_Акты.ДатаОкончания) КАК ДатаОкончания,
	ВТ_РасчетыСКонтрагентом.Месяц КАК Месяц,
	МАКСИМУМ(ВТ_Акты.КоличествоЗаМесяц) КАК КоличествоЗаМесяц
ПОМЕСТИТЬ ВТ_АктыСПериодом
ИЗ
	ВТ_РасчетыСКонтрагентом КАК ВТ_РасчетыСКонтрагентом
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Акты КАК ВТ_Акты
		ПО (ВТ_РасчетыСКонтрагентом.Контрагент = ВТ_Акты.Контрагент)
			И (ВТ_РасчетыСКонтрагентом.Месяц < ВТ_Акты.ДатаОкончания)

СГРУППИРОВАТЬ ПО
	ВТ_РасчетыСКонтрагентом.Контрагент,
	//ВТ_Акты.АктВзаиморасчетов,
	ВТ_РасчетыСКонтрагентом.Месяц
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_РасчетыСКонтрагентом.Месяц КАК Месяц,
	ВТ_РасчетыСКонтрагентом.Контрагент КАК Контрагент,
	ВТ_РасчетыСКонтрагентом.СуммаОборот КАК СуммаОборот,
	ВТ_РасчетыСКонтрагентом.Количество КАК Количество,
	ЕСТЬNULL(Акты.АктВзаиморасчетов, "Нет акта") КАК АктВзаиморасчетов,
	Акты.ДатаОкончания КАК ДатаОкончания,
	Акты.ДатаНачала КАК ДатаНачала,
	ВТ_АктыСПериодом.КоличествоЗаМесяц КАК КоличествоЗаМесяц
	
ИЗ
	ВТ_РасчетыСКонтрагентом КАК ВТ_РасчетыСКонтрагентом
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_АктыСПериодом КАК ВТ_АктыСПериодом
		ПО ВТ_РасчетыСКонтрагентом.Контрагент = ВТ_АктыСПериодом.Контрагент
			И (ВТ_АктыСПериодом.Месяц = ВТ_РасчетыСКонтрагентом.Месяц)
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Акты КАК Акты
		ПО  ВТ_АктыСПериодом.Контрагент = Акты.Контрагент
		И  ВТ_АктыСПериодом.ДатаОкончания = Акты.ДатаОкончания
УПОРЯДОЧИТЬ ПО
	Контрагент,
	Месяц
Показать


А то у вас бухия странная акты наверное раз в год делает, хотя нормальные люди если и делают сверку то помесячно :)
113. YannikAlx 43 10.10.18 09:22 Сейчас в теме
(111) Вав запрос разбух неимоверно , но резулттата совершенно не дает!!!
при наличии Актов у контрагента, ваш запрос тупо показывает неизвестно что , но только не акты...
Мой запрос показывает все акты

(110) тут каюсь прошляпил - кт-дт...
Но я просто не понял - зачем использовать ОборотыКТДТ, если достаточно для нашей задачи просто обороты. И именно это меня сбило с толку...
Прикрепленные файлы:
114. bmk74 233 10.10.18 11:25 Сейчас в теме
(113)Он тупо показывает акт, если он есть и ДатаОкончания у него больше чем дата в оборотке, в вашем случае акт был сделан..намного раньше первой записи в регистре, это кстати ваша выборка :) я тупо убрал кор счет из нее. а то вы хвалились что у вас запрос быстрее, я могу вам сказать больше условие ИЛИ не рекомендуется в запросах делать, так как очень затратная операция, и рекомендации объеденять два запроса...
Вы похоже не понимаете что такое регистр бухгалтерии и что у него есть как дТ так и КТ, или "субконто и корСубконто", и так как вы убрали корСубконто то записи по оплате он тупо не видит, только поступления услуг товаров...и поэтому ваш акт и не попал в выборку...Для лучшего понимания вам запросик
посмотрите движухи с отбором по счету и корсчету кстати тоже касается и субконто...
ВЫБРАТЬ
	ХозрасчетныйОбороты.Регистратор КАК Регистратор,
	ХозрасчетныйОбороты.Счет КАК Счет,
	ХозрасчетныйОбороты.КорСчет КАК КорСчет,
	ХозрасчетныйОбороты.Субконто1 КАК Субконто,
	ХозрасчетныйОбороты.КорСубконто1 КАК КорСубконто,
	СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК СуммаОборотКт,
	ХозрасчетныйОбороты.СуммаОборот КАК СуммаОборот,
	ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт
ИЗ
	РегистрБухгалтерии.Хозрасчетный.Обороты(&Нач, &Кон, Регистратор, , , , КорСчет = &КорСчет, ) КАК ХозрасчетныйОбороты

СГРУППИРОВАТЬ ПО
	ХозрасчетныйОбороты.Регистратор,
	ХозрасчетныйОбороты.КорСчет,
	ХозрасчетныйОбороты.Субконто1,
	ХозрасчетныйОбороты.КорСубконто1,
	ХозрасчетныйОбороты.Счет,
	ХозрасчетныйОбороты.СуммаОборот,
	ХозрасчетныйОбороты.СуммаОборотДт
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ХозрасчетныйОбороты.Регистратор КАК Регистратор,
	ХозрасчетныйОбороты.Счет КАК Счет,
	ХозрасчетныйОбороты.КорСчет КАК КорСчет,
	ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
	ХозрасчетныйОбороты.КорСубконто1 КАК КорСубконто1,
	СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК СуммаОборотКт,
	СУММА(ХозрасчетныйОбороты.СуммаНУОборотКт) КАК СуммаНУОборотКт
ИЗ
	РегистрБухгалтерии.Хозрасчетный.Обороты(&Нач, &Кон, Регистратор, Счет = &Счет, , , , ) КАК ХозрасчетныйОбороты

СГРУППИРОВАТЬ ПО
	ХозрасчетныйОбороты.Регистратор,
	ХозрасчетныйОбороты.КорСчет,
	ХозрасчетныйОбороты.КорСубконто1,
	ХозрасчетныйОбороты.Субконто1,
	ХозрасчетныйОбороты.Счет
Показать
116. YannikAlx 43 10.10.18 14:21 Сейчас в теме
(114)
Вы похоже не понимаете что такое регистр бухгалтерии и что у него есть как дТ так и КТ, или "субконто и корСубконто"

Я прекрасно понимаю все это...
Я не понимаю - зачем это использовать в текущей задаче?
Это не оптимально по меньшей мере, о чем и говорит скорость вашего запроса, который кстати так и не показал созданные Акты, то есть как минимум не выполнил возложенную на него задачу.

Я допускаю что вы знаете очень много , но всегда ли нужно палить из пушек по воробьям?
Это все равно что ученик 2 класса прийдет ко мне с задачкой по математике на поиск неизвестного, а я ему предложу решение через интегралы и дифференциалы... Решить любую задачу можно всегда различными способами. И по любому наилучший будет тот который проще и быстрее (при правильном результате естественно)
115. YannikAlx 43 10.10.18 14:18 Сейчас в теме
(111) "То что вы кор счет убрали я молчу"
Я так и не понял ОТКУДА я убрал? У вас его нигде и не было...

(114) "Он тупо показывает акт, если он есть" - а как он должен его показывать?
задача стоит именно такая - как бы не ввели акты сверок, если они касаются указанного периода - их нужно видеть и переделывать (при желании)

Про ИЛИ я прекрасно знаю, но это не в нашем случае, когда актов 100 штук
117. bmk74 233 10.10.18 15:39 Сейчас в теме
(115)
Про ИЛИ я прекрасно знаю, но это не в нашем случае, когда актов 100 штук .

Он не на акты накладывается,..ну да ладно
Почему он у вас не вывел, тут все просто, так как записи по регистру у вас не все получены были, то и период в котором акт должен был встать просто не получили из регистра...
И еще раз ЭТО ШАБЛОН :)...
По поводу избыточности...ну тут..вопрос такой более философский..если я могу написать это за 20 минут , и мне это не составит труда..то лучше я сделаю так, а кто то на это потратит времени сутки и более, тогда да..тут уже вопрос времени и как ни странно "денег"...ту уже вопрос более в знаниях..
Я так и не понял ОТКУДА я убрал? У вас его нигде и не было... 

Вот отсюда ПО (ХозрасчетныйОбороты.Субконто1 = ДоговорыКонтрагентов.Владелец) там еще корСубконто есть
Просто пл КТ проще, открыл документ посмотрел движения...и уже запрос пишешь по этим движениям, если тупо с обороткой, там надо разбираться какое субконто какой счет обычный или кор...
И еще если бы я писал запрос под конкретную задачу, я бы все равно его не так сделал, Он бы еще больше был :)...а так на коленке написан по быстрому...
Ладно мир дружба :)...а то мы тут развели холивар....
118. YannikAlx 43 10.10.18 15:51 Сейчас в теме
(117)Мир безусловно!
Мы же не воевали! Обсуждение деталей затачивает мозги. Главное отбрасывать вовремя гордыню и видеть свои пробелы...
87. bmk74 233 09.10.18 12:44 Сейчас в теме
(74)Это хорошо что 1С "прощает" такие вещи.
78. YannikAlx 43 09.10.18 09:26 Сейчас в теме
Запрос (65) 100% рабочий - дальше бери данные и делай с ними что хочешь - это все поставщики и наличие у них актов за указанный период.
В чем проблема-то?
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

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

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день