![]() |
|
Запрос: не закрытые авансы | ☑ | ||
---|---|---|---|---|
0
листопад
30.08.14
✎
18:57
|
БП 3.0
Пишу обработку, на которой размещены две кнопки: 1) "Заполнить", выполняется процедура ЗаполнитьНаСервереОстаток(), которая собирает остаток по счету 62.02 на дату и заполняет полученными данными (док-тами "ПоступлениеНаРСчет") табличную часть на форме обработки. 2) "Создать", создаются док-ты РТиУ, т.е. авансы закрываем. При этом, поставила условие, на наличие документов "Реализация товаров и услуг". Вопрос, как условие проверки наличия документов "Реализация товаров и услуг" перенести в первую процедуру ЗаполнитьНаСервереОстаток(), чтобы в табличную часть на форме обработки сразу попадали только те объекты, у которых нет созданных ранее док-тов РТиУ? P.S. Наша специфика заключается в том, что всегда по определенному контрагенту и договору соблюдается связь по договору: ПоступлениеНаРСчет - РТиУ. Т.е. в обработке я ищу не закрытые авансы и создаю док-ты реализации к ним. Вот код: &НаСервере Процедура ЗаполнитьНаСервереОстаток() Объект.СписокДокументов.Очистить(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстатки.Субконто1.Ссылка КАК Контрагент, | ХозрасчетныйОстатки.Субконто2.Ссылка КАК Договор, | ХозрасчетныйОстатки.Субконто2.Дата КАК ДатаДог, | ХозрасчетныйОстатки.Субконто3.Дата КАК Дата, | ХозрасчетныйОстатки.Субконто3.Номер КАК Номер, | ХозрасчетныйОстатки.Субконто3.СуммаДокумента КАК СуммаДокумента, | ХозрасчетныйОстатки.Субконто3.Ссылка КАК ДокСсылка |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(&НаДату, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыПоАвансамПолученным), , Субконто2.ТипУслуги = ЗНАЧЕНИЕ(Справочник.ТипыУслуг.КУ)) КАК ХозрасчетныйОстатки |ГДЕ | ХозрасчетныйОстатки.Организация = &Организация | |УПОРЯДОЧИТЬ ПО | Дата, | Контрагент, | Договор"; Запрос.УстановитьПараметр("Организация",Объект.Организация); Запрос.УстановитьПараметр("НаДату",Новый Граница(КонецДня(Объект.НаДату), ВидГраницы.Включая)); Объект.СписокДокументов.Загрузить(Запрос.Выполнить().Выгрузить()); Для Каждого СписокД Из Объект.СписокДокументов Цикл СписокД.Флажок = Истина; СписокД.ФлагОбработки = Ложь; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура Сформировать() СформироватьНаСервере() КонецПроцедуры &НаСервере Процедура СформироватьНаСервере() Для Каждого СписокД Из Объект.СписокДокументов Цикл Если СписокД.Флажок = Истина Тогда Для Каждого Строка из СписокД.ДокСсылка.РасшифровкаПлатежа Цикл ИндексТекСтроки = Объект.СписокДокументов.Индекс(СписокД); //Проверка наличия документов "Реализация товаров и услуг" //Вот это условие надо вынести в процедуру ЗаполнитьНаСервереОстаток() Запрос = Новый Запрос("ВЫБРАТЬ | РеализацияТоваровУслуг.ДоговорКонтрагента, | СУММА(РеализацияТоваровУслуг.СуммаДокумента) КАК СуммаДокумента |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.ДоговорКонтрагента = &ДоговорКонтрагента | И РеализацияТоваровУслуг.ПометкаУдаления = ЛОЖЬ |СГРУППИРОВАТЬ ПО | РеализацияТоваровУслуг.ДоговорКонтрагента"); Запрос.УстановитьПараметр("ДоговорКонтрагента", СписокД.ДокССылка.ДоговорКонтрагента); Результат = Запрос.Выполнить().Выбрать(); Если Результат.Следующий() = Ложь Тогда //создание документа Реализация товаров и услуг НовыйДокумент = Документы.РеализацияТоваровУслуг.СоздатьДокумент(); НовыйДокумент.Записать(); Иначе Сообщение = Новый СообщениеПользователю; Сообщение.Текст = Строка(СписокД.Ссылка) + " - реализация была создана ранее!"; Сообщение.Сообщить(); Объект.СписокДокументов.Удалить(ИндексТекСтроки); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры // СформироватьНаСервере() |
|||
1
Otkr
30.08.14
✎
19:07
|
Передавай на сервер список значений договоров
|
|||
2
листопад
30.08.14
✎
19:16
|
(1) Мне непонятно, как изменить команду:
Объект.СписокДокументов.Загрузить(Запрос.Выполнить().Выгрузить()); Где СписокДокументов - это табличная часть на форме обработки. |
|||
3
листопад
30.08.14
✎
22:57
|
HELP!!! Выложила обработку на https://yadi.sk/d/vEglGiiGai2LF
Помогите пож-та!!! Как исправить мой запрос, о чем я написала в (0) !!! |
|||
4
листопад
30.08.14
✎
23:28
|
Ап!
|
|||
5
листопад
01.09.14
✎
00:27
|
Up!!!
|
|||
6
dubraver
01.09.14
✎
10:07
|
По поводу текста первого запроса.
1. Условие "ГДЕ ХозрасчетныйОстатки.Организация = &Организация" переместить в "РегистрБухгалтерии.Хозрасчетный.Остатки(,,Организация = &Организация)" 2. Не нужно вытаскивать ссылку на субконто таким образом "ХозрасчетныйОстатки.Субконто1.Ссылка". Данную конструкцию 1С генерирует в "тяжелый" sql запрос, в чем можно убедиться в SQL profiler. При выборке больших объемов данных такой запрос может сильно нагрузить сервер. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |