7.7 Помогите с обработкой флагов НеВключатьВпрайс

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем cplusmax, 7 сен 2010.

  1. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Я имею ввиду что нужно использовать отдельные запросы
    1й (уже готов) обрабатываем остатки и грузим их в ТЗ
    2й просто из справочника вытаскиваем все элементы вошедшие в фильтр. Здесть уже выгружать не обязательно. Просто шлепаем по запросу с проверкой. Если не нашли элемент в ТЗ первого запроса значит он нулевой и наоборот
  2. TopicStarter Overlay
    cplusmax
    Offline

    cplusmax Опытный в 1С

    Регистрация:
    7 сен 2010
    Сообщения:
    154
    Симпатии:
    2
    Баллы:
    29
    Вот такой запрос?
    Код:
    "//{{ЗАПРОС(Сформировать)
    |" + СтрПериод +
    "Номенклатура    = Справочник.Номенклатура;
    |Группировка Номенклатура Без Групп все ВошедшиеВЗапрос;"; 
    
    
    Меня смущает вот это: правильно ли "Номенклатура = Справочник.Номенклатура" или нужно "Номенклатура = Справочник.Номенклатура.ПолнНаименование", чтобы получить ссылку на объект справочника?
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вот так получаем ссылку:
    Справочник.Номенклатура.ТекущийЭлемент
  4. TopicStarter Overlay
    cplusmax
    Offline

    cplusmax Опытный в 1С

    Регистрация:
    7 сен 2010
    Сообщения:
    154
    Симпатии:
    2
    Баллы:
    29
    Большое спасибо буду пробовать!
  5. TopicStarter Overlay
    cplusmax
    Offline

    cplusmax Опытный в 1С

    Регистрация:
    7 сен 2010
    Сообщения:
    154
    Симпатии:
    2
    Баллы:
    29
    Вот что получилось:
    Код:
     
    ДатаКонца=ПолучитьДатуТА();	
    СтрПериод = "Период с ДатаКонца по ДатаКонца;"; 
    
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |" + СтрПериод +
    "Фирма            = Регистр.ОстаткиТМЦ.Фирма;             
    |УпрАналитика     = Регистр.ОстаткиТМЦ.Фирма.УпрАналитика;
    |ЮрЛицо         = Регистр.ОстаткиТМЦ.Фирма.ЮрЛицо;
    |Номенклатура    = Регистр.ОстаткиТМЦ.Номенклатура;
    |Склад            = Регистр.ОстаткиТМЦ.Склад;
    |Количество = Регистр.ОстаткиТМЦ.Количество;
    |Функция КоличествоКонОст = КонОст(Количество);
    |Без итогов;
    |Группировка Номенклатура Без Групп все ВошедшиеВЗапрос;"; 
    
    НетОш = 1; // нет ошибок при наложении фильтров
    НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Номенклатура",    "",         "ВыбТМЦ",         ТекстЗапроса, "","СвойстваНоменклатуры");
    НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Склад",           "",       "ВыбСклад",       ТекстЗапроса, "");
    
    Если НетОш = 0 Тогда
    Возврат;
    КонецЕсли;
    те=текстЗапроса;
    Запрос = СоздатьОбъект("Запрос");
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;                               
    КонецЕсли;
    
    Запрос.Выгрузить(тз);
    сз=создатьОбъект("СписокЗначений");
    тз.Выгрузить(сз,,,"Номенклатура");
    
    ТекстЗапроса=
    СтрПериод +
    "Номенклатура    = Справочник.Номенклатура.ТекущийЭлемент;
    |Группировка Номенклатура Без Групп все ВошедшиеВЗапрос;";
    
    НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Номенклатура",    "",         "ВыбТМЦ",         ТекстЗапроса, "","СвойстваНоменклатуры");
    Если Запрос.Выполнить(ТекстЗапроса) =0 Тогда
    Возврат;
    КонецЕсли;
    
    Запрос.Выгрузить(тз1);
    спр=создатьОбъект("Справочник.Номенклатура");
    Пока Запрос.Группировка("Номенклатура")=1 цикл
    Если сз.Принадлежит(Запрос.Номенклатура)=1 Тогда
    Если Запрос.Номенклатура.НеВключатьВпрайс=1 Тогда
    Если спр.НайтиЭлемент(Запрос.Номенклатура)=1 Тогда 
    спр.УстановитьАтрибут("НеВключатьВпрайс",0);
    Спр.Записать();                  
    сообщить("Флаг снят " +Запрос.Номенклатура);
    КонецЕсли;
    КонецЕсли;	 	
    Иначе            
    Если Запрос.Номенклатура.НеВключатьВпрайс=0 Тогда
    Если спр.НайтиЭлемент(Запрос.Номенклатура)=1 Тогда 
    спр.УстановитьАтрибут("НеВключатьВпрайс",1);
    Спр.Записать();                  
    сообщить("Флаг поставлен " +Запрос.Номенклатура);
    КонецЕсли;
    КонецЕсли;	 	
    КонецЕсли;		
    КонецЦикла;	
    
    
    Буду рад советам, комментариям :angry:
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Так проще:
    Код:
    Пока Запрос.Группировка("Номенклатура")=1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">цикл		</span>
    Ключ=?(сз.Принадлежит(Запрос.Номенклатура)=1,0,1); //если есть остаток - нужно включать
    Если Запрос.Номенклатура.НеВключатьВпрайс<>Ключ Тогда
    спр.НайтиЭлемент(Запрос.Номенклатура);
    спр.НеВключатьВпрайс=Ключ;
    Спр.Записать();                  	 			
    сообщить("Флаг "+?(Ключ=1,"установлен","снаят")+" " +Запрос.Номенклатура);	 
    КонецЕсли;	 	    
    КонецЦикла;	
    
    
  7. TopicStarter Overlay
    cplusmax
    Offline

    cplusmax Опытный в 1С

    Регистрация:
    7 сен 2010
    Сообщения:
    154
    Симпатии:
    2
    Баллы:
    29
    Супер! :angry: Возможно и я когда нибудь смогу в нескольких строках уместить то, что пока неполучается!

Поделиться этой страницей