Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 04:12

Ошибка при записи данных в регистр

Автор Алексей_1985_06, 01 мая 2024, 10:04

0 Пользователей и 1 гость просматривают эту тему.

Алексей_1985_06

Всем доброго дня! Подскажите пожалуйста, что не так делаю, почему возникает ошибки при программной записи в РС:

// Помещение файла во ВХ
  &НаКлиенте
Асинх Процедура ПоместитьФайлВоВХ()   


ХодВыполнения = Новый ОписаниеОповещения ("ОписаниеОповещенияОХодеВыполнения", ЭтотОбъект);

ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов();   
ПараметрыДиалога.Заголовок = "Выберите файл для загрузки";
ПараметрыДиалога.МножественныйВыбор = Ложь;
ПараметрыДиалога.Фильтр = "Файлы PDF (*.pdf)|*.pdf|";


    ПередНачаломПомещения = Новый ОписаниеОповещения ("ОписаниеОповещенияПередНачалом",ЭтотОбъект,РазмерФайла);



ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх(ХодВыполнения,ПередНачаломПомещения,,ПараметрыДиалога, УникальныйИдентификатор);
 
Если ОписаниеФайла <> Неопределено Тогда  // Пользователь выбрал файл 
АдресФайла = ОписаниеФайла.Адрес;   
    ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(АдресФайла); // Получим двоичные данные
ДД = ДвоичныеДанныеФайла; // ДД - реквизит формы

Если  ДД <> Неопределено Тогда 
ЗаписьВРегистр (Объект.Ссылка,Объект.Владелец,Объект.ВидЭксплуатационногоДокумента,ДД); // ЗаписьВРегистр - процедура ниже
  КонецЕсли;

КонецЕсли;

 
КонецПроцедуры

Процедура ЗаписьВРегистр(СсылкаНаДокумент,СсылкаНаОбъектЭксплуатации,СсылкаНаВидДокумента,ДвоичныеДанные)


// 1. Создать набор записей
   НаборЗаписей = РегистрыСведений.ЭлектронныеДокументыИзделий.СоздатьНаборЗаписей();    

// 2. Наложить требуемые отборы:
НаборЗаписей.Отбор.НаименованиеДокумента.Установить(СсылкаНаДокумент);
НаборЗаписей.Отбор.ОбъектЭксплуатации.Установить(СсылкаНаОбъектЭксплуатации);
НаборЗаписей.Отбор.ОбъектЭксплуатации.Установить(СсылкаНаВидДокумента);

// 3. Прочитаем набор записей РС:
НаборЗаписей.Прочитать(); 
Количество = НаборЗаписей.Количество(); // определим количество записей


Если Количество = 0 И ДвоичныеДанные <> Неопределено Тогда // если нет такой записей + есть файл

// Добавим новую запись в РС
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.НаименованиеДокумента = СсылкаНаДокумент;
НоваяЗапись.ОбъектЭксплуатации = СсылкаНаОбъектЭксплуатации;
НоваяЗапись.ВидДокумента = СсылкаНаВидДокумента;
НоваяЗапись.ФайлДокумента = Новый ХранилищеЗначения(ДвоичныеДанные);
НаборЗаписей.Записать(); // Запишем новый набор в РС

КонецПроцедуры

ВОЗНИКАЕТ ОШИБКА:
Ошибка при вызове метода контекста (Записать)
{Справочник.ДокументыНаИзделия1.Форма.ФормаЭлемента.Форма(205)}:НаборЗаписей.Записать(Истина); // Запишем новый набор в РС
{Справочник.ДокументыНаИзделия1.Форма.ФормаЭлемента.Форма(145)}:ЗаписьВРегистр (Объект.Ссылка,Объект.Владелец,Объект.ВидЭксплуатационногоДокумента,ДД);

[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Запись не верна! Значение поля не соответствует установленному отбору: ЭлектронныеДокументыИзделий: ААА, 14П440, Учебно-технические плакаты (Регистр сведений: Электронные документы на изделия (ОШИБКА); Номер строки: 1; Поле: ОбъектЭксплуатации)
[ОшибкаХранимыхДанных]

Максим75

Алексей_1985_06, Вы немного делаете не правильно.
Вначале все правильно проверяете на наличие уже записи с нужными отборами.
А вот писать лучше через МенеджерЗаписи, т.е типа такого:

ЗаписьШтрихкода              = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
ЗаписьШтрихкода.Владелец     = ОбъектСерийныйНомер;
ЗаписьШтрихкода.ТипШтрихкода = ТипШтрихкода;
Если НЕ ЗначениеЗаполнено(ТоварНаВходе.Артикул) тогда
НовыйШК = ""+Строка(НовыйНомерШтрихКода)+"-"+Строка(НовыйНомерШтрихКода)+"-"+Строка(НовыйНомерШтрихКода);
иначе
НовыйШК = ""+Строка(СокрЛП(ТоварНаВходе.Артикул))+"-"+Строка(НовыйНомерШтрихКода);
КонецЕсли;
ЗаписьШтрихкода.Штрихкод     = НовыйШК;
//Сообщить("Новый ШК  "+НовыйШК);
Если ЗаписьШтрихкода.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN128 Тогда
ЗаписьШтрихкода.ПредставлениеШтрихкода = ЗаписьШтрихкода.Штрихкод;
КонецЕсли;

ЗаписьШтрихкода.Записать(Истина);

Алексей_1985_06

Максим75, Спасибо! Буду пробовать.....

antoneus

а еще ошибка здесь:

    НаборЗаписей.Отбор.ОбъектЭксплуатации.Установить(СсылкаНаОбъектЭксплуатации);
    НаборЗаписей.Отбор.ОбъектЭксплуатации.Установить(СсылкаНаВидДокумента);

Алексей_1985_06

antoneus, большое Вам спасибо! Ее как раз таки я и не заметил, голову ломал........

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск