|
Раскрашивание управляемой формы списка документов в зависимости от условия | ☑ | ||
---|---|---|---|---|
0
Adaviya
14.07.16
✎
15:49
|
Добрый летний день всем!
Столкнулась с проблемой, бухгалтерия 3.0. Там есть форма списка СчетаНаОплатуПокупателю. Мне нуно раскрасить шрифт строки синим, если по данному счету выписана Реализация товаров и услуг. Нашла процедуру УстановитьУсловноеОформление(). Там как раз идет раскрашивание строк в зеленый или серый цвета... по признаку, оплачен ли счет и не просрочена ли дата оплаты... Мне нужно сделать подобное, только проверка как я поняла будет идти запросом, в котором я проверяю каждый счет на оплату - смотрю выписана ли по нему реализация или нет: //модуль формы списка ДокВыставлен=0; запрос=новый запрос; запрос.Текст="ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка КАК Реализация |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.СчетНаОплатуПокупателю = &СчетНаОплатуПокупателю | И РеализацияТоваровУслуг.ПометкаУдаления = ЛОЖЬ | И РеализацияТоваровУслуг.Проведен = ИСТИНА"; запрос.УстановитьПараметр("СчетНаОплатуПокупателю", СсылкаНаСчет); выборка=запрос.Выполнить().Выбрать(); если выборка.Следующий() тогда ДокВыставлен=ДокВыставлен+1; конецесли; Но как передать параметр СсылкаНаСчет? не понимаю... откуда взять эту самую ссылку на конкретный счет на оплату покупателю? Или я в принципе не так делаю, подскажите пожалуйста... |
|||
1
luter-89
14.07.16
✎
16:05
|
Ну тут надо соединение делать с таблицей Счет на оплату покупателю, если в реквизитах реализации нет ссылок на нее
|
|||
2
Adaviya
14.07.16
✎
16:12
|
luter-89, в какой процедуре это делать?
привожу полностью эту процедуру для примера, и то что в ней написала я: &НаСервере Процедура УстановитьУсловноеОформление() УсловноеОформление.Элементы.Очистить(); // Срок оплаты красным, если просрочен. ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "СрокОплаты"); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.СрокОплаты", ВидСравненияКомпоновкиДанных.МеньшеИлиРавно, ТекущаяДатаСеанса()); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.Статус", ВидСравненияКомпоновкиДанных.НеРавно, Перечисления.СтатусОплатыСчета.Отменен); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.Статус", ВидСравненияКомпоновкиДанных.НеРавно, Перечисления.СтатусОплатыСчета.Оплачен); ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПросроченныеДанныеЦвет); // Вся строка серым цветом, если счет отменен. ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "Список"); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.Статус", ВидСравненияКомпоновкиДанных.Равно, Перечисления.СтатусОплатыСчета.Отменен); ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстВторостепеннойНадписи); // Вся строка зеленым цветом, если счет оплачен. ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "Список"); ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементУО.Отбор, "Список.Статус", ВидСравненияКомпоновкиДанных.Равно, Перечисления.СтатусОплатыСчета.Оплачен); ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.ЗеленыйЛес); // ВСЕ ЧТО НИЖЕ - НАПИСАЛА Я ЭлементУО = УсловноеОформление.Элементы.Добавить(); КомпоновкаДанныхКлиентСервер.ДобавитьОформляемоеПоле(ЭлементУО.Поля, "Список"); ДокВыставлен=0; запрос=новый запрос; запрос.Текст="ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка КАК Реализация |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.СчетНаОплатуПокупателю = &СчетНаОплатуПокупателю | И РеализацияТоваровУслуг.ПометкаУдаления = ЛОЖЬ | И РеализацияТоваровУслуг.Проведен = ИСТИНА"; запрос.УстановитьПараметр("СчетНаОплатуПокупателю", СчетНаОплатуПокупателю); выборка=запрос.Выполнить().Выбрать(); если выборка.Следующий() тогда ДокВыставлен=ДокВыставлен+1; конецесли; КонецПроцедуры что передавать в качестве переменной СчетНаОплатуПокупателю? или я вообще все не так делаю? |
|||
3
Adaviya
14.07.16
✎
16:13
|
В реквизитах реализации есть реквизит СчетНаОплатуПокупателю, это ссылка на кокретный счет на оплату. какую таблицу вы имеете в виду?
|
|||
4
luter-89
14.07.16
✎
16:19
|
Если вы хотите задать условное оформление с условием по другому документу, то должна быть связь с этим документом. Связь может быть через реквизит, если вы точно уверены что этот реквизит хранит то, что надо, либо создавать запрос, который получит необходимые данные из соединения двух таблиц (Реализация и счет на оплату). Далее в цикле все это разукрасить. Либо можно это все сделать в динамическом списке формы списка, но если вы там сделаете неверную связь, то будут не правильно выводится документы, либо не все. Задача простая.
Фотка в профиле не ваша то?) |
|||
5
Adaviya
14.07.16
✎
16:37
|
Я хочу свою поставить, не получается, остается старая. нет не моя, но моя еще красивее))) и файл блин не прикрепишь к сообщению...
Не могли бы прям код написать, про реквизиты и запрос все понимаю, не понимаю в каком месте писать его и что передавать в качестве этих списков? |
|||
6
oslokot
14.07.16
✎
16:42
|
(0) задайте условное оформление через настройку списка в режиме предприятия и скопируйте всем пользователям.
делов-то |
|||
7
Adaviya
14.07.16
✎
16:46
|
oslokot, там можно сделать отбор только по существующим колонкам на форме списка.
У меня этой колонки сейчас на форме списка нет. В форму списка можно добавить колонку "ВыписанаРеализация" тип Булево, которая бы заполнялась при открытии формы списка. Допустим я ее добавлю, как ее заполнять? Допустим, в процедуре ПриОкрытии() или ПриСозданииНаСервере() формы списка. Нужно ведь обратиться к каждому конкретному счету на оплату, проверить, есть ли реализация, которая ссылается на этот счет... Напишите прям код пожалуйста для примера, именно как заполнять эту колонку. |
|||
8
oslokot
14.07.16
✎
16:48
|
(7) а, прости не дочитал (0) сложное условие
|
|||
9
ovrfox
14.07.16
✎
16:48
|
У вас на форме списка есть список. Обычно это динамический список со ссылкой на таблицу документов.
Вам нужно изменить запрос получения списка, таким образом, чтобы добавилась дополнительная колонка "ЕстьРеализация". Дальше вам нужно раскрасить в синий те строки, в которых ЕстьРеализация = Истина |
|||
10
ovrfox
14.07.16
✎
16:50
|
(7) Или можно "ПриСозданииНасервере" сделать такой же запрос, как я советовал в (9) и на его основании перенести данные в созданную колонку. Но я так делать не советую.
|
|||
11
ovrfox
14.07.16
✎
16:53
|
Запрос для динамического списка примерно такой
Выбрать счет.*, РеализацияТоваровУслуг.Проведен КАК ВыписанаРеализация из Документ.СчетНаОплатуПокупателю как счет Левое Соединение Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ПО РеализацияТоваровУслуг.СчетНаОплатуПокупателю = Счет.Ссылка И РеализацияТоваровУслуг.ПометкаУдаления = ЛОЖЬ |
|||
12
oslokot
14.07.16
✎
16:58
|
(0) я бы сделал через доп.сведение (например Булево) счета покупателю.
при проведении РТиУ, в подписке устанавливать реквизиту Истина Ну а далее, стандартное УО в списке по этому доп.реквизиту Профит. |
|||
13
oslokot
14.07.16
✎
16:59
|
Плюс - не трогаем типовую
|
|||
14
Adaviya
14.07.16
✎
17:04
|
oslokot, ой, а что значит доп сведение? дополнительный реквизит добавить? у меня все конфа очень не типовая.
Да, идея супер! но тогда придется перепроводить все старые документы... а динамический запрос я нашла, он такой сложный... ВЫБРАТЬ ВЫБОР КОГДА ДокументСчетНаОплатуПокупателю.ПометкаУдаления = ИСТИНА ТОГДА 2 КОГДА ДокументСчетНаОплатуПокупателю.Проведен = ИСТИНА ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК СостояниеДокумента, ДокументСчетНаОплатуПокупателю.Ссылка, ДокументСчетНаОплатуПокупателю.ПометкаУдаления, ДокументСчетНаОплатуПокупателю.Номер КАК Номер, ДокументСчетНаОплатуПокупателю.Дата, ДокументСчетНаОплатуПокупателю.Проведен, ДокументСчетНаОплатуПокупателю.Организация, ДокументСчетНаОплатуПокупателю.Контрагент, ДокументСчетНаОплатуПокупателю.Комментарий, ДокументСчетНаОплатуПокупателю.ВалютаДокумента, ДокументСчетНаОплатуПокупателю.СуммаДокумента, ВЫРАЗИТЬ(ЕСТЬNULL(СтатусыДокументов.Статус, ЗНАЧЕНИЕ(Перечисление.СтатусОплатыСчета.НеОплачен)) КАК Перечисление.СтатусОплатыСчета) КАК Статус, ЕСТЬNULL(СрокиОплатыДокументов.СрокОплаты, ДатаВремя(1,1,1)) КАК СрокОплаты, СостоянияЭД.СостояниеВерсииЭД, ВЫБОР КОГДА ДокументыСОшибкамиПроверкиКонтрагентов.Документ ЕСТЬ NULL ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ КАК СодержитНекорректныхКонтрагентов, НаличиеПрисоединенныхФайлов.ЕстьФайлы ИЗ Документ.СчетНаОплатуПокупателю КАК ДокументСчетНаОплатуПокупателю ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыДокументов КАК СтатусыДокументов ПО ДокументСчетНаОплатуПокупателю.Организация = СтатусыДокументов.Организация И ДокументСчетНаОплатуПокупателю.Ссылка = СтатусыДокументов.Документ ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СрокиОплатыДокументов КАК СрокиОплатыДокументов ПО ДокументСчетНаОплатуПокупателю.Организация = СрокиОплатыДокументов.Организация И ДокументСчетНаОплатуПокупателю.Ссылка = СрокиОплатыДокументов.Документ ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЭД КАК СостоянияЭД ПО (СостоянияЭД.СсылкаНаОбъект = ДокументСчетНаОплатуПокупателю.Ссылка) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыСОшибкамиПроверкиКонтрагентов КАК ДокументыСОшибкамиПроверкиКонтрагентов ПО ДокументСчетНаОплатуПокупателю.Ссылка = ДокументыСОшибкамиПроверкиКонтрагентов.Документ И (&ИспользованиеПроверкиВозможно) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеПрисоединенныхФайлов КАК НаличиеПрисоединенныхФайлов ПО НаличиеПрисоединенныхФайлов.ОбъектСФайлами = ДокументСчетНаОплатуПокупателю.Ссылка и потом у меня не получается добавить просто колонку на форму списка!!! там получается добавить реквизит для списка, а надо Добавить колонку реквизита, а это поле не доступно для выбора, оно серое-не активное. |
|||
15
oslokot
14.07.16
✎
17:07
|
(14) регистр сведений "ДополнительныеСведения"
Перепроводить ничего не придется, напишешь обработку которая проставит нужным счетам "Истина" |
|||
16
Adaviya
14.07.16
✎
17:08
|
oslokot, супер, спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |