Имя: Пароль:
1C
1C 7.7
v7: Не записывает элемент справочника
0 irina_pi
 
09.12.13
14:40
Не записывается элемент справочника. Когда смотрю отладчиком, то  в строке Спр.КорректныйАртикул=КорректныйАртикул, значение Спр.КорректныйАртикул указывается правильное. Как только перехожу на следующую строку, то это значение опять пустое.


Спр=СоздатьОбъект("Справочник.Номенклатура");  
    
     Если   Спр.найтиПоКоду(Код,0)=1 тогда
         если КорректныйАртикул <>"НЕЗАПОЛНЕНО" тогда
             Спр.КорректныйАртикул=КорректныйАртикул;               
         КонецЕсли;
         если СостояниеНоменклатуры <>"НЕЗАПОЛНЕНО" тогда
             Спр.СостояниеНоменклатуры=СостояниеНоменклатуры;              
         КонецЕсли;
         если КодИБ <>"НЕЗАПОЛНЕНО" тогда
             Спр.КодИБ=КодИБ;             
         КонецЕсли;
         если ИдентификаторБазыНоменклатуры <>"НЕЗАПОЛНЕНО" тогда
             Спр.ИдентификаторБазыНоменклатуры=ИдентификаторБазыНоменклатуры;
         КонецЕсли;
         СПР.Записать();         
     Конецесли;
1 Happy Bear
 
09.12.13
14:42
(0) народ на мисте на продеже СП уже озолотился))
2 КонецЦикла
 
09.12.13
14:44
Ирина_Пи, где это все происходит, что за следующая строка?
3 irina_pi
 
09.12.13
14:47
(2)после Спр.КорректныйАртикул=КорректныйАртикул;
4 Ёпрст
 
гуру
09.12.13
14:48
(3) типы не совпадают.
5 Ёпрст
 
гуру
09.12.13
14:49
КорректныйАртикул - реквизит какого типа ?
Не периодический, случаем ?
6 irina_pi
 
09.12.13
14:49
(4) Совпадают. Везде строка.
7 mikecool
 
09.12.13
14:50
(6) одна из черепашек врет, чудес не бывает
8 irina_pi
 
09.12.13
14:50
(5) Нет :)
9 Fish
 
гуру
09.12.13
14:50
(6) А чему равно значение КорректныйАртикул?
10 Happy Bear
 
09.12.13
14:52
Ребята совсем клюшки забыли.
ТекущийЭлемент() тебе в помощь.
11 irina_pi
 
09.12.13
14:53
(9) например "006R00914"
12 mikecool
 
09.12.13
14:54
(10) и как  он поможет?
13 irina_pi
 
09.12.13
14:54
Так тоже не работает

Спр=СоздатьОбъект("Справочник.Номенклатура");  
    
     Если   Спр.найтиПоКоду(Код,0)=1 тогда
Спр.ТекущийЭлемент();
         если КорректныйАртикул <>"НЕЗАПОЛНЕНО" тогда
             Спр.КорректныйАртикул=КорректныйАртикул;              
         КонецЕсли;
         если СостояниеНоменклатуры <>"НЕЗАПОЛНЕНО" тогда
             Спр.СостояниеНоменклатуры=СостояниеНоменклатуры;              
         КонецЕсли;
         если КодИБ <>"НЕЗАПОЛНЕНО" тогда
             Спр.КодИБ=КодИБ;            
         КонецЕсли;
         если ИдентификаторБазыНоменклатуры <>"НЕЗАПОЛНЕНО" тогда
             Спр.ИдентификаторБазыНоменклатуры=ИдентификаторБазыНоменклатуры;
         КонецЕсли;
         СПР.Записать();        
     Конецесли;
14 mikecool
 
09.12.13
14:54
(13) так вообще не делай )
15 mikecool
 
09.12.13
14:55
(0) автор, что у тебя в табло открыто? небось что то типа спр = ""???
16 irina_pi
 
09.12.13
14:57
(15) нет. что-то типа Спр = C4848A №80 Картридж HP DJ 1000/1050C/1055CM, orig, yellow, 4400стр. (ПУСХНС)
17 Ёпрст
 
гуру
09.12.13
14:57
Тогда закрой отладчик и спи спойокйно, всё должно записываться, если условия проходят.
18 mikecool
 
09.12.13
14:58
(16) удали вообще все упоминания про Спр из табло
19 irina_pi
 
09.12.13
14:59
КорректныйАртикул = "C4848A"
Спр.КорректныйАртикул = "C4848A             "

Это когда стою на строке Спр.КорректныйАртикул=КорректныйАртикул;        
Когда переходит на следующую строку, то
КорректныйАртикул = "C4848A"
Спр.КорректныйАртикул = "                 ";
20 mikecool
 
09.12.13
15:00
(19) табло очистила?
21 irina_pi
 
09.12.13
15:02
(20) как это поможет в работе обработки?
22 hhhh
 
09.12.13
15:03
(19) ну значит,

Спр.КорректныйАртикул = "C4848A             "

это у вас до записи, раз вы стоите на строке.

А вы нам лапшу вешаете, что после записи.
23 Ёпрст
 
гуру
09.12.13
15:04
(21) закрой табло , или лучше жуколов. У тебя всё работает.
24 mikecool
 
09.12.13
15:04
(21) потому что смотри (7)
25 palpetrovich
 
09.12.13
15:04
Оберни СПР.Записать();   в Попытку с расшифровкой Исключения
26 Ёпрст
 
гуру
09.12.13
15:04
мешает код в отладчике в табло, который.
27 irina_pi
 
09.12.13
15:06
(22) до этого пустое
(25) с попыткой тоже самое
28 1Сергей
 
09.12.13
15:07
Упорная... Титан не стирается
29 palpetrovich
 
09.12.13
15:11
(27) а что "тоже самое" - элемент записывается или нет?
30 mikecool
 
09.12.13
15:12
(28) титановый клюв? ))
31 irina_pi
 
09.12.13
15:14
(27) не записывается
32 palpetrovich
 
09.12.13
15:16
(31) ОписаниеОшибки - не забыла?
    Попытка
            Спр.Записать();
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
33 irina_pi
 
09.12.13
15:20
(32) не забыла, в Исключение не заходит.
34 Fish
 
гуру
09.12.13
15:22
(33) Значит, записывается :)
35 irina_pi
 
09.12.13
15:22
Значение исчезает Спр.КорректныйАртикул = "C4848A             " после Спр.Записать()
36 1Сергей
 
09.12.13
15:23
(33) В модуле, случайно, первоя строка не "#ЗагрузитьИзФайла"?
37 1Сергей
 
09.12.13
15:24
(35) тю... проверь остальные реквизиты и удивись
38 palpetrovich
 
09.12.13
15:25
(35) дык. может не тот элемент справочника смотришь? или не в той базе?
39 Мимохожий Однако
 
09.12.13
15:26
СПР с латинскими буквами ))
40 irina_pi
 
09.12.13
15:28
(36) нет
(37) остальные тоже очищаются
(38) к сожалению в той
(39) нет
41 Мимохожий Однако
 
09.12.13
15:28
Код - это код Родителя
42 Мимохожий Однако
 
09.12.13
15:31
Попробуй Спр.КорректныйАртикул=СокрЛП(КорректныйАртикул);
43 DJ Anthon
 
09.12.13
15:35
я один раз нарвался на то, что открыл обработку из другого каталога.
44 Ёпрст
 
гуру
09.12.13
15:39
тест на вшивость:

Если   Спр.найтиПоКоду(Код,0)=1 тогда
    сообщить(Спр.ЭтоГруппа());
45 palpetrovich
 
09.12.13
15:40
фантастика и мистика в одном флаконе :) ...такой код на новойКнопке что дает?
Спр = СоздатьОбъект("Справочник.Номенклатура");  
Спр.Новый();    
Спр.УстановитьНовыйКод();
Спр.Наименование = "БлаБлаБла";
Спр.КорректныйАртикул="12345";
Спр.Записать();
46 Масянька
 
09.12.13
15:46
(45) Присоединяюсь к вопросу.
И, пожалуй, весь код хотелось бы узреть.
47 КонецЦикла
 
09.12.13
16:06
(35) Тэкс... и что в этом странного? Все нормально, так и должно быть

Спр=СоздатьОбъект("Справочник.Номенклатура");  
    
     Если   Спр.найтиПоКоду(Код,0)=1 тогда
         если КорректныйАртикул <>"НЕЗАПОЛНЕНО" тогда
             Спр.КорректныйАртикул=КорректныйАртикул;  
Сообщить("Код " + СокрЛП(Спр.Код) + " Артикул " + КорректныйАртикул);            
         КонецЕсли;
    
         СПР.Записать();        
     Конецесли;

Смотри потом у элемента с этим кодом что там проставилось.
48 КонецЦикла
 
09.12.13
16:07
(44) Да, хорошая мысль
49 Ёпрст
 
гуру
09.12.13
16:08
(48) [:]|||[:], я (41) не заметил.. :(
50 irina_pi
 
10.12.13
07:19
Попробовала в другой базе с похожей конфигурацией, там все записывает.
Где можно проверить почему в одной базе записывает, а в другой нет?
Права одинаковые Полные.
51 КонецЦикла
 
10.12.13
07:33
В похожей или идентичной?
В похожей может не случиться (44), например
52 irina_pi
 
10.12.13
07:36
(51) похожей. Сделала кнопку.
Процедура Кнопка()
    Спр1=СоздатьОбъект("Справочник.Номенклатура");  
     КорректныйАртикул="КорректныйАртикул";    
         Если   Спр1.найтиПоКоду("00000531",0)=1 тогда  
             Если Спр1.ЭтоГруппа()=0 тогда
                 если КорректныйАртикул <>"НЕЗАПОЛНЕНО" тогда
                     Спр1.КорректныйАртикул=СокрЛП(КорректныйАртикул);
                     Сообщить("КодТ " + СокрЛП(Спр1.Код) + " Артикул " + СокрЛП(Спр1.КорректныйАртикул));
                 КонецЕсли;
             
                 Попытка
                     Спр1.Записать();
                     Сообщить("КодТ " + СокрЛП(Спр1.Код) + " Артикул " + СокрЛП(Спр1.КорректныйАртикул));
                     Сообщить(Спр1);
                 Исключение
                     Сообщить(ОписаниеОшибки())
                 КонецПопытки;
             КонецЕсли;
         Конецесли;
         
             
    
КонецПроцедуры


В первой базе пишет
КодТ 00000531 Артикул КорректныйАртикул
КодТ 00000531 Артикул
51625A №25 Картридж HP DJ 310/320/400/420С/500С/540/560С, orig, color, 150стр.

Во второй
КодТ 00000531 Артикул КорректныйАртикул
КодТ 00000531 Артикул КорректныйАртикул
51625A №25 Картридж HP DJ 310/320/400/420С/500С/540/560С, orig, color, 150стр.
53 Wobland
 
10.12.13
07:49
про тип артикулов уже было?
55 КонецЦикла
 
10.12.13
07:51
Спр1.Записать();
                     Сообщить("КодТ " + СокрЛП(Спр1.Код) + " Артикул " + СокрЛП(Спр1.КорректныйАртикул));
                     Сообщить(Спр1);

Сообщить(Метаданные.Справочник("Номенклатура").Реквизит("КорректныйАртикул").Периодический);
Сообщить(ТипЗначенияСтр(Спр1.КорректныйАртикул));
56 Wobland
 
10.12.13
07:52
слабаки. даже про фотку ни разу не намекнули
57 irina_pi
 
10.12.13
07:54
(55)
КодТ 00000531 Артикул КорректныйАртикул
КодТ 00000531 Артикул
51625A №25 Картридж HP DJ 310/320/400/420С/500С/540/560С, orig, color, 150стр.
0
Строка
58 Wobland
 
10.12.13
07:55
про черепашек уже говорили. я за черепашку
59 КонецЦикла
 
10.12.13
07:56
(57) На одном элементе или на всех? Можно переиндексироваться например, пока больше нет вариантов.
60 irina_pi
 
10.12.13
07:57
(59) на 3 пробовала.
61 КонецЦикла
 
10.12.13
07:57
(60) Руками записывается? :)
62 ЧеловекДуши
 
10.12.13
08:37
(0)Объяви "СПР" как переменную через "ПЕРЕМ", бывает помогает осознать то, что может 1С и предоставляет свободу от объявлении переменных, но с этим связанно куда больше проблем :)

Так же, зачем ты делаешь (записываешь элемент) "Спр.Записать();" в любом случае, если даже он у тебя не изменился?
Логичней добавить условия по тексту:

Перем Спр; //Добавить где то в начале процедуры или функции
Перем НеЗаполнено;
Перем ЗаписатьЭлемент;

НеЗаполнено = "НЕЗАПОЛНЕНО"; //Для простаты изменнения признака, может надоест этот, то сделаешь другой

Спр=СоздатьОбъект("Справочник.Номенклатура");  
ЗаписатьЭлемент = 0;
    
     Если   Спр.найтиПоКоду(Код,0)=1 тогда
         если КорректныйАртикул <>НеЗаполнено  тогда
             Спр.КорректныйАртикул=КорректныйАртикул;              
    ЗаписатьЭлемент = 1;
         КонецЕсли;
         если СостояниеНоменклатуры <>НеЗаполнено  тогда
             Спр.СостояниеНоменклатуры=СостояниеНоменклатуры;            
    ЗаписатьЭлемент = 1;
         КонецЕсли;
         если КодИБ <>НеЗаполнено  тогда
             Спр.КодИБ=КодИБ;            
    ЗаписатьЭлемент = 1;
         КонецЕсли;
         если ИдентификаторБазыНоменклатуры <>НеЗаполнено  тогда
             Спр.ИдентификаторБазыНоменклатуры=ИдентификаторБазыНоменклатуры;
    ЗаписатьЭлемент = 1;
         КонецЕсли;
   Если ЗаписатьЭлемент = 1 Тогда
         СПР.Записать();        
         КонецЕсли;
     Конецесли;
63 Wobland
 
10.12.13
08:38
>Для простаты изменнения признака
не нужно ей никаких простат
64 ЧеловекДуши
 
10.12.13
08:39
(63) Ну да ... тоже нравится? :)

Простоты...
65 ЧеловекДуши
 
10.12.13
08:40
(63) Судя по куску кода, человек 8-ник :)
66 Bigbro
 
10.12.13
08:50
базы не дбф с перекошенными индексами случаем?
67 Bigbro
 
10.12.13
08:53
а если после записать снова сделать
Спр1.найтиПоКоду("00000531",0);
68 Масянька
 
10.12.13
10:54
Извините, что я вмешиваюсь...
А смысл кнопки озвучили?
Мне, лично, не очень нравятся эти 2 строчки - что, где, когда....

КорректныйАртикул="КорректныйАртикул";
Спр1.КорректныйАртикул=СокрЛП(КорректныйАртикул)
69 mikecool
 
10.12.13
10:58
у вас все еще не записывается???? оО
тогда мы не идем к вам
70 palpetrovich
 
10.12.13
12:34
а про размер файла СпрНоменклатура спрашивали уже?
71 dka80
 
10.12.13
14:07
Спр.ТекущийЭлемент().КорректныйАртикул=КорректныйАртикул;
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший