Имя: Пароль:
1C
1С v8
Загружаю табличную часть справочника в скл
0 Мисти
 
28.07.14
18:58
Выгрузка происходит регулярно, в момент изменения справочника, но что именно изменилось - неизвестно, могли ведь и строку удалить! Поэтому при повторной загрузке мне сначала надо пометить все строки таб. части на удаление, а потом загрузить заново. Да?
Вот я что написала, пока не проверяла, похоже на правду?

        ТекстЗапроса = "SELECT 1 FROM gtw_SubwayStationInObject WHERE [ObjectUI1C] = ?";
        Cmd.CommandText = ТекстЗапроса;
        Cmd.Parameters(0).Value = "{"+Строка(ОбъектАренды.Ссылка.УникальныйИдентификатор())+"}";
        Выборка = Cmd.Execute();
        Пока Не  Выборка.EOF() Цикл
            ТекстЗапроса = "update gtw_SubwayStationInObject set ModifiedOn1C= ?,  DoDelete = ? WHERE ObjectUI1C = ?";
            Cmd.CommandText = ТекстЗапроса;
            Cmd.Parameters(0).Value = ТекущаяДата();
            Cmd.Parameters(1).Value = 1;
            Cmd.Parameters(2).Value = "{"+Строка(ОбъектАренды.Ссылка.УникальныйИдентификатор())+"}";
            Cmd.Execute();
        КонецЦикла
1 Мисти
 
28.07.14
19:17
Ау?
2 m-serg74
 
28.07.14
19:38
(0) /пометить все строки таб. части на удаление/

что это?
3 zak555
 
28.07.14
19:40
строку ТЧ можно пометить на удаление ?
4 m-serg74
 
28.07.14
19:41
(3) ТС походу захворала
5 zak555
 
28.07.14
19:41
я так и не пойму откуда/куда загружается ?
6 m-serg74
 
28.07.14
19:41
(5) из 1С в СКЛ походу
7 m-serg74
 
28.07.14
19:42
(0) первый запрос назачем не понятно
8 Мисти
 
28.07.14
19:43
Выгружаю информацию из 1С в скл.
Если я строки в скл не помечу на удаление, то при удалении строки в 1С - в скл она просто не загрузится заново, а старая так и будет болтаться. Там есть поле DoDelete - сначала везде проставлю единичку перед загрузкой, потом, всё, что буду загружать - помечу ноликом, так будет видно, что было удалено.
9 m-serg74
 
28.07.14
19:43
а здесь FROM вроде не хватает, не?
ТекстЗапроса = "update gtw_SubwayStationInObject set ModifiedOn1C= ?,  DoDelete = ? WHERE ObjectUI1C = ?";
10 m-serg74
 
28.07.14
19:44
(8) не помечу на удаление, а не удалю наверное?
11 Мисти
 
28.07.14
19:44
(7) Я загружаю тьолько один объект аренды, соотвественно, я должна пометить единичкой только его табличную часть.
12 m-serg74
 
28.07.14
19:45
(11) а второй WHERE делает не тоже самое?
13 Мисти
 
28.07.14
19:46
Ну как бы да, но тут я уверена, что я его нашла.
А как надо-то?
14 Мисти
 
28.07.14
19:47
Я могу написать update, если строка не найдется?
15 m-serg74
 
28.07.14
19:47
(13) только FROMа думаю не хватает, и не знаю надо ли делать это не средствами 1С
            ТекстЗапроса = "update gtw_SubwayStationInObject set ModifiedOn1C= ?,  DoDelete = ? WHERE ObjectUI1C = ?";
            Cmd.CommandText = ТекстЗапроса;
            Cmd.Parameters(0).Value = ТекущаяДата();
            Cmd.Parameters(1).Value = 1;
            Cmd.Parameters(2).Value = "{"+Строка(ОбъектАренды.Ссылка.УникальныйИдентификатор())+"}";
            Cmd.Execute();
16 m-serg74
 
28.07.14
19:48
(14) не найдется значит и не сделается ничего
17 Мисти
 
28.07.14
19:48
(10) DoDelete - это вроде не удаление, а просто поле, которое потом загрузчиками трактуется как пометка на удаление.
18 Мисти
 
28.07.14
19:49
Куда FROM писать?
19 m-serg74
 
28.07.14
19:49
(17) так так и надо было писать - как заполнить поле, ибо пометка удаления в 1С кагбэ определенное понятие подразумевает стандартное
20 m-serg74
 
28.07.14
19:50
(18) куда то в этом интервале:
"update gtw_SubwayStationInObject set ModifiedOn1C= ?,  DoDelete = ? WHERE ObjectUI1C = ?";
21 Мисти
 
28.07.14
19:50
В 1с просто строку удалили - никакой пометки нет.
22 Мисти
 
28.07.14
19:51
Вроде у меня куски аналогичные без   FROM работали.
23 m-serg74
 
28.07.14
19:51
24 m-serg74
 
28.07.14
19:52
(21) и?
25 m-serg74
 
28.07.14
19:53
+(23) оттуда пример
UPDATE dbo.Table2
SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB
FROM dbo.Table2
    INNER JOIN dbo.Table1
    ON (dbo.Table2.ColA = dbo.Table1.ColA);
26 Мисти
 
28.07.14
19:53
15 - так мне надо все строки пометить, где цикл?
Или сразу во все и встанет единица?
27 m-serg74
 
28.07.14
19:54
(26) какой цикл?
28 m-serg74
 
28.07.14
19:55
(26) where отберет все что подходит а set поменяет, а update запишет
29 Мисти
 
28.07.14
19:55
У меня в (0).
Т.е. запись происходит сразу во все подходящие строки?
30 m-serg74
 
28.07.14
19:56
(29) что в (28) непонятного?
31 Мисти
 
28.07.14
19:58
(30) Понятно, но удивительно! В 1С так не бывает.
32 m-serg74
 
28.07.14
20:37
(31) а как НаборЗаписей.Записать() работает по твеому?
2 + 2 = 3.9999999999999999999999999999999...