7.7 Партии товара

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем Toxa82, 25 янв 2012.

  1. TopicStarter Overlay
    Toxa82
    Offline

    Toxa82

    Регистрация:
    25 янв 2012
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    В ТиС есть отчет Движение товара Посмотреть вложение 9938
    Если товар разбит по партиям, нужно чтобы в конце таблицы добавлялись столбцы с движением товара по каждой партии.
    Примерно так на каждую патию. Посмотреть вложение 9939

    Даже не знаю с какой стороны за это браться. :unsure:

    Вложения:

  2. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Почитать литературу по формированию печатных форм.

    В частности, если нужно "нарастить" таблицу вширь, то используется метод объекта таблица ПрисоединитьСекцию:

  3. vip6374
    Offline

    vip6374

    Регистрация:
    20 май 2006
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Присоединить Столбцы просто, если в каждом товаре одни и те же партии.
    Но это не так
    Придется в запросе не выводить строки и столбцы, а запоминать в Таблицу Значений.
    Затем в цикле проанализировать количество партий всего, и запомнить это в массиве
    Затем вывести шапку, и столбцы с названием партий взять из массива
    Затем выводить строки из таблицы Значений (ТЗ) с товаром и тд.
    Затем обработать ТЗ, добавив количество столбцов, равное количеству партий
    Затем записать в ТЗ значения Партий в соответственную ячейку партии
    Затем свернуть ТЗ по товару
    а вот затем Выводить строки ТЗ, выводя товар, присоединяя партии
    Проще нельзя, иначе будет выведен товар, а затем партии с перепутанными столбцами (только ячейки с ненулевыми значениями, без учета номера столбца)

    Либо другой вариант, где выводится в ячейке название партии и значение
    Тогда надо проанализировать максимальное количество партий в товаре (для этого отчета), и для товара, в котором количество партий меньше минимального, доприсоединять пустые ячейки в конце (для красивости)
  4. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Ну специально для вас рекомендую изучить литературу по запросам. Можно обойтись и без ТЗ.
  5. TopicStarter Overlay
    Toxa82
    Offline

    Toxa82

    Регистрация:
    25 янв 2012
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Отчет делается по одному товару и партий не должно быть больше пяти (но это не факт, может и больше выскочить).
    Перерыл всё, что было, нужного не нашел, возможно плохо смотрел, но, как сделать без ТЗ, не представляю.
  6. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
  7. TopicStarter Overlay
    Toxa82
    Offline

    Toxa82

    Регистрация:
    25 янв 2012
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Код:
     Если (ПоДатеОтгр=1) И (Партии=0) Тогда
    ДопСтр = "По дате отгрузки";
    ДатаНач = ДатаНачала-5;   
    ТекстЗапроса = "ПЕРИОД С ДатаНач ПО ДатаКонца;
    |ДатаЗапр = Регистр.ТовОст.ДатаОтгруз,Регистр.ТовРезерв.ДатаОтгруз;
    |ДокЗапроса = Регистр.ТовОст.ТекущийДокумент,Регистр.ТовРезерв.ТекущийДокумент;
    |ТоварЗапр = Регистр.ТовОст.Товар,Регистр.ТовРезерв.Товар;
    |СкладЗапр = Регистр.ТовОст.Склад,Регистр.ТовРезерв.Склад;
    |ФирмаЗапр = Регистр.ТовОст.Фирма,Регистр.ТовРезерв.Источник;
    |КолВоЗапр = Регистр.ТовОст.КолВо;
    |ПодрРезерв = Регистр.ТовРезерв.Подразделение;
    |КолВоРезерв = Регистр.ТовРезерв.КолВо;
    |УСЛОВИЕ (ТоварЗапр=ТоварОтч);
    |ГРУППИРОВКА СкладЗапр;
    |ГРУППИРОВКА ФирмаЗапр;
    |ГРУППИРОВКА ДатаЗапр;
    |ГРУППИРОВКА ДокЗапроса;
    //|ФУНКЦИЯ КонОстаток=КонОст(КолВоЗапр);
    //|ФУНКЦИЯ КонОстатокРезерва=КонОст(КолВоРезерв);
    |ФУНКЦИЯ НачОстаток=НачОст(КолВоЗапр);
    |ФУНКЦИЯ НачОстатокРезерва=НачОст(КолВоРезерв) КОГДА (ПодрРезерв в СпРез);
    |ФУНКЦИЯ РасходРезерва=Расход(КолВоРезерв) КОГДА ((ДатаЗапр>=ДатаНачала) И (ДатаЗапр<=ДатаКонца) И (ПодрРезерв в СпРез));
    |ФУНКЦИЯ ПриходРезерва=Приход(КолВоРезерв) КОГДА ((ДатаЗапр>=ДатаНачала) И (ДатаЗапр<=ДатаКонца) И (ПодрРезерв в СпРез));
    |ФУНКЦИЯ ПриходТовара = Приход(КолВоЗапр) КОГДА ((ДатаЗапр>=ДатаНачала) И (ДатаЗапр<=ДатаКонца));
    |ФУНКЦИЯ РасходТовара = Расход(КолВоЗапр) КОГДА ((ДатаЗапр>=ДатаНачала) И (ДатаЗапр<=ДатаКонца));
    |ФУНКЦИЯ РасходРезерваРанее=Расход(КолВоРезерв) КОГДА ((ДатаЗапр<ДатаНачала) И (ПодрРезерв в СпРез));
    |ФУНКЦИЯ ПриходРезерваРанее=Приход(КолВоРезерв) КОГДА ((ДатаЗапр<ДатаНачала) И (ПодрРезерв в СпРез));
    |ФУНКЦИЯ ПриходТовараРанее = Приход(КолВоЗапр) КОГДА (ДатаЗапр<ДатаНачала);
    |ФУНКЦИЯ РасходТовараРанее = Расход(КолВоЗапр) КОГДА (ДатаЗапр<ДатаНачала);";
    
    Если (ПоДатеОтгр=1) И (Партии=1) Тогда
    ДопСтр = "По дате отгрузки";
    ДатаНач = ДатаНачала-5;   
    ТекстЗапроса = "ПЕРИОД С ДатаНач ПО ДатаКонца;
    |ДатаЗапр = Регистр.ТовОст.ДатаОтгруз,Регистр.ТовРезерв.ДатаОтгруз,Регистр.ПартииТМЦ.ДатаОтгруз;
    |ДокЗапроса = Регистр.ТовОст.ТекущийДокумент,Регистр.ТовРезерв.ТекущийДокумент,Регистр.ПартииТМЦ.ТекущийДокумент;
    |ТоварЗапр = Регистр.ТовОст.Товар,Регистр.ТовРезерв.Товар, Регистр.ПартииТМЦ.Товар;
    |СкладЗапр = Регистр.ТовОст.Склад,Регистр.ТовРезерв.Склад,Регистр.ПартииТМЦ.Склад;
    |ФирмаЗапр = Регистр.ТовОст.Фирма,Регистр.ТовРезерв.Источник,Регистр.ПартииТМЦ.Фирма;
    |ПартияЗапр= Регистр.ПартииТМЦ.Партия;
    |КолВоЗапр = Регистр.ТовОст.КолВо;
    |КолВоПартии = Регистр.ПартииТМЦ.КолВо;
    |КолВоРезерв = Регистр.ТовРезерв.КолВо;
    |ПодрРезерв = Регистр.ТовРезерв.Подразделение;
    |УСЛОВИЕ (ТоварЗапр=ТоварОтч);
    |ГРУППИРОВКА СкладЗапр;
    |ГРУППИРОВКА ФирмаЗапр;
    |ГРУППИРОВКА ДатаЗапр;
    |ГРУППИРОВКА ДокЗапроса;
    |ГРУППИРОВКА ПартияЗапр Все ВошедшиеВЗапрос;
    //|ФУНКЦИЯ КонОстаток=КонОст(КолВоЗапр);
    //|ФУНКЦИЯ КонОстатокРезерва=КонОст(КолВоРезерв);
    |ФУНКЦИЯ НачОстаток=НачОст(КолВоЗапр);
    |ФУНКЦИЯ НачОстатокРезерва=НачОст(КолВоРезерв) КОГДА (ПодрРезерв в СпРез);
    |ФУНКЦИЯ ПриходРезерва=Приход(КолВоРезерв) КОГДА ((ДатаЗапр>=ДатаНачала) И (ДатаЗапр<=ДатаКонца) И (ПодрРезерв в СпРез));
    |ФУНКЦИЯ РасходРезерва=Расход(КолВоРезерв) КОГДА ((ДатаЗапр>=ДатаНачала) И (ДатаЗапр<=ДатаКонца) И (ПодрРезерв в СпРез));
    |ФУНКЦИЯ ПриходТовара = Приход(КолВоЗапр) КОГДА ((ДатаЗапр>=ДатаНачала) И (ДатаЗапр<=ДатаКонца));
    |ФУНКЦИЯ РасходТовара = Расход(КолВоЗапр) КОГДА ((ДатаЗапр>=ДатаНачала) И (ДатаЗапр<=ДатаКонца));
    |ФУНКЦИЯ ПриходПартии = Приход(КолВоПартии) КОГДА ((ДатаЗапр>=ДатаНачала) И (ДатаЗапр<=ДатаКонца));
    |ФУНКЦИЯ РасходПартии = Расход(КолВоПартии) КОГДА ((ДатаЗапр>=ДатаНачала) И (ДатаЗапр<=ДатаКонца));
    |ФУНКЦИЯ ПриходПартииРанее=Приход(КолВоПартии) КОГДА ((ДатаЗапр<ДатаНачала) И (ПодрРезерв в СпРез)); |ФУНКЦИЯ РасходРезерваРанее=Расход(КолВоРезерв) КОГДА ((ДатаЗапр<ДатаНачала) И (ПодрРезерв в СпРез));
    |ФУНКЦИЯ РасходПартииРанее=Расход(КолВоПартии) КОГДА ((ДатаЗапр<ДатаНачала) И (ПодрРезерв в СпРез));
    |ФУНКЦИЯ ПриходТовараРанее = Приход(КолВоЗапр) КОГДА (ДатаЗапр<ДатаНачала);
    |ФУНКЦИЯ РасходТовараРанее = Расход(КолВоЗапр) КОГДА (ДатаЗапр<ДатаНачала);
    |ФУНКЦИЯ ПриходРезерваРанее=Приход(КолВоРезерв) КОГДА ((ДатаЗапр<ДатаНачала) И (ПодрРезерв в СпРез));";
    
    Если (ПоДатеОтгр=0) И (Партии=1) Тогда
    ДопСтр = "";
    ТекстЗапроса = "ПЕРИОД С ДатаНачала ПО ДатаКонца;
    |ДатаЗапр = Регистр.ТовОст.ТекущийДокумент,Регистр.ТовРезерв.ТекущийДокумент,Регистр.ПартииТМЦ.ТекущийДокумент;
    |ДокЗапроса = Регистр.ТовОст.ТекущийДокумент,Регистр.ТовРезерв.ТекущийДокумент,Регистр.ПартииТМЦ.ТекущийДокумент;
    |ТоварЗапр = Регистр.ТовОст.Товар,Регистр.ТовРезерв.Товар,Регистр.ПартииТМЦ.Товар;
    |СкладЗапр = Регистр.ТовОст.Склад,Регистр.ТовРезерв.Склад,Регистр.ПартииТМЦ.Склад;
    |ФирмаЗапр = Регистр.ТовОст.Фирма,Регистр.ТовРезерв.Источник,Регистр.ПартииТМЦ.Фирма;
    |КолВоЗапр = Регистр.ТовОст.КолВо;
    |ПодрРезерв = Регистр.ТовРезерв.Подразделение;
    |КолВоРезерв = Регистр.ТовРезерв.КолВо;
    |КолВоПартии = Регистр.ПартииТМЦ.КолВо;
    |УСЛОВИЕ (ТоварЗапр=ТоварОтч);
    |ГРУППИРОВКА СкладЗапр;
    |ГРУППИРОВКА ФирмаЗапр;
    |ГРУППИРОВКА ДатаЗапр;
    |ГРУППИРОВКА ДокЗапроса;
    |ГРУППИРОВКА ПартияЗапр Все ВошедшиеВЗапрос;
    |ФУНКЦИЯ НачОстаток=НачОст(КолВоЗапр);
    |ФУНКЦИЯ КонОстаток=КонОст(КолВоЗапр);
    |ФУНКЦИЯ НачОстатокРезерва=НачОст(КолВоРезерв) КОГДА (ПодрРезерв в СпРез);
    |ФУНКЦИЯ КонОстатокРезерва=КонОст(КолВоРезерв) КОГДА (ПодрРезерв в СпРез);
    |ФУНКЦИЯ РасходРезерва=Расход(КолВоРезерв) КОГДА (ПодрРезерв в СпРез);
    |ФУНКЦИЯ ПриходРезерва=Приход(КолВоРезерв) КОГДА (ПодрРезерв в СпРез);
    |ФУНКЦИЯ ПриходТовара = Приход(КолВоЗапр);
    |ФУНКЦИЯ РасходТовара = Расход(КолВоЗапр);
    |ФУНКЦИЯ ПриходПартии = Приход(КолВоПартии);
    |ФУНКЦИЯ РасходПартии = Расход(КолВоПартии);";
    
    Иначе
    ДопСтр = "";
    ТекстЗапроса = "ПЕРИОД С ДатаНачала ПО ДатаКонца;
    |ДатаЗапр = Регистр.ТовОст.ТекущийДокумент,Регистр.ТовРезерв.ТекущийДокумент;
    |ДокЗапроса = Регистр.ТовОст.ТекущийДокумент,Регистр.ТовРезерв.ТекущийДокумент;
    |ТоварЗапр = Регистр.ТовОст.Товар,Регистр.ТовРезерв.Товар;
    |СкладЗапр = Регистр.ТовОст.Склад,Регистр.ТовРезерв.Склад;
    |ФирмаЗапр = Регистр.ТовОст.Фирма,Регистр.ТовРезерв.Источник;
    |КолВоЗапр = Регистр.ТовОст.КолВо;
    |ПодрРезерв = Регистр.ТовРезерв.Подразделение;
    |КолВоРезерв = Регистр.ТовРезерв.КолВо;
    |УСЛОВИЕ (ТоварЗапр=ТоварОтч);
    |ГРУППИРОВКА СкладЗапр;
    |ГРУППИРОВКА ФирмаЗапр;
    |ГРУППИРОВКА ДатаЗапр;
    |ГРУППИРОВКА ДокЗапроса;
    |ФУНКЦИЯ КонОстаток=КонОст(КолВоЗапр);
    |ФУНКЦИЯ НачОстаток=НачОст(КолВоЗапр);
    |ФУНКЦИЯ НачОстатокРезерва=НачОст(КолВоРезерв) КОГДА (ПодрРезерв в СпРез);
    |ФУНКЦИЯ КонОстатокРезерва=КонОст(КолВоРезерв) КОГДА (ПодрРезерв в СпРез);
    |ФУНКЦИЯ РасходРезерва=Расход(КолВоРезерв) КОГДА (ПодрРезерв в СпРез);
    |ФУНКЦИЯ ПриходРезерва=Приход(КолВоРезерв) КОГДА (ПодрРезерв в СпРез);
    |ФУНКЦИЯ ПриходТовара = Приход(КолВоЗапр);
    |ФУНКЦИЯ РасходТовара = Расход(КолВоЗапр);";
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    
    Если ПустоеЗначение(Скл)<>1 Тогда
    ТекстЗапроса = ТекстЗапроса+"УСЛОВИЕ (СкладЗапр=Скл);";
    КонецЕсли;
    
    Если ПустоеЗначение(ФирмаОтч)<>1 Тогда
    ТекстЗапроса = ТекстЗапроса+"УСЛОВИЕ (ФирмаЗапр=ФирмаОтч);";
    КонецЕсли;
    В таком роде? И как будет выглядеть условие при котором добавляется секция?
  8. TopicStarter Overlay
    Toxa82
    Offline

    Toxa82

    Регистрация:
    25 янв 2012
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Попробовал написать запрос, чтобы обойтись без ТЗ, но как слепить вместе результаты, чтобы добавлялись секции не знаю. Да и в запросе не очень уверен.
    Посмотреть вложение 9979

    Вложения:

  9. vip6374
    Offline

    vip6374

    Регистрация:
    20 май 2006
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Если уж рекомендуете, то рекомендуйте конкретно, что за литература, где скачать
  10. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    1С:Предприятие: Описание встроенного языка (версия 7.7). © Фирма "1С".

    Идет в коробке с 1С. По запросам и примеры есть.
  11. vip6374
    Offline

    vip6374

    Регистрация:
    20 май 2006
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Предполагаю, что Вы не отделяете сам запрос (и язык запроса) от обработки запроса.
    Я прав?

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