Доработка сверки по головным подразделениям для Розницы
Клиенту нужна была сверка с контрагентом по всем его подразделениям (обособленным).
Добавил галочку «С обособленными» в сверку контрагентов, она влияет на список договоров, по которым составляется сверка.

&НаСервере Процедура дор_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) Реквизит = Новый РеквизитФормы("дор_СОбособленными", Новый ОписаниеТипов("Булево")); МассивРеквизитов = Новый Массив; МассивРеквизитов.Добавить(Реквизит); ЭтаФорма.ИзменитьРеквизиты(МассивРеквизитов); Привязка = Элементы.ШапкаДополнительно; Элемент = ЭтаФорма.Элементы.Вставить("дор_СОбособленными", Тип("ПолеФормы"), Привязка); Элемент.Вид = ВидПоляФормы.ПолеФлажка; Элемент.Заголовок = "С обособленными"; Элемент.ПутьКДанным = "дор_СОбособленными"; Элемент.УстановитьДействие("ПриИзменении", "дор_СОбособленными_ПриИзменении"); КонецПроцедуры &НаКлиенте Процедура дор_СОбособленными_ПриИзменении(Элемент) //Отрабатываем изменение контрагента КонтрагентПриИзменении(Неопределено); КонецПроцедуры &НаСервере &ИзменениеИКонтроль("ПолучитьДанныеКонтрагента") Процедура дор_ПолучитьДанныеКонтрагента(ДанныеКонтрагента) ДанныеКонтрагента = Новый Структура; ДанныеКонтрагента.Вставить("КонтактноеЛицо", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Контрагент, "КонтактноеЛицоПодписант")); // Если контрагент поменялся, повторим заполнение договоров ЗаполнитьДанные = Истина; Если Объект.ДоговорыКонтрагентов.Количество() > 0 Тогда Если Объект.ДоговорыКонтрагентов[0].Договор.Владелец = Объект.Контрагент И УчетПоКомпании Тогда ЗаполнитьДанные = Ложь; Иначе Объект.ДоговорыКонтрагентов.Очистить(); Объект.ДанныеОрганизации.Очистить(); Объект.ДанныеКонтрагента.Очистить(); КонецЕсли; КонецЕсли; ДанныеКонтрагента.Вставить("ВестиРасчетыПоДоговорам", Объект.Контрагент.ВестиРасчетыПоДоговорам); ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ОписаниеВыбораДоговоров", "Доступность", Объект.Контрагент.ВестиРасчетыПоДоговорам); Если ЗаполнитьДанные Тогда Запрос = Новый Запрос; Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент); Запрос.УстановитьПараметр("БезОтбораПоОрганизации", УчетПоКомпании Или Не ДанныеКонтрагента.ВестиРасчетыПоДоговорам); Запрос.УстановитьПараметр("Организация", Объект.Организация); Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ИСТИНА КАК Отметка, | СправочникДоговорыКонтрагентов.Ссылка КАК Договор, | СправочникДоговорыКонтрагентов.ВалютаРасчетов КАК ВалютаДоговора |ИЗ | Справочник.ДоговорыКонтрагентов КАК СправочникДоговорыКонтрагентов |ГДЕ #Удаление | СправочникДоговорыКонтрагентов.Владелец = &Контрагент #КонецУдаления #Вставка | ВЫБОР КОГДА &дор_СОбособленными ТОГДА | СправочникДоговорыКонтрагентов.Владелец.ГоловнойКонтрагент = &Контрагент | ИЛИ СправочникДоговорыКонтрагентов.Владелец = &Контрагент | ИНАЧЕ | СправочникДоговорыКонтрагентов.Владелец = &Контрагент | КОНЕЦ #КонецВставки | И ВЫБОР | КОГДА &БезОтбораПоОрганизации | ТОГДА ИСТИНА | ИНАЧЕ СправочникДоговорыКонтрагентов.Организация = &Организация | КОНЕЦ"; #Вставка Запрос.Параметры.Вставить("дор_СОбособленными", ЭтаФорма.дор_СОбособленными); #КонецВставки Объект.ДоговорыКонтрагентов.Загрузить(Запрос.Выполнить().Выгрузить()); ОписаниеВыбораДоговоров = НСтр("ru = 'Выбраны все договоры контрагента'"); Если ПолучитьФункциональнуюОпцию("ПередачаТоваровМеждуОрганизациями") Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ИСТИНА КАК Отметка, | СправочникДоговорыКонтрагентов.Ссылка КАК Договор, | СправочникДоговорыКонтрагентов.ВалютаРасчетов КАК ВалютаДоговора |ИЗ | Справочник.ДоговорыКонтрагентов КАК СправочникДоговорыКонтрагентов |ГДЕ | СправочникДоговорыКонтрагентов.ЭтоДоговорПередачиТоваровМеждуОрганизациями | И (СправочникДоговорыКонтрагентов.Владелец, СправочникДоговорыКонтрагентов.Организация) В | (ВЫБРАТЬ | НастройкаПередачиТоваровМеждуОрганизациями.ОрганизацияВладелец КАК ОрганизацияВладелец, | НастройкаПередачиТоваровМеждуОрганизациями.ОрганизацияПродавец КАК ОрганизацияПродавец | ИЗ | РегистрСведений.НастройкаПередачиТоваровМеждуОрганизациями КАК НастройкаПередачиТоваровМеждуОрганизациями | ГДЕ | НастройкаПередачиТоваровМеждуОрганизациями.КонтрагентПродавец = &Контрагент | И НастройкаПередачиТоваровМеждуОрганизациями.ОрганизацияВладелец = &Организация | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | НастройкаПередачиТоваровМеждуОрганизациями.ОрганизацияПродавец, | НастройкаПередачиТоваровМеждуОрганизациями.ОрганизацияВладелец | ИЗ | РегистрСведений.НастройкаПередачиТоваровМеждуОрганизациями КАК НастройкаПередачиТоваровМеждуОрганизациями | ГДЕ | НастройкаПередачиТоваровМеждуОрганизациями.КонтрагентПродавец = &Контрагент | И НастройкаПередачиТоваровМеждуОрганизациями.ОрганизацияВладелец = &Организация | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | НастройкаПередачиТоваровМеждуОрганизациями.ОрганизацияВладелец, | НастройкаПередачиТоваровМеждуОрганизациями.ОрганизацияПродавец | ИЗ | РегистрСведений.НастройкаПередачиТоваровМеждуОрганизациями КАК НастройкаПередачиТоваровМеждуОрганизациями | ГДЕ | НастройкаПередачиТоваровМеждуОрганизациями.КонтрагентВладельца = &Контрагент | И НастройкаПередачиТоваровМеждуОрганизациями.ОрганизацияПродавец = &Организация | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | НастройкаПередачиТоваровМеждуОрганизациями.ОрганизацияПродавец, | НастройкаПередачиТоваровМеждуОрганизациями.ОрганизацияВладелец | ИЗ | РегистрСведений.НастройкаПередачиТоваровМеждуОрганизациями КАК НастройкаПередачиТоваровМеждуОрганизациями | ГДЕ | НастройкаПередачиТоваровМеждуОрганизациями.КонтрагентВладельца = &Контрагент | И НастройкаПередачиТоваровМеждуОрганизациями.ОрганизацияПродавец = &Организация)"; Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент); Запрос.УстановитьПараметр("Организация", Объект.Организация); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НоваяСтрокаДоговора = Объект.ДоговорыКонтрагентов.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрокаДоговора, ВыборкаДетальныеЗаписи); КонецЦикла; КонецЕсли; ДоговорыКонтрагентов = Объект.ДоговорыКонтрагентов.Выгрузить(,"Договор"); НачальноеСальдоПоДоговорам(Объект.Организация, Объект.НачалоПериода, ДоговорыКонтрагентов, Объект.ВалютаДокумента, Объект.СальдоНачалоПериода); КонецЕсли; КонецПроцедуры
Может 1С когда-нибудь доработает документ сверки?
Среда: Розница 3.0.12.237. Объем: 1 час.
