7.7 Обращение к документу, поиск через номер документа (программно)

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем ProfforG, 15 сен 2014.

  1. TopicStarter Overlay
    ProfforG
    Offline

    ProfforG Опытный в 1С

    Регистрация:
    31 окт 2011
    Сообщения:
    139
    Симпатии:
    1
    Баллы:
    29
    Доброго времени суток!

    Подскажите пожалуйста, как обратиться к документу (к его полям), зная его номер.
    Если делать полный перебор, то всё прекрасно, а если непосредственно через номер, то "шиш".

    Код:
    Код:
    Процедура Сформировать() 
        Если  (ПустоеЗначение(ДатаНач) = 1) или (ПустоеЗначение(ДатаКон) = 1) Тогда
            Предупреждение("Укажите временной интервал!");
            Возврат;
        КонецЕсли;  
       
        ТабЭкран.Очистить();
        Таблица.Очистить();
        ОчиститьОкноСообщений();
        Таблица.НоваяКолонка("ДатаДок","Дата");
        Таблица.НоваяКолонка("НомЗаяв","Число",10);
        Таблица.НоваяКолонка("НомНакл","Число",10);
        Таблица.НоваяКолонка("Время","ЧЧ:ММ:СС",8);
        Таблица.НоваяКолонка("Контрагенты","Справочник.Контрагенты",25);                                                            
        Таблица.НоваяКолонка("Сумма","Число",10,2);
       
        Док=СоздатьОбъект("Документ._ЗаявкаЭкспедиция");
        ДокНакл=СоздатьОбъект("Документ.РеализацияЭкспедиция");
        Док.ВыбратьДокументы(ДатаНач,ДатаКон);
        Пока Док.ПолучитьДокумент()=1 Цикл
            Если Док.ПометкаУдаления() = 1 Тогда
                Продолжить;
            Иначе
                Док.ПолучитьВремя(Ч,М,С);
                           
                Если Число(ВремяНачальноеЧ) < Число(ВремяКонечноеЧ) Тогда
                    Если (Число(Ч)=Число(ВремяНачальноеЧ)) ИЛИ (Число(Ч)>Число(ВремяНачальноеЧ)) Тогда
                            Если (Число(Ч)=Число(ВремяКонечноеЧ)) ИЛИ (Число(Ч)<Число(ВремяКонечноеЧ)) Тогда
                                    Таблица.НоваяСтрока();
                                    Таблица.ДатаДок=Док.ДатаДок;
                                    Таблица.НомЗаяв=Док.НомерДок;
                                    Таблица.НомНакл=Док.ДокОтгрузки;                               
                                   
                                    ДокНакл.ВыбратьПоНомеру(Док.ДокОтгрузки);
                                    Сообщить(Док.ДокОтгрузки);
                                    Таблица.Сумма = ДокНакл.СуммаВклНДС;
                                                                   
                                    Таблица.Время=Док.ПолучитьВремя(1,1,1);
                                    Таблица.Контрагенты=Док.Контрагент;
                                    //Таблица.Сумма=Док.Всего;
                            КонецЕсли;           
                    КонецЕсли;
                Иначе
                    Если Число(ВремяНачальноеЧ) > Число(ВремяКонечноеЧ) Тогда
                       
                        Если ((Число(Ч)=Число(0)) ИЛИ (Число(Ч)>Число(0))) И ((Число(Ч)=Число(ВремяНачальноеЧ)) ИЛИ (Число(Ч)>Число(ВремяНачальноеЧ))) Тогда
                                Таблица.НоваяСтрока();
                                Таблица.ДатаДок=Док.ДатаДок;
                                Таблица.НомЗаяв=Док.НомерДок;
                                Таблица.НомНакл=Док.ДокОтгрузки;
                               
                                ДокНакл.ВыбратьПоНомеру(Док.ДокОтгрузки);
                                Сообщить(Док.ДокОтгрузки);
                                Таблица.Сумма = ДокНакл.СуммаВклНДС;
                                                           
                                Таблица.Время=Док.ПолучитьВремя(1,1,1);
                                Таблица.Контрагенты=Док.Контрагент;
                                //Таблица.Сумма=Док.Всего;
                        КонецЕсли;
                           
                        Если ((Число(Ч)=Число(0)) ИЛИ (Число(Ч)>Число(0))) И ((Число(Ч)=Число(ВремяКонечноеЧ)) ИЛИ (Число(Ч)<Число(ВремяКонечноеЧ))) Тогда
                                Таблица.НоваяСтрока();
                                Таблица.ДатаДок=Док.ДатаДок;
                                Таблица.НомЗаяв=Док.НомерДок;
                                Таблица.НомНакл=Док.ДокОтгрузки;
                               
                                НомНакладной = Док.ДокОтгрузки;
                                ДокНакл.ВыбратьПоНомеру(Док.ДокОтгрузки);
                                Сообщить(Док.ДокОтгрузки);
                                Таблица.Сумма = ДокНакл.СуммаВклНДС;
                                                           
                                Таблица.Время=Док.ПолучитьВремя(1,1,1);
                                Таблица.Контрагенты=Док.Контрагент;
                                //Таблица.Сумма=Док.Всего;
                        КонецЕсли;       
                   
                    КонецЕсли;   
                КонецЕсли;               
            КонецЕсли;
        КонецЦикла;
        ТабЭкран.Загрузить(Таблица); 
    КонецПроцедуры
    
    ДокНакл.ВыбратьПоНомеру(Док.ДокОтгрузки); - вот это по ходу дела не работает, потому что когда вывожу сообщением (для проверки) Сообщить(ДокНакл.ТекущийДокумент()); ничего не выводится.

    Перед циклом ДокНакл создан.

    Как решить данную проблему?

    Заранее спасибо.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Используйте метод НайтиПоНомеру.. Только там вам еще дата понадобится
  3. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.433
    Симпатии:
    373
    Баллы:
    104
    Код:
    НайтиПоНомеру(<?>,,)
    Синтаксис:
    НайтиПоНомеру(<Номер>,<Дата>,<ИдентВида>)
    Назначение:
    Найти документ по номеру. Может быть использован для объекта Документ общего вида, тогда для поиска нужно указать параметр <ИдентВида> .
    Возвращает: 1 - если действие выполнено (документ найден);  0 - если действие не выполнено.
    Параметры:
    <Номер> - строка с номером искомого документа;
    <Дата> - дата из диапазона, в котором нужно искать документ.
    <ИдентВида> - необязательный параметр. Строковое выражение, содержащее идентификатор вида документа или идентификатор Нумератора.
    Замечание:
    Метод  можно использовать только для объектов, созданных функцией СоздатьОбъект.
  4. TopicStarter Overlay
    ProfforG
    Offline

    ProfforG Опытный в 1С

    Регистрация:
    31 окт 2011
    Сообщения:
    139
    Симпатии:
    1
    Баллы:
    29
    Делал без даты, не работало. Сейчас попробую...
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
  6. TopicStarter Overlay
    ProfforG
    Offline

    ProfforG Опытный в 1С

    Регистрация:
    31 окт 2011
    Сообщения:
    139
    Симпатии:
    1
    Баллы:
    29
    Благодарю.
  7. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.433
    Симпатии:
    373
    Баллы:
    104
    дополнение
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Не за что. Обращайтесь

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