7.7 Помогите найти ошибку в коде.

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

  1. TopicStarter Overlay
    chehonte
    Offline

    chehonte Опытный в 1С

    Регистрация:
    26 фев 2007
    Сообщения:
    174
    Симпатии:
    0
    Баллы:
    26
    Делаю отчет. Изделия состоят из материалов, в основном из одних и тех же. Нужно вывести количество затраченных материалов.
    Код:
    ТаблицаСписываемыхМПЗ - заполняется, а когда Свернуть обнуляется. Не пойму почему.
    
    СекцияСекция = Таб.ПолучитьСекцию("Секция");
    
    ТаблицаСписываемыхМПЗ = СоздатьОбъект("ТаблицаЗначений");
    ТаблицаСписываемыхМПЗ.НоваяКолонка("МПЗ");
    //		ТаблицаСписываемыхМПЗ.НоваяКолонка("ВидНоменклатуры");
    ТаблицаСписываемыхМПЗ.НоваяКолонка("Количество", "Число", 15, 3);
    
    Нормы = СоздатьОбъект("Справочник.НормыРасходов");
    Нормы.ИспользоватьДату(ДатаДок);
    
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    Нормы.ИспользоватьВладельца(Товар);
    Нормы.ВыбратьЭлементы();
    Пока Нормы.ПолучитьЭлемент() = 1 Цикл
    Если (Нормы.КолПрод  = 0) или (Нормы.ПометкаУдаления() = 1) Тогда
    Иначе
    КоличествоМПЗ = Количество * (Нормы.Норма / Нормы.КолПрод);  //какая-то норма
    Если КоличествоМПЗ > 0 Тогда
    ТаблицаСписываемыхМПЗ.НоваяСтрока();
    СекцияСекция.МПЗ            = Нормы.Элемент;
    //	ТаблицаСписываемыхМПЗ.ВидНоменклатуры = Товар.ВидНоменклатуры;
    СекцияСекция.Кол      = КоличествоМПЗ; 
    //	Таб.ВывестиСекцию(СекцияСекция);
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    ТаблицаСписываемыхМПЗ.Свернуть("МПЗ", "Количество");
    
    Ном1=0;   
    Пока ТаблицаСписываемыхМПЗ.ПолучитьСтроку()=1 Цикл 
    Ном1 = Ном1+1;
    СекцияСекция.МПЗ = ТаблицаСписываемыхМПЗ.МПЗ;
    СекцияСекция.Кол = ТаблицаСписываемыхМПЗ.Количество;
    Таб.ВывестиСекцию(СекцияСекция);
    КонецЦикла;
    
    [warn=Внимание!]
    Пользуемся тэгами!
    [/warn]
  2. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    где заполняется??
    Код:
    					Если КоличествоМПЗ > 0 Тогда
    ТаблицаСписываемыхМПЗ.НоваяСтрока();
    СекцияСекция.МПЗ            = Нормы.Элемент;
    //	ТаблицаСписываемыхМПЗ.ВидНоменклатуры = Товар.ВидНоменклатуры;
    СекцияСекция.Кол      = КоличествоМПЗ; 
    //	Таб.ВывестиСекцию(СекцияСекция);
    КонецЕсли;
    
    судя по коду, ты создаешь пустые строки
  3. TopicStarter Overlay
    chehonte
    Offline

    chehonte Опытный в 1С

    Регистрация:
    26 фев 2007
    Сообщения:
    174
    Симпатии:
    0
    Баллы:
    26
    Подскажите почему?
    У меня опыта не много в этом деле.
    На примере количество.

    Если КоличествоМПЗ > 0 Тогда
    СекцияСекция.Кол = КоличествоМПЗ;

    Должно же вроде работать?
  4. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    секция относится к "таблице" (макет), а тебе нужно заполнять и сворачивать "таблицу значений".
    Код:
    Если КоличествоМПЗ > 0 Тогда
    ТаблицаСписываемыхМПЗ.НоваяСтрока();
    ТаблицаСписываемыхМПЗ.МПЗ = Нормы.ТекущийЭлемент();
    ТаблицаСписываемыхМПЗ.Количество= КоличествоМПЗ;
    
    а этот кусок
    Код:
    	Пока ТаблицаСписываемыхМПЗ.ПолучитьСтроку()=1 Цикл
    Ном1 = Ном1+1;
    СекцияСекция.МПЗ = ТаблицаСписываемыхМПЗ.МПЗ;
    СекцияСекция.Кол = ТаблицаСписываемыхМПЗ.Количество;
    Таб.ВывестиСекцию(СекцияСекция);
    КонецЦикла;
    
    должен выгялдеть так:
    Код:
    Пока ТаблицаСписываемыхМПЗ.ПолучитьСтроку()=1 Цикл
    Ном1 = Ном1+1;
    Таб.ВывестиСекцию(СекцияСекция);
    КонецЦикла;
    
    [/code]
  5. TopicStarter Overlay
    chehonte
    Offline

    chehonte Опытный в 1С

    Регистрация:
    26 фев 2007
    Сообщения:
    174
    Симпатии:
    0
    Баллы:
    26
    ОК Сделал как Вы написали. Правильно!
    Должно работать, но нет.
  6. TopicStarter Overlay
    chehonte
    Offline

    chehonte Опытный в 1С

    Регистрация:
    26 фев 2007
    Сообщения:
    174
    Симпатии:
    0
    Баллы:
    26
    По отладчику видно, что элементы в таблице не остаются.

    ТаблицаСписываемыхМПЗ.ПолучитьСтроку()=0

    Если наблюдать пошагово.

    ТаблицаСписываемыхМПЗ.МПЗ = Нормы.ТекущийЭлемент(); есть материал
    ТаблицаСписываемыхМПЗ.Количество= КоличествоМПЗ; есть цифра

    НО
    ТаблицаСписываемыхМПЗ.ПолучитьСтроку()=0
  7. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    не-не..
    ПолучитьСтроку() вернет 0 если строк нет или выборки не было. Пишите так:

    Код:
    ТаблицаСписываемыхМПЗ.ВыбратьСтроки();
    Пока ТаблицаСписываемыхМПЗ.ПолучитьСтроку() = 1  Цикл
    ...
    
    Посмотреть что в таблице записано можно так: ТаблицаСписываемыхМПЗ.ВыбратьСтроку()
  8. TopicStarter Overlay
    chehonte
    Offline

    chehonte Опытный в 1С

    Регистрация:
    26 фев 2007
    Сообщения:
    174
    Симпатии:
    0
    Баллы:
    26

    УРА! УРА! Спасибо!
    Выводиться, но не свернуто.

    Пока вот так:
    Материал, Полотно основовязанное.
    Материал, Полотно основовязанное.
    Материал, Полотно основовязанное.
    Материал, Полотно трикотажное.
    Материал, Полотно трикотажное.
    Материал, Полотно эластичное.

    А нужно:
    Материал, Полотно основовязанное. - общее количество
    Материал, Полотно трикотажное. - общее количество
    Материал, Полотно эластичное.
    Материал, Полотно эластичное.

    Вроде бы это функция
    ТаблицаСписываемыхМПЗ.Свернуть("МПЗ", "Количество");

    Или нет такой функции?
  9. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Да. Эта. Приведите текущий полный код обработки. Желательно в виде самой обработки прикрепленной к сообщению. Большие тексты не удобно читать с экрана
  10. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Если после этого метода таблица не свернута - значит элементы в таблице разные..
    "
    Материал, Полотно основовязанное.
    Материал, Полотно основовязанное.
    Материал, Полотно основовязанное. " это точно одни и те же элементы, а не дубли в справочнике?

    Вообще, судя по первому посту Нормы это справочник подчиненный товарам.
    Если нужно в МПЗ пихать товар тогда так ТаблицаСписываемыхМПЗ.МПЗ = Нормы.Владелец;
    Если все таки подчиненные - тогда нужно понимать что это разные элементы (представьте, к примеру, что владелец это книга, его подчиненные элементы это страницы, а другой владелец - это другая книга со своими страницами).
    Вместо элементов можно попробовать пихать в ТЗ наименования..
    типа: ТаблицаСписываемыхМПЗ.МПЗ = СокрЛП(Нормы.Наименование); тогда можно будет свернуть.
    Если же у Норм есть реквизит, который ссылается на другой справочник, в котором эти Нормы уникальны типа как написано в вашем коде здесь "....МПЗ = Нормы.Элемент;" (здесь можно представить себе два ящика с бутылками, в бутылках - конечно же, пиво. Ящики разные, бутылки тоже - а пиво одинаковое)
    Тогда, конечно, в ТЗ можно добавлять его и тогда тоже без проблем все свернётся.
  11. TopicStarter Overlay
    chehonte
    Offline

    chehonte Опытный в 1С

    Регистрация:
    26 фев 2007
    Сообщения:
    174
    Симпатии:
    0
    Баллы:
    26
    Спасибо большое. Все работает.
    Удачи вам во всем! :angry:
  12. TopicStarter Overlay
    chehonte
    Offline

    chehonte Опытный в 1С

    Регистрация:
    26 фев 2007
    Сообщения:
    174
    Симпатии:
    0
    Баллы:
    26
    Подскажите, а я могу вывести цену каждой нормы?
    Цены хранятся в справочнике Материалы.
    Нормы подчинены Товарам.

    Чтобы был отчет примерно такой:
    Полотно - 50 метров - 100 рублей
    ... и т.д.

    Если да то как такую связь организовать?
  13. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Конфигурация ПУБ?
  14. TopicStarter Overlay
    chehonte
    Offline

    chehonte Опытный в 1С

    Регистрация:
    26 фев 2007
    Сообщения:
    174
    Симпатии:
    0
    Баллы:
    26
    Что такое ПУБ?
  15. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Конфигурация: Производство Услуги Бухгалтерия
  16. TopicStarter Overlay
    chehonte
    Offline

    chehonte Опытный в 1С

    Регистрация:
    26 фев 2007
    Сообщения:
    174
    Симпатии:
    0
    Баллы:
    26
    Да. ПУБ.
  17. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Какая вообще стоит задача? Что за отчет?
    Не забывайте что норму просто так в ПУБ брать не совсем правильно, т.к. существуют дополнительные спецификации по которым возможен выпуск + еще аналоги...
  18. TopicStarter Overlay
    chehonte
    Offline

    chehonte Опытный в 1С

    Регистрация:
    26 фев 2007
    Сообщения:
    174
    Симпатии:
    0
    Баллы:
    26
    Задача:
    Отчет вида

    Фирма изготовила:

    1. Продукция1 - 55шт - 100рублей (себестоимость по материалам)
    2. Продукция2 - 10шт - 30рублей (себестоимость по материалам)

    Для изготовления продукции израсходовано:

    1. Материал1 - 100метров - Цена материала
    1. Материал2 - 170метров - Цена
    1. Материал3 - 108метров - Цена
    1. Материал4 - 80метров - Цена

    В продукции есть Справочник Номенклатура, который связан с Материалами. В номенклатуре все нормы.

    Материалы и количество выводятся.
    Количество продукции я заполняю сам.
  19. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    В регистре ПАРТИИ хранится вся необходимая вам информация
  20. TopicStarter Overlay
    chehonte
    Offline

    chehonte Опытный в 1С

    Регистрация:
    26 фев 2007
    Сообщения:
    174
    Симпатии:
    0
    Баллы:
    26
    Я очень давно не ползал по конфигурации.

    Как этот регистр достать?

    Если подробнее об установленной 1С:
    Бух учет редакция 4.5 (7.70.452)
    Установленные компоненты:
    Бух учет
    Оперативный учет
    Расчет
    Управление распределенными ИБ

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