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

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

ru
Offline Offline

« Ответ #30 : 13-02-2009 10:03 » 

"вроде по условиям запроса в него попадут ТОЛЬКО если остатки или обороты нулевые. или их вообще нет..."
т.е помечаются если например, остаток есть, а оборот равен нулю, то тоже помечается??Мне надо, чтобы помечался, если только нет и остатка и оборота одновременно

"вроде по условиям запроса в него попадут ТОЛЬКО если остатки или обороты нулевые. или их вообще нет..."
т.е помечаются если например, остаток есть, а оборот равен нулю, то тоже помечается??Мне надо, чтобы помечался, если только нет и остатка и оборота одновременно
« Последнее редактирование: 13-02-2009 12:50 от Алексей1153++ » Записан
Kivals
Модератор

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

WWW
« Ответ #31 : 13-02-2009 11:47 » 

Попробуй добавить в запрос колонки (нач.ост., обороты дт, обороты кт, кон.ост) и вывести результат в печатном виде
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #32 : 13-02-2009 12:25 » 

В этот же запрос?Зачем?

может как-нибудь изменить условие ГДЕ в запросе, чтобы помечались только те у кого Нет вообще ни остатков ни оборотов?
« Последнее редактирование: 13-02-2009 12:51 от Алексей1153++ » Записан
Kivals
Модератор

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

WWW
« Ответ #33 : 13-02-2009 15:26 » 

Чтобы посмотреть какие результаты тебе запрос выдает.
Убери условие ГДЕ вообще и выведи обороты - увидишь какие лишние, а на что можно ориентироваться. Псоле этого составишь правильно еусловие ГДЕ
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #34 : 13-02-2009 15:35 » 

я НАПИСАЛА, А КАК ВЫВЕСТИ ОБОРОТЫ ТЕПЕРЬ, ЧТОБЫ ИХ УВИДЕТЬ?

ВЫБРАТЬ
                  |   ЕСТЬNULL(ХозрасчетныйОстаткиИОбороты.Субконто1, ОС.Ссылка) КАК СсылкаОС,
                  |   ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт,
                  |   ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт,
                  |   ХозрасчетныйОстаткиИОбороты.СуммаОборотДт,
                  |   ХозрасчетныйОстаткиИОбороты.СуммаОборотКт

                  |ИЗ
                  |   РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода, &КонПериода, , , Счет.Ссылка В (&СчетаУчетаОС), , ) КАК ХозрасчетныйОстаткиИОбороты
                  |      ПОЛНОЕ СОЕДИНЕНИЕ Справочник.ОсновныеСредства КАК ОС
                  |      ПО ХозрасчетныйОстаткиИОбороты.Субконто1 = ОС.Ссылка
СчетаУчетаОС=Новый СписокЗначений;
   СчетаУчетаОС.Добавить(Счет1.Ссылка);
   СчетаУчетаОС.Добавить(Счет2.Ссылка);
   Запрос.УстановитьПараметр("СчетаУчетаОС", СчетаУчетаОС);
   Запрос.УстановитьПараметр("НачПериода", НачПериода);
   Запрос.УстановитьПараметр("КонПериода", КонПериода);
   Результат = Запрос.Выполнить();
   Выборка = Результат.Выбрать();
   
      Пока Выборка.Следующий() Цикл
         ОбъектОС = Выборка.СсылкаОС.ПолучитьОбъект();
         ОбъектОС.УстановитьПометкуУдаления(Истина);
      КонецЦикла;
Записан
Kivals
Модератор

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

WWW
« Ответ #35 : 13-02-2009 15:41 » 

Самое простое так:
Код:
	Построитель = Новый ПостроительОтчета;

Построитель.Текст = ""; // Тут текст запроса

СчетаУчетаОС=Новый СписокЗначений;
СчетаУчетаОС.Добавить(Счет1.Ссылка);
СчетаУчетаОС.Добавить(Счет2.Ссылка);
Построитель.Параметры.Вставить("СчетаУчетаОС", СчетаУчетаОС); // немножко другой синтаксис параметров
Построитель.Параметры.Вставить("НачПериода", НачПериода);
Построитель.Параметры.Вставить("КонПериода", КонПериода);

Построитель.ЗаполнитьНастройки();
Построитель.Выполнить();
Построитель.Вывести();
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #36 : 13-02-2009 15:53 » 

пишет ошибку

{Форма.Форма(44)}: Значение не является значением объектного типа (Ссылка)
   СчетаУчетаОС.Добавить(Счет1.Ссылка);
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #37 : 13-02-2009 15:56 » 

И в форме не могу открыть форму выбора счета
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #38 : 13-02-2009 16:09 » 

с этой ошибкой разобралась(как -то странным образом тип  счет1 и счет 2 стал строкой без моего участия)

Вывелся табличный документ и во всех колонках по остаткам и оборотам пусто, никаких значений. Что это значит?
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #39 : 13-02-2009 16:17 » 

Если вставить условие ГДЕ какое было то результат тот же, как по элементам, так и по пустым значениям оборотов и остатков.
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #40 : 13-02-2009 16:26 » 

а может данные как-то не так выбираются, потому что по оборотке по 2 ОС есть и оборот и начостаток, а таблица выводимая пуста абсолютно? или что это еще может быть?
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #41 : 13-02-2009 21:50 » 

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

   
   
   СчетаУчетаОС=Новый СписокЗначений;
   СчетаУчетаОС.Добавить(Счет1.Ссылка);
   СчетаУчетаОС.Добавить(Счет2.Ссылка);
   Запрос.УстановитьПараметр("СчетаУчетаОС", СчетаУчетаОС);
   Запрос.УстановитьПараметр("НачПериода", НачПериода);
   Запрос.УстановитьПараметр("КонПериода", КонПериода);
   Результат = Запрос.Выполнить();
   Выборка = Результат.Выбрать();
   
      Пока Выборка.Следующий() Цикл
         ОбъектОС = Выборка.СсылкаОС.ПолучитьОбъект();
         Если НЕ Выборка.СсылкаОС.ЭтоГруппа() Тогда
         ОбъектОС.УстановитьПометкуУдаления(Истина);
           КонецЕсли;
      КонецЦикла;


Но теперь вопрос такой - Справочник ОС - ИЕРАРХИЧЕСКИЙ и группы помечаются тоже на удаление, как сделать, чтобы помечались только элементы в группах???
Записан
Kivals
Модератор

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

WWW
« Ответ #42 : 14-02-2009 07:42 » 

Почти все правильно, только ЭтоГруппа - совйство, а не метод:
Если НЕ Выборка.СсылкаОС.ЭтоГруппа Тогда
    ОбъектОС.УстановитьПометкуУдаления(Истина);
КонецЕсли;
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #43 : 14-02-2009 07:59 » 

А какой вариант лучше, чтобы совсем удалить эти помеченные элементы из базы:
1. Операции-> Удаление помеченных объектов или
2. можно как-то программно это сделать, чтобы данные из отчетов убрались с этими помеченными элементами?
Записан
Kivals
Модератор

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

WWW
« Ответ #44 : 15-02-2009 08:04 » 

Лучше - операции удаление, т.к. если сделать это программно - где-то могут остаться ссылки на несуществующие объекты и дальше база может некорректно работать
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #45 : 15-02-2009 21:05 » 

Большое спасибо!!!
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #46 : 18-02-2009 06:37 » 

Подскажите пожалуйста, на что может повлиять добавленная строчка в запрос?:
                          "ВЫБРАТЬ
                       |   ЕСТЬNULL(ХозрасчетныйОстаткиИОбороты.Субконто1, ОС.Ссылка) КАК СсылкаОС,
                       |   ХозрасчетныйОстаткиИОбороты.Счет
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #47 : 18-02-2009 07:45 » 

 |   ХозрасчетныйОстаткиИОбороты.Счет

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

   
   
   СчетаУчетаОС=Новый СписокЗначений;
   СчетаУчетаОС.Добавить(Счет1.Ссылка);
   СчетаУчетаОС.Добавить(Счет2.Ссылка);
   Запрос.УстановитьПараметр("СчетаУчетаОС", СчетаУчетаОС);
   Запрос.УстановитьПараметр("НачПериода", НачПериода);
   Запрос.УстановитьПараметр("КонПериода", КонПериода);
   Результат = Запрос.Выполнить();
   Выборка = Результат.Выбрать();
   
      Пока Выборка.Следующий() Цикл
         ОбъектОС = Выборка.СсылкаОС.ПолучитьОбъект();
         Если НЕ Выборка.СсылкаОС.ЭтоГруппа() Тогда
         ОбъектОС.УстановитьПометкуУдаления(Истина);
           КонецЕсли;
      КонецЦикла;
Записан
Kivals
Модератор

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

WWW
« Ответ #48 : 18-02-2009 09:01 » 

На пометку - никак, если ты ее не собираешься проверять, т.к. для товаров, по которым нет остатков и оборотов у тебя Выборка.Счет всегда будет равна NULL
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #49 : 18-02-2009 09:16 » 

1.У меня получается что без этой строчки помечается на удаления один элемент, который не должен помечаться, а с ней все нормально. Почему так?
2. Почему может возникнуть такая ситуация:  я задаю период 01.01.2009-28.02.2009 и смотрю сначала оборотку по счету 01.1 и 02.1 и там есть запись для "автопогрузчика"  и у него есть начальное сальдо. Потом смотрю отчет Анализ субконто с тем же периодом по тем же счетам, выбираю этого "автопогрузчика" и он не находит за этот же период ни сальдо ни оборотов. При этом элемент "автопогрузчик" в ОС помечается на удаление. Почему так? и правильно ли это вообще?
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #50 : 18-02-2009 09:31 » 

При этом если в оборотке по счету в настройках указать детализацию ОС ИЕРАРХИЯ, то он не пишет этого автопогрузчика, а если без ИЕРАРХИИ то находит по нему оборот
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #51 : 18-02-2009 09:36 » 

Все разобралась, просто один и тот же элемент у меня был в разных группах
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #52 : 18-02-2009 10:28 » 

а как вывести отчет после результата выполнения запроса, чтобы там указывалось, какие элементы помечены на удаление?
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #53 : 18-02-2009 11:37 » 

кАК СДЕЛАТЬ, ЧТОБЫ В ОТЧЕТЕ ВЫВОДИМОМ ЗАПИСИ ГРУППИРОВАЛИСЬ ПО ГРУППАМ?И как изменисть название столбца в самой колонке,т.е чтобы было написано не СсылкаОС, а Основные средства?

Построитель = Новый ПостроительОтчета;

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

   Построитель.Вывести();   
        
   
   Сообщить("Обработка закончена!",СтатусСообщения.Информация);
Записан
ArtMari
Участник

ru
Offline Offline

« Ответ #54 : 18-02-2009 16:10 » 

Мне надо, чтобы в отчете была одна колонка и в ней: первая группа и далее все помеченные элементы из этой группы, вторая группа и далее все элементы помеченные из этой группы и так далее. Может можно вот так реализовать, или что тут неправильно? Пишет ошибку 
Ошибка при вызове метода контекста (Вывести): Несоответствие типов (параметр номер '1')
   ТабДок.Вывести("ОбластьШапкаТаблицы");


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

   СчетаУчетаОС.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("01.01").Ссылка);
   СчетаУчетаОС.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("02.01").Ссылка);
   Запрос.УстановитьПараметр("СчетаУчетаОС", СчетаУчетаОС);
   Запрос.УстановитьПараметр("НачПериода", НачПериода);
   Запрос.УстановитьПараметр("КонПериода", КонПериода);
   Результат = Запрос.Выполнить();
ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;   
Макет = ПолучитьМакет("Пометка");
   
   ОбластьЗаголовок= Макет.ПолучитьОбласть("Заголовок");
   ОбластьШапкаТаблицы=Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОбластьСекция= Макет.ПолучитьОбласть("Секция");
   ОбластьСекция2= Макет.ПолучитьОбласть("Секция2");
   ТабДок.Очистить();
   ТабДок.Вывести("ОбластьШапкаТаблицы");
   ТабДок.Вывести("ОбластьЗаголовок");
   ТабДок.НачатьАвтогруппировкуСтрок();

 
ВыборкаГруппПомеченных = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   
Пока ВыборкаГруппПомеченных.Следующий()Цикл
    ОбластьСекция.Параметры.Заполнить(ВыборкаГруппПомеченных);
     ТабДок.Вывести(ОбластьСекция, ВыборкаГруппПомеченных.Уровень());
ВыборкаЭлементовГрупп = ВыборкаГруппПомеченных.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
      Пока ВыборкаЭлементовГрупп.Следующий() Цикл
             ОбластьСекция2.Параметры.Заполнить(ВыборкаЭлементовГрупп);
             ТабДок.Вывести(ОбластьСекция2, ВыборкаЭлементовГрупп.Уровень());
  КонецЦикла;
      КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
Записан
Kivals
Модератор

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

WWW
« Ответ #55 : 18-02-2009 21:21 » 

Без кавычек: ТабДок.Вывести(ОбластьШапкаТаблицы);
Записан
Gendalf
Гость
« Ответ #56 : 13-05-2009 02:27 » 

Задача легкая, зато юзер неподъемный. Каким ветром её занесло?
Записан
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines