|
Перенос данных колонки ТЧ в ТЗ | ☑ | ||
---|---|---|---|---|
0
MIF_HELM
26.07.18
✎
11:01
|
Здравствуйте, учусь программированию в 1С. Создал с нуля документ. Суть его в том что пользователь выбирает период и в зависимости от его значения в ТЗ появляются новые колонки , заводит нужные данные и при записи все это переносится в нужном формате в ТЧ(данные из колонок записываются в строках), при проведении записывается в регистр накоплений. Но столкнулся с проблемой обратного переноса данных из ТЧ в ТЗ. Подскажите пожалуйста как мне можно это сделать?
Сразу добавлю что при открытии старого документа уже смог подтянуть в ТЗ нужные колонки и создать строку. Вижу все нужные значения: Для Каждого КолонкиТЗ из МассивМесяцев Цикл Сообщить(КолонкиТЗ.Имя); КонецЦикла; Для Каждого СтрокаТЧ из Объект.Производство Цикл Сообщить (СтрокаТЧ.Сумма); КонецЦикла; В программировании шарю очень мало, поэтому извините если вопрос из разряда тупых. Заранее спасибо за помощь. |
|||
1
Сметанин
26.07.18
✎
11:11
|
А в чем вопрос? Из ТЧ дока выгрузить в ТЗ? Или как записать в регистры?
|
|||
2
MIF_HELM
26.07.18
✎
11:24
|
Как выгрузить ТЧ колонки в строку ТЗ.
|
|||
3
unbred
26.07.18
✎
11:27
|
ЗаполнитьЗначенияСвойств(ТЗ,ТЧ)?
|
|||
4
MIF_HELM
26.07.18
✎
11:29
|
Проблема в том что в ТЧ они в колонке а в тз нужно в строку, потому и не знаю как правильно
|
|||
5
aleks_default
26.07.18
✎
11:30
|
А в ТЧ значения по месяцам как записаны? В одно строке или несколькими строками - на каждый месяц отдельная строка?
|
|||
6
Aleksandr N
26.07.18
✎
11:30
|
(4) Жуть.
|
|||
7
Fish
26.07.18
✎
11:31
|
(4) Транспонировать нужно что ли?
|
|||
8
MIF_HELM
26.07.18
✎
11:32
|
Так наверное проще будет объяснить что за ужас я пытаюсь вытворить https://dropmefiles.com/uju7Z :)
|
|||
9
MIF_HELM
26.07.18
✎
11:33
|
на сообщения можете не обращать внимания. это я пытаюсь выловить значения чтобы понять как обращаться
|
|||
10
MIF_HELM
26.07.18
✎
11:40
|
Пробовал вот так:
Для Каждого СтрокаТЧ из Объект.Производство Цикл НайденнаяСтрокаТЗ = ТаблицаПрозводственныеПланы.НайтиСтроки(МассивМесяцев); //Элементы.ТаблицаПрозводственныеПланы.Найти(СтрокаТЧ.КатегорияНоменклатуры, "Категория Номенклатуры"); Если НайденнаяСтрокаТЗ <> Неопределено Тогда МесяцДатаПланирования = Формат(СтрокаТЧ.ДатаПланирования,"ДФ=MMMM"); ГодДатаПланирования = Формат(Год(СтрокаТЧ.ДатаПланирования),"ЧГ=0"); ИмяКолонки = "" + МесяцДатаПланирования + ГодДатаПланирования; НайденнаяСтрокаТЗ[ИмяКолонки] = СтрокаТЧ.Сумма; КонецЕсли; КонецЦикла; Но программа не определяет метод "Найти" |
|||
11
Fish
26.07.18
✎
11:41
|
(10) "Но программа не определяет метод "Найти"" - Как это проявляется?
|
|||
12
MIF_HELM
26.07.18
✎
11:45
|
Не то скинул, пробую сейчас через:
Для Каждого СтрокаТЧ из Объект.Производство Цикл НайденнаяСтрокаТЗ = Элементы.ТаблицаПрозводственныеПланы.Найти(СтрокаТЧ.КатегорияНоменклатуры, "Категория Номенклатуры"); Если НайденнаяСтрокаТЗ <> Неопределено Тогда МесяцДатаПланирования = Формат(СтрокаТЧ.ДатаПланирования,"ДФ=MMMM"); ГодДатаПланирования = Формат(Год(СтрокаТЧ.ДатаПланирования),"ЧГ=0"); ИмяКолонки = "" + МесяцДатаПланирования + ГодДатаПланирования; А проявляется в ошибке:{Документ.ПроизводственныеПланы.Форма.ПроизводственныеПланы.Форма(114)}: Метод объекта не обнаружен (Найти) НайденнаяСтрокаТЗ = Элементы.ТаблицаПрозводственныеПланы.Найти(СтрокаТЧ.КатегорияНоменклатуры, "Категория Номенклатуры"); НайденнаяСтрокаТЗ[ИмяКолонки] = СтрокаТЧ.Сумма; КонецЕсли; КонецЦикла |
|||
13
MIF_HELM
26.07.18
✎
11:45
|
(11)Опять не правильно отправил)
Для Каждого СтрокаТЧ из Объект.Производство Цикл НайденнаяСтрокаТЗ = Элементы.ТаблицаПрозводственныеПланы.Найти(СтрокаТЧ.КатегорияНоменклатуры, "Категория Номенклатуры"); Если НайденнаяСтрокаТЗ <> Неопределено Тогда МесяцДатаПланирования = Формат(СтрокаТЧ.ДатаПланирования,"ДФ=MMMM"); ГодДатаПланирования = Формат(Год(СтрокаТЧ.ДатаПланирования),"ЧГ=0"); ИмяКолонки = "" + МесяцДатаПланирования + ГодДатаПланирования; КонецЕсли; КонецЦикла А проявляется в ошибке:{Документ.ПроизводственныеПланы.Форма.ПроизводственныеПланы.Форма(114)}: Метод объекта не обнаружен (Найти) НайденнаяСтрокаТЗ = Элементы.ТаблицаПрозводственныеПланы.Найти(СтрокаТЧ.КатегорияНоменклатуры, "Категория Номенклатуры"); НайденнаяСтрокаТЗ[ИмяКолонки] = СтрокаТЧ.Сумма; |
|||
14
Малыш Джон
26.07.18
✎
11:47
|
(13) ТаблицаПрозводственныеПланы.Найти(СтрокаТЧ.КатегорияНоменклатуры, "Категория Номенклатуры");
|
|||
15
MIF_HELM
26.07.18
✎
11:52
|
(13) Так тоже пробовал, та же ошибка
|
|||
16
MIF_HELM
26.07.18
✎
11:52
|
читал в СП и все сделал по нему
|
|||
17
MIF_HELM
26.07.18
✎
11:52
|
но мне если честно не важен способ, главное бы вытащить и вставить)
|
|||
18
Aleksandr N
26.07.18
✎
11:55
|
(17) Юзай найтистроки. Судя по всему у тебя упр. форма. Там таблица значений = данныеформыколлекция.
|
|||
19
Сметанин
26.07.18
✎
11:55
|
УФ?
|
|||
20
MIF_HELM
26.07.18
✎
11:56
|
(19) Да
|
|||
21
Aleksandr N
26.07.18
✎
11:57
|
(19) конечно уф.
|
|||
22
MIF_HELM
26.07.18
✎
11:57
|
(18) Сейчас попробуем
|
|||
23
Сметанин
26.07.18
✎
12:01
|
(20) Тогда к реквизиту надо обращаться а не элементу
|
|||
24
MIF_HELM
26.07.18
✎
12:06
|
(20) что вы имеете ввиду?
|
|||
25
MIF_HELM
26.07.18
✎
12:06
|
(23)Что вы имеете ввиду?
|
|||
26
Aleksandr N
26.07.18
✎
12:07
|
(25) Элемент формы <> реквизит.
|
|||
27
Мимохожий Однако
26.07.18
✎
12:10
|
(25) У документа есть реквизиты табличной части. Надо обращаться к ним. А ты обращаешься к элементам формы документа, т.е. к отображению реквизитов.
|
|||
28
Chameleon1980
26.07.18
✎
12:11
|
ЗаполнитьЗначенияСвойств
|
|||
29
MIF_HELM
26.07.18
✎
12:16
|
(26)(27) уже пробовал так сделать
НайденнаяСтрокаТЗ = ТаблицаПрозводственныеПланы.Найти(СтрокаТЧ.КатегорияНоменклатуры, "Категория Номенклатуры"); В (15) писал |
|||
30
MIF_HELM
26.07.18
✎
12:18
|
(28) первый раз этот метод используя, буду разбираться, спасибо.
Хотя если честно не понятно как можно в нем колонки ТЧ перевести в строки ТЗ |
|||
31
Сметанин
26.07.18
✎
12:21
|
ТЗ = ТЧ.Скопировать(,"КатегорияНоменклатуры")
И имя колонки не может быть с пробелом |
|||
32
Chameleon1980
26.07.18
✎
12:41
|
Хотя если честно не понятно как можно в нем колонки ТЧ перевести в строки ТЗ
в строки тз определенной колонки тз ? ну тебя спрашивали про транспонирование |
|||
33
Aleksandr N
26.07.18
✎
13:09
|
(29) Так, еще раз.
Используй не ТаблицаПрозводственныеПланы.Найти(), а ТаблицаПрозводственныеПланы.НайтиСтроки() |
|||
34
MIF_HELM
26.07.18
✎
16:47
|
Спасибо огромное всем кто помогал, пока что получилось вывести данные для первой строчки, по коду это выглядит:
НачалоИнтервала=Объект.НачалоПериода; КонецИнтервала=Объект.КонецПериода; МассивМесяцев = Новый Массив; ПервыйМесяц=НачалоМесяца(НачалоИнтервала); Пока ПервыйМесяц <= НачалоМесяца(КонецИнтервала) Цикл //Сообщить(ПервыйМесяц); НазваниеКолонки=Формат(ПервыйМесяц, "ДФ=MMMMyyy"); МассивМесяцев.Добавить(Новый РеквизитФормы(НазваниеКолонки, Новый ОписаниеТипов("Число"), "ТаблицаПрозводственныеПланы", НазваниеКолонки, Истина)); ПервыйМесяц = ДобавитьМесяц(НачалоМесяца(ПервыйМесяц),1); КонецЦикла; ИзменитьРеквизиты(МассивМесяцев); ПервыйМесяц=НачалоМесяца(НачалоИнтервала); Пока ПервыйМесяц <= НачалоМесяца(КонецИнтервала) Цикл НазваниеКолонки=Формат(ПервыйМесяц, "ДФ=MMМMyyy"); НоваяКолонка = Элементы.Добавить(НазваниеКолонки, Тип("ПолеФормы"), Элементы.ТаблицаПрозводственныеПланы); НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода; НоваяКолонка.ПутьКДанным = "ТаблицаПрозводственныеПланы."+НазваниеКолонки; ПервыйМесяц = ДобавитьМесяц(НачалоМесяца(ПервыйМесяц),1); КонецЦикла; ВременнаяТЗ = ДанныеФормыВЗначение(ТаблицаПрозводственныеПланы, Тип("ТаблицаЗначений")); НоваяСтрока = ВременнаяТЗ.Добавить(); НоваяСтрока.КатегорияНоменклатуры = Объект.Производство[0].КатегорияНоменклатуры; Для Сч = 1 По Объект.Производство.Количество() Цикл НоваяСтрока[Сч] = Объект.Производство[Сч-1].Сумма; КонецЦикла; ЗначениеВДанныеФормы(ВременнаяТЗ, ТаблицаПрозводственныеПланы); |
|||
35
aleks_default
26.07.18
✎
16:52
|
И че ошибку на вот этом "НоваяСтрока[Сч] = Объект.Производство[Сч-1].Сумма;" не выдает?
|
|||
36
aleks_default
26.07.18
✎
16:53
|
Это же полная хрень
|
|||
37
aleks_default
26.07.18
✎
17:08
|
В момент создания колонок в своей таблице сделай дополнительно соответсвие в котором ключ - название колонки, значение - дата и заполняй его. Затем запросом выбери из табличной части список категорий сгруппировав так чтобы в списке не было дублей категорий а только уникальные. Далее делаещь цикл по этому списку в котором добавляешь новую строку в таблицупроизводственных планов. внутри этого цикла еще один цикл по соответствию с ключом. Внутри этого цикла у тебя будет известна и Категория(список) и ДатаПланирования(значение соответсвия) и название колонки (ключ соответсвия). По категории и дате планирования находишь нужную строку в ТЧ и заполняешь значение оттуда в соответствующую колонку. Профит
|
|||
38
MIF_HELM
27.07.18
✎
07:17
|
(37) Понимаю что для вас такой код может быть полная хрень но к сожалению моих знаний( и то с помощью) хватило только на это, спасибо что описали что нужно делать но к сожалению мне на этом уровне знаний не понятно как даже половину из этого реализовать.
|
|||
39
aleks_default
27.07.18
✎
10:03
|
(38)Как же вы с таким уровнем знаний взялись за такую задачу? Возьмите для начала что-нибудь попроще.
|
|||
40
takefive
27.07.18
✎
11:02
|
(2) попробуйте так...
Для Каждого СтрокаТабЧасти из Объект.ТабличнаяЧасть Цикл СтрокаТабЗначений = ФункцияПоискаСтроки(СтрокаТабЧасти.Номенклатура); СтрокаТабЗначений[ФункцияПреобразованияДатыВИмяКолонки(СтрокаТабЧасти.Дата)] = СтрокаТабЧасти.Сумма; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |