8.х Материальный отчет

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Steelrat, 3 мар 2011.

  1. TopicStarter Overlay
    Steelrat
    Offline

    Steelrat

    Регистрация:
    20 апр 2006
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте! Имеется проблема, после перехода с 1С "Бухгалтерия предприятия" 8.2 редакция 1.6 на 1С "Бухгалтерия предприятия" 8.2 редакция 2.0.17.7 перестал работать внешний отчет "Материальный отчет" . Проблема в том, что отчет не производит выборку по запросу из регистров бухгалтерии, хотя в 1.6 все считало. Подскажите пожалуйста в чем беда?

    Процедура запроса:

    Код:
    Процедура КнопкаСформироватьНажатие(Кнопка)
    
    Запрос = новый запрос;
    Запрос.УстановитьПараметр("Субконто2",Субконто2);
    Запрос.УстановитьПараметр("Счет",Счет);
    Запрос.УстановитьПараметр("Организация",Организация);
    Запрос.УстановитьПараметр("ДатаНач",ДатаНач);
    Запрос.УстановитьПараметр("ДатаКон",ДатаКон);
    Запрос.Текст = "ВЫБРАТЬ
    |	ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
    |	ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
    |	ХозрасчетныйОстаткиИОбороты.Субконто1.Код КАК КодМат,	
    |	ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2,
    |	ХозрасчетныйОстаткиИОбороты.Субконто3 КАК Субконто3,
    |	ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
    |	ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт,
    |	ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаПрихода,
    |	ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаРасхода,
    |	ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
    |	ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт,
    |	ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт КАК КолвоКонечныйОстатокДт,
    |	ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокКт КАК КолвоКонечныйОстатокКт,
    |	ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт КАК КоличествоПриход,
    |	ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт КАК КоличествоРасход,
    |	ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
    |	ВложенныйЗапрос.БазоваяЕдиницаИзмеренияСсылка КАК ЕдИзм
    |ИЗ
    |	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет В ИЕРАРХИИ (&Счет), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
    |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |			Номенклатура.БазоваяЕдиницаИзмерения.Ссылка КАК БазоваяЕдиницаИзмеренияСсылка,
    |			Номенклатура.Ссылка КАК Ссылка
    |		ИЗ
    |			Справочник.Номенклатура КАК Номенклатура) КАК ВложенныйЗапрос
    |		ПО ХозрасчетныйОстаткиИОбороты.Субконто1 = ВложенныйЗапрос.Ссылка
    |ГДЕ
    |	ХозрасчетныйОстаткиИОбороты.Субконто2 = &Субконто2
    |	
    |	
    |УПОРЯДОЧИТЬ ПО
    |	Субконто1
    |АВТОУПОРЯДОЧИВАНИЕ";
    Результат = Запрос.Выполнить().Выгрузить();
    ТабДокумент = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакета.Параметры.Подотчетник = Субконто2;
    ОбластьМакета.Параметры.Организация = Организация;
    ОбластьМакета.Параметры.ДатаНач = ДатаНач;
    ОбластьМакета.Параметры.ДатаКон = ДатаКон;
    ТабДокумент.Вывести(ОбластьМакета);
    Таблица = Макет.ПолучитьОбласть("Таблица");
    ПН = 0;
    КНОД = 0;
    СНОД = 0;
    КОДТ = 0;
    СЦД = 0;
    КОКТ = 0;
    СКТ = 0;
    КИ = 0;
    СИ = 0;
    //Товары = ИнициализацияТаблицы();
    Для каждого Строка из Результат Цикл;
    ПН = ПН+1;
    Таблица.Параметры.ПН = ПН;	
    Таблица.Параметры.Счет = Строка.Счет;
    Таблица.Параметры.ЕдИзм = Строка.ЕдИзм;
    Таблица.Параметры.КодМат = Строка.КодМат;
    
    //Строчка.Счет = Строка.Счет;
    Таблица.Параметры.Субконто1 = Строка.Субконто1;
    
    Таблица.Параметры.КолвоНачало = Строка.КоличествоНачальныйОстаток;
    КНОД = КНОД+Строка.КоличествоНачальныйОстаток;
    Таблица.Параметры.СуммаНачало = Строка.СуммаНачальныйОстатокДт;
    СНОД =СНОД+ Строка.СуммаНачальныйОстатокДт;
    
    Таблица.Параметры.ОборотДТ = Строка.КоличествоПриход;
    Если Строка.КоличествоПриход = 0 тогда
    Таблица.Параметры.ЦенаДт = 0;
    Иначе
    Таблица.Параметры.ЦенаДт = Строка.СуммаПрихода;
    КонецЕсли;
    КОДТ = КОДТ + Строка.КоличествоПриход;
    СЦД = СЦД + Строка.СуммаПрихода;
    
    Таблица.Параметры.ОборотКт = Строка.КоличествоРасход;
    КОКТ =КОКТ + Строка.КоличествоРасход;
    Таблица.Параметры.СуммаКт =  Строка.СуммаРасхода;
    СКТ = СКТ + Строка.СуммаРасхода;
    
    Если ПустыеИтоги = Истина Тогда
    Таблица.Параметры.КолвоИтог = "";
    Таблица.Параметры.СуммаИтог = "";
    Иначе
    Таблица.Параметры.КолвоИтог = (Строка.КоличествоНачальныйОстаток+Строка.КоличествоПриход) - Строка.КоличествоРасход;
    Таблица.Параметры.СуммаИтог = (Строка.СуммаНачальныйОстатокДт+Строка.СуммаПрихода) - Строка.СуммаРасхода;
    КонецЕсли;
    
    Если Строка.СуммаНачальныйОстатокДт = 0 тогда
    Если  Строка.КоличествоПриход =0 Тогда Таблица.Параметры.ЦенаНачало = "";
    Таблица.Параметры.ЦенаНачало = Строка.СуммаПрихода/Строка.КоличествоПриход;
    Иначе
    Если Строка.КоличествоНачальныйОстаток = 0 ИЛИ Строка.КоличествоПриход =0 Тогда Таблица.Параметры.ЦенаНачало = "";
    Таблица.Параметры.ЦенаНачало = (Строка.СуммаНачальныйОстатокДт+Строка.СуммаПрихода)/(Строка.КоличествоНачальныйОстаток+Строка.КоличествоПриход);
    КонецЕсли;	
    КонецЕсли;		
    КонецЕсли;
    
    Если ПустыеИтоги = Истина Тогда
    КИ = "";
    СИ = "";
    Иначе
    КИ = КИ + (Строка.КоличествоНачальныйОстаток+Строка.КоличествоПриход) - Строка.КоличествоРасход;
    СИ = СИ + (Строка.СуммаНачальныйОстатокДт+Строка.СуммаПрихода) - Строка.СуммаРасхода;
    КонецЕсли;
    
    ТабДокумент.Вывести(Таблица);
    КонецЦикла;
    
    //Пустая строка;
    ПС=0;
    
    Пока ПС<КолПустСтрок Цикл
    ПустаяСтрока = Макет.ПолучитьОбласть("ПустаяСтрока");
    ТабДокумент.Вывести(ПустаяСтрока);
    ПС = ПС + 1;
    КонецЦикла;
    
    
    
    Подвал = Макет.ПолучитьОбласть("Подвал");
    //Подвал.Параметры.Подотчетник = Субконто2;
    Подвал.Параметры.КНОД = КНОД;
    Подвал.Параметры.СНОД = СНОД;
    Подвал.Параметры.КОДТ = КОДТ;
    Подвал.Параметры.СЦД = СЦД;
    Подвал.Параметры.КОКТ = КОКТ;
    Подвал.Параметры.СКТ = СКТ;
    Подвал.Параметры.КИ = КИ;
    Подвал.Параметры.СИ = СИ;
    ТабДокумент.Вывести(Подвал);
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент,2,ложь,,ложь);
    
  2. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Т.е. результат запроса пустой? Если да, то в консоле отчетов смотреть запрос.
  3. Максим
    Offline

    Максим Опытный в 1С

    Регистрация:
    28 фев 2008
    Сообщения:
    688
    Симпатии:
    8
    Баллы:
    29
    Беда в том, что вы не указали, что именно перестало работать?
    Что там? ошибка какая-то появляется? или в результат не попадает что-то?
  4. TopicStarter Overlay
    Steelrat
    Offline

    Steelrat

    Регистрация:
    20 апр 2006
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Извиняюсь, ступил...

    Беда в том , что в графической части выводит Шапку с данными, подвал. Не выводит строку "Таблица". Нет выборки данных.
  5. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Проблема, скорее всего, в субконто2. (даже, скорее всего, точно в нем)

    Вопрос №1: по какому счету вы производите выборку?
    Глядя на ваш код, я решил, что по 41сч. (ну или по 10, в общем, по тому счету, где субконто1 - "Номенклатура").
    Дело в том, что в БП 1.6 по этим счетам было так:
    Субконто1 - Номенклатура,
    Субконто2 - Склады,
    Субконто3 - Партии.

    В БП 2.0 немного изменилось (Склады и партии поменяли местами), т.е. стало так:
    Субконто1 - Номенклатура,
    Субконто2 - Партии,
    Субконто3 - Склады.
    Поэтому вы хотите отбор сделать по складу, а программа вам ищет Партии. Естественно, ничего не находит...

    Так я думал сначала...........................
    НО....
    потом я увидел вот эту строку у вас в коде и пришел в небольшой ступор...
    Код:
    ОбластьМакета.Параметры.Подотчетник = Субконто2;
    
    
    Т.е., как я понимаю, под Субконто 2 вы подразумеваете Справочник "Физ. Лица".
    В плане счетов нет ни одного счета, где Субконто1 было бы Номенклатура, а Субконто2 - Физические Лица. Не удивительно, что запрос вам ничего не выдает...
    Удивительно только то, как в редакции 1.6 это работало...:)
    Может, я чего-то недопонимаю. Тогда пишите, по какому счету делаете выборку и что подразумеваете под Субконто 1 и 2, и как это все у вас вяжется друг с другом...
  6. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Кстати, а зачем в запросе СОЕДИНЕНИЕ со справочником "Номенклатура"???
  7. TopicStarter Overlay
    Steelrat
    Offline

    Steelrat

    Регистрация:
    20 апр 2006
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    1cUserAndrew спасибо за подсказку :

    Дело в том, что не я писал обработку, но с Вашей подсказкой разобрался. А по Субконто 2 в БП 1.6 в запросе делалась выборка номенклатуры по складу ответственного лица.

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