Выделение оплаченных заявок покупателя

1. RDC 21.03.13 07:23 Сейчас в теме
Здравствуйте.
Такая задача: выделять цветом (или ещё как нибудь) оплаченные заявки от покупателей в общем журнале документов.
Логику планирую такую: смотрим структуру подчинённости, если там есть строка выписки банка приход - значит оплачено.
Вопрос: куда пихать этот код, что бы он выполнялся как бы в журнале документов, но только к опр. документу.
У документа Заявка От Покупателя (отплату которой надо отследить), есть неактивное поле Склад.
Оно отображается в общем журнале, но всегда пустое. Можно ли в это поле писать произвольное значение? Оплачено, например.
Всем заранее спасибо за ответы.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. motorkuzbassa.it 100 21.03.13 07:37 Сейчас в теме
(1)на сайте есть разработка типа общий журнал документов, там нужно посмотреть как реализована раскраска строк.
А в кратце, Событие журнала, приВыводеСтроки
Процедура ДокументСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

Если всякиеУсловияОдни Тогда
ОформлениеСТроки.ЦветФона=WebЦвета.СветлоЗолотистый;
ИначеЕсли всякиеУсловияДругие Тогда
ОформлениеСТроки.ЦветФона=WebЦвета.СветлоРозовый;
КонецЕсли;
КонецПроцедуры
5. AnryMc 849 21.03.13 08:11 Сейчас в теме
Пардон не посмотрел, что 7.7. (2), кстати тоже...
6. RDC 21.03.13 08:15 Сейчас в теме
(5) AnryMc, а как? Есть решение для 7.7?
7. motorkuzbassa.it 100 21.03.13 08:22 Сейчас в теме
(5)АГА Уже на автомате шпаришь на 8. (6) Для 7.7 на сайте тоже есть примеры разработок раскраски строк.
3. AnryMc 849 21.03.13 07:42 Сейчас в теме
(1)

1) Для начала неплохо указать для какой конфигурации
2) Структура подчиненности неподходит - надо сравнивать сумму заявки и сумму оплаты. Для нормальной производительности это должен быть запрос к регистрам взаиморасчетов (накопления или бухгалтерии - см. пункт 1)
3) "пихать код" в событие формы списка "ПриВыводеСтроки"
4. RDC 21.03.13 07:53 Сейчас в теме
(3) AnryMc, А событие формы списка "ПриВыводеСтроки" где искать? Не могу чего то найти.
8. AnryMc 849 21.03.13 08:25 Сейчас в теме
Насколько я помню 7.7, там раскрасить список можно анешней компонентой "FormEx.dll" (или 1Срр.dll), но я с ней почти не работал (не люблю пользоваться внешними компанентами) там кней подробный мануал

Посмотрите например
http://infostart.ru/public/15713/
http://infostart.ru/public/15791/
http://infostart.ru/public/79083/
http://infostart.ru/public/62254/
http://infostart.ru/public/22280/
9. RDC 21.03.13 08:32 Сейчас в теме
(8) AnryMc, ну это пол беды.
А куда код то? Подскажите.
10. AnryMc 849 21.03.13 08:32 Сейчас в теме
11. Мичман Харитонов 21.03.13 13:33 Сейчас в теме
Если не цветом, то можно завести в журнале еще одну колонку под реквизит "Оплачено".
И там показывать пиктограммку, например.
12. AnryMc 849 21.03.13 13:52 Сейчас в теме
(11) Мичман Харитонов, я бы ввел колонку "отклонение":
минус сумма - недоплачено (выделять отрицательное красным)
0 оплачено полностью
плюс сумма - переплата

Очень нагладно:
Красная сумма - неоплеченные
Пустая строка (0) - оплачено
Черная строка - мы еще должны
14. Мичман Харитонов 21.03.13 14:10 Сейчас в теме
(12) AnryMc, так еще боле наглядно. Лучше так, если не очень много документов в журнале, и ресурсы сервера позволяют.
13. RDC 21.03.13 13:53 Сейчас в теме
Куда код то с условием писать?
Если для восьмёрки вот выше писали в событие формы списка "ПриВыводеСтроки" то в моей 7.7 ТиС куда?
15. falcon 21.03.13 14:35 Сейчас в теме
(13) берешь объект Текст и тащишь его на табличную часть.... у тебя там появляется новая колонка... вот в ней на закладке Дополнительно, пишешь функцию которая будет возвращать нужное тебе значение....
23. RDC 22.03.13 12:05 Сейчас в теме
(15) falcon, а где эту функцию надо описать? В главном модуле или в модуле общего журнала?
24. RDC 22.03.13 12:49 Сейчас в теме
(15) falcon, а как узнать на каком документе фокус? Т.е. функция во вкладке дополнительно должна же выглядеть так Оплачено(Док). А в коде мне как то надо этот Док соотнести со строкой. Вот как?
25. ivsher 22.03.13 13:11 Сейчас в теме
(24) RDC, Я же вам уже написал функцию Раскраска(). А фокус на документ в списке вам возвращает атрибут списка журнала документов: ТекущийДокумент. Смотрите внимательно на код в (22).
26. falcon 22.03.13 13:35 Сейчас в теме
(24) ну собственно ответили уже... ТекущийДокумент... тебя спасет...
ты только учти, что это все считается... и будет сильно тормозить если документов/пользователей много...

если есть возможность однозначно фиксировать оплату, было бы лучше реализовать именно так, т.е. сделать реквизит документа, типа оплачен: да/нет и выставлять "да" при проведении оплаты....
27. RDC 22.03.13 13:57 Сейчас в теме
(26) falcon, да не сказал бы что тормозит. Всмысле, совсем не тормозит. Выбрал период 1,5 года. Тормозов не ощущаю.
Всё работает, но ругается на строку одну.
Вот код функции
Функция ОплаченоПр(Тдок) Экспорт   

ДокПодч = СоздатьОбъект("Документ");
ДокПодч.ВыбратьПодчиненныеДокументы(НачалоИнтервала(),КонецИнтервала(),Тдок);   
Пока ДокПодч.ПолучитьДокумент()=1 Цикл
	Если ДокПодч.Вид()="СтрокаВыпискиПриход" Тогда
		//НайденнаяСФ = ДокПодч.ТекущийДокумент();
		Возврат 1;
	Иначе
		Возврат 0;
	КонецЕсли;
КонецЦикла; 
КонецФункции 
Показать


Ругается на ДокПодч.ВыбратьПодчиненныеДокументы(НачалоИнтервала(),КонецИнтервала(),Тдок);
Говорит "Не выбран документ". Хотя всё работает и меня очень устраивает.
31. Pari 22.03.13 14:12 Сейчас в теме
(27) RDC, в Вашем коде проверяется только один самый первый документ в выборке. Попробуйте так:
Найден = 0;
Пока ДокПодч.ПолучитьДокумент()=1 Цикл
    Если ДокПодч.Вид()="СтрокаВыпискиПриход" Тогда
        Найден = 1;
        Прервать;
    КонецЕсли;
КонецЦикла;
Возврат Найден;
16. piloturs 9 21.03.13 19:24 Сейчас в теме
Журнал может выглядеть вот так:
Прикрепленные файлы:
17. piloturs 9 21.03.13 19:29 Сейчас в теме
в догонку к (16)
раскраска реализована с помощью 1С++ с включенным FormEx
Основа была взята отсюда:
1С 7.7 Конфигурация: Торговое предприятие Узбекистана
18. CheBurator 3123 22.03.13 01:14 Сейчас в теме
типовой конфигурации абсолютно пофиг структура подчиненности в расчете оплаченных заявок. вы испытаете большое удивление, когда к заявке подцепите оплату, потом к этой же заявке реализацию и окажется что вообщем-то реализация совсем не оплачена. Учите матчасть. Совпадение оплаты по структуре подчиненности и типового алгоритма закрыия оплат/долгов - всего лишь частнывй случай, которые не канает в подавляющем большинстве случаев.
.
Резюме: не изобретатйе своих схем "взаиморасчетов" на основе струткур подчиненности. Для этого - уже есть все в штатной конфиге. Применит етиповой функционал с умом.
.
как вариант в помощь: http://infostart.ru/public/175550/
19. piloturs 9 22.03.13 02:42 Сейчас в теме
(18) а причем здесь "реализации" и фифо-алгоритм взаиморасчетов?
в (1) четко написано заявка.сумма=оплата.сумма
это реально сделать используя подчиненность документов, при условии, что ответственное лицо будет аккуратно вводить оплаты на основе заявок.

