Kivals
|
|
« Ответ #30 : 13-05-2010 10:44 » |
|
ТекстЗапроса = " |Без итогов; |ТекущийЭлемент = Справочник.Альбомы.ТекущийЭлемент; |ГодВыпуска = Справочник.Альбомы.ГодВыпуска; |Альбом = Справочник.Альбомы.Наименование; |Условие (ГодВыпуска>1999); |Группировка(ТекущийЭлемент); |"; Ну а дальше доступайся в цикле к нужным реквизитам через Запрос.ТекущийЭлемент.<НазваниеРеквизита>
|
|
|
Записан
|
|
|
|
Ольга111
Интересующийся
Offline
|
|
« Ответ #31 : 13-05-2010 14:45 » |
|
Простите, пожалуйста, но я не совсем понимаю. Дело в том, что я не программист, вы не могли бы мне по-подробней показать, как надо делать. Пока я только ТекстЗапроса написала, как вы сказали. Процедура Сформировать() Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Без итогов; |ТекущийЭлемент = Справочник.Альбомы.ТекущийЭлемент; |ГодВыпуска = Справочник.Альбомы.ГодВыпуска; |Альбом = Справочник.Альбомы.Наименование; |Условие (ГодВыпуска>1999); |Группировка(ТекущийЭлемент); |"; Запрос.Выполнить(ТекстЗапроса); Таблица = СоздатьОбъект("Таблица"); Таблица.ВывестиСекцию("Заголовок"); А дальше никак не разберусь...
|
|
|
Записан
|
|
|
|
|
Kivals
|
|
« Ответ #33 : 13-05-2010 17:57 » |
|
Ольга111, при всем желании не смогу тебе помочь подредактировать Таблицу, которую ты выводишь, так что разбираться все равно придется... Вот что получается дальше: Запрос.Выполнить(ТекстЗапроса); Пока Запрос.Группировка() Цикл //Таб.ВывестиСекцию("Данные"); Сообщить(Запрос.ТекущийЭлемент.Наименование); Сообщить(Запрос.ТекущийЭлемент.Группа); КонецЦикла; Как это прикрутить к таблице - попробуй разобраться сама
|
|
|
Записан
|
|
|
|
Ольга111
Интересующийся
Offline
|
|
« Ответ #34 : 13-05-2010 18:39 » |
|
Большое вам спасибо, но в строке Пока Запрос.Группировка() Цикл ошибка: Выражение должно иметь логический тип. Когда я пишу Пока Запрос.Группировка()=1 Цикл Выдаёт ошибку - Запрос.Выполнить(ТекстЗапроса); {Обработка.ПопулярноеЗа5лет.Форма.Модуль(22)}: Группировка <<?>> (ТекущийЭлемент); Запро
|
|
|
Записан
|
|
|
|
Ольга111
Интересующийся
Offline
|
|
« Ответ #35 : 13-05-2010 18:41 » |
|
Запрос.Выполнить(ТекстЗапроса); {Обработка.ПопулярноеЗа5лет.Форма.Модуль(22)}: Группировка <<?>> (ТекущийЭлемент); Запро
|
|
|
Записан
|
|
|
|
Dest
Опытный
Offline
|
|
« Ответ #36 : 14-05-2010 03:18 » |
|
|ТекущийЭлемент = Справочник.Альбомы.ТекущийЭлемент; "ТекущийЭлемент" - зарезервированное слово. Попробуй поменять, например на "ТекущийЭл" |ТекущийЭл = Справочник.Альбомы.ТекущийЭлемент;
|
|
|
Записан
|
|
|
|
Ольга111
Интересующийся
Offline
|
|
« Ответ #37 : 14-05-2010 04:43 » |
|
Спасибо, буду пробовать...
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #38 : 14-05-2010 12:29 » |
|
Ольга111, я не проверял код - писал прямо в форуме. Про цикл - абсолютно верно, там должно быть "=1" Про группировку - по-моему там скобок не нужно, вот так: |Группировка ТекущийЭлемент упорядочить по ТекущийЭлемент.Наименование без групп;
|
|
|
Записан
|
|
|
|
Ольга111
Интересующийся
Offline
|
|
« Ответ #39 : 14-05-2010 12:46 » |
|
Большое спасибо, с тем заданием разобралась... Если можно, подскажите, пожалуйста, как из табличной части записать данные в справочник? т.е. в табл. части документа есть название и количество, надо, чтобы в справочнике у нужного элемента менялось количество.
|
|
|
Записан
|
|
|
|
Ольга111
Интересующийся
Offline
|
|
« Ответ #40 : 14-05-2010 13:02 » |
|
Я попробовала сделать так: Процедура ОбработкаПроведения() СпрКниги = СоздатьОбъект("Справочник.Книги"); СпрКниги.Новый(); ДокПост = СоздатьОбъект("Документ.ПоступлениеКниг");
ДокПост. ВыбратьСтроки(); Пока ДокПост.ПолучитьСтроку()=1 Цикл СпрКниги.ВыбратьСтроки(); Пока СпрКниги.ПолучитьСтроку()=1 Цикл Если СпрКниги.Наименование = НазКниги Тогда СпрКниги.Количество = Количество; //Скажите, пожалуйста, можно ли написать СпрКниги.Количество = СпрКниги.Количество + Количество ? //а то мне надо увеличивать количество в справочнике КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры Но в справочнике ничего не меняется, правда и ошибок тоже нет...
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #41 : 14-05-2010 13:39 » |
|
Ну что не меняется - неудивительно: цикл не выполняется ни разу, т.к. табличной части для вновь созданного объекта нет. Если ты это делаешь в ОбработкеПроведения, то нужно приблизительно так: ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл ... КонецЦикла; А у тебя в табличной части документа только названия, а не ссылка на элемент справочника?
|
|
|
Записан
|
|
|
|
Ольга111
Интересующийся
Offline
|
|
« Ответ #42 : 14-05-2010 13:56 » |
|
Спасибо Вам. НазКниги (из табличной части документа) имеет тип Справочник.Книги. Примерно так, как вы показали я уже пробовала: Процедура ОбработкаПроведения() СпрКниги = СоздатьОбъект("Справочник.Книги"); ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл //цикл по таб. части документа //перебираю элементы справочника и ищу нужные, чтобы увеличить в них количество //Пока СпрКниги.ПолучитьСтроку()=1 Цикл //когда раскомментировано - ругается, на эту строку: Поле агрегатного //объекта не обнаружено (ПолучитьСтроку) Если СпрКниги.Наименование = НазКниги Тогда СпрКниги.Количество = Количество; КонецЕсли; // КонецЦикла; КонецЦикла; КонецПроцедуры
|
|
|
Записан
|
|
|
|
|
Kivals
|
|
« Ответ #44 : 14-05-2010 22:37 » |
|
СпрКниги = СоздатьОбъект("Справочник.Книги"); ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл СпрКниги.НайтиЭлемент(НазКниги); // НазКниги - это реквизит табл.части СпрКниги.Количество = СпрКниги.Количество + Количество; // Можно. // Только: 1. При каждом проведении одного и того же документа к-во будет добавляться // 2. Не забудь отнять назад в процедуре ОбработкаУдаленияПроведения() СпрКниги.Записать(); КонецЦикла;
|
|
|
Записан
|
|
|
|
AndyG
Постоялец
Offline
|
|
« Ответ #45 : 07-07-2010 09:45 » |
|
Ольга111, Та дались вам эти запросы!:( Не обязательно использовать их для всего и вся.
Вот вам решение
Таб = СоздатьОбъект("Таблица"); Таб.ВывестиСекцию("Заголовок"); Спр=СоздатьОбъект("Справочник.Альбомы"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент()=1 Цикл ТекЭл=Спр.ТекущийЭлемент(); Если ТекЭл.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли; Если ТекЭл.ГодВыпуска<1999 Тогда Продолжить; КонецЕсли; //ОПРЕДЕЛИМ Ваши переменные альбом=ТекЭл.Альбом; ГодВыпуска=ТекЭл.ГодВыпуска; //или в таблице заполняем переменными ТекЭл.Альбом и ТекЭл.ГодВыпуска ТаБ.ВывестиСекцию("ТаЧёХочешьВыводи"); //тут точное название горизонтальной секции Вашей таблицы КонецЦикла;
|
|
« Последнее редактирование: 07-07-2010 09:54 от AndyG »
|
Записан
|
|
|
|
|