Имя: Пароль:
1C
1С v8
Не получается записать серию
0 spblrt
 
13.04.16
13:15
Добрые люди, подскажите, что я делаю не так? Мне нужно в документе "Выпуск продукции" автоматически создать серию номенклатуры таким образом : Серия = ЗаказКлиента.Номер + "." + ЗаказКлиента.Товары.НомерПозиции.
Я запросом вытягиваю из ЗаказаКлиента НомерПозиции, создаю новую серирию и пытаюсь записать, но выскакивает ошибка"Преобразование значения к типу Булево не может быть выполнено" Помогите пожалуйста))
Вот код:
&НаСервере
Процедура ЗаполнитьСерииПоЗаказу(ПараметрыОповещения)
    
    //УстановитьПривилегированныйРежим(Истина);
    //Данные = Элементы.Товары.ТекущаяСтрока;
    Для каждого ТекСтрокаТовары Из Объект.Товары Цикл
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗаказКлиентаТовары.НомерПозиции
        |ИЗ
        |    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
        |ГДЕ
        |    ЗаказКлиентаТовары.Ссылка = &Ссылка
        |    И ЗаказКлиентаТовары.Номенклатура = &Номенклатура
        |    И ЗаказКлиентаТовары.Характеристика = &Характеристика
        |
        |СГРУППИРОВАТЬ ПО
        |    ЗаказКлиентаТовары.НомерПозиции";
    
    Запрос.УстановитьПараметр("Ссылка", ТекСтрокаТовары.ДВК_ЗаказКлиента);
    Запрос.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
    Запрос.УстановитьПараметр("Характеристика", ТекСтрокаТовары.Характеристика);
            
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    //Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    //     //Вставить обработку выборки ВыборкаДетальныеЗаписи
    //КонецЦикла;
    //Данные.ТоварыСерия = Данные.ДВК_ЗаказКлиента + "." + ВыборкаДетальныеЗаписи.НомерПозиции;
    //Сообщить(ВыборкаДетальныеЗаписи.НомерПозиции);
    
    СерияОбъект = Справочники.СерииНоменклатуры.СоздатьЭлемент();
    СерияОбъект.Номер = ТекСтрокаТовары.ДВК_ЗаказКлиента.Номер + "." + ВыборкаДетальныеЗаписи.НомерПозиции;
    СерияОбъект.Записать();
    ТекСтрокаТовары.Серия = СерияОбъект.Номер;
    КонецЦикла;
КонецПроцедуры
1 Два Волшебника
 
13.04.16
13:22
СерияОбъект.Номер = ТекСтрокаТовары.ДВК_ЗаказКлиента.Номер + "." + Строка(ВыборкаДетальныеЗаписи.НомерПозиции);
2 spblrt
 
13.04.16
13:26
не помогло(( та же ошибка. {Документ.ВыпускПродукции.Форма.ФормаДокумента.Форма(2910)}: Ошибка при вызове метода контекста (Записать)
    СерияОбъект.Записать();
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{Справочник.СерииНоменклатуры.МодульМенеджера(221)}: Преобразование значения к типу Булево не может быть выполнено
        Если ПараметрыШаблона.ИспользоватьНомерСерии Тогда
3 Rounder
 
13.04.16
13:28
Какой тип у ПараметрыШаблона.ИспользоватьНомерСерии показывает отладчик?
4 spblrt
 
13.04.16
13:29
вот та функция на которую ссылается ошибка :

Функция ПредставлениеСерии(ПараметрыШаблона, ЗначенияРеквизитов) Экспорт
    
    Представление = "";
    
    Если ЗначениеЗаполнено(ПараметрыШаблона.ШаблонРабочегоНаименованияСерии) Тогда
    
        Представление = НоменклатураСервер.НаименованиеПоШаблону(ПараметрыШаблона.ШаблонРабочегоНаименованияСерии, ЗначенияРеквизитов);
        
    Иначе
        
        Если ПараметрыШаблона.ИспользоватьНомерСерии Тогда
            Представление = ЗначенияРеквизитов.Номер;
        КонецЕсли;
        
        Если ПараметрыШаблона.ИспользоватьСрокГодностиСерии Тогда
            
            СтрокаСтрокаГодности = НСтр("ru = ' до %ГоденДо%'");
            СтрокаСтрокаГодности = СтрЗаменить(СтрокаСтрокаГодности,"%ГоденДо%",Формат(ЗначенияРеквизитов.ГоденДо,ПараметрыШаблона.ФорматнаяСтрокаСрокаГодности));
            
            Представление = Представление + СтрокаСтрокаГодности;
            
            Представление = СокрЛП(Представление);
            
        КонецЕсли;
        
    КонецЕсли;
    
    Возврат Представление;
    
КонецФункции
5 spblrt
 
13.04.16
13:32
(3) Неопределено
6 Rounder
 
13.04.16
13:34
(4) Откуда вызывается эта функция? И что в нее передается в качестве ПараметрыШаблона.
Очевидно, что ПараметрыШаблона.ИспользоватьНомерСерии не булево.
7 singlych
 
13.04.16
13:35
вид номенклатуры в серии заполни
8 Aprobator
 
13.04.16
13:40
Ужас то какой. Одна запись серии без владельца чего стоит.
9 spblrt
 
13.04.16
13:47
(7) Вид номенклатуры заполнил - ошибка пропала Спасибо!
Но серии по прежнему не записываются. Вот код:

&НаСервере
Процедура ЗаполнитьСерииПоЗаказу(ПараметрыОповещения)
    
    Для каждого ТекСтрокаТовары Из Объект.Товары Цикл
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗаказКлиентаТовары.НомерПозиции
        |ИЗ
        |    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
        |ГДЕ
        |    ЗаказКлиентаТовары.Ссылка = &Ссылка
        |    И ЗаказКлиентаТовары.Номенклатура = &Номенклатура
        |    И ЗаказКлиентаТовары.Характеристика = &Характеристика
        |
        |СГРУППИРОВАТЬ ПО
        |    ЗаказКлиентаТовары.НомерПозиции";
    
    Запрос.УстановитьПараметр("Ссылка", ТекСтрокаТовары.ДВК_ЗаказКлиента);
    Запрос.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
    Запрос.УстановитьПараметр("Характеристика", ТекСтрокаТовары.Характеристика);
            
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    
    СерияОбъект = Справочники.СерииНоменклатуры.СоздатьЭлемент();
    СерияОбъект.ВидНоменклатуры = ТекСтрокаТовары.Номенклатура.ВидНоменклатуры;
    СерияОбъект.Номер = ТекСтрокаТовары.ДВК_ЗаказКлиента.Номер + "." + Строка(ВыборкаДетальныеЗаписи.НомерПозиции);
    СерияОбъект.Записать();
    ТекСтрокаТовары.Серия = СерияОбъект.Номер;
    КонецЦикла;
КонецПроцедуры
10 singlych
 
13.04.16
14:08
(9) ошибка-то какая?
11 salvator
 
13.04.16
14:12
(9) А выборку кто будет перебирать?
12 spblrt
 
13.04.16
14:15
(10) Нет ошибки. Просто поле серия, если было заполнено - очищается
13 singlych
 
13.04.16
14:17
ТекСтрокаТовары.Серия = СерияОбъект.Ссылка

ну и (11)
14 spblrt
 
13.04.16
14:19
(11) Сейчас как раз думаю над выборкой

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл    
       ВыборкаДетальныеЗаписи.НомерПозиции;  
    КонецЦикла;

Так не получается(
15 salvator
 
13.04.16
14:21
(14)
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();    
    
    СерияОбъект = Справочники.СерииНоменклатуры.СоздатьЭлемент();
    СерияОбъект.ВидНоменклатуры = ТекСтрокаТовары.Номенклатура.ВидНоменклатуры;
    СерияОбъект.Номер = ТекСтрокаТовары.ДВК_ЗаказКлиента.Номер + "." + Строка(ВыборкаДетальныеЗаписи.НомерПозиции);
    СерияОбъект.Записать();
    ТекСтрокаТовары.Серия = СерияОбъект.Ссылка;
    КонецЦикла;
16 salvator
 
13.04.16
14:23
Если выборка подразумевает более одной строки, то в цикле как (14)
17 spblrt
 
13.04.16
14:26
Спасибо Вам огромное) все получилось!)))