|
Небольшой фильтр в 7.7 | ☑ | ||
---|---|---|---|---|
0
Mt111
10.06.14
✎
17:58
|
1с 7.7 Форт 2000 на дбф
В расходной накладной при выборе конрагента выполняется код: Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Контрагент, 1); Ит.ИспользоватьСубконто(ВидыСубконто.Документ,, 1); Ит.ВыполнитьЗапрос(, ДатаДок,СчетКлиента ,,, 1,, "С"); Ит.ВыбратьСубконто(ВидыСубконто.Документ); Пока Ит.ПолучитьСубконто(ВидыСубконто.Документ) = 1 Цикл Док=Ит.Субконто(ВидыСубконто.Документ); //Сообщить("Док "+Док); Документ=Док; ДатаДокумента=Док.ДатаДок; Если ПустоеЗначение(ДатаДокумента)=1 Тогда продолжить; //Сообщить("Дата проверено Документа 0"); КонецЕсли; //Сообщить("Дата документа "+ДатаДокумента); ДолгДней=ДатаДок-ДатаДокумента; //Сообщить("Долг дней "+ДолгДней); Если ДолгДней>КонтрДата Тогда Предупреждение("Количество дней задолженности "+ДолгДней+" по накл от "+ДатаДокумента+ " в сумме "+Ит.СКД()+" превышает "+КонтрДата+" дней!!!"); Контрагент=0; Прервать; КонецЕсли; КонецЦикла; суть его в том чтобы не отпускать товар злостным неплательшикам. проблема в том что работают 4 ТА и если есть долг хоть у одного из них по данному контрагенту накладная не проведется у всех, а нужно "забанить" только у того агета которому должны |
|||
1
Иешуа
10.06.14
✎
18:04
|
(0) а у тя аналитика на счете по торговым есть?
и вообще она где-то есть? |
|||
2
Mt111
10.06.14
✎
18:10
|
отдельно печатается дебиторка на каждого торгового
|
|||
3
Fedor-1971
10.06.14
✎
18:19
|
(2) посмотри как идёт выбор там, где печатается дебиторка по каждому торговому агенту и сделай то же самое в твоей процедуре.
|
|||
4
Mt111
10.06.14
✎
18:28
|
там я вообще ничего не пойму, вот код:
Процедура Сформировать() Перем СпКонтр; // Если (Агент.Выбран() = 1) и (МФВыбКлиенты.РазмерСписка() > 0) Тогда // Предупреждение("Отчет возможно строить либо по агенту либо по списку контрагентов"); // СтатусВозврата(0); // Возврат; // // КонецЕсли; Если (Агент.Выбран()=0) и (МФВыбКлиенты.РазмерСписка() = 0) Тогда Предупреждение("Необходимо выбрать агента или заполнить список контрагентов!!!"); СтатусВозврата(0); Возврат; КонецЕсли; // заполним список клиентов Если МФВыбКлиенты.РазмерСписка()>0 Тогда СписКонтр = СоздатьОбъект("СписокЗначений"); Запрос = СоздатьОбъект("Запрос"); ТекстЗАпроса = " |Обрабатывать НеПомеченныеНаУдаление; |Контр = Справочник.Контрагенты.ТекущийЭлемент; |Условие (Контр в МФВыбКлиенты); |Группировка Контр без групп;"; Запрос.Выполнить(ТекстЗАпроса); Запрос.Выгрузить(СпКонтр); СпКонтр.Выгрузить(СписКонтр,,,1); КонецЕсли; Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Документ"); ТЗ.НоваяКолонка("НомерДокумента"); ТЗ.НоваяКолонка("Контрагент"); ТЗ.НоваяКолонка("ДатаДокумента"); ТЗ.НоваяКолонка("ДолгНачало"); ТЗ.НоваяКолонка("Закупка"); ТЗ.НоваяКолонка("Оплата"); ТЗ.НоваяКолонка("ДолгКонец"); Ит = СоздатьОбъект("БухгалтерскиеИтоги"); //Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты, , 2); Ит.ИспользоватьСубконто(ВидыСубконто.Документ,, 1); Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "36.1",,, 1,, "С"); Таб.ВывестиСекцию("Шапка"); Таб.Опции(0,0,Таб.ВысотаТаблицы(),0); Ит.ВыбратьСубконто(ВидыСубконто.Документ); Пока Ит.ПолучитьСубконто(ВидыСубконто.Документ) = 1 Цикл Док=Ит.Субконто(ВидыСубконто.Документ); Если Док.Вид()="РасходнаяНакладная" Тогда Иначе Продолжить; КонецЕсли; Если Агент.Выбран() = 1 Тогда Если Док.Агент<>Агент Тогда Продолжить; КонецЕсли; КонецЕсли; Если МФВыбКлиенты.РазмерСписка()>0 Тогда Если СписКонтр.НайтиЗначение(ДОк.Контрагент) = 0 Тогда Продолжить; КонецЕсли; КонецЕсли; Если ТолькоНакладныеВПериоде=1 Тогда Если (Док.ДатаДок>=ВыбНачПериода)И(Док.ДатаДок<=ВыбКонПериода) Тогда Иначе Продолжить; КонецЕсли; КонецЕсли; ТЗ.НоваяСтрока(); ТЗ.Документ=Док; ТЗ.ДатаДокумента=Док.ДатаДок; ТЗ.НомерДокумента=Док.НомерДок; ТЗ.Контрагент=Док.Контрагент; ТЗ.ДолгНачало=Ит.СНД()-Ит.СНК(); ТЗ.Закупка=Ит.ДО(); ТЗ.Оплата=Ит.КО(); ТЗ.ДолгКонец=Ит.СКД()-Ит.СКК(); КонецЦикла; ТЗ.Сортировать("+ Контрагент"); ТЗ.ВставитьКолонку("ДолгДней"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 Цикл //ТЗ.ДолгКонец=Ит.СКД()-Ит.СКК(); Если ТЗ.ДолгКонец>0 Тогда ТЗ.ДолгДней=ТекущаяДата()-ТЗ.ДатаДокумента; КонецЕсли; КонецЦикла; ТЗ.ВыбратьСтроки(); ВыбрКлиент=""; ДолгНачало=0; Закупка=0; Оплата=0; ДолгКонец=0; ИтогДолгНачало=0; ИтогЗакупка=0; ИтогОплата=0; ИтогДолгКонец=0; ИтогДолгНачалоОбщий=0; ИтогЗакупкаОбщий=0; ИтогОплатаОбщий=0; ИтогДолгКонецОбщий=0; Пока ТЗ.ПолучитьСтроку()=1 Цикл Если (0+ЗадолженностьДней>0) Тогда Если (0+ТЗ.ДолгДней>=0+ЗадолженностьДней) Тогда Иначе Продолжить; КонецЕсли; КонецЕсли; Если ВыбрКлиент<>ТЗ.Контрагент Тогда Если (ИтогДолгНачало+ИтогЗакупка+ИтогОплата+ИтогДолгКонец)<>0 Тогда Таб.ВывестиСекцию("ИтогПредприятие"); КонецЕсли; Таб.ВывестиСекцию("Предприятие"); ВыбрКлиент=ТЗ.Контрагент; ИтогДолгНачало=0; ИтогЗакупка=0; ИтогОплата=0; ИтогДолгКонец=0; КонецЕсли; //ДолгДней=0; //Если ТЗ.ДолгКонец>0 Тогда // ДолгДней=ТекущаяДата()-ТЗ.ДатаДокумента; //КонецЕсли; ИтогДолгНачало=ИтогДолгНачало+ТЗ.ДолгНачало; ИтогЗакупка=ИтогЗакупка+ТЗ.Закупка; ИтогОплата=ИтогОплата+ТЗ.Оплата; ИтогДолгКонец=ИтогДолгКонец+ТЗ.ДолгКонец; ИтогДолгНачалоОбщий=ИтогДолгНачалоОбщий+ТЗ.ДолгНачало; ИтогЗакупкаОбщий=ИтогЗакупкаОбщий+ТЗ.Закупка; ИтогОплатаОбщий=ИтогОплатаОбщий+ТЗ.Оплата; ИтогДолгКонецОбщий=ИтогДолгКонецОбщий+ТЗ.ДолгКонец; Таб.ВывестиСекцию("Субконто1"); КонецЦикла; Таб.ВывестиСекцию("ИтогПредприятие"); Таб.ВывестиСекцию("ИтогОбщий"); //Таб.ВывестиСекцию("Подвал"); Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать",""); КонецПроцедуры |
|||
5
Mt111
10.06.14
✎
18:31
|
таблица формируется такая
| дата документа | номер документа | дней долга по док.| сумма долга по докум. | |
|||
6
palpetrovich
10.06.14
✎
18:33
|
сорьки, офтопик: Форт - это нечто "за гранью добра и зла", слава Богу я только один раз сталкивался, больше желания не имею :)
|
|||
7
Fedor-1971
10.06.14
✎
18:41
|
(4) ну и где вывод задолженности по торговому агенту?
Долг разбивается в разрезе документов и только. |
|||
8
Mt111
10.06.14
✎
19:53
|
полностью ert залил сюда
http://www.ex.ua/936232431154 |
|||
9
acanta
10.06.14
✎
20:14
|
(7) похоже здесь
Если Агент.Выбран() = 1 Тогда Если Док.Агент<>Агент Тогда Продолжить; КонецЕсли; КонецЕсли; |
|||
10
Mt111
11.06.14
✎
16:50
|
а куда его вставить чтобы работало
|
|||
11
acanta
11.06.14
✎
16:53
|
Перед
ДолгДней=ДатаДок-ДатаДокумента; |
|||
12
Mt111
11.06.14
✎
17:20
|
если сделать как предложил (11) то проверяет только агента в самой старой накладной
но если прописать немножко выше, перед: Документ=Док; то все работает как нужно. Благодарю за помощь, очень помогли. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |