Имя: Пароль:
1C
1C 7.7
v7: выбрать Группу Номенклатуры через ОЛЕ
0 Popkorm
 
16.04.12
14:24
Не получается выбрать Группу Номенклатуры,и затем засунуть его в запрос:
       НомГруппа = V7.CreateObject("Справочник.Номенклатура");
   НомСклад  = V7.CreateObject("Справочник.Склады");
   
   КодГруппа = "00000002";
   НомГруппа.ВыборГруппы(1);
   НомГруппа.ВыбратьЭлементы();
   Если НомГруппа.НайтиПоКоду(КодГруппа) = 1 Тогда
       Если НомГруппа.ЭтоГруппа()= 1 Тогда;
           ВыбранКод = НомГруппа.ТекущийЭлемент().Наименование;
       Иначе
           Сообщить(ОписаниеОшибки());
       КонецЕсли;
   Иначе
       Сообщить(ОписаниеОшибки());
   КонецЕсли;
   
   КодДоватораСклад = "00001";
   Если НомСклад.НайтиПоКоду(КодДоватораСклад) = 1 Тогда
       НужныйСклад = НомСклад.Наименование;
   Иначе
       Сообщить(ОписаниеОшибки());
   КонецЕсли;
   
   Запрос = V7.CreateObject("Запрос");
       ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с '"+ДатаКонец+"' по '"+ДатаКонец+"';
   |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
   |Код = Регистр.ОстаткиТМЦ.Номенклатура.Код;
   |Количество = Регистр.ОстаткиТМЦ.Количество;
   |Склад = Регистр.ОстаткиТМЦ.Склад;
   |Функция КоличествоКонОст = КонОст(Количество);
   |Группировка Номенклатура;
   |Условие(Номенклатура в '"+ВыбранКод+"');
   |Условие(Склад = '"+НужныйСклад+"');
   |"//}}ЗАПРОС
   ;

Вижу только один вариант, в цикле отбором получить
1 Cube
 
16.04.12
14:26
ЗначениеВСтрокуВнутр()?
2 Popkorm
 
16.04.12
14:29
(1) и куда её?!
3 PuhUfa
 
16.04.12
14:34
Зачем: НомГруппа.ВыбратьЭлементы();
если делаешь поиск по коду?
Что ты хочешь увидеть вот этим: Сообщить(ОписаниеОшибки()); ?
4 Popkorm
 
16.04.12
14:37
(3)если не трудно,дай свой вариант
5 dk
 
16.04.12
14:39
как все запущено
куда с такими знаниями в ОЛЕ лезть?
6 dk
 
16.04.12
14:40
потренируйся не по ОЛЕ сначала
7 Popkorm
 
16.04.12
14:40
(5)ну с 7.7 недавно начал дружить
8 dk
 
16.04.12
14:42
можно подумать в такой запрос в 8-ке нормально отработает ))
ссылку от наименования надо отличать в условиях запроса
9 PuhUfa
 
16.04.12
14:52
КодГруппа = "00000002";
Если НомГруппа.НайтиПоКоду(КодГруппа) = 1 Тогда
 ВыбранКод = НомГруппа.ТекущийЭлемент();
иначе
 сообщить("Нету такой группы... видимо сперли вместе с договором...","!!!");
КонецЕсли;
КодДоватораСклад = "00001";
Если НомСклад.НайтиПоКоду(КодДоватораСклад) = 1 Тогда
 НужныйСклад = НомСклад.ТекущийЭлемент();
Иначе
 Сообщить("Упс!","!!!");
КонецЕсли;
10 Popkorm
 
16.04.12
15:06
(9)не отрабатывает:

   КодГруппа = "00000002";
   Если НомГруппа.НайтиПоКоду(КодГруппа) = 1 Тогда
       Если НомГруппа.ЭтоГруппа()= 1 Тогда;
           ВыбранКод = НомГруппа.ТекущийЭлемент();
       Иначе
           Сообщить(ОписаниеОшибки());
       КонецЕсли;
   КонецЕсли;
   
   КодДоватораСклад = "00001";
   Если НомСклад.НайтиПоКоду(КодДоватораСклад) = 1 Тогда
       НужныйСклад = НомСклад.ТекущийЭлемент();
   Иначе
       Сообщить(ОписаниеОшибки());
   КонецЕсли;
   
   Запрос = V7.CreateObject("Запрос");
       ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с '"+ДатаКонец+"' по '"+ДатаКонец+"';
   |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
   |Код          = Регистр.ОстаткиТМЦ.Номенклатура.Код;
   |Количество   = Регистр.ОстаткиТМЦ.Количество;
   |Склад        = Регистр.ОстаткиТМЦ.Склад;
   |Функция КоличествоКонОст = КонОст(Количество);
   |Группировка Номенклатура;
   |Условие(Номенклатура в '"+ВыбранКод+"');
   |Условие(Склад = '"+НужныйСклад+"');
   |"//}}ЗАПРОС
   ;
   
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;
       
   ТабЗагрузка=Новый ТаблицаЗначений;    
   ТабЗагрузка=Новый ТаблицаЗначений;    
   ТабЗагрузка.Колонки.Добавить("Номенклатура");
   ТабЗагрузка.Колонки.Добавить("Код");
   ТабЗагрузка.Колонки.Добавить("КонОстаток",Новый ОписаниеТипов("Число"));
   
   Запрос.вНачалоВыборки();
       Пока Запрос.Группировка("Номенклатура") = 1 Цикл
           Если ЗначениеЗаполнено(Запрос.Код) Тогда
               КонОстатокБаза   = Запрос.КоличествоКонОст;
               КонОстатка       = Число(Прав(КонОстатокБаза,8));
               Если КонОстатка > 0 Тогда
                   Новстр =ТабЗагрузка.Добавить();
                   ОфигенныйКод = Строка(Запрос.Код);
                   Новстр.Код          =  "TD_"+ОфигенныйКод;
                   Новстр.Номенклатура = Строка(Запрос.Номенклатура);
                   Новстр.КонОстаток   = КонОстатка;
               КонецЕсли;
           КонецЕсли;
       КонецЦикла;

ссылку надо получить для ВыбранКод
11 PuhUfa
 
16.04.12
15:09
Возьми теперь отладчик и посмотри что у тебя в первом Если
12 Popkorm
 
16.04.12
15:19
(11) http://clip2net.com/s/1OzeU
если добавить Код
http://clip2net.com/s/1OzfD
13 Popkorm
 
16.04.12
15:24
и так тож не работает:
НомГруппа.ИспользоватьРодителя(НомГруппа.ТекущийЭлемент())
14 Popkorm
 
16.04.12
15:47
не будут вариантов?!
15 Креатив
 
16.04.12
17:34
(14)В чём у тебя проблема: найти значение группы или подставить его в запрос?
16 Popkorm
 
17.04.12
08:58
(15)и то и другое,то есть находит саму группу,а нужно группу со всеми элементами справочника..
17 Popkorm
 
17.04.12
11:05
(16)+ и эту группу подставить в запрос