| 
			| 
					
						| schnibbl 
								Гость
 | 
								|  | «  : 14-03-2005 10:48 »  |  | 
 
 Пора уже рубрики открывать обучающие азам   Вот теперь несколько вопросов по запросам. Ваяем простенький запрос: ПериодическийРеквизит = СоздатьОбъект("Периодический"); 
 Табличка=СоздатьОбъект("Таблица");
 Табличка.ИсходнаяТаблица("Таблоид");
 
 запросик=СоздатьОбъект("Запрос");
 ТекстЗапроса=
 "
 |ТекущийОС=справочник.ОсновныеСредства.ТекущийЭлемент;
 |ТекущийПлощадь=справочник.ОсновныеСредства.Площадь;
 |Условие ((ТекущийПлощадь>10) и (ТекущийПлощадь<200));
 |Группировка ТекущийОС упорядочить по ТекущийОС.Наименование;
 |
 |"
 ;
 
 Если запросик.Выполнить(ТекстЗапроса) = 0 тогда Предупреждение("Запрос содержит ошибки.");
 иначе Пока Запросик.Группировка("ТекущийОС")=1 Цикл
 счетчик=счетчик+1;
 ПериодическийРеквизит.ИспользоватьОбъект("Площадь", запросик.ТекущийОС);
 Табличка.ВывестиСекцию("ВыводОС");
 //Секция содержит несколько переменных - равносильно нижеследующему:
 //Сообщить(Запросик.ТекущийОС+"  "+ Запросик.ТекущийПлощадь + "  " + Запросик.ТекущийОС.Площадь);
 
 КонецЦикла;
 Табличка.Показать("Элементы ОС");
 Сообщить("Всего элементов: "+счетчик,"!!");
 конецЕсли;
 
Сразу следует сказать, что реквизит Площадь у справочника Основные средства - переодический. Первы вопрос - "почему": как мы видим условия вывода по площади, почему в выходной таблице присутствуют элементы площадь которых равна "0" ? все они имена групп, но при этом выводятся названия не всех групп которые есть в справочнике   Второй вопрос - "почему": если меняем условие запроса на следующее: |Условие ((ТекущийОС.код>10) и (ТекущийОС.код<12)); выводит элемент (и опять имя группы с нулевыми реквизитами) теперь если  |Условие (ТекущийОС.код=11); то наша 1С ничего ненаходит   Третий вопрос - "как": Строчка в цикле пробегающемся по элементам запроса: ПериодическийРеквизит.ИспользоватьОбъект("Площадь", запросик.ТекущийОС); не работает - пишет "Площадь не является константой или периодическим реквизитом", на обращение Запросик.ТекущийОС.Площадь говорит что неизвестный объект. Как грамотно работать с периодическими реквизитами в условиях Запроса   Четвертый вопрос - "почему":   Почему неработает такая переменная в запросе группа=справочник.ОсновныеСредства.ПолноеНаименование. и/или же неработает такое обращение запросик.ТекущийОС.ПолноеНаименование ? как тогда узнавать иерархию в справочнике найденых элементов   |  
						| 
								|  |  
								| « Последнее редактирование: 14-03-2005 10:56 от schnibbl » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #1 :  14-03-2005 16:38 »   |  | 
 
 Первы вопрос - "почему"... Нужно: Группировка ТекущийОС упорядочить по ТекущийОС.Наименование без групп ; Второй вопрос - "почему"... Возможно, Тип кода - строковый, тогда 11<>"11". Попробуй привести код к числу Третий вопрос - "как"... Возможно - ругается именно на группах? Добавить проверку: Если запросик.ТекущийОС.ЭтоГруппа()=0 Тогда ... КонецЕсли; Четвертый вопрос - "почему"... А если так: запросик.ТекущийОС.ПолноеНаименование()  ? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Reskator 
								Гость
 | 
								|  | « Ответ #2 : 14-03-2005 22:21 »  |  | 
 
 (Пояснения к 1 вопросу) Думаю следует пояснить, что у тебя должны выводиться только те группы, в которых есть элементы, удовлетворяющие условию запроса. А уважаемый Kivals абсолютно прав.(Пояснения к 4 вопросу) Думаю, что такой финт ушами не пройдет. А иерархию можно узнавать атрибутами "Родитель".
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| schnibbl 
								Гость
 | 
								|  | « Ответ #3 : 15-03-2005 06:56 »  |  | 
 
 по поводу первого, действительно выводятся названия групп в которых найдены элементы. по поводу второго не очень понятно (код действительно строковый), веть 1С вроде как бы сама переделывает тип переменной если он не подходит, и почему тогда строку переведя в число она понимает что она больше 10 и меньше 12 но не понимает что она равна 11 вам это не кажется странным   по поводу четвертого, вродебы в запросе вообще у стандартных функций по работе не должно быть скобок - ругается тогда (например текущийЭлемент без скобок пишется ? хотя в нормальном коде скобки необходимы). в общем щас попробую.. по поводу третьего вопроса обработка вылетает в процессе выполнения запроса, значит проверку надо делать в самом запросе. Следующий вопрос    не могли бы вы скинуть ссылочку на какое нить очень подробное пособие по тому как запросы писать в описании встроенного языка че то я не въехал с первого раза, как-то пишу всё на интуитивном уровне, а хотелось бы правил побольше почитать... |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Reskator 
								Гость
 | 
								|  | « Ответ #4 : 15-03-2005 07:53 »  |  | 
 
 А на 1С вообще пишется больше по инуиции. Я по запросам сам искал какую-нибудь ссылочку, все мимо.   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #5 : 15-03-2005 08:58 »  |  | 
 
 Со ссылочкой туго   Я разбирался сам, используя встроенный Помошник создания запросов и стандартную документацию 1С. По поводу строковых типов - не кажется, т.к. в случае "<", ">" 1С приводит строку в число, а в случае "=" - число к строке.  Неравенство получается потому, что строки "11", " 11", "11 " не равны. Т.е. если у тея в конфигураторе длина кода больше 2 (например: 4), то тебе надо сравнивать не Код="11", а Код="  11" Третий вопрос: не понял, как кострукцию типа ПериодическийРеквизит.ИспользоватьОбъект("Площадь", запросик.ТекущийОС) ты используешь в запросе?Reskator Спасибо за пояснение про группы! Почему-то упустил его, хотя и собирался написать   |  
						| 
								|  |  
								| « Последнее редактирование: 15-03-2005 09:00 от Kivals » |  Записан | 
 |  |  | 
	| 
			| 
					
						| schnibbl 
								Гость
 | 
								|  | « Ответ #6 : 15-03-2005 12:24 »  |  | 
 
 Конструкцию я использую не в самом запросе а в том что это запрос вернул, в моем понимании когда говорят "используеш в запросе" реч идет о том что пишется в "ТекстЗапроса =...." и вот если в ТекстЗАпроса поставить ТекущийОС=....ТекущийЭлемент() именно со скобками, то по непонятной причине 1С скажет что это ошибка. и говоря "в процессе выполнения запроса" я имел ввиду что ошибка возникает в момент запросик.Выполнить(ТекстЗапроса) а то что там дальше копаешся после того как эта штука "1" вернула, то это уж если руки есть и запрос правильно написан, что нужно то и получиш, а если как в моем случае то результаты оставляют желать лудшего   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| schnibbl 
								Гость
 | 
								|  | « Ответ #7 : 15-03-2005 12:30 »  |  | 
 
 второй раз слышу про иерархию, узнаваемую с помощью метода "Родитель" приведите пожалуйста пример очень коротенький, который бы вытаскивал элемент справочника и данным методом передавал некой переменной значение всех групп в которые он входит (имеет ввиду аналог ПолноеНаименование ). если не сложно. |  
						| 
								|  |  
								| « Последнее редактирование: 15-03-2005 12:32 от schnibbl » |  Записан | 
 |  |  | 
	| 
			| 
					
						| schnibbl 
								Гость
 | 
								|  | « Ответ #8 : 16-03-2005 08:30 »  |  | 
 
 вопросик вот какой у всех так: после выполнения запроса если мы выводим на экран переменную запроса, то всё что ыводитсья после неё уходит в небытиё. Сос=СоздатьОбъект("Справочник.Основныесредства");
 в обычной программе при Сообщить(Сос +" | " + "Сос.Наименование") выведет все (вместо СОС выведет сос.Наименование)
 если же вывести переменную запроса таким макаром "    |ТекущийДоговор=справочник.Договоры.ТекущийЭлемент;"
 Сообщить(запросик.ТекущийДоговор +" | "+СтрДлина(запросик.ТекущийДоговор.Наименование));
 выведет только саму запросик.ТекущийДоговор.Наименование а символ  "|" и значение длинны съест.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #9 : 16-03-2005 09:40 »  |  | 
 
 1. Так я тебе и писал, как это использовать в последующем цикле выборки результатов запроса:  Если запросик.Выполнить(ТекстЗапроса) = 0 тогда Предупреждение("Запрос содержит ошибки.");иначе Пока Запросик.Группировка("ТекущийОС")=1 Цикл
 счетчик=счетчик+1;
 Если запросик.ТекущийОС.ЭтоГруппа()=0 Тогда
 ПериодическийРеквизит.ИспользоватьОбъект("Площадь", запросик.ТекущийОС);
 Табличка.ВывестиСекцию("ВыводОС");
 КонецЕсли;
 КонецЦикла;
 Табличка.Показать("Элементы ОС");
 Сообщить("Всего элементов: "+счетчик,"!!");
 конецЕсли;
2. Например у тебя есть элемент справочника ВыбСправочник (для простоты - реквизит на форме) Пишем рекурсивную процедуру заполнения СпискаЗначений всеми группами-родителями: Процедура ДобавитьРодителя(Эл, Сп)Если Эл.Уровень()=0 Тогда Возврат; КонецЕсли;
 Сп.ВставитьЗначение(1, Эл.Родитель); // Для случая ближайший родитель - вверху списка
 //Сп.ДобавитьЗначение(Эл.Родитель); // Для случая главный родитель - вверху списка
 ДобавитьРодителя(Эл.Родитель, Сп);
 КонецПроцедуры
Использование: Сп=СоздатьОбъект("СписокЗначений");ДобавитьРодителя(ВыбСправочник, Сп);
 Для И1=1 По Сп.РазмерСписка() Цикл
 Сообщить(Сп.ПолучитьЗначение(И1));
 КонецЦикла;
3. Приводи все переменные к типу Строка или используй форматирование вывода (см. с справке функции Формат() и Шаблон() ) Пример 1 (к строке): Сообщить(Строка(запросик.ТекущийДоговор)+" | "+СтрДлина(запросик.ТекущийДоговор.Наименование)); Пример 2 (Шаблон): Сообщить(Шаблон("[запросик.ТекущийДоговор]|[СтрДлина(запросик.ТекущийДоговор.Наименование)]")); |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| easily 
								Участник    Offline | 
								|  | « Ответ #10 : 04-08-2006 07:47 »  |  | 
 
 Пробовала сделать как описано выше... видимо что-то упустила.. Проблема таже, как получить периодический реквизит справочника через запрос? В периодическом реквизите всего  2-а значение "ТрудовойДоговор" и "ТрудовыеОтношения". Пожалуйста ПОМОГИТЕ   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #11 : 04-08-2006 08:12 »  |  | 
 
 в запросе есть строка Период с НачДата по КонДата;Периодический реквизит справочника берется на КонДата |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| easily 
								Участник    Offline | 
								|  | « Ответ #12 : 04-08-2006 08:26 »  |  | 
 
 Процедура Сформировать()  Перем Запрос, ТекстЗапроса;
 
 Справ = СоздатьОбъект("Справочник.Сотрудники");
 ПериодическийРеквизит = СоздатьОбъект("Периодический");
 
 //Создание объекта типа Запрос
 Запросик = СоздатьОбъект("Запрос");
 ТекстЗапроса =
 "//{{ЗАПРОС(Сформировать)
 |Период с НачДата по КонДата;
 |ХарактерРаботы = Справочник.Сотрудники.ХарактерРаботы;
 |Группировка ХарактерРаботы;
 |Условие(ХарактерРаботы = Перечисление.ХарактерРаботы.ТрудовойДоговор);
 |"//}}ЗАПРОС
 ;
 Если запросик.Выполнить(ТекстЗапроса) = 0 тогда
 Предупреждение("Запрос содержит ошибки.");
 иначе
 пр =     Запросик.ХарактерРаботы;
 Сообщить(пр);
 КонецЕсли;
 
 
 КонецПроцедуры
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| easily 
								Участник    Offline | 
								|  | « Ответ #13 : 04-08-2006 08:27 »  |  | 
 
 он выдает пустую строчку |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| easily 
								Участник    Offline | 
								|  | « Ответ #14 : 04-08-2006 08:37 »  |  | 
 
 ,ой забыла, он не только периодический но и перечисление |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #15 : 04-08-2006 08:37 »  |  | 
 
 Попробуй так:ТекстЗапроса =
 "//{{ЗАПРОС(Сформировать)
 |Период с НачДата по КонДата;
 |ТекущийЭлемент = Справочник.Сотрудники.ТекущийЭлемент;
 |ХарактерРаботы = Справочник.Сотрудники.ХарактерРаботы;
 |Группировка ТекущийЭлемент;
 |Условие(ХарактерРаботы = Перечисление.ХарактерРаботы.ТрудовойДоговор);
 |"//}}ЗАПРОС
 ;
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| easily 
								Участник    Offline | 
								|  | « Ответ #16 : 04-08-2006 08:53 »  |  | 
 
 Спасибо все получилось |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| vSurfer 
								Гость
 | 
								|  | « Ответ #17 : 21-04-2009 11:21 »  |  | 
 
 Добрый день!Есть проблема с обработкой группировок в запросе
 1С Предприятие 7.70.027. Конфигурация "Бухгалтерски"
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Finch 
								СпокойныйАдминистратор    Offline 
								Пол:    
								Пролетал мимо
								
								
								
								
								
							 | 
								|  | « Ответ #18 : 21-04-2009 11:24 »  |  | 
 
 vSurfer А можно не скромный вопрос. В чем все таки заключается проблема "с обработкой группировок в запросе". Или народ должен сам догадываться? |  
						| 
								|  |  
								|  |  Записан | 
 
 Не будите спашяго дракона.              Джаффар (Коша) |  |  | 
	| 
			| 
					
						| vSurfer 
								Гость
 | 
								|  | « Ответ #19 : 21-04-2009 11:31 »  |  | 
 
 Добрый день!Есть проблема с обработкой группировок в запросе
 1С Предприятие 7.70.027. Конфигурация "Бухгалтерский учет" для Украины 7.70.254. Формат БД *.dbf
 Процедура АнализЧлВзносов()
 Перем Запрос, ТекстЗапроса, Таб;
 //Создание объекта типа Запрос
 Запрос = СоздатьОбъект("Запрос");
 ТекстЗапроса =
 "//{{ЗАПРОС(АнализЧлВзносов)
 |Период с ВыбНачПериода по ВыбКонПериода;
 |ОбрабатыватьДокументы Все;
 |ОбрабатыватьОперации все;
 |Обрабатывать Все;
 |СчетДт = Операция.Дебет.Счет;
 |СчетКт = Операция.Кредит.Счет;
 |НаименованиеКонтрКт = Операция.Кредит.Контрагенты.Наименование;
 |ВидКонтрагентаКт = Операция.Кредит.Контрагенты.ВидКонтрагента;
 |СубконтоКтКонтр = Операция.Субконто.Контрагенты.Наименование;
 |СубконтоКтВидКонтр = Операция.Субконто.Контрагенты.ВидКонтрагента;
 |ДатаОперации = Операция.ДатаОперации;
 |СуммаПроводки = Операция.Сумма;
 |Группировка СчетКт;
 |Группировка ВидКонтрагентаКт;
 |Группировка НаименованиеКонтрКт;
 |Группировка Месяц все ВошедшиеВЗапрос;
 |Группировка СуммаПроводки все ВошедшиеВЗапрос;
 |Условие(СчетКт = 481);
 |Условие(ВидКонтрагентаКт = ВыбВидыКонтрагентов);
 |"//}}ЗАПРОС
 ;
 // Если ошибка в запросе, то выход из процедуры
 Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
 Возврат;
 КонецЕсли;
 
 // Подготовка к заполнению выходных форм данными запроса
 Таб = СоздатьОбъект("Таблица");
 Таб.ИсходнаяТаблица("АнализЧлВзносов");
 // Заполнение полей "Заголовок"
 Таб.ВывестиСекцию("Заголовок");
 Состояние("Заполнение выходной таблицы...");
 Таб.Опции(0, 1, Таб.ВысотаТаблицы(), 0);
 Пока Запрос.Группировка(1) = 1 Цикл //сразу не выполняется условие!!!
 // Заполнение полей СчетКт
 Таб.ВывестиСекцию("СчетКт");
 Пока Запрос.Группировка(2) = 1 Цикл
 // Заполнение полей ВидКонтрагентаКт
 Таб.ВывестиСекцию("ВидКонтрагентаКт");
 Пока Запрос.Группировка(3) = 1 Цикл
 // Заполнение полей НаименованиеКонтрКт
 Таб.ВывестиСекцию("НаименованиеКонтрКт");
 Пока Запрос.Группировка(4) = 1 Цикл
 // Заполнение полей Месяц
 Таб.ВывестиСекцию("Месяц");
 Пока Запрос.Группировка(5) = 1 Цикл
 // Заполнение полей СуммаПроводки
 Таб.ВывестиСекцию("СуммаПроводки");
 КонецЦикла;
 КонецЦикла;
 КонецЦикла;
 КонецЦикла;
 КонецЦикла;
 в цикле "Пока Запрос.Группировка(1) = 1 Цикл" сразу же "ложь" и выход из цикла. Хотя очень много проводок с кредитным счетом 481.
 Может, не правильно ставлю условие?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #20 : 21-04-2009 19:24 »  |  | 
 
 Условие(СчетКт = 481); нужно или
 Условие(СчетКт.Код = ""481"");
 или
 Условие(СчетКт = СчетПоКоду(""481""));
 
 Второй вариант предпочтительней
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| vSurfer 
								Гость
 | 
								|  | « Ответ #21 : 22-04-2009 06:16 »  |  | 
 
 К сожалению ни первый ни второй вариант результата не дали.Может, в обработке группировки чего не так?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #22 : 22-04-2009 09:36 »  |  | 
 
 Прежде чем пенять на группировку - убери все условия и попробуй сформировать |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| vSurfer 
								Гость
 | 
								|  | « Ответ #23 : 22-04-2009 17:00 »  |  | 
 
 Убрал и тоже самое   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #24 : 24-04-2009 05:53 »  |  | 
 
 Еще раз измененный текст запроса сюда |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| vSurfer 
								Гость
 | 
								|  | « Ответ #25 : 24-04-2009 07:25 »  |  | 
 
 Процедура АнализЧлВзносов()Перем Запрос, ТекстЗапроса, Таб;
 //Создание объекта типа Запрос
 Запрос = СоздатьОбъект("Запрос");
 ТекстЗапроса =
 "//{{ЗАПРОС(АнализЧлВзносов)
 |Период с ВыбНачПериода по ВыбКонПериода;
 |ОбрабатыватьДокументы Все;
 |ОбрабатыватьОперации все;
 |Обрабатывать Все;
 |СчетДт = Операция.Дебет.Счет;
 |СчетКт = Операция.Кредит.Счет;
 |НаименованиеКонтрКт = Операция.Кредит.Контрагенты.Наименование;
 |ВидКонтрагентаКт = Операция.Кредит.Контрагенты.ВидКонтрагента;
 |СубконтоКтКонтр = Операция.Субконто.Контрагенты.Наименование;
 |СубконтоКтВидКонтр = Операция.Субконто.Контрагенты.ВидКонтрагента;
 |ДатаОперации = Операция.ДатаОперации;
 |СуммаПроводки = Операция.Сумма;
 |Группировка СчетКт;
 |Группировка ВидКонтрагентаКт;
 |Группировка НаименованиеКонтрКт;
 |Группировка Месяц все ВошедшиеВЗапрос;
 |Группировка СуммаПроводки все ВошедшиеВЗапрос;
 |Условие(СчетКт = СчетПоКоду(""481""));
 //   |Условие(СчетКт.Код = ""481"");
 |Условие(ВидКонтрагентаКт = ВыбВидыКонтрагентов);
 |"//}}ЗАПРОС
 ;
 // Если ошибка в запросе, то выход из процедуры
 Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
 Возврат;
 КонецЕсли;
 
 // Подготовка к заполнению выходных форм данными запроса
 Таб = СоздатьОбъект("Таблица");
 Таб.ИсходнаяТаблица("АнализЧлВзносов");
 // Заполнение полей "Заголовок"
 Таб.ВывестиСекцию("Заголовок");
 Состояние("Заполнение выходной таблицы...");
 Таб.Опции(0, 1, Таб.ВысотаТаблицы(), 0);
 Пока Запрос.Группировка(1) = 1 Цикл
 // Заполнение полей СчетКт
 Таб.ВывестиСекцию("СчетКт");
 Пока Запрос.Группировка(2) = 1 Цикл
 // Заполнение полей ВидКонтрагентаКт
 Таб.ВывестиСекцию("ВидКонтрагентаКт");
 Пока Запрос.Группировка(3) = 1 Цикл
 // Заполнение полей НаименованиеКонтрКт
 Таб.ВывестиСекцию("НаименованиеКонтрКт");
 Пока Запрос.Группировка(4) = 1 Цикл
 // Заполнение полей Месяц
 Таб.ВывестиСекцию("Месяц");
 Пока Запрос.Группировка(5) = 1 Цикл
 // Заполнение полей СуммаПроводки
 Таб.ВывестиСекцию("СуммаПроводки");
 КонецЦикла;
 КонецЦикла;
 КонецЦикла;
 КонецЦикла;
 КонецЦикла;
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #26 : 27-04-2009 15:18 »  |  | 
 
 Вот правильный запрос (жирным выделил что я изменил):ТекстЗапроса =
 "//{{ЗАПРОС(АнализЧлВзносов)
 |Период с ВыбНачПериода по ВыбКонПериода;
 |ОбрабатыватьДокументы Все;
 |ОбрабатыватьОперации все;
 |Обрабатывать Все;
 |СчетДт = Операция.Дебет.Счет;
 |СчетКт = Операция.Кредит.Счет;
 |НаименованиеКонтрКт = Операция.Кредит.Контрагенты.Наименование;
 |ВидКонтрагентаКт = Операция.Кредит.Контрагенты.ВидКонтрагента;
 |СубконтоКтКонтр = Операция.Субконто.Контрагенты.Наименование;
 |СубконтоКтВидКонтр = Операция.Субконто.Контрагенты.ВидКонтрагента;
 |ДатаОперации = Операция.ДатаОперации;
 |_СуммаПроводки = Операция.Сумма;
 |Группировка СчетКт;
 |Группировка ВидКонтрагентаКт;
 |Группировка НаименованиеКонтрКт;
 |Группировка Месяц все ВошедшиеВЗапрос;
 |Функция СуммаПроводки = КО(_СуммаПроводки);
 |Условие(СчетКт = СчетПоКоду(""481""));
 //   |Условие(СчетКт.Код = ""481"");
 |Условие(ВидКонтрагентаКт = ВыбВидыКонтрагентов);
 |"//}}ЗАПРОС
 ;
 
 т.е.  атрибут СуммаПроводки нужно вычилять как функцию КО(), а не группировать по нему. В принципе в запросе пара лишних группировок:
 ВидКонтрагентаКт (==СубконтоКтВидКонтр) и НаименованиеКонтрКт - эти значения можно получить в цикле группировки по СубконтоКтКонтр через Запрос.СубконтоКтКонтр.Наименование (Запрос.СубконтоКтКонтр.ВидКонтрагента)
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| vSurfer 
								Гость
 | 
								|  | « Ответ #27 : 28-04-2009 18:37 »  |  | 
 
 Спасибо большое! Уже намного лучше! Понял я одно, что ничего не понимаю.Можете ли подсказать, есть ли доходчивая литература по программированию 1С?
 (родные книги от конфигурации туго что-то доходит)
 С чего лучше начинать?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #28 : 28-04-2009 20:51 »  |  | 
 
 Изучая "семерку" я пользовался родными книжками и стандартными конфигурациями: просто брал и смотрел в тексте программы как сделано то, что мне нужно. Ну и после этого экспериментировал и задавал вопросы на форумах (на первых этапах даже глупые    ) Изучая "восьмерку" в прошлом году (и сейчас) пользуюсь поиском по гуглу - находится приличное количество данных. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |