Имя: Пароль:
1C
1С v8
Получить данные регистров на дату
0 Aldnepr
 
28.11.16
15:10
Имеется обработка для 7.7, которая получает остатки товара по ОЛЕ из соотв. регистра одной базы и сравнивает с остатками в текущей. Необходимо теперь эти данные вытягивать из v8 так же по ОЛЕ из 7,7.Подскажите чем заменить вот эти функции:

    Рег = БазаИсточник.CreateObject("Регистры");
    РегОстаткиТМЦ = Рег.ОстаткиТоваров;
//................................................  
         РегОстаткиТМЦ.УстановитьЗначениеФильтра("Фирма",ВыбФирма ,1);
    РегОстаткиТМЦ.УстановитьЗначениеФильтра("Склад", СЗСкладыТиС, 2);
    
    
    
    РегОстаткиТМЦ.ВременныйРасчет();
    Рег.РассчитатьРегистрыНа(ДатаОтчета);
    Рег.РассчитатьРегистрыПО(ДатаОтчета);

      ТЗТиС.Свернуть("Товар", "ОстатокТовара");
1 Cool_Profi
 
28.11.16
15:10
Запросом, разумеется.
2 DrShad
 
28.11.16
15:11
запросом
3 Aldnepr
 
28.11.16
15:43
(2) так полетит?

Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ТоварыНаСкладахОстатки.Количество,
    |    ТоварыНаСкладахОстатки.Номенклатура
    |ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.Остатки(
    |            &ДатаОтч,
    |            Склад = &ВыбСклад

  Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
4 Cool_Profi
 
28.11.16
15:50
(3) Нет. Параметры запроса не заданы.
5 Aldnepr
 
28.11.16
19:17
(4) А так? И как потом выгрузить результаты в Две колонки ТЗ "Кво" и "Номенклатура"


НовЗапрос = Новый Запрос;
НовЗапрос.Текст =
"ВЫБРАТЬ
| ТовОстатки.Номенклатура,
| ТовОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекДата, ) КАК ТовОстатки";
НовЗапрос.УстановитьПараметр("ТекДата", ТекущаяДата());
ВыборкаЗапроса = НовЗапрос.Выполнить().Выбрать();
Пока ВыборкаЗапроса.Следующий() Цикл
КонецЦикла;
6 SergTheGreat
 
29.11.16
17:44
НовЗапрос = Новый Запрос;
НовЗапрос.Текст =
"ВЫБРАТЬ
| ТовОстатки.Номенклатура КАК Номенклатура,
| ТовОстатки.КоличествоОстаток КАК Кво
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекДата, ) КАК ТовОстатки";
НовЗапрос.УстановитьПараметр("ТекДата", ТекущаяДата());
Результат = НовЗапрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
ТЗ = Результат.Выгрузить();
КонецЕсли;
7 Aldnepr
 
29.11.16
19:12
(6) Слепил так- вроде работает, но теперь другая проблема(((
ТЗ.Колонки.Добавить("Товар", Новый ОписаниеТипов("Строка"));
    ТЗ.Колонки.Добавить("ОстатокТовара", Новый ОписаниеТипов("Число"));

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

НовЗапрос.УстановитьПараметр("ТекДата", ТекущаяДата());
Результат=НовЗапрос.Выполнить().Выбрать();

Пока Результат.Следующий()=1 Цикл
    Строка= ТЗ.Добавить();
Строка.Товар= Результат.Номенклатура;
Строка.ОстатокТовара= Результат.КоличествоОстаток;
Сообщить(Строка.Товар+"  "+Строка.ОстатокТовара);
КонецЦикла;
8 Aldnepr
 
29.11.16
19:16
это я в 8 слепил обработку, дабы понять правильно ли получаю данные из регистра- Сообщить() вывело на табло все как надо. Теперь вот пытаюсь из 7,7 по оле запустить этот запрос и получаю кучу "Переменная не определена"!(((

Процедура Подключиться()
      ПутьКбазе1="D:\BASE2\8.3\УТП\1c\tradeentrukr\trener";
      ИмяП=Пользователь;
      пароль=Пароль;
//База8=СоздатьОбъект("V83.ComConnector");
База8=СоздатьОбъект("V83.Application");
    
     БазаИсточник = База8.Connect("File="""+СокрЛП(ПутьКбазе1)+""";Usr="""+СокрЛП(ИмяП)+""";Pwd = """ + СокрЛП(Пароль) + """;");
      Если БазаИсточник=0 Тогда

        Сообщить("Ошибка открытия базы!", "!");

        СтатусВозврата(0);
    
    Иначе

        Сообщить("База v8 удачно подключена");

    КонецЕсли;
    
КонецПроцедуры  


Функция СобираемОстаткиБух()
    Перем Запрос, Текст, ТЗбух;
    
    Запрос= БазаИсточник.NewObject("Запрос");
    
    ТЗБух= БазаИсточник.NewObject("ТаблицаЗначений");
    
    ТЗБух.Колонки.Добавить("Товар", Новый ОписаниеТипов("Строка"));
    ТЗБух.Колонки.Добавить("ОстатокТовара", Новый ОписаниеТипов("Число"));

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

Запрос.УстановитьПараметр("ТекДата", ТекущаяДата());
Результат=Запрос.Выполнить().Выбрать();

Пока Результат.Следующий()=1 Цикл
    Строка= ТЗ.Добавить();
Строка.Товар= Результат.Номенклатура;
Строка.ОстатокТовара= Результат.КоличествоОстаток;
//Сообщить(Строка.Товар+"  "+Строка.ОстатокТовара);
КонецЦикла;
     ТЗБух.Свернуть("Товар", "ОстатокТовара");
      Возврат ТЗБух;
9 Aldnepr
 
29.11.16
19:18
Переменная не определена (ОписаниеТипов)
Переменная не определена (ТЗБух)
Переменная не определена (Запрос)
10 SergTheGreat
 
30.11.16
13:14
А это уже из другой оперы :-)
Тут в двух словах не объяснишь. Ищи на просторах Интернета как надо работать с объектами одной базы, при подключении к ней из другой.