8.х УТ прблема с Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(Номер,)

Тема в разделе ""1С:Управление торговлей УТ"", создана пользователем atm779, 26 авг 2009.

  1. TopicStarter Overlay
    atm779
    Offline

    atm779 Опытный в 1С

    Регистрация:
    19 авг 2009
    Сообщения:
    133
    Симпатии:
    0
    Баллы:
    26
    Пишу внешнюю обработка. Обработка, должна открыть заданный документ по номеру и поменять значения некоторый данных в одной из колонок. Своего рода поиск+замена для документов поступления товаров и услуг. Вот мой код

    Код:
     
    Номер = "Яр000000002";
    Документы.ПоступлениеТоваровУслуг.Выбрать();
    Док = Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(Номер,);
    Если Док = Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(Номер,).Ссылка.Пустая() Тогда
    Сообщить("Документ НЕ НАЙДЕН!!!");
    
    Иначе
    //Дополнить табличную часть
    Сообщить("Документ уже СУЩЕСТВУЕТ!!! - " + Док.Номер + " от " + Док.Дата);
    
    Сообщить(Док.Товары.Количество());
    КонецЕсли;
    
    
    не имеет значения, существует ли док, номер которого я ввожу, прога всегда говорит
    А оператор Сообщить(Док.Товары.Количество()); всегда выводит 0

    что я делаю неверно?
  2. duh
    Offline

    duh Опытный в 1С

    Регистрация:
    21 янв 2009
    Сообщения:
    74
    Симпатии:
    0
    Баллы:
    26
    Замени условие на Если Док.Пустая() Тогда
  3. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    В процедуре найти по номеру необходимо указывать дату для документов с периодической нумерацией. Туда тебе надо передавать например начало года.
  4. TopicStarter Overlay
    atm779
    Offline

    atm779 Опытный в 1С

    Регистрация:
    19 авг 2009
    Сообщения:
    133
    Симпатии:
    0
    Баллы:
    26

    Если я пишу
    Док = Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(Номер,НачалоГода());

    получаю ошибку

    Код:
    {Форма.Форма(17,73)}: Ожидается выражение
    Док = Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(Номер,НачалоГода(<<?>>));
    {Форма.Форма(17,74)}: Неопознанный оператор
    Док = Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(Номер,НачалоГода()<<?>>);
    {Форма.Форма(29,21)}: Обнаружено логическое завершение исходного текста модуля<<?>>
    
    
    
  5. duh
    Offline

    duh Опытный в 1С

    Регистрация:
    21 янв 2009
    Сообщения:
    74
    Симпатии:
    0
    Баллы:
    26
    Синтаксис:
    НачалоГода(<Дата>)
    Параметры:
    <Дата> (обязательный)

    И еще раз напоминаю, если ты не изменил условие то начало года тебе не поможет
  6. TopicStarter Overlay
    atm779
    Offline

    atm779 Опытный в 1С

    Регистрация:
    19 авг 2009
    Сообщения:
    133
    Симпатии:
    0
    Баллы:
    26
    Спасибо. Я разобрался наконец. Вот какое оказалось правильно решение =)
    Код:
    ДатаДока  = Дата(2009, 8, 21);
    Документы.ПоступлениеТоваровУслуг.Выбрать();
    Док = Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(НомерДока,ДатаДока);
    Если Док.Пустая() Тогда
    Сообщить("Документ НЕ НАЙДЕН ");
    Иначе
    Сообщить("Документ: " + Док.Номер + " от " + Док.Дата);
    
    обДок = Док.ПолучитьОбъект();
    Товары = обДок.Товары;		
    Для Каждого т Из Товары Цикл 
    Сообщить(т.Номенклатура);
    т.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт");
    КонецЦикла; 
    обДок.Записать();
    
    Сообщить(Док.Товары.Количество());
    КонецЕсли;
    
    

Поделиться этой страницей