Имя: Пароль:
1C
1С v8
Вывод суммы документа в разных колонках ТЧ, в зависимости от перечисления
0 demous
 
04.05.12
09:25
УПП 8.2
Есть документ с ТЧ, в которую выводятся данные по ЗаявкамНаРАсходованиеСредств
суть в том ,что в заявку добавили поле выбора ( перечисление с двумя значениями)
и требуется что бы в ТЧ документа того, выводилась сумма заявки в две разные колонки, в зависимости от того, какое стоит значение "перечисления"
то есть если выбрано значение АВ - то сумма документа вывелась в первую колонку
если выбрано значение КЗ - то сумма вывелась во вторую колонку
и внизу подводился итог по колонкам
P.S. Заранее всем Спасибо!
1 demous
 
04.05.12
09:30
При этом есть вот такая процедура

Процедура РасчетныеСчетаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   ОформлениеСтроки.Ячейки.Остаток2.УстановитьТекст(Формат(ДанныеСтроки.Остаток - ДанныеСтроки.КПеречислению, "ЧДЦ=2"));
КонецПроцедуры
где ДанныеСтроки.Остаток
тоже должны будут из этих двух колонок разных вычислять ДанныеСтроки.КПеречислению
2 demous
 
04.05.12
09:40
апну
3 demous
 
04.05.12
09:42
Есть Кнопка "Заполнить" по которой заполняется ТЧ документа


Запрос.Текст="ВЫБРАТЬ
                |    ДенежныеСредстваОстатки.БанковскийСчетКасса КАК Счет,
                |    СУММА(ДенежныеСредстваОстатки.СуммаОстаток) КАК Остаток
                |ИЗ
                |    РегистрНакопления.ДенежныеСредства.Остатки(
                |            &Дат,
                |            Организация = &Организация
                |                И ВидДенежныхСредств = &ВидСредств
                |                И БанковскийСчетКасса.ВалютаДенежныхСредств = &Валюта) КАК ДенежныеСредстваОстатки
                |
                |СГРУППИРОВАТЬ ПО
                |    ДенежныеСредстваОстатки.БанковскийСчетКасса";
               
   Запрос.УстановитьПараметр("Дат",НачалоДня(Дата));
   Запрос.УстановитьПараметр("Организация",Организация);
   Запрос.УстановитьПараметр("ВидСредств",ВидСредств);
   Запрос.УстановитьПараметр("Валюта",ВалютаДокумента);
   
   ТЗ=Запрос.Выполнить().Выгрузить();
   
   РасчетныеСчета.Загрузить(ТЗ);
   Для Каждого Стр Из РасчетныеСчета Цикл
       Если Стр.Счет=Организация.ОсновнойБанковскийСчет Тогда
           Стр.СчетПоУмолчанию=Истина;
       КонецЕсли;
   КонецЦикла;    

   СписокСостояний = Новый СписокЗначений;
   СписокСостояний.Добавить(Перечисления.СостоянияОбъектов.Утвержден);

   Построитель.Параметры.Вставить("Дат",КонецМесяца(Дата));
   Построитель.Параметры.Вставить("Организация",Организация);
   Построитель.Параметры.Вставить("ФормаОплаты",ВидСредств);
   Построитель.Параметры.Вставить("Состояния",СписокСостояний);
   Построитель.Параметры.Вставить("ВалютаДокумента",ВалютаДокумента);
   

   Построитель.Выполнить();
   Выб=Построитель.Результат.Выбрать();
   
   Пока Выб.Следующий() Цикл
       Стр=Платежи.Добавить();
       Стр.Заявка=Выб.Заявка;
       Стр.Контрагент=Выб.Контрагент;
   
       Стр.ДатаРасхода=Выб.Заявка.ДатаРасхода;
       Стр.Ответственный=Выб.Заявка.Ответственный;
       Стр.Комментарий=Выб.Заявка.Д_ВидПлатежа;

       Стр.НомерСчета=""+Выб.Заявка.НомерСчета+" от "+Формат(Выб.Заявка.ДатаСчета,"ДЛФ=Д");
       Стр.ОснованиеПлатежа=Выб.Заявка.Описание;
       Стр.СуммаЗаявки=Выб.Заявка.СуммаДокумента;        
       Стр.Счет = Выб.Заявка.БанковскийСчетКасса;
       Стр.Остаток=Выб.СуммаВзаиморасчетов;
       Стр.СтатьяДвиженияДенежныхСтредств = Выб.СтатьяДвиженияДенежныхСредств;
       Стр.ВалютаВзаиморасчетов = Выб.ВалютаВзаиморасчетов;
   КонецЦикла;    

Нас интересует "Остаток" он должен выводиться в разные колонки
4 demous
 
04.05.12
10:17
апну   .
5 hhhh
 
04.05.12
10:21
сделайте две ТЧ, чего вы паритесь?
6 demous
 
04.05.12
10:24
Нужно в одной - как мне сказали - Слово начальника считай законом... хотят именно рядом две колонки
7 aleks-id
 
04.05.12
10:45
выбор когда АВ тогда суммадокумента иначе 0 конец как перваяколонка,
выбор когда КЗ тогда суммадокумента иначе 0 конец как втораяаяколонка,
8 demous
 
04.05.12
12:16
(7) на кнопку или в процедуру ПриОткрытии это?
9 demous
 
04.05.12
13:44
апну
10 demous
 
04.05.12
14:16
uppppp
11 demous
 
04.05.12
15:05
НЕт?
12 demous
 
04.05.12
15:27
а если в ПриВыводеСтроки вот такое?

Если ДанныеСтроки.КПеречислению = Перечисляния.Д_ВидПлатежа.АВ Тогда
Стр.ПерваяКолонка = Выб.СуммаВзаиморасчетов
Иначе
Стр.ВтораяКолонка = Выб.СуммаВзаиморасчетов
КонецЕсли;

но как сделать вот тут?

   ПослеОплаты=ДанныеСтроки.Остаток-ДанныеСтроки.КПеречислению;
это в этой же процедуре
13 Лодырь
 
04.05.12
15:46
Самый универсальный способ - выложить на форму свою таблицу и как хочешь ее заполнять.
14 demous
 
04.05.12
15:58
а изменить надо именно в том варианте как есть)
15 demous
 
04.05.12
16:36
Если Выб.Заявка.Д_ВидПлатежа = Перечисления.Д_ВидПлатежа.АВ Тогда
           Стр.ПерваяКолонка = Выб.СуммаВзаиморасчетов
           Иначе
           Стр.ВтораяКолонка = Выб.СуммаВзаиморасчетов
           КонецЕсли;
вот так выглядит предыдущий момент вернее
16 demous
 
04.05.12
17:06
вап
17 hhhh
 
04.05.12
17:23
(16) вот такая штука Выб.Заявка.Д_ВидПлатежа - это офигенные тормоза, называется: запрос в цикле. За такое сразу за йайцы подвешивают.

Лучше получите все эти поля в запросе, а в коде пишите

Выб.ВидПлатежа, Выб.Ответственный, Выб.СуммаДокумента и так далее.
18 demous
 
04.05.12
17:27
(17)Исправил, спасибо за совет!

как мне с вот этим местом быть ?


   ПослеОплаты=ДанныеСтроки.Остаток-ДанныеСтроки.КПеречислению;

ПерваяКолонка и ВтораяКолонка, это "Остаток" был
19 demous
 
04.05.12
17:28
Процедура РасчетныеСчетаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   ОформлениеСтроки.Ячейки.Остаток2.УстановитьТекст(Формат(ДанныеСтроки.Остаток - ДанныеСтроки.КПеречислению, "ЧДЦ=2"));
КонецПроцедуры
вот тоже (
20 demous
 
04.05.12
17:28
КолСтрок = Платежи.Количество();
   Для Ит = 1 По КолСтрок Цикл
       СтрЛаст = Платежи.Получить(КолСтрок-Ит);
       Если СтрЛаст.КПеречислению=0 Тогда
           Платежи.Удалить(СтрЛаст);
       ИначеЕсли Не ЗначениеЗаполнено(СтрЛаст.ПлатежноеПоручение) Тогда  
           СтрЛаст.Остаток = 0;
       КонецЕсли;
   КонецЦикла;
21 demous
 
04.05.12
17:29
Запрос.Текст="ВЫБРАТЬ
                |    ДенежныеСредстваОстатки.БанковскийСчетКасса КАК Счет,
                |    СУММА(ДенежныеСредстваОстатки.СуммаОстаток) КАК Остаток
                |ИЗ
                |    РегистрНакопления.ДенежныеСредства.Остатки(
                |            &Дат,
                |            Организация = &Организация
                |                И ВидДенежныхСредств = &ВидСредств
                |                И БанковскийСчетКасса.ВалютаДенежныхСредств = &Валюта) КАК ДенежныеСредстваОстатки
                |
                |СГРУППИРОВАТЬ ПО
                |    ДенежныеСредстваОстатки.БанковскийСчетКасса"
22 demous
 
04.05.12
17:29
везде остаток надо на первая и вторая колонка разелить... как это сделать?
23 hhhh
 
04.05.12
17:31
(22) вроде в (7) ответ был
24 demous
 
04.05.12
17:32
(19) ну вот тут как это реализовать?

ОформлениеСтроки.Ячейки.Остаток2.УстановитьТекст(Формат(ДанныеСтроки.Остаток - ДанныеСтроки.КПеречислению, "ЧДЦ=2"));


выбор когда АВ тогда суммадокумента иначе 0 конец как перваяколонка,
выбор когда КЗ тогда суммадокумента иначе 0 конец как втораяаяколонка,
25 demous
 
04.05.12
17:51
&&&&
26 demous
 
04.05.12
17:57
подскажите плиз
27 demous
 
05.05.12
08:58
Может с утра кто подкажет как быть с (18) (19) (20) (21) ?
28 demous
 
05.05.12
09:28
люди помогите)
не долго я уже с 1с буду связан)
29 demous
 
05.05.12
09:53
апну
30 demous
 
05.05.12
10:08
uppp
31 demous
 
05.05.12
10:23
ну подскажите человеку не понимающему как это сделать?)
32 aleks-id
 
05.05.12
10:32
в запросе надо делать
33 demous
 
05.05.12
10:38
(32) вот примеры которые я последние привел... они все исходят от наличия одной колонки ( Остаток ) ДанныеСтроки.Остаток
а будет две колонки ( ПерваяКолонка и ВтораяКолонка ) как в правильной форме заменить?
34 catena
 
05.05.12
10:44
(35)Оставь свою колонку "Остаток", сделай ее невидимой, заполни в одном месте - там где решаешь писать в КолонкаОдин или в КолонкаДва - сразу же пиши и в Остаток.

Криво, но зато не придецца весь код лопатить - а для тебя (и тем более для твоих работодателей) это важный момент.
35 m-serg74
 
05.05.12
10:44
может
ТретьяКолонка = ?(Колонка_Где_АВ_ИЛИ_КЗ = АВ, ПерваяКолонка, ВтораяКолонка) + ДанныеСтроки.КПеречислению;
36 m-serg74
 
05.05.12
10:45
или минус что там у тебя должно быть
37 demous
 
05.05.12
10:48
(34) например так? Если Выб.ВидПлатежа = Перечисления.Д_ВидПлатежа.АВ
           Тогда
                Стр.ПерваяКолонка = Выб.СуммаВзаиморасчетов
           Иначе
                Стр.ВтораяКолонка = Выб.СуммаВзаиморасчетов
                И  Стр.Остаток=Выб.СуммаВзаиморасчетов
           КонецЕсли;
38 catena
 
05.05.12
10:52
(37)"И"???

Если Выб.ВидПлатежа = Перечисления.Д_ВидПлатежа.АВ Тогда
  Стр.ПерваяКолонка = Выб.СуммаВзаиморасчетов
Иначе
  Стр.ВтораяКолонка = Выб.СуммаВзаиморасчетов
КонецЕсли;
Стр.Остаток=Выб.СуммаВзаиморасчетов;
39 m-serg74
 
05.05.12
10:52
Если Выб.ВидПлатежа = Перечисления.Д_ВидПлатежа.АВ Тогда
   Стр.ПерваяКолонка = Выб.СуммаВзаиморасчетов;
Иначе
   Стр.ВтораяКолонка = Выб.СуммаВзаиморасчетов;
КонецЕсли;
Стр.ТретьяКолонка = Выб.СуммаВзаиморасчетов - ХЗ;
40 demous
 
05.05.12
10:53
(35) ?(Колонка_Где_АВ_ИЛИ_КЗ = АВ, ПерваяКолонка, ВтораяКолонка) = взамен ДанныеСтроки.Остаток ?
41 m-serg74
 
05.05.12
10:54
ну да
42 m-serg74
 
05.05.12
10:56
Стр.ТретьяКолонка = ?(Выб.ВидПлатежа = Перечисления.Д_ВидПлатежа.АВ, Стр.ПерваяКолонка, Стр.ВтораяКолонка) - ХЗ;
43 demous
 
05.05.12
10:56
сейчас попробую этот вариант (38) , если нет, то думаю (35) должен пойти...
спасибо всем за помощь, щас попробую и отпишусь
44 m-serg74
 
05.05.12
10:56
но лучше (39)
45 demous
 
05.05.12
10:57
- хз = эт что?)
46 m-serg74
 
05.05.12
10:57
зачем те колонка с остатком если потом исходя из нее считать еще одну? считайсразу третью
47 demous
 
05.05.12
10:57
Стр.ТретьКолонка  = у меня ПослеОплаты колонка щас, это же туад?
48 demous
 
05.05.12
10:58
туда*
49 m-serg74
 
05.05.12
10:58
- хз(не знаю) = эт то что тебе надо отнимать
50 m-serg74
 
05.05.12
10:59
Стр.ПослеОплаты = ?(Выб.ВидПлатежа = Перечисления.Д_ВидПлатежа.АВ, Стр.ПерваяКолонка, Стр.ВтораяКолонка) - ДанныеСтроки.КПеречислению;

наверное
51 demous
 
05.05.12
11:02
ну сразу отнимать не верно будет... это я прописываю на кнопку "Заполнить"
а вычисление происходит в другой процедуре, когда вручную вводится сумма КОплате, тогда и идет вычисление ПослеОплаты, то есть (18)
52 demous
 
05.05.12
11:06
Айм сорри, проверю через два часа... главбух месяц закрывает(
53 m-serg74
 
05.05.12
11:06
ну я не могу, да и никто не сможет угадать что и когда у тебя вычисляется, вводится вручную, а потом опять вычисляется(((
54 demous
 
05.05.12
11:10
(53) я понимаю, благодарен всем за помощь, через пару часиков скажу результат)
55 catena
 
05.05.12
11:26
(53)Вот потому я и предлагаю оставить колонку Остаток, но сделать ее невидимой. Потом еще выяснится, что к этой колонке где-нибудь извне обращение идет. ТС с его опытом так проще и для бухов меньше нервов будет.

Он вон, похоже, еще и на боевой экспериментирует...
56 m-serg74
 
05.05.12
11:32
catena, так я ж разве спорю, я вариант предложил, а решает пусть сам, ему потом по чайнику получать(((
57 m-serg74
 
05.05.12
11:36
я вот например за все время с 1С так и не научился рисковать))) сто раз на копии проверю, а уж потом)))
Основная теорема систематики: Новые системы плодят новые проблемы.