Имя: Пароль:
1C
1С v8
Дата записи номенклатуры
, ,
0 tolok_d
 
29.01.13
16:58
Уважаемые, подскажите, у меня есть два прайса. Нужно их сверить. Придумал так:
1. Если есть товар с таким артикулом, то перемещаем его в архив, и запичываем новый вместо его.
2. Если товара с таким артикулом нет, то просто записываем.
3. Но вот никак не могу придумать как удалить те элемены из номенклатуры, которые были в старом прайсе, но нет в новом.
Подскажите метод или ход мысли. Очень благодарен.
1 Wobland
 
29.01.13
17:00
Если БылиВСтаром() И НЕ ЕстьВНовом() Тогда
Удалить();
КонецЕсли;

на здоровье
2 tolok_d
 
29.01.13
17:00
по поводу названия темы... Нет ли возможности посмотреть дату записи номенклатуры. Проверяя дату, я бы поудалял лишнее. Спасибо
3 Reset
 
29.01.13
17:00
Если продолжать логику пункта 1, то "перемещаем его в архив" без записывания нового :)
4 tolok_d
 
29.01.13
17:01
(1) Прайс огромнейший. и находится в Эксель. Программа и так минуты 2 работает, а если будет сравнивать строку с экселя с элементом номенклатуры, то боюсь предположить сколько ждать будем(
5 mikecool
 
29.01.13
17:02
(4) прочитай ексель в тз, а потом сравнивай
6 tolok_d
 
29.01.13
17:02
(3) елы-палы... мне стыдно. Спасибо огромное. Ужасно стыдно...
7 Kreont
 
29.01.13
17:02
(4) Качни всю номенклатуру из екселя в ТЗ, а потом пиши запросы через ВТ
8 tolok_d
 
29.01.13
17:06
(3)а нет, не стыдно. Не сходится немного. Я проверяю каждую строку Экселя с номенклатурой. Просто к этому старому элементу я вообще не обращусь. А сравнивать элемент номенклатуры с каждой строкой Экселя это будет ужасно долго через КОМобъект
9 Reset
 
29.01.13
17:08
(8) Это не долго, если конечно циклом справочник не перебирать.
См (5)(7)
10 tolok_d
 
29.01.13
17:09
(5) (7) да, это как вариант.
Скажите, а метод ЭтоНовый() он проверяет не было ли записи в БД? или как?
И еще в УТП есть в Планах обмена такая штука как ПланОбменаССайтом. Так, как я понимаю, там сравнивается подобно как и у меня. Или я ошибаюсь
11 Aleksey
 
29.01.13
17:10
(0) Файл-> сравнит файлы
12 tolok_d
 
29.01.13
17:10
(9) Ну наверное так и сделаю. Спасибо
13 tolok_d
 
29.01.13
17:14
(11) что это? Обьясните если не сложно
14 Maxus43
 
29.01.13
17:17
>>Нет ли возможности посмотреть дату записи номенклатуры
теоритически есть, но врятли подойдёт точность, да и к задаче в целом
15 Eugene_life
 
29.01.13
17:21
(0) А просто тупо очистить прайс (все в архив) и загрузить по-новой - не оно?
16 tolok_d
 
29.01.13
17:22
(14) а как, хоть для общего развития мне скажите))
17 tolok_d
 
29.01.13
17:24
(15) сам вот только что к этому дошел)) тоесть:
1)убираем все в архив
2)запиываем с проверкой:
  а)если в архиве такой артикул есть, то удаляем из архива этот элемент
  б)если нет, значит нет)
вроде так))
18 Maxus43
 
29.01.13
17:25
(16) есть мнение что гуид ссылки содержит в себе время создания. Но многие не согласны. Так что в поиск
19 Serg_1960
 
29.01.13
17:26
(16) Для общего развития :)

Функция ДатаСозданияСсылки(Ссылка)
   ГУИД = Ссылка.УникальныйИдентификатор();
   Строка16 = Сред(ГУИД, 16, 3) + Сред(ГУИД, 10, 4) + Сред(ГУИД, 1, 8);
   Разрядность = СтрДлина(Строка16);
   ЧислоСек = 0;
   Для Позиция = 1 По Разрядность Цикл
       ЧислоСек = ЧислоСек + Найти("123456789abcdef",Сред(Строка16,Позиция,1))*Pow(16,Разрядность - Позиция);
   КонецЦикла;
   ЧислоСек = ЧислоСек / 10000000;
   Возврат Дата(1582, 10, 15, 04, 00, 00) + ЧислоСек;
КонецФункции
20 tolok_d
 
29.01.13
17:26
всем огромное спасибо)) действительно очень помогли))
21 tolok_d
 
29.01.13
17:27
(18)(19) оооо, ништячок)) спасибо)))
22 Maxus43
 
29.01.13
17:29
(21) фирма 1с против такого использования. САМ писал на партнёрском форуме
23 Serg_1960
 
29.01.13
17:29
(17) А если ещё подумать? Например:

а) Помечаем на удаление все записи справочника;
б) Сканируем новый прайс и отменяем пометку у найденных записей.

В итоге: Записи, отсутствующие в новом прайсе, помечены на удаление.
24 Serg_1960
 
29.01.13
17:31
(22) Я - в курсе, а ТС - предупредили в (14).
25 tolok_d
 
29.01.13
17:55
(24) хм. Действительно лучьше)) спасибо