7.7 Свертка базы ТиС 9.2

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

  1. TopicStarter Overlay
    NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    195
    Симпатии:
    1
    Баллы:
    29
    После заполнения ТЗ, запускаю обработку Сформировать(), которая вызывается кнопкой, но документ не формируется, даже не показывается. В чем может быть причина?
    Код:
     
    Процедура Сформировать()
    Док=СоздатьОбъект("Документ.ПоступлениеТМЦ");
    Док.Новый();       
    //Здесь обработка ТЗ
    Док.Записать();
    ОткрытьФорму(Док.ТекущийДокумент(),,);
    КонецПроцедуры
    
    
  2. TopicStarter Overlay
    NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    195
    Симпатии:
    1
    Баллы:
    29
    Заработало, просто программу перезапустил
  3. TopicStarter Overlay
    NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    195
    Симпатии:
    1
    Баллы:
    29
    Все формируется и заполняется. Еще вопрос. Как вывести остатки только с одного основного склада, а не с двух?
  4. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Добавить условие или группировку в запрос.
  5. TopicStarter Overlay
    NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    195
    Симпатии:
    1
    Баллы:
    29
    Поставил условие в запрос, но все остатки выводит по 2 складам. Использую регистр ПартииНаличие. Соответственно он берет с обоих складов. Если Регистр.ОстаткиТМЦ то как подвязать к конкрентному поставщику?
  6. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Остатки брать из регистра ОсткиТМЦ, а себестоимость - из партий. Все будет Ок только в том случае когда восстановлена последовательности и все товары распределились по партиям. В противном случае достоверность отчета не гарантируется.
  7. TopicStarter Overlay
    NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    195
    Симпатии:
    1
    Баллы:
    29
    Поставим количество из Регистр.ОстаткиТМЦ выдало значение 0 по всем позициям
    Код:
     
    Процедура Заполнить()
    //	ТЗ=СоздатьОбъект("ТаблицаЗначений");
    
    Запрос = СоздатьОбъект("Запрос");
    Таблица = СоздатьОбъект("Таблица");     
    СЗ = СоздатьОбъект("СписокЗначений");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ДатаКонца по ДатаКонца;
    |Номенклатура	= Регистр.ПартииНаличие.Номенклатура;
    |Код			= Регистр.ПартииНаличие.Номенклатура.Код;
    |Количество 	= Регистр.ОстаткиТМЦ.Количество;
    |ЕдИзм			= Регистр.ПартииНаличие.Номенклатура.БазоваяЕдиница;
    |Цена	 		= Регистр.ПартииНаличие.Партия.ЗакупочнаяЦена;
    |Сумма 			= Регистр.ПартииНаличие.СуммаУпр;
    |Контрагент		= Регистр.ПартииНаличие.Партия.Поставщик;
    |Склад			= Регистр.ОстаткиТМЦ.Склад;
    |Функция КонОстКол = КонОст(Количество);
    |Функция КонОстСум = КонОст(Сумма);
    |Условие (Контрагент = ВыбКонтрагент);
    |Условие (Склад = ""Основной склад"");
    |Группировка Номенклатура Без Групп;";
    
    Таблица.ВывестиСекцию("Шапка");
    Запрос.Выполнить(ТекстЗапроса);	
    Пока Запрос.Группировка(1) = 1 Цикл
    Если Запрос.Номенклатура.ЭтоГруппа() = 1 Тогда
    Таблица.ВывестиСекцию("Группа");
    Иначе
    ЦеныТов = создатьОбъект("Справочник.Цены");
    ЦеныТип = создатьОбъект("Справочник.ТипыЦен");
    ЦеныТип.НайтиПоНаименованию("Закупочная");
    ЦеныТов.ИспользоватьВладельца(Запрос.Номенклатура);
    Если ЦеныТов.НайтиПоРеквизиту("ТипЦен",ЦеныТип.ТекущийЭлемент(),0) = 1 Тогда
    ОптЦена = ЦеныТов.Цена.Получить(ДатаКонца);
    КонецЕсли;
    Таблица.ВывестиСекцию("Строка"); 
    КонецЕсли;	   
    КонецЦикла;                
    
    ТЗЗ=СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(ТЗЗ,1,0);  
    ТЗЗ.Выгрузить(ТЗ,1,,"Код,Номенклатура,Количество,ЕдИзм,Цена,Сумма");
    ТЗ.Сортировать("Номенклатура");
    ТЗ.УстановитьПараметрыКолонки(1,,5,,,6,"Ч8.0",2);
    ТЗ.УстановитьПараметрыКолонки(3,,8,,"Колво",8,"Ч8.2",);
    ТЗ.УстановитьПараметрыКолонки(4,,5,,"Ед",5,,);
    
    Таблица.ТолькоПросмотр(1);
    Таблица.Показать();
    
    КонецПроцедуры 
    
    
  8. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Так не правильно... Одной переменной из регистра не достаточно. Вы суммируете партии и накладываете условие на склад (кстати - тоде не правильно. Вы сравниваете разные типы - строку и ссылку на объект
  9. TopicStarter Overlay
    NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    195
    Симпатии:
    1
    Баллы:
    29
    можно с примером как это правильно организовать?
  10. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    |Номенклатура= Регистр.ПартииНаличие.Номенклатура, Регистр.ОстаткиТМЦ.Номенклатура;
    |Контрагент= Регистр.ПартииНаличие.Партия.Поставщик;
    |Склад= Регистр.ОстаткиТМЦ.Склад;
    |Сумма= Регистр.ПартииНаличие.СуммаУпр;	
    |Количество1= Регистр.ОстаткиТМЦ.Количество;
    |Количество2= Регистр.ПартииНаличие.Количество;
    
    
    Из партий получаем себестоимость по поставщику.
    Количествоиз остатков - по складам
  11. TopicStarter Overlay
    NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    195
    Симпатии:
    1
    Баллы:
    29
    В принципе смысл понятен и так. Сегодня попробовал так как посоветовали, но что-то колво1 выводит пустое значение. Причина может в чем-то другом? Прилагаю файл.

    Вложения:

  12. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Опять одно да потому....
    Код:
    |Условие (Склад = ""Основной склад"");
    
    
    Как минимум ЭТО работать не будет. Сравниваете ссылку на справочник со строкой...
  13. TopicStarter Overlay
    NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    195
    Симпатии:
    1
    Баллы:
    29
    Просто если буду выбирать на форме он выдаст все остатки по складу независимо от поставщика
    Код:
    |Условие (Склад = ВыбСклад);
    
    
  14. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    А вообще у вас партионный учет настроен? Что стоит в фирме в параметре "метод расчета себестоимости"?
  15. TopicStarter Overlay
    NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    195
    Симпатии:
    1
    Баллы:
    29
    FIFO
  16. TopicStarter Overlay
    NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    195
    Симпатии:
    1
    Баллы:
    29
    Не работают два условия одновременно. Если выбран Контрагент без выбора нужного склада. То выводит весь остаток по нему. А если выбираем дополнительно еще и нужный нам склад, то выводит все остатки по выбранному складу независимо от контрагента.
  17. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Если не получается - сделайте 2 независимых запроса.
    Их результат объединить через ТаблицуЗначений
  18. TopicStarter Overlay
    NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    195
    Симпатии:
    1
    Баллы:
    29
    Попробовал создать два запроса, по каждому из них заполнил свою ТЗ, таким образом одна с данным по поставщику, другая с остатками. Каким образом перебрать данные второй ТЗ исходя из данных первой. Т.е. берем первую строку и ищем по наименованию такую же во второй, и найденную строку добавляем в третью ТЗ.
  19. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Правильно. В цикле объединять по номенклатуре
  20. TopicStarter Overlay
    NovInNik
    Offline

    NovInNik Опытный в 1С

    Регистрация:
    12 ноя 2007
    Сообщения:
    195
    Симпатии:
    1
    Баллы:
    29
    Допустим в ТЗ1 три элемента, в ТЗ2 - 500 (все три элемента из ТЗ1 присутствуют в ТЗ2).
    1. Беру первый элемент из ТЗ1.
    2. Проверяю нахождение такого же элемента в ТЗ2
    3. Если нашел добавляю данный элемент в ТЗ3, если нет то пропустить.

    в цикле вроде и перебираю, но заполняется ТЗ3 всеми значениями ТЗ2, в чем может быть загвоздка, может он не находит нужного элемента, как это проверить?

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