кстати для (1) - строки можно не красить, а вывести пиктограмку в текстовую колонку. К примеру, так было сделано в ТиС 8.7, если у документа "расходная накладная" было только "предварительное" проведение.
21. RDC 22.03.13 07:49 Сейчас в теме
(19) piloturs, совершенно правильно всё говорите.
А как выделять это, собственно, не важно. Можно цветом, можно отдельное поле, это не суть.
20. RDC 22.03.13 07:48 Сейчас в теме
(18) CheBurator, в мат. части не соображаю абсолютно ничего. И в 1С в принципе тоже.
Зато есть большой опыт программирования на самых разных языках.
Бухи выкатили такую вот задачу. Расспросил всё подробно. Сказали по большому счёту им не важно
какая там сумма, главное что бы документ был привязан. А за то что бы сумма соответствовала есть
отдельный человек который сидит и "собирает" строки выписки банка. Ну или что то такое.
Ещё раз повторюсь, что мат. части не соображаю совершенно ничего.

Если сможете "на пальцах" предложить другой вариант, что бы я понял - пожалуйста. Буду признателен.
38. CheBurator 3123 23.03.13 16:06 Сейчас в теме
(20) ну и уроды. Потом на основе этих привязок начнут городить акты сверок, систему взаиморасчетов и прочую хрень. Проходил не раз. Да, это работает - если сильно ответсвенный человек. да и то - со скрипом. Возвраты от покупателей - образовавшийся баланс в пользу покупателя - куда относить будете? и еще много чего... мне в лом рассказывать, ибо основной посыл "все что вы делаете ручками - все очень плохо". Регулярно будут кривые привязки на основании, суммы в оплатах будут не совпадать с заявками, регулярно будут виясщие без оплат заявки (предоплата) и прочая и прочая.
.
Решается это все нормально штатно. при этом работают штатные алгоритмы. Ввод на основании используется лишь ДЛЯ УДОБСТВА ЗАПОЛНЕНИЯ, а не для раскладки оплат по этой привязке. если вы хотите сделать привязку оплат к заявкам - следует работать от "сделки". У вас есть справочник договора. каждую отдельную "сделку" - обозначать в этом справочнике. и при разноске оплат и заявок следует разносить на правильные "сделки-договора". И все оплачено/неоплачено (ибо витоге вы придете к оплате/неоплате именно отгрузок-реализаций, а не заяовк) и прочее будет видно во всех ШТАТНЫХ ОТЧЕТАХ.
.
поверьте старому 1снику. который таких систем взаиморасчетов на основе ввода на основании навидался столько что уже тошнит. все они страдают инвалидностью и уе...щностью. все кончается тем что наряду с имеющейся штатной схемой взаиморасчетов строится параллельная колченогая своя точно такая же схема - с тратой на это денег, разборками с операторами/программистами и прочей хренью.
.
впрочем - хотите жрать кактус - жрите.. ;-)
22. ivsher 22.03.13 10:45 Сейчас в теме
Раскрасить таблицу в 1с 7.7 можно с использованием внешней компоненты FormEx. Суть метода довольна проста.
В форме списка журнала документов, в котором хотите подсветить строки, в табличную часть добавьте текстовое поле. Установите для этого поля значение формула - Раксраска(). Затем если это журнал конкретного вида документа то просто делайте проверку на наличие в подчинении проведенных документов оплаты и если они есть установите раскраску в нужный цвет. Код функции Раскраска() примерно такой:

//при открытии формы
//создадим документ для отбора подчиненных 
ПодчДокОплаты=СоздатьОбъект("Документ"); 
//установим фильтр для выбора только проведенных подчиненных документов
ПодчДокОплаты.УстановитьФильтр(1,0);
//установим отбор только документов оплаты
ПодчДокОплаты.ИспользоватьЖурнал("ВидДокументаОплаты");

//далее в модуле определим функцию для окрашивания строк
Функция Раскраска()
    Если ПодчДокОплаты.ВыбратьПодчиненныеДокументы(ДатаДок,,ТекущийДокумент)=1 Тогда
       //если в выборке есть хотя бы один проведенный документ значит есть оплата
       //устанавливаем нужный цвет для раскрашивания
       Возврат "Brush["+КодЖелаемогоЦвета+"]";
    Иначе
       //если проведенных подчиненных документов оплаты нет не раскрашиваем
       Возврат "";
    КонецЕсли;
КонецФункции
Показать
28. RDC 22.03.13 14:01 Сейчас в теме
Ан нет. Работает только если СтрокаВыпискиПриход стоит самая первая в структуре подчинённости
29. ivsher 22.03.13 14:04 Сейчас в теме
(28) RDC, У вас явно журнал не по одному виду документов. Добавьте в функцию проверку на вид документа.
Если ТекущийДокумент.Вид()="ВидДокументаОплаты" Тогда


КонецЕсли;

Ну а более верно будет использование Попытки/Исключения. Т.к. правильно написали в (26) все эти манипуляции будут достаточно сильно нагружать систему, особенно если кто-то откроет журнал с периодам в пару лет и начнет в нем активно перемещаться. А конструкция Попытка/исключения отрабатывает быстрее чем Если/Тогда.
Функция Раскраска()
  Попытка
    Если ПодчДокОплаты.ВыбратьПодчиненныеДокументы(ДатаДок,,ТекущийДокумент)=1 Тогда
       //если в выборке есть хотя бы один проведенный документ значит есть оплата
       //устанавливаем нужный цвет для раскрашивания
       Возврат "Brush["+КодЖелаемогоЦвета+"]";
    Иначе
       //если проведенных подчиненных документов оплаты нет не раскрашиваем
       Возврат "";
    КонецЕсли;
  Исключение
    Возврат "";
  КонецПопытки;  
КонецФункции
Показать
30. RDC 22.03.13 14:11 Сейчас в теме
(29) ivsher, вот это разве не оно?
Если ДокПодч.Вид()="СтрокаВыпискиПриход" Тогда
32. ivsher 22.03.13 14:18 Сейчас в теме
(30) RDC, Зачем Получить()? Вам достаточно ВыбратьПодчиненныеДокументы(). Если вернет 1 значит в выборке есть хотя бы один подчиненный документ, этого условия вам достаточно что бы раскрасить. И вынесите из тела функции СоздатьОбъект()
Введите общую переменную для формы ПодчДокОплаты. И в процедуре при открытии напишите
Процедура ПриОткрытии()
   //создадим документ для отбора подчиненных 
   ПодчДокОплаты=СоздатьОбъект("Документ"); 
   //установим фильтр для выбора только проведенных подчиненных документов
   ПодчДокОплаты.УстановитьФильтр(1,0);
   //установим отбор только документов оплаты
   ПодчДокОплаты.ИспользоватьЖурнал("ВидДокументаОплаты");

   .......



КонецПроцедуры
Показать

и функция Раскраска() в (29)
33. RDC 22.03.13 14:23 Сейчас в теме

Неподтверждённая заявка
_|
_|-Реализация
_|-Счёт фактура
_____|
_____|-Строка выписки банка


Когда строка выписки глубже, тоже не работает =(
34. Pari 22.03.13 14:44 Сейчас в теме
Когда строка выписки глубже, тоже не работает =(

(33) RDC, подчинение документов это не то же самое, как, допустим, иерархия в справочнике. Только "непосредственное" подчинение. На картинке документ СтрокаВыпискиБанка подчиняется Счетуфактуре, а между СтрокаВыпискиБанка и Неподтвержденная заявка подчинения, в понимании 1С, нет
35. falcon 22.03.13 15:08 Сейчас в теме
(33) тебе проще сделать Оплачено реквизитом документа и проставлять его при оплате....

зы. выбирать подчиненные за период НачалоИнтервала(),КонецИнтервала() как то не правильно....
37. Pari 22.03.13 18:08 Сейчас в теме
RDC, добавлю к (35),(36), заполнение реквизита Оплачено (или другие способы "привязки") видимо должно производится автоматически
Бухи выкатили такую вот задачу. .... Сказали по большому счёту им не важно
какая там сумма, главное что бы документ был привязан.

Пока по картинке из (33) тот, кто вносит оплату, "привязывает" её к счету-фактуре. Подозреваю, что задача как раз в том, чтобы ничего дополнительно не указывая (т.е. если что-то проставляется при внесении оплаты, то не вручную), увидеть "привязку" к заявке в журнале (возможно будет достаточно отчета).
39. CheBurator 3123 23.03.13 16:09 Сейчас в теме
.. что вообщем-то и иллюстрирует уже возникшие проблемы в (33).
.
не надо в журнале никаких функций и сложных алгоритмоы, тем более с выборкой подчиненных.
.
сделайте общий рнеквизит документов, строка(15), в проведении/записи документов оплаты/отгрузки - анализируйте что надо. при "наличии оплаты" в этот реквизит пишите нужный цвет. Потом этот реквизит тупо выводите в общем журнале БЕЗО ВСЯКИХ РАСЧЕТОВ.
.
велосипедисты, е-мае...
36. falcon 22.03.13 15:10 Сейчас в теме
или добавить регистр/счет...
реализация, делает туда "+", выписка делает "-"... все что не 0 - не оплачено...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот