Имя: Пароль:
1C
1С v8
Регистр Сведений Штрихкоды
, ,
0 pavelul73
 
17.10.12
11:31
Добрый день. Собственно, есть РС Штрихкоды - заполненный.
Есть xls файл с штрих кодами. Получаю штри код из файла, делаю проверку, если текущий шк не равен шк из файла, тогда меняю этот шк.
Пишу вот такой код:
ТекШК = РегистрыСведений.Штрихкоды;
ОтборШК = Новый Структура("Штрихкод");
ОтборШК.Штрихкод = СтарыйШК;
ВыборкаШК = ТекШК.Выбрать(ОтборШК);
Но при выполнении метода выбрать, останавливается с ошибкой, не верный параметр 1.
Подскажите, что я делаю не так?
1 pavelul73
 
17.10.12
11:32
регистр непериодический
2 Галахад
 
гуру
17.10.12
11:35
Делай запросом.
3 ammpryanik
 
17.10.12
11:38
это даж я знаю
4 zoom_4x
 
17.10.12
11:39
В качестве полей для отбора могут задаваться измерения или реквизиты, для которых в конфигураторе признак индексирования установлен в значение "Индексировать" или установлен признак "Ведущее".
5 pavelul73
 
17.10.12
11:41
(4) Спасибо, не дочитал СП.
(2)запрос понятно, а как запросом получить менеджер записи?
Т.е как после запроса изменить текущий ШК?
6 kimarle
 
17.10.12
11:44
(5) Создать набор записей, установить отбор, добавить новую строку в набор записей, записать набор записей.
7 pavelul73
 
17.10.12
11:47
(6) если я создам набор записей, разве он не добавит еще один шк к уже существующему? По-моему он не изменить текущий, а добавит еще один. Или я ошибаюсь?
8 PLUT
 
17.10.12
11:50
(7) на эти грабли должен наступить каждый! желательно на рабочей базе
9 pavelul73
 
17.10.12
11:51
(8) кто же на рабочей делает, если есть тестовая? ))
10 Галахад
 
гуру
17.10.12
11:52
МенеджерЗаписи = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();

МенеджерЗаписи.ШтрихКод = Выборка.ШтрихКод;
МенеджерЗаписи.Прочитать();

МенеджерЗаписи.ШтрихКод = ШтрихКод;

МенеджерЗаписи.Записать();
11 pavelul73
 
17.10.12
12:05
(10) не записывает
12 pavelul73
 
17.10.12
12:22
нет больше идей?
13 Торин
 
17.10.12
12:29
Потрясающая логика программирования...
"если текущий шк не равен шк из файла, тогда меняю этот шк"
что значит "текущий шк"?  Это штрих-код чего? номенклатуры?
Какова структура регистра "штрихкоды"? если я правильно понимаю, "штрихкод" - это ресурс. А измерения у него какие?
14 kimarle
 
17.10.12
12:31

Если ТекШК <> СтарыйШК Тогда
   Набор = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
   Набор.Отбор.Владелец.Установить(ТекНоменклатура);
   Набор.Записать();
   НоваяЗапись = Набор.Добавить();
   НоваяЗапись.Номенклатура = ТекНоменклатура;
   НоваяЗапись.ШтрихКод = ТекШК;
   Набор.Записать();
КонецЕсли;
15 pavelul73
 
17.10.12
12:32
(13)ТекущийШК = штрих код номенклатуры
Структура РС ШтрихКоды - стандартная, УТ 10.3
ШК  -Измерение
16 Торин
 
17.10.12
12:35
почти правильно
тока не
Набор.Записать();
а
Набор.прочитать();

и не надо добавлять запись. надо исправить имеющуюся
как то так
если Набор.количество() > 0 тогда
для каждого запись из Набор Цикл
запись.ШтрихКод = ТекШК;
конеццикла
набор.записать();

вот как-то так
17 Торин
 
17.10.12
12:35
Если ТекШК <> СтарыйШК Тогда
   Набор = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
   Набор.Отбор.Владелец.Установить(ТекНоменклатура);
   Набор.прочитать();
   если Набор.количество() > 0 тогда

   НоваяЗапись = Набор.Добавить();
   НоваяЗапись.Номенклатура = ТекНоменклатура;
   НоваяЗапись.ШтрихКод = ТекШК;
   Набор.Записать();
КонецЕсли;
18 Торин
 
17.10.12
12:37
вот итог который точно будет работать:

Если ТекШК <> СтарыйШК Тогда
   Набор = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
   Набор.Отбор.Владелец.Установить(ТекНоменклатура);
   Набор.прочитать();
   если Набор.количество() > 0 тогда
     для каждого запись из Набор Цикл
       запись.ШтрихКод = ТекШК;
     конеццикла
   Иначе
     НоваяЗапись = Набор.Добавить();
     НоваяЗапись.Номенклатура = ТекНоменклатура;
     НоваяЗапись.ШтрихКод = ТекШК;
   КонецЕсли;

  Набор.Записать();
19 kimarle
 
17.10.12
12:38
(11) Потому что нет отбора по владельцу/номенклатуре. Все равно старый штрихкод придется вытаскивать запросом.
20 Торин
 
17.10.12
12:38
(17) это яначал писать и нечаянно нажал отправить
21 pavelul73
 
17.10.12
12:41
Огромное спасибо! Работает!
Программист всегда исправляет последнюю ошибку.