Имя: Пароль:
1C
1С v8
Вывод на экран в обработке
0 msk-07
 
28.05.12
19:33
Есть код...он не большой



Процедура КнопкаВыполнитьНажатие(Кнопка)
   Команды=Новый ТаблицаЗначений;
   Команды.Колонки.Добавить("НомерСтр", Новый ОписаниеТипов("Число"));
   Команды.Колонки.Добавить("СФ", Новый ОписаниеТипов(Документы.ТипВсеСсылки().Типы()));
   Команды.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
   Команды.Колонки.Добавить("НДС", Новый ОписаниеТипов("Число"));
   Команды.Колонки.Добавить("Разница",Новый ОписаниеТипов ("Число"));
   Команды.Колонки.Добавить("Разница2", Новый ОписаниеТипов("Число"));
   Выборка = Документы.НДС_СчетФактураВыданный.Выбрать(Дата1, Дата2);
   Пока Выборка.Следующий() Цикл
       Если Выборка.ПолучитьОбъект() Тогда
           Продолжить;    
       КонецЕсли;
   Команды.НоваяСторока();
   Команды.НомерСтр=Команды.НомерСтроки;
   Команды.СФ=Выборка.ПолучитьОбъект();
   Команды.Сумма=Выборка.Итог("Сумма");
   Команды.НДС=Выборка.Итог("НДС");
   Команды.Разница=Выборка.Итог("Всего")*18/118-Выборка.Итог("НДС");
   Команды.Разница2=Выборка.Итог("Всего")*18/100-Выборка.Итог("НДС");
   Выборка.Показать();
   КонецЦикла

КонецПроцедуры

//Процедура ПриОткрытии()
//    НачалоПериода=НачалоКвартала(ТекущаяДата());
//    КонецПериода=КонецКвартала(ТекущаяДата());
//КонецПроцедуры

Процедура ПроверкаЗКП ()
   ИтогоОш=0;
   ИтогоОш2=0;
   ТЗ = Документы.НДС_СчетФактураВыданный.Выбрать(Дата1, Дата2);
   ТЗ.ВыбратьСтроки();
   Пока ТЗ.ПолучитьСтроку() Цикл
       Разн=Окр(ТЗ.СуммаНДС * 18/100,2)-ТЗ.СтавкаНДС;
       Если Разн < 0 Тогда
       Разн=-Разн;
   КонецЕсли;
   Если Разн > 0 Тогда
       Сообщить(Строка(ТЗ.КодВидаОперации)+" "+Строка(Окр(ТЗ.СуммаНДС * 18/100,2)-ТЗ.СтавкаНДС));
   КонецЕсли;
       ИтогоОш=ИтогоОш+ТЗ.СуммаНДС * 18/100-ТЗ.СтавкаНДС;
       ИтогоОш2=ИтогоОш2+Окр(ТЗ.СуммаНДС * 18/100,2)-ТЗ.СтавкаНДС;
   КонецЦикла;
   Сообщить("Ошибка итого" + ИтогоОш);
   Сообщить("Ошибка итого2" + ИтогоОш2);    
   //ТЗ.Показать();

КонецПроцедуры
1 Fragster
 
гуру
28.05.12
19:34
продолжайте наблюдения
2 msk-07
 
28.05.12
19:35
Я не как не пойму в каком месте надо выводить на экран, так чтобы это действительно выводилось. То есть не пойму на что ссылаться.

ТЗ это реквизит в обработке, таблица значений. Там должно выводиться как минимум 6 колонок, а ни чего нет
3 msk-07
 
28.05.12
19:45
Я совсем не понимаю, если я создал в форме реквизит ТЗ, который имеет тип таблица значений, как тогда мне все совместить в таком куске кода

Команды=Новый ТаблицаЗначений;
   Команды.Колонки.Добавить("НомерСтр", Новый ОписаниеТипов("Число"));
   Команды.Колонки.Добавить("СФ", Новый ОписаниеТипов(Документы.ТипВсеСсылки().Типы()));
   Команды.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
   Команды.Колонки.Добавить("НДС", Новый ОписаниеТипов("Число"));
   Команды.Колонки.Добавить("Разница",Новый ОписаниеТипов ("Число"));
   Команды.Колонки.Добавить("Разница2", Новый ОписаниеТипов("Число"));
   Выборка = Документы.НДС_СчетФактураВыданный.Выбрать(Дата1, Дата2);
   Пока Выборка.Следующий() Цикл
       Если Выборка.ПолучитьОбъект() Тогда
           Продолжить;    
       КонецЕсли;
4 msk-07
 
28.05.12
19:45
то есть какие надо делать ссылки???
5 kotletka
 
28.05.12
19:47
ТабличныйДокумент + Макет не пробовал сделать? <- копать туда
6 msk-07
 
28.05.12
19:48
не, просто мне сказали писать без макета, вот и не могу теперь вывести все((( горе прям какое-то
7 kotletka
 
28.05.12
19:49
нарисуй доп форму, на неё на всю тч и выводи в тч, форму не забудь открыть - самое простое
8 Fragster
 
гуру
28.05.12
19:51
1. Зачем юзать доп. переменную, если уже есть ТЗ?
2. что такое
       Если Выборка.ПолучитьОбъект() Тогда
           Продолжить;    
       КонецЕсли;
?
3. что такое НоваяСторока();

и вообще это v7 или v8?
9 msk-07
 
28.05.12
19:53
это 8, но у меня задание переписать с 7.7 на 8.2 и вот сижу мучаюсь, уже третья неделя, уже по созданию моих тем это можно понять(((((
10 msk-07
 
28.05.12
19:55
да я изменил сейчас НоваяСторока() на ДобавитьСтроку(), но результата нет(((
11 kotletka
 
28.05.12
19:56
а как тебе надо вывести на словах обясни, в форме, в табличном документе (ну или как в отчете, как в списке, ... ) короче приведи пример на типовой
12 Fragster
 
гуру
28.05.12
19:57
(10) а сфига ему быть, если ты не видишь отличия табличного поля от таблицы значений и процедуры от функции
13 Fragster
 
гуру
28.05.12
19:58
короче, если у тебя есть табличная часть в обработке, то её и заполняй, в СП почитай про методы этой самой табличной части. на форму уж перетащить сможешь, я думаю
14 msk-07
 
28.05.12
19:59
(11) как это работает на 7.7  у них в во внешней обработке нарисована таблица значений, куда после выполнения кода записывается результат,

Так в принципе и я делаю, создал новую обработку, нарисовал форму, на форме создал таблицузначений.
15 hhhh
 
28.05.12
20:05
(14) ну а начальник твой, чего косит, не объясняет, что и как?
16 kotletka
 
28.05.12
20:06
у обработки создаешь табличую часть (с нужными колонками), на форме обработки рисуешь табличное поле, в его свойствах в поле данные указываешь свою тч, в коде работаешь не с табличным полем а с тч и все норм, даже показывать не надо, если есть тимвьювер могу быстро накидать как надо
17 msk-07
 
28.05.12
20:06
я один работаю все мне больше ни кто не помогает
18 msk-07
 
28.05.12
20:09
(16) так вроде бы и я уже создал таблицу значений
19 msk-07
 
28.05.12
20:09
Я сейчас пришлю как все выглядет
20 kotletka
 
28.05.12
20:10
какая ТЗ, табличную часть надо
21 Fragster
 
гуру
28.05.12
20:12
(17) а не пробовал книжки читать, хотя бы самые базовые, прежде, чем на форуме писать?
разбираться методом тыка в языке программирования - вообще не эффективно
22 msk-07
 
28.05.12
20:12
у меня она есть...http://s019.radikal.ru/i614/1205/4c/4e4fa3b673c5.jpg
http://s45.radikal.ru/i107/1205/72/248241108bed.jpg
и вот код



Процедура КнопкаВыполнитьНажатие(Кнопка)
   Команды=Новый ТаблицаЗначений;
   Команды.Колонки.Добавить("НомерСтр", Новый ОписаниеТипов("Число"));
   Команды.Колонки.Добавить("СФ", Новый ОписаниеТипов(Документы.ТипВсеСсылки().Типы()));
   Команды.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
   Команды.Колонки.Добавить("НДС", Новый ОписаниеТипов("Число"));
   Команды.Колонки.Добавить("Разница",Новый ОписаниеТипов ("Число"));
   Команды.Колонки.Добавить("Разница2", Новый ОписаниеТипов("Число"));
   Выборка = Документы.НДС_СчетФактураВыданный.Выбрать(Дата1, Дата2);
   Пока Выборка.Следующий() Цикл
       Если Выборка.ПолучитьОбъект() Тогда
           Продолжить;    
       КонецЕсли;
   Команды.ДобавитьСтроку();
   Команды.НомерСтр=Команды.НомерСтроки;
   Команды.СФ=Выборка.ПолучитьОбъект();
   Команды.Сумма=Выборка.Итог("Сумма");
   Команды.НДС=Выборка.Итог("НДС");
   Команды.Разница=Выборка.Итог("Всего")*18/118-Выборка.Итог("НДС");
   Команды.Разница2=Выборка.Итог("Всего")*18/100-Выборка.Итог("НДС");
   Команды.Показать();
   КонецЦикла

КонецПроцедуры

//Процедура ПриОткрытии()
//    НачалоПериода=НачалоКвартала(ТекущаяДата());
//    КонецПериода=КонецКвартала(ТекущаяДата());
//КонецПроцедуры

Процедура ПроверкаЗКП ()
   ИтогоОш=0;
   ИтогоОш2=0;
   ЗКП = Документы.НДС_СчетФактураВыданный.Выбрать(Дата1, Дата2);
   ЗКП.ВыбратьСтроки();
   Пока ЗКП.ПолучитьСтроку() Цикл
       Разн=Окр(ЗКП.СуммаНДС * 18/100,2)-ЗКП.СтавкаНДС;
       Если Разн < 0 Тогда
       Разн=-Разн;
   КонецЕсли;
   Если Разн > 0 Тогда
       Сообщить(Строка(ЗКП.КодВидаОперации)+" "+Строка(Окр(ЗКП.СуммаНДС * 18/100,2)-ЗКП.СтавкаНДС));
   КонецЕсли;
       ИтогоОш=ИтогоОш+ЗКП.СуммаНДС * 18/100-ЗКП.СтавкаНДС;
       ИтогоОш2=ИтогоОш2+Окр(ЗКП.СуммаНДС * 18/100,2)-ЗКП.СтавкаНДС;
   КонецЦикла;
   Сообщить("Ошибка итого" + ИтогоОш);
   Сообщить("Ошибка итого2" + ИтогоОш2);    
   
КонецПроцедуры
23 msk-07
 
28.05.12
20:13
(21) честно я каждый день трачу на книги по 1с около 4 часов((( уже начинаю просто психовать
24 hhhh
 
28.05.12
20:22
(23) ну вот сразу Выборка. Открываеи в твоей книге СправочникВыборка. Смотрим, какие методы у него:

Методы:

ПолучитьОбъект (GetObject)
Следующий (Next)
УровеньВВыборке (LevelInSelection)

Видишь у выборки всего 3 метода.

Смотрим у тебя в процедуре:

Выборка.Показать(); - это только после 50-ти фужеров шампанского можно такое написать. Ну нет у выборки метода Показать().

и сидишь, главное, ждешь, что она тебе начнет показывать.

Выборка.Итог() - это вообще бред.
25 msk-07
 
28.05.12
20:37
(24) не я теперь исправил, теперь у меня  Команды.Показать();
26 msk-07
 
28.05.12
20:43
все равно не работает
27 msk-07
 
28.05.12
20:50
понимаю что ошибка наверное в Выборка.Итог но не могу понять как от этого уйти...
28 Рэйв
 
28.05.12
20:52
(23)>>естно я каждый день трачу на книги по 1с около 4 часов((( уже начинаю просто психовать


Расслабься, приятель.
Знания 1С приходят не от затраченных часов в день, а от затраченных часов в году.
Так что сильно не напрягайся, все равно телегу вперед лошади не поставишь. Хоть круглые сутки сиди, быстрее , чем за полгода понимание не придет.
29 Рэйв
 
28.05.12
20:53
а от затраченных часов в году = а от затраченных ДНЕЙ в году
30 hhhh
 
28.05.12
20:55
(26) опять же Если ... Тогда

ведь там должно быть Булево значение: Истина или Ложь.

а у тебя Если Выборка.ПолучитьОбъект()

Объект - это огромная куча всяких структур и таблиц. Думаешь эта куча может быть равна Истина? Или Ложь? Это же голая математика, а ты - математик. И сравниваещь объекты с истиной и ложью. Такой алгоритм не будет работать.
31 Рэйв
 
28.05.12
20:56
(30)Да что ты ему объясняешь. Ему еще учить что такое типы и их совместимость.
32 Feanor
 
28.05.12
20:59
(17) "я один работаю" - сильно :)
33 Рэйв
 
28.05.12
20:59
(32)+1
Я бы даже сказал отчаянно.
34 msk-07
 
28.05.12
22:04
(30) понял свою ошибку...все завтра приду на работу аккуратненькое просмотрю, перепишу и попробую сделать, но уж если что напишу сюда
35 Рэйв
 
28.05.12
22:06
(34)Ты главное не спеши. Аспирин 2 таблетки - это в пользу, а пачка - это удар по здоровью. Так и с изучением 1С.:-)...Так что вполне можешь прийти через месяц
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.