Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Создание отчета по справочнику  (Прочитано 48063 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #30 : 13-05-2010 10:44 » 

Код:
ТекстЗапроса = "
|Без итогов;
|ТекущийЭлемент = Справочник.Альбомы.ТекущийЭлемент;
|ГодВыпуска = Справочник.Альбомы.ГодВыпуска;
|Альбом = Справочник.Альбомы.Наименование;
|Условие (ГодВыпуска>1999);
|Группировка(ТекущийЭлемент);
|";
Ну а дальше доступайся в цикле к нужным реквизитам через
Запрос.ТекущийЭлемент.<НазваниеРеквизита>
Записан
Ольга111
Интересующийся

ua
Offline Offline

« Ответ #31 : 13-05-2010 14:45 » 

Простите, пожалуйста, но я не совсем понимаю. Дело в том, что я не программист, вы не могли бы мне по-подробней показать, как надо делать. Пока я только ТекстЗапроса написала, как вы сказали.
Код:
Процедура Сформировать()
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Без итогов;
|ТекущийЭлемент = Справочник.Альбомы.ТекущийЭлемент;
|ГодВыпуска = Справочник.Альбомы.ГодВыпуска;
|Альбом = Справочник.Альбомы.Наименование;
|Условие (ГодВыпуска>1999);
|Группировка(ТекущийЭлемент);
|"; 
Запрос.Выполнить(ТекстЗапроса);
Таблица  = СоздатьОбъект("Таблица");
Таблица.ВывестиСекцию("Заголовок");
А дальше никак не разберусь...
Записан
Ольга111
Интересующийся

ua
Offline Offline

« Ответ #32 : 13-05-2010 15:21 » 

Kivals, помогите мне, пожалуйста, мне больше и спросить-то не у кого, а нужно очень-очень  Жаль С ума сойти...
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #33 : 13-05-2010 17:57 » 

Ольга111, при всем желании не смогу тебе помочь подредактировать Таблицу, которую ты выводишь, так что разбираться все равно придется...
Вот что получается дальше:
Код:
Запрос.Выполнить(ТекстЗапроса);
Пока Запрос.Группировка() Цикл
//Таб.ВывестиСекцию("Данные");
Сообщить(Запрос.ТекущийЭлемент.Наименование);
Сообщить(Запрос.ТекущийЭлемент.Группа);
КонецЦикла;
Как это прикрутить к таблице - попробуй разобраться сама
Записан
Ольга111
Интересующийся

ua
Offline Offline

« Ответ #34 : 13-05-2010 18:39 » 

Большое вам спасибо, но в строке 
Код:
Пока Запрос.Группировка() Цикл
ошибка: Выражение должно иметь логический тип.
Когда я пишу
Код:
Пока Запрос.Группировка()=1 Цикл
Выдаёт ошибку - Запрос.Выполнить(ТекстЗапроса);
{Обработка.ПопулярноеЗа5лет.Форма.Модуль(22)}: Группировка <<?>> (ТекущийЭлемент);
Запро
Записан
Ольга111
Интересующийся

ua
Offline Offline

« Ответ #35 : 13-05-2010 18:41 » 

Запрос.Выполнить(ТекстЗапроса);
{Обработка.ПопулярноеЗа5лет.Форма.Модуль(22)}: Группировка <<?>> (ТекущийЭлемент);
Запро
Записан
Dest
Опытный

ru
Offline Offline

« Ответ #36 : 14-05-2010 03:18 » 

Код:
|ТекущийЭлемент = Справочник.Альбомы.ТекущийЭлемент;

"ТекущийЭлемент" - зарезервированное слово. Попробуй поменять, например на "ТекущийЭл"


Код:
|ТекущийЭл = Справочник.Альбомы.ТекущийЭлемент;
Записан
Ольга111
Интересующийся

ua
Offline Offline

« Ответ #37 : 14-05-2010 04:43 » 

Спасибо, буду пробовать...
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #38 : 14-05-2010 12:29 » 

Ольга111, я не проверял код - писал прямо в форуме.
Про цикл - абсолютно верно, там должно быть "=1"
Про группировку - по-моему там скобок не нужно, вот так:
Код:
	|Группировка ТекущийЭлемент упорядочить по ТекущийЭлемент.Наименование без групп;
Записан
Ольга111
Интересующийся

ua
Offline Offline

« Ответ #39 : 14-05-2010 12:46 » 

Большое спасибо, с тем заданием разобралась... Если можно, подскажите, пожалуйста, как из табличной части записать данные в справочник? т.е. в табл. части документа есть название и количество, надо, чтобы в справочнике у нужного элемента менялось количество.
Записан
Ольга111
Интересующийся

ua
Offline Offline

« Ответ #40 : 14-05-2010 13:02 » 

Я попробовала сделать так:
Код:
Процедура ОбработкаПроведения()
СпрКниги = СоздатьОбъект("Справочник.Книги");
СпрКниги.Новый();
ДокПост = СоздатьОбъект("Документ.ПоступлениеКниг");

  ДокПост. ВыбратьСтроки();
Пока ДокПост.ПолучитьСтроку()=1 Цикл 
СпрКниги.ВыбратьСтроки();
  Пока СпрКниги.ПолучитьСтроку()=1 Цикл
                Если СпрКниги.Наименование = НазКниги Тогда
    СпрКниги.Количество = Количество;
//Скажите, пожалуйста, можно ли написать СпрКниги.Количество = СпрКниги.Количество + Количество ?
//а то мне надо увеличивать количество в справочнике
   КонецЕсли;   
  КонецЦикла;
КонецЦикла;
КонецПроцедуры
Но в справочнике ничего не меняется, правда и ошибок тоже нет...
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #41 : 14-05-2010 13:39 » 

Ну что не меняется - неудивительно: цикл не выполняется ни разу, т.к. табличной части для вновь созданного объекта нет.
Если ты это делаешь в ОбработкеПроведения, то нужно приблизительно так:
Код:
	ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
...
КонецЦикла;
А у тебя в табличной части документа только названия, а не ссылка на элемент справочника?
Записан
Ольга111
Интересующийся

ua
Offline Offline

« Ответ #42 : 14-05-2010 13:56 » 

Спасибо Вам. НазКниги (из табличной части документа) имеет тип Справочник.Книги.
Примерно так, как вы показали я уже пробовала:
Код:
Процедура ОбработкаПроведения()
  СпрКниги = СоздатьОбъект("Справочник.Книги");
     ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл   //цикл по таб. части документа
//перебираю элементы справочника и ищу нужные, чтобы увеличить в них количество
//Пока СпрКниги.ПолучитьСтроку()=1 Цикл    //когда раскомментировано - ругается, на эту строку: Поле агрегатного
                                                                                        //объекта не   обнаружено (ПолучитьСтроку)
       Если СпрКниги.Наименование = НазКниги Тогда
    СпрКниги.Количество = Количество;
   КонецЕсли;   
// КонецЦикла;
КонецЦикла;
КонецПроцедуры
Записан
Ольга111
Интересующийся

ua
Offline Offline

« Ответ #43 : 14-05-2010 14:33 » 

Т.е. для перебора справочника надо использовать ВыбратьЭлементы() и ПолучитьЭлементы(), тогда ошибок нет, но количество в справочнике всё равно не меняется... Что же делать?  Жаль  Жаль  Жаль
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #44 : 14-05-2010 22:37 » 

Код:
	СпрКниги = СоздатьОбъект("Справочник.Книги");
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
СпрКниги.НайтиЭлемент(НазКниги); // НазКниги - это реквизит табл.части
СпрКниги.Количество = СпрКниги.Количество + Количество; // Можно.
// Только: 1. При каждом проведении одного и того же документа к-во будет добавляться
// 2. Не забудь отнять назад в процедуре ОбработкаУдаленияПроведения()
СпрКниги.Записать();
КонецЦикла;
Записан
AndyG
Постоялец

by
Offline Offline

« Ответ #45 : 07-07-2010 09:45 » 

Ольга111,
Та дались вам эти запросы!:(
Не обязательно использовать их для всего и вся.

Вот вам решение

Таб = СоздатьОбъект("Таблица");
Таб.ВывестиСекцию("Заголовок");
Спр=СоздатьОбъект("Справочник.Альбомы");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
ТекЭл=Спр.ТекущийЭлемент();    
    Если ТекЭл.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли;
    Если ТекЭл.ГодВыпуска<1999 Тогда Продолжить; КонецЕсли;
    //ОПРЕДЕЛИМ Ваши переменные
    альбом=ТекЭл.Альбом;
    ГодВыпуска=ТекЭл.ГодВыпуска;
    //или в таблице заполняем переменными  ТекЭл.Альбом и ТекЭл.ГодВыпуска
    ТаБ.ВывестиСекцию("ТаЧёХочешьВыводи"); //тут точное название горизонтальной секции Вашей таблицы
КонецЦикла;
« Последнее редактирование: 07-07-2010 09:54 от AndyG » Записан
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines