Вход | Регистрация


1С:Предприятие ::

Метки: 

Перенос данных колонки ТЧ в ТЗ

Я
   MIF_HELM
 
26.07.18 - 11:01
Здравствуйте, учусь программированию в 1С. Создал с нуля документ. Суть его в том что пользователь выбирает период и в зависимости от его значения в ТЗ появляются новые колонки , заводит нужные данные и при записи все это переносится в нужном формате в ТЧ(данные из колонок записываются в строках), при проведении записывается в регистр накоплений. Но столкнулся с проблемой обратного переноса данных из ТЧ в ТЗ. Подскажите пожалуйста как мне можно это сделать?
Сразу добавлю что при открытии старого документа уже смог подтянуть в ТЗ нужные колонки и создать строку.

Вижу все нужные значения:
    Для Каждого КолонкиТЗ из МассивМесяцев Цикл
        Сообщить(КолонкиТЗ.Имя);
    КонецЦикла;
    Для Каждого СтрокаТЧ из Объект.Производство Цикл
        Сообщить (СтрокаТЧ.Сумма);
    КонецЦикла;
В программировании шарю очень мало, поэтому извините если вопрос из разряда тупых. Заранее спасибо за помощь.
 
  Рекламное место пустует
   Сметанин
 
1 - 26.07.18 - 11:11
А в чем вопрос? Из ТЧ дока выгрузить в ТЗ? Или как записать в регистры?
   MIF_HELM
 
2 - 26.07.18 - 11:24
Как выгрузить ТЧ колонки в строку ТЗ.
   unbred
 
3 - 26.07.18 - 11:27
ЗаполнитьЗначенияСвойств(ТЗ,ТЧ)?
   MIF_HELM
 
4 - 26.07.18 - 11:29
Проблема в том что в ТЧ они в колонке а в тз нужно в строку, потому и не знаю как правильно
   aleks_default
 
5 - 26.07.18 - 11:30
А в ТЧ значения по месяцам как записаны? В одно строке или несколькими строками - на каждый месяц отдельная строка?
   Aleksandr N
 
6 - 26.07.18 - 11:30
(4) Жуть.
   Fish
 
7 - 26.07.18 - 11:31
(4) Транспонировать нужно что ли?
   MIF_HELM
 
8 - 26.07.18 - 11:32
Так наверное проще будет объяснить что за ужас я пытаюсь вытворить https://dropmefiles.com/uju7Z :)
   MIF_HELM
 
9 - 26.07.18 - 11:33
на сообщения можете не обращать внимания. это я пытаюсь выловить значения чтобы понять как обращаться
   MIF_HELM
 
10 - 26.07.18 - 11:40
Пробовал вот так:
Для Каждого СтрокаТЧ из Объект.Производство Цикл
        НайденнаяСтрокаТЗ = ТаблицаПрозводственныеПланы.НайтиСтроки(МассивМесяцев);//Элементы.ТаблицаПрозводственныеПланы.Найти(СтрокаТЧ.КатегорияНоменклатуры, "Категория Номенклатуры");

    Если НайденнаяСтрокаТЗ <> Неопределено Тогда
        МесяцДатаПланирования = Формат(СтрокаТЧ.ДатаПланирования,"ДФ=MMMM");
        ГодДатаПланирования = Формат(Год(СтрокаТЧ.ДатаПланирования),"ЧГ=0");
        ИмяКолонки = "" + МесяцДатаПланирования + ГодДатаПланирования;
        НайденнаяСтрокаТЗ[ИмяКолонки] = СтрокаТЧ.Сумма;
КонецЕсли;
КонецЦикла;
Но программа не определяет метод "Найти"
 
  Рекламное место пустует
   Fish
 
11 - 26.07.18 - 11:41
(10) "Но программа не определяет метод "Найти"" - Как это проявляется?
   MIF_HELM
 
12 - 26.07.18 - 11:45
Не то скинул, пробую сейчас через:

Для Каждого СтрокаТЧ из Объект.Производство Цикл
        НайденнаяСтрокаТЗ = Элементы.ТаблицаПрозводственныеПланы.Найти(СтрокаТЧ.КатегорияНоменклатуры, "Категория Номенклатуры");
    Если НайденнаяСтрокаТЗ <> Неопределено Тогда
        МесяцДатаПланирования = Формат(СтрокаТЧ.ДатаПланирования,"ДФ=MMMM");
        ГодДатаПланирования = Формат(Год(СтрокаТЧ.ДатаПланирования),"ЧГ=0");
        ИмяКолонки = "" + МесяцДатаПланирования + ГодДатаПланирования;

А проявляется в ошибке:{Документ.ПроизводственныеПланы.Форма.ПроизводственныеПланы.Форма(114)}: Метод объекта не обнаружен (Найти)
        НайденнаяСтрокаТЗ = Элементы.ТаблицаПрозводственныеПланы.Найти(СтрокаТЧ.КатегорияНоменклатуры, "Категория Номенклатуры");
        НайденнаяСтрокаТЗ[ИмяКолонки] = СтрокаТЧ.Сумма;
КонецЕсли;
КонецЦикла
   MIF_HELM
 
13 - 26.07.18 - 11:45
(11)Опять не правильно отправил)
Для Каждого СтрокаТЧ из Объект.Производство Цикл
        НайденнаяСтрокаТЗ = Элементы.ТаблицаПрозводственныеПланы.Найти(СтрокаТЧ.КатегорияНоменклатуры, "Категория Номенклатуры");
    Если НайденнаяСтрокаТЗ <> Неопределено Тогда
        МесяцДатаПланирования = Формат(СтрокаТЧ.ДатаПланирования,"ДФ=MMMM");
        ГодДатаПланирования = Формат(Год(СтрокаТЧ.ДатаПланирования),"ЧГ=0");
        ИмяКолонки = "" + МесяцДатаПланирования + ГодДатаПланирования;

КонецЕсли;
КонецЦикла


А проявляется в ошибке:{Документ.ПроизводственныеПланы.Форма.ПроизводственныеПланы.Форма(114)}: Метод объекта не обнаружен (Найти)
        НайденнаяСтрокаТЗ = Элементы.ТаблицаПрозводственныеПланы.Найти(СтрокаТЧ.КатегорияНоменклатуры, "Категория Номенклатуры");
        НайденнаяСтрокаТЗ[ИмяКолонки] = СтрокаТЧ.Сумма;
   Малыш Джон
 
14 - 26.07.18 - 11:47
(13) ТаблицаПрозводственныеПланы.Найти(СтрокаТЧ.КатегорияНоменклатуры, "Категория Номенклатуры");
   MIF_HELM
 
15 - 26.07.18 - 11:52
(13) Так тоже пробовал, та же ошибка
   MIF_HELM
 
16 - 26.07.18 - 11:52
читал в СП и все сделал по нему
   MIF_HELM
 
17 - 26.07.18 - 11:52
но мне если честно не важен способ, главное бы вытащить и вставить)
   Aleksandr N
 
18 - 26.07.18 - 11:55
(17) Юзай найтистроки. Судя по всему у тебя упр. форма. Там таблица значений = данныеформыколлекция.
   Сметанин
 
19 - 26.07.18 - 11:55
УФ?
   MIF_HELM
 
20 - 26.07.18 - 11:56
(19) Да
   Aleksandr N
 
21 - 26.07.18 - 11:57
(19) конечно уф.
   MIF_HELM
 
22 - 26.07.18 - 11:57
(18) Сейчас попробуем
   Сметанин
 
23 - 26.07.18 - 12:01
(20) Тогда к реквизиту надо обращаться а не элементу
   MIF_HELM
 
24 - 26.07.18 - 12:06
(20) что вы имеете ввиду?
   MIF_HELM
 
25 - 26.07.18 - 12:06
(23)Что вы имеете ввиду?
   Aleksandr N
 
26 - 26.07.18 - 12:07
(25) Элемент формы <> реквизит.
   МимохожийОднако
 
27 - 26.07.18 - 12:10
(25) У документа есть реквизиты табличной части. Надо обращаться к ним. А ты обращаешься к элементам формы документа, т.е. к отображению реквизитов.
   Chameleon1980
 
28 - 26.07.18 - 12:11
ЗаполнитьЗначенияСвойств
   MIF_HELM
 
29 - 26.07.18 - 12:16
(26)(27) уже пробовал так сделать
НайденнаяСтрокаТЗ = ТаблицаПрозводственныеПланы.Найти(СтрокаТЧ.КатегорияНоменклатуры, "Категория Номенклатуры");

В (15) писал
   MIF_HELM
 
30 - 26.07.18 - 12:18
(28) первый раз этот метод используя, буду разбираться, спасибо.

Хотя если честно не понятно как можно в нем колонки ТЧ перевести в строки ТЗ
   Сметанин
 
31 - 26.07.18 - 12:21
ТЗ = ТЧ.Скопировать(,"КатегорияНоменклатуры")

И имя колонки не может быть с пробелом
   Chameleon1980
 
32 - 26.07.18 - 12:41
Хотя если честно не понятно как можно в нем колонки ТЧ перевести в строки ТЗ

в строки тз определенной колонки тз ?

ну тебя спрашивали про транспонирование
   Aleksandr N
 
33 - 26.07.18 - 13:09
(29) Так, еще раз.
Используй не ТаблицаПрозводственныеПланы.Найти(), а ТаблицаПрозводственныеПланы.НайтиСтроки()
 
 
   MIF_HELM
 
34 - 26.07.18 - 16:47
Спасибо огромное всем кто помогал, пока что получилось вывести данные для первой строчки, по коду это выглядит:

    НачалоИнтервала=Объект.НачалоПериода;
    КонецИнтервала=Объект.КонецПериода;
    
    МассивМесяцев = Новый Массив;
    
    ПервыйМесяц=НачалоМесяца(НачалоИнтервала);
    Пока ПервыйМесяц <= НачалоМесяца(КонецИнтервала) Цикл

        //Сообщить(ПервыйМесяц);

        НазваниеКолонки=Формат(ПервыйМесяц, "ДФ=MMMMyyy");
        МассивМесяцев.Добавить(Новый РеквизитФормы(НазваниеКолонки, Новый ОписаниеТипов("Число"), "ТаблицаПрозводственныеПланы", НазваниеКолонки, Истина));
        ПервыйМесяц = ДобавитьМесяц(НачалоМесяца(ПервыйМесяц),1);
    КонецЦикла;
    ИзменитьРеквизиты(МассивМесяцев);
        ПервыйМесяц=НачалоМесяца(НачалоИнтервала);
    Пока ПервыйМесяц <= НачалоМесяца(КонецИнтервала) Цикл
        НазваниеКолонки=Формат(ПервыйМесяц, "ДФ=MMМMyyy");        
        НоваяКолонка = Элементы.Добавить(НазваниеКолонки, Тип("ПолеФормы"), Элементы.ТаблицаПрозводственныеПланы);
        НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
        НоваяКолонка.ПутьКДанным = "ТаблицаПрозводственныеПланы."+НазваниеКолонки;
        ПервыйМесяц = ДобавитьМесяц(НачалоМесяца(ПервыйМесяц),1);
    КонецЦикла;

    ВременнаяТЗ = ДанныеФормыВЗначение(ТаблицаПрозводственныеПланы, Тип("ТаблицаЗначений"));
    НоваяСтрока = ВременнаяТЗ.Добавить();
    НоваяСтрока.КатегорияНоменклатуры = Объект.Производство[0].КатегорияНоменклатуры;

    Для Сч = 1 По Объект.Производство.Количество() Цикл
    НоваяСтрока[Сч] = Объект.Производство[Сч-1].Сумма;
    КонецЦикла;

    ЗначениеВДанныеФормы(ВременнаяТЗ, ТаблицаПрозводственныеПланы);
   aleks_default
 
35 - 26.07.18 - 16:52
И че ошибку на вот этом  "НоваяСтрока[Сч] = Объект.Производство[Сч-1].Сумма;" не выдает?
   aleks_default
 
36 - 26.07.18 - 16:53
Это же полная хрень
   aleks_default
 
37 - 26.07.18 - 17:08
В момент создания колонок в своей таблице сделай дополнительно соответсвие в котором ключ - название колонки, значение - дата и заполняй его. Затем запросом выбери из табличной части список категорий сгруппировав так чтобы в списке не было дублей категорий а только уникальные. Далее делаещь цикл по этому списку в котором добавляешь новую строку в таблицупроизводственных планов. внутри этого цикла еще один цикл по соответствию с ключом. Внутри этого цикла у тебя будет известна и Категория(список) и ДатаПланирования(значение соответсвия) и название колонки (ключ соответсвия). По категории и дате планирования находишь нужную строку в ТЧ и заполняешь значение оттуда в соответствующую колонку. Профит
   MIF_HELM
 
38 - 27.07.18 - 07:17
(37) Понимаю что для вас такой код может быть полная хрень но к сожалению моих знаний( и то с помощью) хватило только на это, спасибо что описали что нужно делать но к сожалению мне на этом уровне знаний не понятно как даже половину из этого реализовать.
   aleks_default
 
39 - 27.07.18 - 10:03
(38)Как же вы с таким уровнем знаний взялись за такую задачу? Возьмите для начала что-нибудь попроще.
   takefive
 
40 - 27.07.18 - 11:02
(2) попробуйте так...

Для Каждого СтрокаТабЧасти из Объект.ТабличнаяЧасть Цикл
    СтрокаТабЗначений = ФункцияПоискаСтроки(СтрокаТабЧасти.Номенклатура);
    СтрокаТабЗначений[ФункцияПреобразованияДатыВИмяКолонки(СтрокаТабЧасти.Дата)] = СтрокаТабЧасти.Сумма;
КонецЦикла;



Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует