ТаблицаЗначений как колонка ТаблицыЗначений в рантайме

1. vpivo 05.12.18 10:39 Сейчас в теме
Добрый день. Посмотрел решение своей проблемы в https://forum.infostart.ru/forum9/topic185344/
Если не считать метода, которым воспользовался (или сам придумал) автор, о котором ничего неизвестно, то...
Предложенные схемы отдельной ТЗ с ключом и НайтиСтроки, а также присвоение колонке значения вновь сформированной ТЗ, как-то попахивают дурно.
Почему дурно? Да потому что при наличии формы этой проблемы не возникает - в дизайнере нащелкал кнопок и всего делов...
У меня нет формы, она в обработке не нужна. Реквизиты модуля создал в дизайнтайме, в том числе и нужные ТЗ. В реалтайме добавляю колонки в ТЗ. Да вот незадача... нужна колонка типа ТЗ. Поступил вот так:

	ТипТЗ = Новый ОписаниеТипов("ТаблицаЗначений");

	ЗаказыИМ.Колонки.Добавить("ПримечаниеЗаказа",ТипСтрока1024,,);
	ПозицииЗаказа = ЗаказыИМ.Колонки.Добавить("ПозицииЗаказа",ТипТЗ,,);
начиная отсюда идет ошибка "нет поля "Колонки"
	ПозицииЗаказа.Колонки.Добавить("ИдентификаторИМ",ТипЧислоИден,,); 
	ПозицииЗаказа.Колонки.Добавить("Товар1С",ТипТовар1С,,); 
Показать

Ошибка понятна. Тупой интерпретатор решил, что ПозицииЗаказа - есть сущность "Колонка", а вот как ему подсказать, что последняя добавленная колонка - есть ТЗ? Читал-читал про приведение типов... но там, как всегда дальше строка-число и обратно ничего нет.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Denis_CFO 48 05.12.18 10:44 Сейчас в теме
(1) а это что за задача такая, для чего применяется?
4. vpivo 05.12.18 11:15 Сейчас в теме
(2)Не нашлось специалиста для синхронизации с интернет-магазином - есть там заморочки очень существенные. Вернее, максимум поисков привели к "сумма в тучу нулей и без гарантий". Но это лирика...
Проблема решена, но внешней обработкой с формой. Все нужные процедуры выполняются кнопками/менюшками и пр., визуализируются и т.д. и т.п. НО...
На базе этого кода нужно сделать регламентное задание. Есс-но, что у меня желание не рожать дважды и по-разному... Для этого нужно, чтобы необходимые реквизиты модуля задания были идентичны реквизитам формы обработки, а все бизнес-процессные процедуры не правились . Только и всего. Поскольку в дизайнтайме и на форме проблем нет, то зачем мне изгаляться?
6. Sashares 34 05.12.18 11:23 Сейчас в теме
(1)
Тупой интерпретатор решил, что ПозицииЗаказа - есть сущность "Колонка"

Не работает у вас, и тупой конечно же интерпретатор. Кто же еще? =))
Прикрепленные файлы:
7. vpivo 05.12.18 11:31 Сейчас в теме
(6)Подобное уже не раз слышал... Только кто-то из "великих", называющих себя "программистами 1С", как-то брякнул типа "1С - это язык будущего, он декларативный". Вот вам и результат. Абсолютная тупоголовость, мания величия, а на самом деле слюни и сопли вместо одной строчки кода или ссылки.
10. Sashares 34 05.12.18 11:39 Сейчас в теме
(7)
Абсолютная тупоголовость, мания величия, а на самом деле слюни и сопли вместо одной строчки кода или ссылки.


Угу, по вашим комментариям это отлично видно.
Начал человек, слабо разбирающийся в 1С что-то делать, у него что-то не получается.
Все вокруг сразу тупые =)

Смените прокладку между стулом и клавиатурой))
user774630; +1 Ответить
11. vpivo 05.12.18 11:40 Сейчас в теме
(10)Слово из трех букв знаете? Воспользуйтесь.
8. Sashares 34 05.12.18 11:35 Сейчас в теме
(1)
Предложенные схемы отдельной ТЗ с ключом и НайтиСтроки, а также присвоение колонке значения вновь сформированной ТЗ, как-то попахивают дурно.

Что мешает использовать другие инструменты?
На вскидку:
1 - вместо таблицы использовать дерево значений
2 - использовать соответствие, в котором в качестве ключа будет строка первой ТЗ, а значением - таблица детализации этой строки
3 - ...

Но все еще не понятно, в чем проблема индексировать таблицу детализации по ключам и все-таки использовать Найти или НайтиСтроки?
9. vpivo 05.12.18 11:37 Сейчас в теме
(8)Да это все понятно и примеры даются... Вопрос же в "Почему дурно? Да потому что при наличии формы этой проблемы не возникает - в дизайнере нащелкал кнопок и всего делов." Или Вы думаете, что дизайнер пользуется недокументированным API?
12. Sashares 34 05.12.18 11:41 Сейчас в теме
(9) Потому что на форме не таблица значений.
Это другой тип коллекции, имеющий как свои плюсы, так и минусы.
13. vpivo 05.12.18 12:01 Сейчас в теме
(12) Это я уже понял. Не верь глазам своим, когда видишь в дизайнере тип "ТаблицаЗначений". Но, извините, ТЗ.Колонки.Добавить возвращает... Понятно, что возвращает... Блин...ство... там только объект с четырьмя свойствами. Ну что можно сказать... Декларативное программирование - что хочу, то и пишу. А то, что принципиально НЕЛЬЗЯ добавить в ТЗ колонку типа полноценная ТЗ. Нет, добавить можно, только потом можно только присвоить значение типа ТЗ. И где же тут ООП... Лирика. Можно вопрос закрыть и больше не поднимать.
25. PLAstic 295 07.12.18 14:23 Сейчас в теме
(13) Ты не задумывался, почему за столько лет у колоссального сообщества разрабов не возникало подобной проблемы? Тебе там задавали вопрос про задачу, ты так и не ответил. Так вот, 100 пудов даю на отсечение, ты бьёшься в это решение, потому что только его и видишь. Но при этом существует другое, подходящее без кучи кода. Тебе даже озвучивали несколько вариантов как сделать.
32. пользователь 07.12.18 15:08
Сообщение было скрыто модератором.
...
14. JohnGalt 57 05.12.18 15:40 Сейчас в теме
(1)
Тупой интерпретатор решил, что ПозицииЗаказа - есть сущность "Колонка", а вот как ему подсказать, что последняя добавленная колонка - есть ТЗ?


Как же так, у колонки сущность "колонка"? Это же вообще беспредел! Давайте в ТЗ вместо колонок будут другие ТЗ, а тип ТЗ пусть будет не "ТЗ" а "Строка". И с чего ж оно не работает? Может, потому что тип нужно назначить ЗНАЧЕНИЮ, хранимому в ТЗ, а не менять тип существующих объектов.
15. vpivo 05.12.18 18:18 Сейчас в теме
(14)Я почему-то решил, что 1С сродни интерфейсам, а поля(свойства) что-то типа Variant. Хотя на самом деле, моя ошибка в том, что "поверил" глазам своим... решил, реквизит формы типа ТЗ - это Таблица значений и с ней можно проделывать то же самое, что и в дизайн-тайме... А это совершенно не так.
3. VmvLer 05.12.18 10:50 Сейчас в теме
во многих типовых сейчас используют в табличных частях поле "ИдСтроки", это поле используют когда для некоторого поля строки одной ТЧ необходимо задать в качестве значения множество строк другой ТЧ. Этот механизм вполне логичен и успешен.

Каша мысле-образов автора говорит о том, что он хочет изобрести что-то корявое и кривое.

Пример(идентификаторы по памяти): УТ-11.4 Документ "ВводОстатков", ТЧ "Товары", поле "РасчетныйДокумент", связанная ТЧ "Партии"
PLAstic; Stref75; user633533_encantado; +3 Ответить
5. vpivo 05.12.18 11:17 Сейчас в теме
(3)Я разве сказал, что предложенные методы "неуспешны"? Я буквально удивился, что приемы работы в дизайн-тайме почему-то непрозрачны для "специалистов"/программистов 1С - им по душе "всякие "придумки"... Это не их вина. Я бы мысле-образы 1С-ников поддверг бы экспертизе в Серсбского. Экспертиза на ООП 1С-у уже давно дана.
17. antz 05.12.18 18:32 Сейчас в теме
(5)
Экспертиза на ООП 1С-у уже давно дана.


А кто вам, кстати, сказал, что в 1С есть ООП?
19. vpivo 05.12.18 19:13 Сейчас в теме
(17)Конечно его там нет и в помине, сколько бы не пыжились разработчики ваяя интерфейс доступа к записям и полям БД.
26. PLAstic 295 07.12.18 14:27 Сейчас в теме
(19) В 1С предметно-ориентированное программирование, а не известное вам ООП.
30. vpivo 07.12.18 15:06 Сейчас в теме
(26)Ну да, на заборе еще и не такое напишут. А кисельтв - еще тот рупор правды-матки.
16. antz 05.12.18 18:28 Сейчас в теме
Так не будет работать. Вот так (наверно) будет работать.

ЗаказыИМ.Колонки.Добавить("ПозицииЗаказа",ТипТЗ,,);


А колонки нужно добавлять в формируемую для каждой строки ТЗ, а ее уже пихать в ячейку. Метод Колонки.Добавить() возвращает колонку ТЗ, а не тот тип, который в ней будет храниться, что естественно.

ПозицииЗаказа = Новый ТаблицаЗначений;
ПозицииЗаказа.Колонки.Добавить("ИдентификаторИМ",ТипЧислоИден,,); 
ПозицииЗаказа.Колонки.Добавить("Товар1С",ТипТовар1С,,);

НоваяСтрока = ЗаказыИМ.Добавить();
НоваяСтрока.ПозицииЗаказа = ПозицииЗаказа;
18. vpivo 05.12.18 19:10 Сейчас в теме
(16)Спасибо, я уже понял это.
20. antz 05.12.18 19:17 Сейчас в теме
(18) а зачем вообще все это нагромождение сущностей а-ля тз в тз? Почему сразу не писать в создаваемый тут же заказ?
21. Denis_CFO 48 05.12.18 19:20 Сейчас в теме
(20) потому что (4)
На базе этого кода нужно сделать регламентное задание. Есс-но, что у меня желание не рожать дважды и по-разному... Для этого нужно, чтобы необходимые реквизиты модуля задания были идентичны реквизитам формы обработки, а все бизнес-процессные процедуры не правились . Только и всего. Поскольку в дизайнтайме и на форме проблем нет, то зачем мне изгаляться?

:)
24. vpivo 06.12.18 05:53 Сейчас в теме
(20)Потому что данные по заказам приходят из интернет-магазина по http в виде xml. Предлагаете на лету (на парсинге) сразу заносить в 1С? Кто сказал, что порядок тегов в xml стабилен? Главбух сказала, что заказ "проводится" и отпускается ТОЛЬКО с одного склада. Менеджер "перекинет" недостающий товар на один склад, и только после этого "проведет" и оформит реализацию. Хотите с главбухом поспорить? Короче, есть куча заморочек, главная из которых - вы не контролируете ресурс-источник, а значит без промежуточного хранилища входящей инфы не обойтись. Вернее, можно обойтись, но с риском обзавестись модной болезнью, обозначаемой в рекламе в виде канцелярской скрепки на сидении стула.
27. PLAstic 295 07.12.18 14:34 Сейчас в теме
(24) Ты про XDTO слышал вообще? Определяешь св-во объекта XTDO Упорядоченный = Ложь и вперёд.
Зачем контролировать какие-то источники? Вариантов решения полно. Хоть делай непроведённый заказ, хоть записывай пришедшие пакеты в РС, а потом обрабатывай по какому-нибудь событию.

С главбухом надо разговаривать квалифицированному специалисту, который хорошо знает возможности платформы. Он сможет сгенерить решение, которое не будет отдавать говнокодом. Иначе хреновый программист "подстилается" под хотелки главбуха и конфигурация превращается в колхоз. А потом главбух увольняется и возникают вопросы "а зафига мы так делали" и "кому это надо вообще".

Хочешь получить оптимальное предложение реализации - чётко опиши свою задачу. А то какие-то контроли источников, порядки полей XML и прочие несуразицы.
29. vpivo 07.12.18 15:05 Сейчас в теме
(27)Для начала хорошим манерам обучитесь, а потом все остальное. Хорошо быть программистом и не видеть дальше собственного носа. Особенно умиляет "с главбухом нужно разговаривать..." Пипец. Нормальный главбух пошлет такого умника, и будет прав. Знаете почему? Читайте законы про главбухов, и радуйтесь, что про программеров (особенно 1С) законов еще не пишут. Останьтесь при своем мнении, или поверьте опыту работы интегратора интернет-ресурсов, волею судеб вынужденного программить на 1С.
33. PLAstic 295 07.12.18 15:44 Сейчас в теме
(29) Ох, малыш... Мне верить твоему опыту работы в сторонней среде разработки? Ты смешной. Можешь сотрясать ресурс своими открытиями вроде "1с говно", но на жизни это никак не скажется. Умерь гонор и послушай советы выше, если тебе нужна эта платформа и ты хочешь стать хорошим специалистом. Сейчас тебя пытаются уберечь от говнокода.
34. vpivo 08.12.18 22:06 Сейчас в теме
(33)Сынок, не тебе меня учить. Ты еще под стол ползал, когда я на пенсию вышел. Особенно, про говнокод. К большому сожалению, не все говно, всплывшее в начале 90-х, утонуло.
22. antz 05.12.18 19:26 Сейчас в теме
Хотя да, тз все же понадобится, но можно плоской обойтись, добавить колонку типа «КлючЗаказа», а если данные получаете в json или xml - 1с их прекрасно читает и превращает в объект xdto или массив структур. Тз хороша для интерфейса, да, но в регламенте и без неё обойтись.
23. Denis_CFO 48 05.12.18 19:30 Сейчас в теме
(22) здесь есть несколько вариантов решения, я сам сторонник простых вариантов, но автор предпочёл такой. На его системе работает, ну и хорошо.
28. PLAstic 295 07.12.18 14:36 Сейчас в теме
Ещё момент. Тебе ничто не мешает в самОй обработке создать табличные части и не генерить свои ТЗ.
31. пользователь 07.12.18 15:07
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

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