Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 12:29

Маленький вопросик

Автор djkeysi, 10 ноя 2016, 12:13

0 Пользователей и 3 гостей просматривают эту тему.

Kironten

тогда показывайте код который у вас до вызова.
Т.е. до вашей конструкции:
Движение.РабочееМесто = НайтиТретийУровеньВложенностиНоменклатуры(Справочники.Номенклатура.ПолучитьСсылку().Родитель);

djkeysi

Цитата: Kironten от 10 ноя 2016, 18:07
тогда показывайте код который у вас до вызова.
Т.е. до вашей конструкции:
Движение.РабочееМесто = НайтиТретийУровеньВложенностиНоменклатуры(Справочники.Номенклатура.ПолучитьСсылку().Родитель);

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

// регистр ЛимитПроизводства


Движения.ЛимитПроизводства.Записывать = Истина;
Для Каждого ТекСтрокаЗапасы Из Запасы Цикл

Таблица = Запасы.ВыгрузитьКолонку("Спецификация").Получить(0);
//Таб2 =
Движение = Движения.ЛимитПроизводства.Добавить();
Движение.Период = ДатаОтгрузки;
Движение.Площадь = ТекСтрокаЗапасы.Количество;
Движение.Количество = ТекСтрокаЗапасы.КоличествоИзделий;
Движение.Операция = ВозратПоСпецификации(Таблица);
//Движение.РабочееМесто = НайтиТретийУровеньВложенностиНоменклатуры();
  ВозратПоСпецификации2();


КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры


&НаСервере
Функция ВозратПоСпецификации(таблицы)
Спр = Справочники.Спецификации;
    спр2= Спр.НайтиПоНаименованию(таблицы);
Таблица1 = спр2.Операции.Выгрузить(,"Операция,НормаВремени");
//Сообщить(Таблица1[0].Операция );

   Возврат Таблица1[0].Операция;
   //Возврат НайтиТретийУровеньВложенностиНоменклатуры(Таблица1[0].Операция);     

КонецФункции


Kironten

По идее, должно быть что то наподобие:
...
Движение.Количество = ТекСтрокаЗапасы.КоличествоИзделий;
Движение.Операция = ВозратПоСпецификации(Таблица);
Движение.РабочееМесто = НайтиТретийУровеньВложенностиНоменклатуры(ТекСтрокаЗапасы.Номенклатура);
ВозратПоСпецификации2();
...

Но это при учете, что во-первых есть такая колонка "Номенклатура" в табличной части "Запасы", во-вторых у этой колонки тип СправочникСсылка.Номенклатура, и в третьих в регистре "лимитпроизводства" реквизит "рабочееместо" имеет тип строка.

djkeysi

Цитата: Kironten от 10 ноя 2016, 18:19
По идее, должно быть что то наподобие:
...
Движение.Количество = ТекСтрокаЗапасы.КоличествоИзделий;
Движение.Операция = ВозратПоСпецификации(Таблица);
Движение.РабочееМесто = НайтиТретийУровеньВложенностиНоменклатуры(ТекСтрокаЗапасы.Номенклатура);
ВозратПоСпецификации2();
...

Но это при учете, что во-первых есть такая колонка "Номенклатура" в табличной части "Запасы", во-вторых у этой колонки тип СправочникСсылка.Номенклатура, и в третьих в регистре "лимитпроизводства" реквизит "рабочееместо" имеет тип строка.

Он мне в итоге урезал строку но не выдал название папки к примеру рамка

Kironten

Что значит "урезал"? Давайте чуть более развернуто описывайте, потому как понятно, что с терминами вы не очень хорошо дружите.
Добавлено: 10 ноя 2016, 18:58


По-поводу "урезанности", не знаю что вы имеете ввиду, но есть подозрение, что косяк тут:
Движения.ЛимитПроизводства.Записывать = Истина;
Для Каждого ТекСтрокаЗапасы Из Запасы Цикл       
     Таблица = Запасы.ВыгрузитьКолонку("Спецификация").Получить(0);


должно быть так:
Движения.ЛимитПроизводства.Записывать = Истина;
Для Каждого ТекСтрокаЗапасы Из Запасы Цикл       
     Таблица = Запасы.Спецификация;

по поводу незаполненности наименования группы - еще раз говорю идите в конфигуратор и смотрите какой тип значения у реквизита "рабочееместо" регистра "лимитыпроизводства". Т.к. у вас функция возвращает строку, то и тип реквизита должен быть строка, в ином случае, заполнения НЕ БУДЕТ. Выход - получайте нужный тип значения для записи.

djkeysi

Вот рабочий код, только мне конечно не нравится функция НайтиТретийУровеньВложенностиНоменклатуры:

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

// регистр ЛимитПроизводства
Движения.ЛимитПроизводства.Записывать = Истина;
Для Каждого ТекСтрокаЗапасы Из Запасы Цикл

//Таблица = Запасы.ВыгрузитьКолонку("Спецификация").Получить(0);
ЗапасыСпец =  ТекСтрокаЗапасы.Спецификация;
Движение = Движения.ЛимитПроизводства.Добавить();
Движение.Период = ДатаОтгрузки;
Движение.Площадь = ТекСтрокаЗапасы.Количество;
Движение.Количество = ТекСтрокаЗапасы.КоличествоИзделий;
Движение.Операция = ВозратПоСпецификации(ЗапасыСпец);
Движение.РабочееМесто = НайтиТретийУровеньВложенностиНоменклатуры(ВозратПоСпецификации(ЗапасыСпец));

КонецЦикла;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры


&НаСервере
Функция ВозратПоСпецификации(таблицы)
СпрСпец = Справочники.Спецификации;
СпрСпец2= СпрСпец.НайтиПоНаименованию(таблицы);
ТЧОперации = СпрСпец2.Операции.Выгрузить(,"Операция,НормаВремени");

Возврат ТЧОперации[0].Операция;

КонецФункции

&НаСервере
Функция НайтиТретийУровеньВложенностиНоменклатуры(Номенклатура)

    Уровень3 = Номенклатура.Родитель;
    Уровень2 = Уровень3.Родитель;
    Уровень1 = Уровень2.Родитель;

    Если Уровень1 <> Справочники.Номенклатура.ПустаяСсылка() Тогда

        Пока Уровень1.Родитель <> Справочники.Номенклатура.ПустаяСсылка() Цикл
            Уровень3 = Уровень3.Родитель;
            Уровень2 = Уровень2.Родитель;
            Уровень1 = Уровень1.Родитель;
        КонецЦикла;

        Возврат Уровень3; //стеклопакеты
    Иначе
        Возврат Уровень3;
    КонецЕсли;

КонецФункции // НайтиТретийУровеньВложенностиНоменклатуры()

Спасибо тебе милый человек! говорил с конца рабочего времени башка не варит))

alex0402

Спасибо за Сказать спасибо

djkeysi

Подскажите, как можно сделать:
Есть у нас регистр сведений(непереодический) в нем есть измерение дата и ресурс время выполнения, каждый день туда пишется информация - к примеру - дата: 18.09.2016 и Время выполнения: 75, таких дат может быть несколько, как мне сделать подсчет, например на 18.09.2016 было столько то времени выполнения, на другие даты столько то, без использования отчета. Просто мне в дальнейшем нужно будет эти значения сравнивать с другим реквизитом на форме и выводить сообщения.

Kironten

Запрос к регистру с условием
ГДЕ
Регистр.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания

И суммируете ресурс.

djkeysi

Цитата: Kironten от 11 ноя 2016, 12:19
Запрос к регистру с условием
ГДЕ
Регистр.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания

И суммируете ресурс.

данный запрос будет выбить к примеру 18.09.2016 далее значение ресурса и 19.06.2016 значение ресурса, между этими  датами ,без каких либо там часов(что мне и надо) правильно я понимаю?

Теги:

Похожие темы (1)

Рейтинг@Mail.ru

Поиск