Имя: Пароль:
1C
1С v8
Таблица значений не могу обработать
0 Aldnepr
 
28.03.17
12:18
Есть такая задача. Выгрузить остатки из 7,7 в таблицу значений (ТЗТиС) через COM-соединение,и с v8 в другую ТЗ (ТЗБух). Затем объеденить их по колонке "Код" (КодТовара) и сравнить. С V8 все выгрузил, а с 7,7 не могу понять как быть. Если создаю ТЗ в 7,7
ТЗТиС        = БазаИсточник.CreateObject("ТаблицаЗначений");
тогда не могу обработать эту таблицу в восьмерке выдает- ( Итератор для значения не определен).
Если создаю эту ТЗ в V8, тогда не получается применить к ней функцию выгрузки остатков из 7,7
РегОстаткиТМЦ.ВыгрузитьИтоги(ТЗТиС,1,0);
как правильно сделать?
1 mkalimulin
 
28.03.17
12:29
(0) Обходи таблицу без итератора. Циклом "пока следующий()" или "для".
2 youalex
 
28.03.17
12:35
(0) >не могу обработать эту таблицу в восьмерке выдает...
Пока ТЗТиС.ПолучитьСтроку() =1  Цикл
3 СвинТуз
 
28.03.17
12:41
Зачем писать самому если есть конвертация?
4 Aldnepr
 
28.03.17
13:09
(1) так я и обходил Для Каждого ТекСтр из ТЗТиС Цикл
5 Aldnepr
 
28.03.17
13:12
(2) я наверное неправильно вытягиваю остатки из 7,7 вот этой функцией: РегОстаткиТМЦ.ВыгрузитьИтоги(ТЗТиС,1,0);
Видимо нужно запросом к регистру брать и загружать построчно в ТЗ созданную в 8ке верно нет?
6 Aldnepr
 
28.03.17
13:13
(3) мне не переносить нужно а сравнивать остатки в действующих базах 7,7 и 8
7 Сияющий Асинхраль
 
28.03.17
14:01
Тебе еще в (2) показали как надо сделать, вариант (4) будет работать только для восьмерки, а ты работаешь с семеркой по COM, там восьмерочный код не работает. Хотя, если бы я это делал (а я и делал так, причем не один раз) то просто выгрузил бы из одной базы остатки в текстовом файле (ну, или в dbf) загрузил бы этот файл в другую базу и сравнил бы остатки, это работает быстрее, чем по COM особливо при большом количестве номенклатуры
8 Aldnepr
 
29.03.17
10:00
(7) А отличаются ли ТЗ созданные в 7,7 и в 8? Т.е. Если я создаю ТЗ в 7.7 через БазаИсточник.CreateObject("ТаблицаЗначений");  то работать с ней можно только методами 7,7, а методы восьмерки не работают?
9 DrZombi
 
гуру
29.03.17
10:10
(8) нет сынок, это фантастика :)

ТЗ лучше создать там, где работаешь.
Из ОЛЕ подтянуть простые данные, Код, наименование, число и дату.
Колдуешь с ТЗ и потом делаешь все что только нужно... используя Код, наименования и другие признаки идентификатора данных в бд ОЛЕ :)
10 DrZombi
 
гуру
29.03.17
10:14
+(8)  у 7.7 нет кома, есть ОЛЕ... а это так еще головная боль :)
11 Aldnepr
 
29.03.17
10:18
(10) ну доки по оле перебрасываются легко, справочники тоже проблем не было( и туда и сюда). А вот с регистрами не прет((. Вот пробую так -не заполняет таблицу, может подскажешь?

ТЗТиС= Новый ТаблицаЗначений;
    ТЗТиС.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
    ТЗТиС.Колонки.Добавить("Товар", Новый ОписаниеТипов("Строка"));
    ТЗТиС.Колонки.Добавить("ОстатокТовара", Новый ОписаниеТипов("Число"));

//    ТЗТиС        = БазаИсточник.CreateObject("ТаблицаЗначений");
    Рег            = БазаИсточник.CreateObject("Регистры");
    РегОстаткиТМЦ = Рег.ОстаткиТоваров;
    РегОстаткиТМЦ.УстановитьЗначениеФильтра("Фирма",ТОВ ,1);
    //РегОстаткиТМЦ.УстановитьЗначениеФильтра("Склад", СЗСкладыТиС, 2);
    
    
    
    РегОстаткиТМЦ.ВременныйРасчет();
    Рег.РассчитатьРегистрыНа(ДатаОтчета);
    
      
       РегОстаткиТМЦ.ВыгрузитьИтоги(ТЗТиС,1,0);    
       ТЗТиС.Свернуть("Товар", "ОстатокТовара");
12 Aldnepr
 
29.03.17
10:19
может дату с 8 не понимает 7,7?
13 h-sp
 
29.03.17
10:20
(11) так таблица семерочная должна быть. как в (0)

ТЗТиС        = БазаИсточник.CreateObject("ТаблицаЗначений");
14 Aldnepr
 
29.03.17
10:23
(13) а (9) говорит что по барабану и лучше чтоб в 8 была создана. Я сперва делал как в (0) но тогда не могу применить к этой ТЗ методы 8 а именно ЭТО:

Для Каждого ТекущаяСтрока из ТЗТиС  Цикл
            Если ТекущаяСтрока.ОстатокТовара = " " Тогда
            Продолжить;
        КонецЕсли;
            ОбластьСтрокаКод.Параметры.КодТиС = ТекущаяСтрока.Код;
            ОбластьСтрокаТиС.Параметры.ТоварТиС = ТекущаяСтрока.Товар;
            ОбластьСтрокаТиС.Параметры.ОстатокТиС = ТекущаяСтрока.ОстатокТовара;
            Таб.Вывести(ОбластьСтрокаКод);
            Таб.Присоединить(ОбластьСтрокаТиС);
15 h-sp
 
29.03.17
10:25
(14) (13) шутит. Даже между двумя восьмерочными базами такое не работает, а вы хотите, чтобы 7.7.
16 h-sp
 
29.03.17
10:25
(15) то есть (9) шутит
17 Aldnepr
 
29.03.17
10:29
(16) так это сусанин тогда не шутник получается. Так что я рав получается, если создаю ТЗ в  7,7 то восьмерочными методами уже ее не обработать. Как же решить тогда эту задачу?
18 h-sp
 
29.03.17
10:32
(17) почему не обработать? обрабатывай семерочными методами.
19 Aldnepr
 
29.03.17
10:37
(18) у меня одна ТЗ заполняется остатками из 7,7 другая остатками из 8. Далее они сравниваются и сворачиваются по колонке "Код" и таким образом сравниваются остатки. У меня есть такая обработка которая работала между базами 7,7, а после перевода одну на 8 возникла необходимость переделки
20 h-sp
 
29.03.17
10:38
(17) почему Товар строка? Это же справочник.
21 Aldnepr
 
29.03.17
10:39
(18) пробовал из 7,7 доставать остатки восьмерки- но там 7,7 не понимает формат даты  8
22 Aldnepr
 
29.03.17
10:41
(20) но я же "лезу" в 7.7 как я могу там задать "справочник".Кстати если заполнять такую ТЗ в 8 то нормально выводит наименование в эту колонку
23 VladZ
 
29.03.17
10:42
(0) Не можешь сделать через КОМ - не используй его. Работай через файлы.
24 Aldnepr
 
29.03.17
10:43
(23) прийдется видимо(. Хотел для бухов сделать- нажми на кнопку и получишь результат, как они умеют))
25 h-sp
 
29.03.17
10:43
(22) но откуда такая мысль тогда, что  РегОстаткиТМЦ.ВыгрузитьИтоги(ТЗТиС,1,0); туда строки начнет пихать? Сто процентов она ссылки на справочники запишет туда.
26 Aldnepr
 
29.03.17
10:47
(25) пробовал через запрос- пихает но криво не могу отфильтровать остатки по нужной мне фирме
ЗапросПартии = БазаИсточник.CreateObject("Запрос");

ТекстЗапросаПартии =
"//{{ЗАПРОС(Сформировать)
|Период с '" + СтрДата + "' по '" + СтрДата + "';
|Фирма = Регистр.ОстаткиТоваров.Фирма.Код;
|КодСклада = Регистр.ОстаткиТоваров.Склад;
|Товар = Регистр.ОстаткиТоваров.Товар;
|Количество = Регистр.ОстаткиТоваров.ОстатокТовара;
|Функция КоличествоКонОст = КонОст(Количество);
//|Условие(Фирма = """+ТОВ+""");
//|Условие(КодСклада=Константа.ОсновнойСклад) ;
|Группировка Товар;
|"//}}ЗАПРОС
;

//Если ЗначениеЗаполнено(Склад) Тогда
    //ТекстЗапросаПартии = ТекстЗапросаПартии + "Условие(КодСклада = """ + СокрЛП(Склад.Код) + """);"    
//КонецЕсли;
//Если ЗначениеЗаполнено(Склад) Тогда
    ТекстЗапросаПартии = ТекстЗапросаПартии + "Условие(Фирма = """+БазаИсточник.Константа.ОсновнаяФирма.Код+""");"    ;