Программное создание колонки в ТЧ и сохранение значения в нем

1. AndrewUs 11 23.04.18 11:00 Сейчас в теме
Здравствуйте!
В документе есть ТЧ1. И в модуле формы написали код
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	
   нРеквизиты = Новый Массив;
   а="маска";
  
   нРеквизиты.Добавить(Новый РеквизитФормы(а, Новый ОписаниеТипов("Число"), "Объект.ТабличнаяЧасть1", а, Истина));
   ИзменитьРеквизиты(нРеквизиты);
 
   нЭлемент = Элементы.Добавить(а, Тип("ПолеФормы"), Элементы.Ведомость10); 
   нЭлемент.Вид = ВидПоляФормы.ПолеВвода; 
   нЭлемент.ПутьКДанным = "Объект.ТабличнаяЧасть1."+а;
   
   

КонецПроцедуры
Показать


Колонка добавляется, значение ввести можно, но при нажатии кнопки записать, запись не сохраняется.
Подскажите, пожалуйста, чего не хватает?
Спасибо.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. t.v.s. 111 23.04.18 11:06 Сейчас в теме
(1)Если вы хотите чтобы она сохранялась, этот код надо написать ручками.
После записи платформа перечитывает данные объекта, а ваши данные ей взять неоткуда.
Ловите событие ПриЧтенииНаСервере и в нем заполняйте
ipoloskov; +1 Ответить
3. AndrewUs 11 23.04.18 11:23 Сейчас в теме
(2) Хоть приблизительно, как код должен выглядеть?
Спасибо.
4. herfis 500 23.04.18 11:26 Сейчас в теме
На самом деле вы добавляете колонку не в ТЧ. Это бы означало, что вы программно "на лету" поменяли структуру базы данных, а в 1С это возможно только при изменении конфигурации.
Программно вы добавляете всего лишь колонку в реквизит формы, который связан с ТЧ и которая "живет" только до конца жизни формы.
Для сохранения этих данных в БД нужны дополнительные усилия. Какие именно - зависит от целей. Можно, например, хранить ее в дополнительной табличной части для таких опциональных реквизитов. Можно в регистре сведений. Но тогда придется еще заморочиться с обеспечением ссылок на строки.
Лучше расскажите, какую бизнес-проблему/задачу вы решаете.
ЗЫ. Для понимания можно считать что ТЧ в форме - это ТЗ, "пристегнутая" к реальной ТЧ. И те колонки, которые вы добавляете через редактор формы или программно - это обычные колонки ТЗ, которые нужно самому как-то заполнять и куда-то потом эти данные девать.
5. AndrewUs 11 23.04.18 12:20 Сейчас в теме
(4) База самописная. Есть документ "Свод остатков", в нем заполняются данные по текущим остаткам тмц на складах. Далее заполняются колонки, что списать, что переместить, а что выдать в эксплуатацию. Далее по заполненным данным из колонки "Выдать в эксплуатацию" формируем документ "Ведомость". В документе "Ведомость" должны сформироваться колонки, если в документе "Свод остатков" в колонке "Выдать в эксплуатацию" значения заполнены.
6. herfis 500 23.04.18 12:26 Сейчас в теме
(5) И на каком этапе возникает необходимость в ПРОГРАММНОМ создании колонки ТЧ?
7. AndrewUs 11 23.04.18 12:35 Сейчас в теме
На этапе формирования документа "Ведомость", т.к. в колонке "Выдать в эксплуатацию" может быть 1 позиция, а может быть и 20 позиций.
8. herfis 500 23.04.18 16:08 Сейчас в теме
(7) Не, все равно непонятно нафига :) Нужны картинки или подробное описание.
Может, вы просто хотите отображать ТЧ в транспонированном виде, типа сводной таблицы/шахматки?
Тогда на форму выводите не ТЧ, а ТЗ (с программным формированием колонок). А в ТЧ данные храните как в регистре и на форму не выводите.
Просто при открытии формы загружаете из нее данные в ТЗ в нужном виде, а перед записью запихиваете обратно из ТЗ в ТЧ.
9. AndrewUs 11 24.04.18 13:56 Сейчас в теме
(8) Есть документ "Свод"
рис.1
На рисунке выделены поля "Наименование" - это то, что есть на складе.
Далее указана колонка, в которой заполняется то, что планируется выдать в эксплуатацию.
Не обращайте внимания на наименования, это пример.

Заполнив Т.Ч., нажимаем на кнопку сформировать "Ведомость", её на картинке не видно, но она есть.
При нажатии на кнопку "Ведомость" формируется документ "Ведомость"
рис.2

На рисунке видны по горизонтали те позиции, которые были заполнены в документе "Свод"
Т.е. ТЧ "Ведомость" содержит только один предопределенный столбец, это "сотрудник", а все остальные появляются в прямой зависимости от заполненности в документе "Свод".
Прикрепленные файлы:
10. herfis 500 24.04.18 14:13 Сейчас в теме
(9) Выводить номенклатуру в колонках - это жесть. Но пока оставим.
Пока пройдем по общим моментам.
Очевидно, что в документе "Ведомость" вам нужно сохранять информацию по номенклатуре, выданной сотрудникам.
В регистре вы бы завели измерения "Сотрудник" и "Номенклатура", комбинация которых содержала бы эту информацию.
Точно так же можно сделать и в табличной части.
То есть делаете табличную в часть в документе (не на форме!) с колонками "Сотрудник", "Номенклатура", "Количество" (к примеру).
Это позволит без проблем и избыточности сохранить в документе нужную информацию.
На форму эту табличную часть не выводите!
На форму выводите то представление этих данных, которое удобно для пользователя.
Например, можно вывести дерево, где узлами первого уровня будет "Сотрудник", а узлами второго уровня - "Номенклатура".
Или можно выводить сводную таблицу по сотрудникам, а рядом таблицу с номенклатурой отображающий данные по текущему сотруднику из первой таблицы.
Или как на скриншоте - сгенерировать колонки для каждой номенклатуры.
Не суть.
Суть в том, что представление может быть каким угодно, а табличную часть документа вы используете скрыто от пользователя только для сохранения этих данных в документе (в базе данных). Причем в неизбыточной и удобной для запросов простой табличной форме. При открытии документа вычитываете их в представление на форме, а перед записью документа перегружаете данные из представления на форме в табличную часть документа.
GOshaSaveiko; +1 Ответить
11. AndrewUs 11 27.04.18 08:52 Сейчас в теме
(10) А без регистров никак не обойтись?
И более простым путем преобразовать строки одного документа в колонки другого никак не получится?
12. catena 110 27.04.18 09:06 Сейчас в теме
(11)Вы понимаете, что чтобы хранить данные в таблице, ее нужно создать физически. А физическое создание таблицы программным способ в 1С не предусмотрено. Вы можете создавать любые колонки на своей форме с любыми значениями, но жить они будут только пока жива форма. Сохранение нужно обеспечивать отдельными механизмами.
14. herfis 500 27.04.18 09:22 Сейчас в теме
(11) В (10) я рассказывал как сделать на табличной части. Регистры приводились для аналогии. Читайте внимательнее.
Ничего сложного в этом нет. Тривиальная задача.
16. AndrewUs 11 27.04.18 12:17 Сейчас в теме
(14) Я понимаю, что для кого-то это тривиальная задача, но для меня это пока что сложно.
19. GOshaSaveiko 38 27.04.18 13:03 Сейчас в теме
(16). Почитайте внимательно. Сан Саныч дело говорит.
1. В метаданных документа создаёте табличную часть, которая выглядит очень себе двухмерно, допустим: Сотрудник, Номенклатура, Количество. На форму её не выкидываете.
2. При открытии формы делаете запрос по табличной части документа и строите свою трехмерную таблицу, на основании "плоской" табличной части документа, которую юзер не видит. Добавляя колонки и размещая данные в правильные ячейки.
3. Вам нужно предусмотреть добавление новой колонки в ваше представление на форме, и соответствующее отражение этого действия в ТЧ документа.
4. При записи документа обходите свою "трехмерную" таблицу и перекатываете её в "двухмерную". Выгружаете данные в ТЧ документа. Записываете.
Профит!
15. ben19791010 27.04.18 09:39 Сейчас в теме
(10)
Выводить номенклатуру в колонках - это жесть

это реально жесть

(11)
А без регистров никак не обойтись?


я б вот 99% использовал регистр накопления
с ресурсами кол-во и сумма
в измерениях думаю хватило бы сотр,номенкл и артикул

мне кажется это бы облегчило вам в дальнейшем пользование информацией в разрезе периодов
18. GOshaSaveiko 38 27.04.18 12:57 Сейчас в теме
(15) Накопления? Просто хранить данные документа?
13. catena 110 27.04.18 09:09 Сейчас в теме
Без регистров примерно описано в (8) - универсальная табличная часть. В документе создаете ТЧ с колонками "НомерСтрокиДокумента", "ИмяРеквизита", "ЗначениеРеквизита". При открытии документа преобразуете свою тч в красивую ТЗ. При записи свою красивую ТЗ записываете в ТЧ.
17. AndrewUs 11 27.04.18 12:23 Сейчас в теме
Мне бы программный пример ... если это конечно возможно.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот