7.7 подскажите как мне пройти по запросу

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

  1. TopicStarter Overlay
    Raideres
    Online

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    239
    Симпатии:
    1
    Баллы:
    29
    подскажите как мне пройти по запросу
    чтобы вывести результат с группировкой по номенклатуре
    и по каждой позиции номенклатуры чтобы потом пройтись по ней

    и к начальному остатку прибавить приход(для чего не спрашивайте)
    и как в 1с 7.7 ввести дату начала на начало дня и
    датуконца на конец дня

    Код:
    Функция ТекстЗапросаОстатки()
       
        ТекстЗапросаОСТ =
        "//{{ЗАПРОС(Сформировать)
        |Период с ДатаН по ДатаК;
    //    |ОбрабатыватьДокументы все;
        |Обрабатывать НеПомеченныеНаУдаление;
        |Фирма            = Регистр.ОстаткиТМЦ.Фирма;
        |Док             = Регистр.ОстаткиТМЦ.ТекущийДокумент;
        |УпрАналитика     = Регистр.ОстаткиТМЦ.Фирма.УпрАналитика;
        |ЮрЛицо         = Регистр.ОстаткиТМЦ.Фирма.ЮрЛицо;
        |Номенклатура    = Регистр.ОстаткиТМЦ.Номенклатура;
        |СвойствоТМЦ     = Регистр.ОстаткиТМЦ.Номенклатура.ОсновноеСвойство.ЗначениеСвойства;
        |Склад            = Регистр.ОстаткиТМЦ.Склад;
        |Внутреннее     = Регистр.ОстаткиТМЦ.Внутреннее;";
       
        ТекстЗапросаОСТ = ТекстЗапросаОСТ +
        "Количество = Регистр.ОстаткиТМЦ.Количество;
        |Функция КоличествоНачОст          = НачОст(Количество);
        |Функция КоличествоПриход          = Приход(Количество)";
    
       
        Возврат ТекстЗапросаОСТ;
       
    КонецФункции // ТекстЗапросаОстатки
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.642
    Симпатии:
    423
    Баллы:
    104
    Выгрузи результат запроса в таблицу значений и верти как хочешь
  3. TopicStarter Overlay
    Raideres
    Online

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    239
    Симпатии:
    1
    Баллы:
    29
    а как в 1с 7.7 сделать на начало дня и на конец дня период
    Последнее редактирование: 20 мар 2017 в 07:41
  4. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    464
    Симпатии:
    80
    Баллы:
    54
    Насколько я помню, даты С и ПО берутся на начало и конец дня соответственно. У Вас какие-то документы не попадают в результат запроса?
  5. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.642
    Симпатии:
    423
    Баллы:
    104
    Времени нет в 7.7 Функция НачОст вернет начальное значение на дату, КонОст соответственно конечный остаток
  6. TopicStarter Overlay
    Raideres
    Online

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    239
    Симпатии:
    1
    Баллы:
    29
    так ну получается у меня есть дата документа тогда я пишу с датадокумента по дата документа или как чтобы приход и нач остаток показать
  7. TopicStarter Overlay
    Raideres
    Online

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    239
    Симпатии:
    1
    Баллы:
    29
    Код:
      
    /////////////////////////////////ВВОД_НА_ОСНОВАНИИ /////////////////////////////////
       //////////////////////////////////////////////////////////////////////////////////////////////////
       ТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений");
       ДокОснование.ВыгрузитьТабличнуюЧасть(ТаблицаДокумента); ///тут ТАБЛИЧНАЯ ЧАСТЬ ОСТАТКОВ НА КОНЕЦДНЯ
      
       // очищаем наш документ
       УдалитьСтроки();
      
      
       ДатаДокументаОсн= ДокОснование.ДатаДок;
       СкладОсн = ДокОснование.Склад;
       ФирмОсн = ДокОснование.Фирма;
      
       ТаблицаДокумента.ВыбратьСтроки();
       Пока ТаблицаДокумента.ПолучитьСтроку() = 1 Цикл // СТРОКА ИЗ ДОКУМЕНТА ОСТАТКИ НА КОНЕЦСМЕНЫ
       ВыбНоменклатура=ТаблицаДокумента.Номенклатура.ТекущийЭлемент();     ///НОМЕНКЛАТУРА ИЗ ДОКУМЕНТА НА КОНЕЦ ДНЯ
       ДатаНачала = ДокОснование.ДатаДок;
       ДатаКонца  = ДокОснование.ДатаДок;
       ТекстЗапроса =
       "//{{ЗАПРОС(НачОстИПриход)                ///ЗАПРОС НА НАЧОСТАТОК И ПРИХОД
       |Период с ДатаНачала по ДатаКонца;   ///ТАК И НЕ ПОНЯЛ КАК ПЕРИОД ТУТ УКАЗАТЬ ЗА ДЕНЬ ЧТОБЫ И ПРИХОД БЫЛ И НАЧ ОСТАТОК
       |Без итогов;
       |Фирма = Регистр.ОстаткиТМЦ.Фирма;
       |ЮрЛицо = Регистр.ОстаткиТМЦ.Фирма.ЮрЛицо;
       |УпрАналитика = Регистр.ОстаткиТМЦ.Фирма.УпрАналитика;
       |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
       |Склад = Регистр.ОстаткиТМЦ.Склад;
       |ТекущийДокумент = Регистр.ОстаткиТМЦ.ТекущийДокумент;
       |Внутреннее = Регистр.ОстаткиТМЦ.Внутреннее;
       |Количество = Регистр.ОстаткиТМЦ.Количество;
       |Функция КоличествоНачОст = НачОст(Количество);
       |Функция КоличествоПриход = Приход(Количество);
       |Функция КонОст = КонОст(Количество);
       |Группировка Номенклатура без групп;
       |Условие(Номенклатура = ВыбНоменклатура);
       |";//}}ЗАПРОС
        
       Запрос = СоздатьОбъект("Запрос");
       Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
         Возврат "Ошибка при отборе товаров.";
       КонецЕсли;
      
       Запрос.Выгрузить(ТЗОстаткиНаНачалоДняИприход, 1, 0); ///ТУТ Я ВЫГРУЗИЛ В ТАБЛИЦУ ЗНАЧЕНИЙ НО МБ НЕ НУЖНО Я УСЛОВИЕ ПОСТАВИЛ ЧТО Условие(Номенклатура = ВыбНоменклатура);
    
     
    //// КАК ТУТ ТЕПЕРЬ ОБРАТИТСЯ К РЕЗУЛЬТАТАМ ВЫБОРКИ ЧТОБЫ ПОЛУЧИЛОСЬ ТАК
    
    ///ТаблицаДокумента.Количество-(КоличествоНачОст +КоличествоПриход ) = КОЛИЧЕСТВОсписания
    
    ///////////////////// ТУТ КУСОК КОДА ЕСЛИ ПРОСТО ИЗ ДОКУМЕНТА ОСНОВАНИЯ ЗАПОЛНИТЬ ТЧ СПИСАНИЯ
           НоваяСтрока();
           Номенклатура = ТаблицаДокумента.Номенклатура;
           Количество = ТаблицаДокумента.Количество;
           Единица = ТаблицаДокумента.Единица;
           Коэффициент = ТаблицаДокумента.Коэффициент;
         КонецЦикла;
       Иначе
       Возврат "Неверный вид документа - основания!";
       КонецЕсли; // вид ДокОснования
    
    РАсписал в коде что я примерно хочу сделать подскажите пожалуйста
    мб зря запрос в цикле сделал но так наверное проще
  8. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.642
    Симпатии:
    423
    Баллы:
    104
    1) Запрос в цикле.. Это ВАРВАРСТВО.
    2)
    ///ТАК И НЕ ПОНЯЛ КАК ПЕРИОД ТУТ УКАЗАТЬ ЗА ДЕНЬ ЧТОБЫ И ПРИХОД БЫЛ И НАЧ ОСТАТОК вы уже указали период и функции.. Все ок.
    3)
    //// КАК ТУТ ТЕПЕРЬ ОБРАТИТСЯ К РЕЗУЛЬТАТАМ ВЫБОРКИ ЧТОБЫ ПОЛУЧИЛОСЬ ТАК
    ТЗОстаткиНаНачалоДняИприход.Итог("КоличествоНачОст")+ТЗОстаткиНаНачалоДняИприход.Итог("КоличествоПриход")
  9. TopicStarter Overlay
    Raideres
    Online

    Raideres Опытный в 1С

    Регистрация:
    9 фев 2016
    Сообщения:
    239
    Симпатии:
    1
    Баллы:
    29

    Код:
        ////////////////////////////////////////////////////////////////////////////////////////////////// 
        /////////////////////////////////ВВОД_НА_ОСНОВАНИИ ОстаткиПоСмене/////////////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////////
        ТаблицаДокументаОсн = СоздатьОбъект("ТаблицаЗначений");
        ДокОснование.ВыгрузитьТабличнуюЧасть(ТаблицаДокументаОсн);
     
        // очищаем наш документ
        УдалитьСтроки();
     
     
        ДатаДокументаОсн= ДокОснование.ДатаДок;
     
        Склад = ДокОснование.Склад;
        Фирма = ДокОснование.Фирма;
     
        ТаблицаДокументаОсн.ВыбратьСтроки();
        Пока ТаблицаДокументаОсн.ПолучитьСтроку() = 1 Цикл // СТРОКА ИЗ ДОКУМЕНТА ОСТАТКИ НА КОНЕЦСМЕНЫ
        ВыбНоменклатура=ТаблицаДокументаОсн.Номенклатура.ТекущийЭлемент();     
        ДатаНачала = ДокОснование.ДатаДок;
        ДатаКонца  = ДокОснование.ДатаДок;
        ТекстЗапроса =
        "//{{ЗАПРОС(НачОстИПриход)
        |Период с ДатаНачала по ДатаКонца;
        |Без итогов;
        |Фирма = Регистр.ОстаткиТМЦ.Фирма;
        |ЮрЛицо = Регистр.ОстаткиТМЦ.Фирма.ЮрЛицо;
        |УпрАналитика = Регистр.ОстаткиТМЦ.Фирма.УпрАналитика;
        |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
        |Склад = Регистр.ОстаткиТМЦ.Склад;
        |ТекущийДокумент = Регистр.ОстаткиТМЦ.ТекущийДокумент;
        |Внутреннее = Регистр.ОстаткиТМЦ.Внутреннее;
        |Количество = Регистр.ОстаткиТМЦ.Количество;
        |Функция НачОст = НачОст(Количество);
        |Функция Приход = Приход(Количество);
        |Функция КонОст = КонОст(Количество);
        |Группировка Номенклатура без групп;
        |Условие(Номенклатура = ВыбНоменклатура);
        |";//}}ЗАПРОС
         
        Запрос = СоздатьОбъект("Запрос");
        Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
            Возврат "Ошибка при отборе товаров.";
        КонецЕсли;
     
    
            Пока Запрос.Группировка() = 1 Цикл
                КолС    = (ТаблицаДокументаОсн.Количество-(запрос.НачОст+Запрос.Приход));
                Если КолС <=0 Тогда
                    Сообщить("По номенклатуре: "+ТаблицаДокументаОсн.Номенклатура+"нельзя сделать СписаниеТМЦ");
                    Если КолС <0 Тогда
                        Сообщить("Конечный остаток по смене по данной позиции меньше чем НачальнйОстаток+Приход");
                    Иначе
                        Сообщить("Конечный остаток по смене по данной позиции равен НачальномуОстатку+Приход");
                    КонецЕсли;
                Иначе
                    НоваяСтрока();
                    Номенклатура  = ТаблицаДокументаОсн.Номенклатура;
                    Количество      = ТаблицаДокументаОсн.Количество-(запрос.НачОст+Запрос.Приход);
                    Единица           = ТаблицаДокументаОсн.Единица;
                    Коэффициент  = ТаблицаДокументаОсн.Коэффициент;
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
        Иначе
            Возврат "Неверный вид документа - основания!";
        КонецЕсли; // вид ДокОснования
     
        Возврат "";
    Знаю что варварство
    сделал вот так, вроде работает если знаете как можно облегчить жизнь этой процедуре подскажите пожалуйста.
    Последнее редактирование: 20 мар 2017 в 12:45
  10. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.642
    Симпатии:
    423
    Баллы:
    104
    1) Выгрузить список номенклатуры в СписокЗначений
    2) Запрос с условием
    Условие(Номенклатура В СЗ);
    3) Цикл

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