Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Дек 2017, 00:44
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: помогите пожалуйста  (Прочитано 3400 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dimon777

  • *
  • Сообщений: 23
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
здравствуйте! помогите пожалуйста. делаю подсвечивание документов, красным должники а желтым выделяются те документы на которых нет реализации, но есть заказ покупателя, планируемое поступление, есть приходн.касс.ордер или плат.поручение., а те документы у которых есть закрытие никак не подсвечиваю.
проблема вот в чем: без третьего запроса все работает, должники красные, остальные зеленые... но вот когда третий запрос то красный цвет не работает а подсвечивается все документы, на которых нет реализации желтым... в общем работает либо то, либо то... что делать в такой ситуации??? подскажите пожалуйста!!!

Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
   
       
Если франВспомогательный.ПолучитьЗначениеНастройки(глЗначениеПеременной("глТекущийПользователь"),
        ПланыВидовХарактеристик.НастройкиПользователей.ЦветовоеВыделениеЛУРВ) Тогда
        ЦветВажноТусклый = Новый Цвет(255, 199, 204); // красный
        ЦветОсновнойЯркий = Новый Цвет(205, 250, 250); // зеленый
ЦветОсновнойТусклый = Новый Цвет( 255, 255, 0); // желтый

Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
            Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Сделка", ОформлениеСтроки.ДанныеСтроки.Ссылка);
            Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;             
            Запрос.Текст="ВЫБРАТЬ РАЗЛИЧНЫЕ
                         | РасчетыСКонтрагентамиОстатки.Сделка,
                         | РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК Сумма
                         |ПОМЕСТИТЬ Расчеты
                         |ИЗ
                         | РегистрНакопления.РасчетыСКонтрагентами.Остатки КАК РасчетыСКонтрагентамиОстатки
                         |;
                         |
                         |////////////////////////////////////////////////////////////////////////////////
                         |ВЫБРАТЬ
                         | Расчеты.Сделка,
                         | Расчеты.Сумма
                         |ИЗ
                         | Расчеты КАК Расчеты";
           Передано=Запрос.Выполнить().Выбрать();
   Если Передано.НайтиСледующий(Новый Структура("Сделка",ОформлениеСтроки.ДанныеСтроки.Ссылка)) тогда
    СуммаОстаток=Передано.Сумма;
     Иначе
   СуммаОстаток=0;
   КонецЕсли;
   
    Передано.Сбросить();

             Если ОформлениеСтроки.ДанныеСтроки.Ссылка.СуммаДокумента <= СуммаОстаток Тогда
                  ОформлениеСтроки.ЦветФона = ЦветВажноТусклый;
             Иначе
                  ОформлениеСтроки.ЦветФона =  ЦветОсновнойЯркий;
             КонецЕсли;
КонецЦикла;




 
 
     
 
 
    Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
            Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Сделка", ОформлениеСтроки.ДанныеСтроки.Ссылка);
            Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;             
            Запрос.Текст=
  "ВЫБРАТЬ РАЗЛИЧНЫЕ
  | ПланируемыеПоступленияДенежныхСредствОстатки.СуммаВзаиморасчетовОстаток,
  | ПланируемыеПоступленияДенежныхСредствОстатки.Сделка,
  | ЗаказыПокупателейОстатки.ЗаказПокупателя,
  | ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетовОстаток1
  |ПОМЕСТИТЬ расчет1
  |ИЗ
  | РегистрНакопления.ПланируемыеПоступленияДенежныхСредств.Остатки КАК ПланируемыеПоступленияДенежныхСредствОстатки
  | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки
  | ПО ПланируемыеПоступленияДенежныхСредствОстатки.Сделка = ЗаказыПокупателейОстатки.ЗаказПокупателя
  |;
  |
  |////////////////////////////////////////////////////////////////////////////////
  |ВЫБРАТЬ
  | расчет1.СуммаВзаиморасчетовОстаток,
  | расчет1.Сделка,
  | расчет1.ЗаказПокупателя,
  | расчет1.СуммаВзаиморасчетовОстаток1
  |ИЗ
  | расчет1 КАК расчет1" ;
   Передано=Запрос.Выполнить().Выбрать();
    Если Передано.НайтиСледующий(Новый Структура("Сделка",ОформлениеСтроки.ДанныеСтроки.Ссылка)) тогда
    СуммаОстаток=Передано.СуммаВзаиморасчетовОстаток;
     Иначе
   СуммаОстаток=0;
   КонецЕсли;
     
           Если ОформлениеСтроки.ДанныеСтроки.Ссылка.СуммаДокумента <= СуммаОстаток Тогда
                  ОформлениеСтроки.ЦветФона = ЦветВажноТусклый;
             Иначе
                  ОформлениеСтроки.ЦветФона =  ЦветОсновнойЯркий;
             КонецЕсли;
 
КонецЦикла;
КонецЕсли;
 

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

     Если ОформлениеСтроки.ДанныеСтроки.Ссылка.СуммаДокумента <= СуммаОстаток Тогда
  ОформлениеСтроки.ЦветФона = ЦветОсновнойТусклый;
     Иначе
  ОформлениеСтроки.ЦветФона =  ЦветОсновнойЯркий;
     КонецЕсли;
  КонецЦикла;   
 


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



Оффлайн MuI_I_Ika

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6558
  • РЕПУТАЦИЯ: 775
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С
Судя по всему у вас по результату третьего запроса все цвета перебиваются только на зеленый или желтый других не предусмотрено. Отсюда и проблема.

Если ОформлениеСтроки.ДанныеСтроки.Ссылка.СуммаДокумента <= СуммаОстаток Тогда
                  ОформлениеСтроки.ЦветФона = ЦветОсновнойТусклый;
             Иначе
                  ОформлениеСтроки.ЦветФона =  ЦветОсновнойЯркий;
             КонецЕсли;

Нужно предусмотреть случай, когда будет оставаться красный цвет.

Еще было бы логично объединить 3 запроса в 1 и тогда вообще проблем не будет.

Оффлайн Dimon777

  • *
  • Сообщений: 23
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
да я знаю что проблема в том что все цвета перебиваются... в том то и вопрос, как сделать так чтоб они не перебивались???

Оффлайн Dimon777

  • *
  • Сообщений: 23
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
здравствуйте! помогите пожалуйста. делаю подсвечивание документов, красным должники а желтым выделяются те документы на которых нет реализации, но есть заказ покупателя, планируемое поступление, есть приходн.касс.ордер или плат.поручение., а те документы у которых есть закрытие никак не подсвечиваю.
проблема вот в чем: без третьего запроса все работает, должники красные, остальные зеленые... но вот когда третий запрос то красный цвет не работает а подсвечивается все документы, на которых нет реализации желтым... в общем работает либо то, либо то... что делать в такой ситуации??? подскажите пожалуйста!!!
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
   
       
Если франВспомогательный.ПолучитьЗначениеНастройки(глЗначениеПеременной("глТекущийПользователь"),
        ПланыВидовХарактеристик.НастройкиПользователей.ЦветовоеВыделениеЛУРВ) Тогда
        ЦветВажноТусклый = Новый Цвет(255, 199, 204); // красный
        ЦветОсновнойЯркий = Новый Цвет(205, 250, 250); // зеленый
         ЦветОсновнойТусклый = Новый Цвет( 255, 255, 0); // желтый
         
                Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
            МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
            Запрос = Новый Запрос;
            Запрос.УстановитьПараметр("Сделка", ОформлениеСтроки.ДанныеСтроки.Ссылка);
            Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;             
            Запрос.Текст="ВЫБРАТЬ РАЗЛИЧНЫЕ
                         |    РасчетыСКонтрагентамиОстатки.Сделка,
                         |    РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК Сумма
                         |ПОМЕСТИТЬ Расчеты
                         |ИЗ
                         |    РегистрНакопления.РасчетыСКонтрагентами.Остатки КАК РасчетыСКонтрагентамиОстатки
                         |;
                         |
                         |////////////////////////////////////////////////////////////////////////////////
                         |ВЫБРАТЬ
                         |    Расчеты.Сделка,
                         |    Расчеты.Сумма
                         |ИЗ
                         |    Расчеты КАК Расчеты";
           Передано=Запрос.Выполнить().Выбрать();
           Если Передано.НайтиСледующий(Новый Структура("Сделка",ОформлениеСтроки.ДанныеСтроки.Ссылка)) тогда
            СуммаОстаток=Передано.Сумма;
             Иначе
           СуммаОстаток=0;
           КонецЕсли;
           
            Передано.Сбросить();

             Если ОформлениеСтроки.ДанныеСтроки.Ссылка.СуммаДокумента <= СуммаОстаток Тогда
                  ОформлениеСтроки.ЦветФона = ЦветВажноТусклый;
             Иначе
                  ОформлениеСтроки.ЦветФона =  ЦветОсновнойЯркий;
             КонецЕсли;
         КонецЦикла;
         
         
         
         
         
     
                 
         
         
            Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
            МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
            Запрос = Новый Запрос;
            Запрос.УстановитьПараметр("Сделка", ОформлениеСтроки.ДанныеСтроки.Ссылка);
            Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;             
            Запрос.Текст=
      "ВЫБРАТЬ РАЗЛИЧНЫЕ
      |    ПланируемыеПоступленияДенежныхСредствОстатки.СуммаВзаиморасчетовОстаток,
      |    ПланируемыеПоступленияДенежныхСредствОстатки.Сделка,
      |    ЗаказыПокупателейОстатки.ЗаказПокупателя,
      |    ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетовОстаток1
      |ПОМЕСТИТЬ расчет1
      |ИЗ
      |    РегистрНакопления.ПланируемыеПоступленияДенежныхСредств.Остатки КАК ПланируемыеПоступленияДенежныхСредствОстатки
      |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки
      |        ПО ПланируемыеПоступленияДенежныхСредствОстатки.Сделка = ЗаказыПокупателейОстатки.ЗаказПокупателя
      |;
      |
      |////////////////////////////////////////////////////////////////////////////////
      |ВЫБРАТЬ
      |    расчет1.СуммаВзаиморасчетовОстаток,
      |    расчет1.Сделка,
      |    расчет1.ЗаказПокупателя,
      |    расчет1.СуммаВзаиморасчетовОстаток1
      |ИЗ
      |    расчет1 КАК расчет1" ;
       Передано=Запрос.Выполнить().Выбрать();
        Если Передано.НайтиСледующий(Новый Структура("Сделка",ОформлениеСтроки.ДанныеСтроки.Ссылка)) тогда
            СуммаОстаток=Передано.СуммаВзаиморасчетовОстаток;
             Иначе
           СуммаОстаток=0;
       КонецЕсли;
                 
           Если ОформлениеСтроки.ДанныеСтроки.Ссылка.СуммаДокумента <= СуммаОстаток Тогда
                  ОформлениеСтроки.ЦветФона = ЦветВажноТусклый;
             Иначе
                  ОформлениеСтроки.ЦветФона =  ЦветОсновнойЯркий;
             КонецЕсли;
         
         КонецЦикла;
     КонецЕсли;
               
         
          Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
            МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
            Запрос = Новый Запрос;
            Запрос.УстановитьПараметр("ЗаказПокупателя", ОформлениеСтроки.ДанныеСтроки.Ссылка);
            Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;             
            Запрос.Текст="ВЫБРАТЬ РАЗЛИЧНЫЕ
                         |    ВложенныйЗапрос.Сделка,
                         |    ВложенныйЗапрос.СуммаВзаиморасчетовОстаток,
                         |    ЗаказыПокупателейОстатки.ЗаказПокупателя,
                         |    ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетовОстаток1
                         |ПОМЕСТИТЬ расчет2
                         |ИЗ
                         |    РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки
                         |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                         |            РасчетыСКонтрагентамиОстатки.Сделка КАК Сделка,
                         |            РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетовОстаток
                         |        ИЗ
                         |            РегистрНакопления.РасчетыСКонтрагентами.Остатки КАК РасчетыСКонтрагентамиОстатки) КАК ВложенныйЗапрос
                         |        ПО ЗаказыПокупателейОстатки.ЗаказПокупателя = ВложенныйЗапрос.Сделка
                         |;
                         |
                         |////////////////////////////////////////////////////////////////////////////////
                         |ВЫБРАТЬ
                         |    расчет2.Сделка,
                         |    расчет2.СуммаВзаиморасчетовОстаток,
                         |    расчет2.ЗаказПокупателя,
                         |    расчет2.СуммаВзаиморасчетовОстаток1
                         |ИЗ
                         |    расчет2 КАК расчет2";
           Передано=Запрос.Выполнить().Выбрать();
           Если Передано.НайтиСледующий(Новый Структура("ЗаказПокупателя",ОформлениеСтроки.ДанныеСтроки.Ссылка)) тогда
            СуммаОстаток=Передано.СуммаВзаиморасчетовОстаток;
             Иначе
           СуммаОстаток=0;
           КонецЕсли;
           
            Передано.Сбросить();

             Если ОформлениеСтроки.ДанныеСтроки.Ссылка.СуммаДокумента <= СуммаОстаток Тогда
                  ОформлениеСтроки.ЦветФона = ЦветОсновнойТусклый;
             Иначе
                  ОформлениеСтроки.ЦветФона =  ЦветОсновнойЯркий;
             КонецЕсли;
          КонецЦикла;   
         

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


Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
Для начала надо исправить грубейшую ошибку - запрос в цикле, точнее аж в 3-х циклах. Запрос должен быть один и до цикла!!!
Добавлено: 14 Авг 2013, 09:14

вообще, при более детальном рассмотрении кода оказывается, что запросы в цикле - это еще цветочки.
кроме того там:
1. нет отборов в запросах. тупо выбирается все, далее уже в коде проверяется на равенство текущей ссылке
2. непонятно для чего создаются временные таблицы, которые никак потом не используются
3. в условиях сравнения (для раскраски) получаются данные через точку, хотя их тоже следовало бы получать в запросе

Последний раз редактировалось: mixqn; 14 Авг 2013, 09:14. Причина: Объединение сообщений

Оффлайн boobzx

  • ***
  • Сообщений: 124
  • РЕПУТАЦИЯ: 8
  • КПД: 6%
  • Регистрация: 2013-03-07
  • Сайт: 
  • Профессия: Ученик 1С
А что за база? Хочу попробовать сделать все в одном запросе:)

Оффлайн GRADUS

  • *****
  • Сообщений: 699
  • РЕПУТАЦИЯ: 51
  • КПД: 7%
  • Регистрация: 2013-06-08
  • Сайт: 
  • Профессия: Программист 1С
Для начала надо исправить грубейшую ошибку - запрос в цикле, точнее аж в 3-х циклах. Запрос должен быть один и до цикла!!!
Добавлено: 14 Авг 2013, 09:14

вообще, при более детальном рассмотрении кода оказывается, что запросы в цикле - это еще цветочки.
кроме того там:
1. нет отборов в запросах. тупо выбирается все, далее уже в коде проверяется на равенство текущей ссылке
2. непонятно для чего создаются временные таблицы, которые никак потом не используются
3. в условиях сравнения (для раскраски) получаются данные через точку, хотя их тоже следовало бы получать в запросе

Я ему уже 3 раза это писал, он уверен, что менеджер временных таблиц ускоряет запрос :bleh:
И где то приводил реальный работающий пример, хоть и сделан через опу, но ничего не тележит.

А мой вопрос вот в чем, зачем постоянно плодить темы?

Оффлайн Dimon777

  • *
  • Сообщений: 23
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-08-12
  • Сайт: 
  • Профессия: Ученик 1С
ну если у вас что-то получится скиньте) я вот мучаюсь не получается(

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
Dimon777, зачем тему вторую создали?


Теги:
 

Помогите срочно!! В вкладке "Сервис"--> "Журнал регистрации" отражаются все операции как можно определить сделаны ли операции "задним числом" и как вычислить первоначальную информацию какой расчет поменял на другой?

Автор 2ronРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 4304
Последний ответ 24 Дек 2015, 15:34
от дфтын
Помогите подобрать Back-office и Front-office

Автор avrnskРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 5562
Последний ответ 07 Сен 2010, 12:01
от mohock
Помогите с отчётами в УТ 10.3. (Ведомость по товарам и ведомость по заказам)

Автор chum710Раздел Пользователям "1С - Предприятие 8"

Ответов: 2
Просмотров: 5901
Последний ответ 28 Мар 2012, 13:02
от chum710
Помогите с отчетом "Валовая прибыль"

Автор Dm109Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 4389
Последний ответ 10 Сен 2015, 13:57
от Dm109
помогите с отчетом "характеристики контрагентов"

Автор Vasya PovarРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 1987
Последний ответ 07 Дек 2016, 15:53
от Kironten

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
133 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
61 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
41 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
27 Сообщений
alexandr_ll
23 Сообщений

* Кто онлайн

  • Точка Гостей: 199
  • Точка Скрытых: 0
  • Точка Пользователей: 5
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal