0
- 27.05.2014 - 10:49
|
Вот собственно код внизу строчку пометил "!!!" Перем А,Б,Колво,Рекв,С; //******************************************* Процедура Сформировать(); А="Справочник."+СокрЛП(ВыбСпр.Вид()); Б=(0);Рекв=(1); Колво=Метаданные.Справочник(ВыбСпр.Вид()).Реквизит (); Таб.НоваяКолонка("Заказ"); Пока Б<Колво Цикл Таб.новаяколонка(Метаданные.Справочник(ВыбСпр.Вид( )).Реквизит(Рекв).Идентификатор); Б=(Б+1);Рекв=(Рекв+1); КонецЦикла; Значение=СоздатьОбъект(А); Значение.ВыбратьЭлементы(); Пока Значение.ПолучитьЭлемент()=1 Цикл Если Сокрлп(Значение.текущийэлемент())=СокрЛп(ВыбСпр) Тогда Таб.НоваяСтрока(); Таб.Заказ = Значение.ТекущийЭлемент(); Б=(0);Рекв=(1); //Таб.Корреспондент = Значение.Корреспондент; //Таб.КоррСчет = Значение.КоррСчет; //Таб.Местонахождение = Значение.Местонахождение; //Таб.Адрес = Значение.Адрес; //Таб.Телефоны = Значение.Телефоны; Пока Б<КолВо Цикл С=(Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(Ре кв).Идентификатор); !!! как присвоить нужно значение С выводит ошибку (необходимо указать идентификатор)--> Таб.=Значение.; Б=(Б+1);Рекв=(Рекв+1); КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры; | | |
1
- 27.05.2014 - 11:01
| Предположу, что в Рекв в С=(Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(Ре кв).Идентификатор); следует удалить пробел :) | | |
2
- 27.05.2014 - 11:07
| Попробуй Шаблон | | |
3
- 27.05.2014 - 11:12
|
(0) ужос... какая задача то была изначально? | | |
4
- 27.05.2014 - 11:17
|
Функция ПрисвоитьЗначение(Чему, Что) Чему = Что; Возврат "" КонецФункции ..................... Докум.УстановитьАтрибут(НаимРеквизита, ЗначениеРеквизита); Шаблон("[ПрисвоитьЗначение("+НаимРеквизита+",ЗначениеРеквиз ита)]"); | | |
5
- 28.05.2014 - 07:23
|
4-VZ > Ему не в документ, а в ТЗ надо засунуть (0) На Мисте тебе же ответили, или надо разжевать и в рот положить? И вместо вот этого барахла: Б=(0);Рекв=(1); Пока Б<КолВо Цикл С=(Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(Ре кв).Идентификатор); ... Б=(Б+1);Рекв=(Рекв+1); КонецЦикла; Открой для себя уже цикл "для": НС=Таб.НомерСтроки; Для Л=1 по КолВо Цикл С=(Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(Л) .Идентификатор); Таб.УстановитьЗначение(НС,С,Значение.ПолучитьАтриб ут(С)); КонецЦикла; | | |
6
- 28.05.2014 - 07:32
|
+5 а вообще весь этот говнокод лучше выбросить пока не поздно, ибо ДЛЯ ЧЕГО??? В ТЗ содержащую уже САМ элемент справочника, пихать колонки с его же реквизитами. Причем "нужный для запихивания" элемент ищется таким варварским способом... ВыбСпр - это что? Подозреваю, что реквизит на форме... | | |
7
- 28.05.2014 - 09:50
| (6) иногда для нетривиальных сортировок лучше загрузить реквизиты в ТЗ. | | |
8
- 28.05.2014 - 10:29
|
7-Helen1986 > Глядя на: Значение=СоздатьОбъект(А); Значение.ВыбратьЭлементы(); Пока Значение.ПолучитьЭлемент()=1 Цикл Если Сокрлп(Значение.текущийэлемент())=СокрЛп(ВыбСпр) Тогда Таб.НоваяСтрока(); сдается мне, что сортировать там нечего | | |
9
- 28.05.2014 - 10:46
| Цитата:
| | |
10
- 28.05.2014 - 10:53
|
9-forawork >ну что я прав, я и сам знаю :))) ты лучше скажи помогло тебе (5) али нет ? А вообще, лучше бы описал саму задачу, для чего всё это ваяется, глядишь, подсказали бы люди оптимальный путь решения изначально. А не методом вставки дополнительных палочек в, и без того уже кривые, костыли. Об этом собственно и (6), а не оскорбленья для. | | |
11
- 28.05.2014 - 11:35
| Помогло. А по поводу задачи дело было так. Меня отправили на практику от техникума(там у нас был access), но на предприятии сказали что у них 1с предприятие следовательни и делать буду его. Вот дали первую задачку вывести реквизиты выбранного справочника в таблицу на форме как-то так. | | |
12
- 28.05.2014 - 11:50
|
(11) вот так и надо было начинать тему, помогите люди добрые, подскажите путь истинный... 1С 7.7 вероятно ровесница твоя и велосипедов на ней написано уже столько, что никаких интернетов не хватит все объять)) самое простое для решения задачи и уяснения для себя ее возможных реализаций это сделать так http://*******/1lQoDXI | | |
14
- 28.05.2014 - 11:58
|
11-forawork >Именно в "таблицу на форме", т.е. в ТаблицуЗначений или же в печатную форму, т.е. в Таблицу? и, кстати, про ВыбСпр так и не ответил | | |
15
- 28.05.2014 - 12:03
|
13-user1C > боюсь, ему как новичку, те примеры сложноваты будут, к тому же, судя по: Если Сокрлп(Значение.текущийэлемент())=СокрЛп(ВыбСпр) Тогда там не весь справочник нужно выводить, а лишь один элемент | | |
16
- 28.05.2014 - 12:07
|
(15) все мы были когда-то новичками и, если есть тяга к знаниям, то разобраться там - дело техники, было бы желание, примеры и документация... | | |
17
- 28.05.2014 - 12:13
|
16-user1C >золотые слова :) так что, forawork, не стесняйся - спрашивай, заодно с учетом (14), научишься правильно формулировать вопросы, не только к "помогающим", но и заказчику. А это, если не полдела, то все равно не малая его часть, ибо предотвращает от лишних телодвижений/переделок. | | |
18
- 28.05.2014 - 18:51
| ВыбСпр- поле ввода с типом <Справочник>. Таблица добавленная на форму (по идее мне не разъяснили в какую таблицу,просто сказали выведи в таблицу). И по поводу элементов- выводятся только элементы выбранной записи в справочнике. | | |
19
- 28.05.2014 - 20:49
|
18-forawork > В терминах 1Сv77 существуют объекты: Таблица (таблица-документ, что-то вроде екселевского листа), Таблица Значений (2-х мерная структура), Табличная часть документа, и табличная часть формы. Последние три имеют весьма схожие методы и свойства, но суть их разная: ТаблицаЗначений есть объект динамический, как переменная, объявляется в модуле; табличная часть документа суть объект метаданных, состав предопределяется в конфигураторе для каждого значения строки, и служит хранилищем данных. Табличная часть формы есть элемент формы [отображения], форма документа с табличной частью в принудительном порядке содержит таблицу, состав которой тождественен составу табличной части документа. Эту таблицу нельзя убрать (но можно скрыть), колонки нельзя убрать (но можно скрыть, и можно динамически добавить), служит для ввода данных в табличную часть документа. Свойствами вывода на печать обладает только Таблица. Ссылочным объектом не являются все описанные виды таблиц, даже табличная часть документа: сам документ имеет значение ссылка, его табличная часть - нет. Форма, и все в ней существует, пока форма открыта. | | |
20
- 28.05.2014 - 21:44
|
так, не то же самое? только не понятно "выводятся только элементы выбранной записи в справочнике" - это "реквизиты выбранного элемента справочника"? //******************************************* Процедура Сформировать(); Если ВыбСпр.Выбран() = 0 Тогда Возврат; КонецЕсли; А=СоздатьОбъект("Справочник."+ВыбСпр.Вид()); Таб.НоваяКолонка("Заказ"); Таб.НоваяСтрока(); Таб.Заказ = А.НайтиЭлемент(ВыбСпр); Для счРеквизитовСправочника = 1 по Метаданные.Справочник(ВыбСпр.Вид()).Реквизит() Цикл ИдентификаторРеквизита = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРек визитовСправочника).Идентификатор; ПериодическийРеквизит = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРек визитовСправочника).Периодический; ЗначениеРеквизита = "ПериодическийРеквизит"; Если ПериодическийРеквизит = 0 Тогда ЗначениеРеквизита = А.ПолучитьАтрибут(ИдентификаторРеквизита); Иначе Периодический = СоздатьОбъект("Периодический"); Периодический.ИспользоватьОбъект(ИдентификаторРекв изита,А); ЗначениеРеквизита = Периодический.ЗначениеНаДату(РабочаяДата()); КонецЕсли; Таб.НоваяКолонка(ИдентификаторРеквизита); Таб.УстановитьЗначение(Таб.КоличествоСтрок(),Идент ификаторРеквизита,ЗначениеРеквизита); КонецЦикла; КонецПроцедуры | | |
21
- 28.05.2014 - 21:47
|
единственно, я бы это повесил на не на кнопку "Сформировать", а на процедуру ПриВыбореВыбСпр() а то кнопку можно и нажать забыть | | |
22
- 28.05.2014 - 22:02
|
извиняюсь, вот так немножко //******************************************* Процедура Сформировать(); Если ВыбСпр.Выбран() = 0 Тогда Возврат; КонецЕсли; Таб.Очистить(); Таб.НоваяКолонка("Заказ"); Таб.НоваяСтрока(); Таб.Заказ = ВыбСпр; Периодический = СоздатьОбъект("Периодический"); Для счРеквизитовСправочника = 1 по Метаданные.Справочник(ВыбСпр.Вид()).Реквизит() Цикл ИдентификаторРеквизита = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРек визитовСправочника).Идентификатор; ПериодическийРеквизит = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРек визитовСправочника).Периодический; Если ПериодическийРеквизит = 0 Тогда //не периодический ЗначениеРеквизита = ВыбСпр.ПолучитьАтрибут(ИдентификаторРеквизита); Иначе Периодический.ИспользоватьОбъект(ИдентификаторРекв изита,ВыбСпр); ЗначениеРеквизита = Периодический.ЗначениеНаДату(РабочаяДата()); КонецЕсли; Таб.НоваяКолонка(ИдентификаторРеквизита); Таб.УстановитьЗначение(Таб.КоличествоСтрок(),Идент ификаторРеквизита,ЗначениеРеквизита); КонецЦикла; КонецПроцедуры | | |
23
- 28.05.2014 - 22:28
|
да и вообще что это за таблица значений с одной строкой если уж в ТЗ пихать, то так как-то //******************************************* Процедура Сформировать(); Таб.УдалитьСтроки(); Если ВыбСпр.Выбран() = 0 Тогда Возврат; КонецЕсли; Если Таб.КоличествоКолонок() = 0 Тогда Таб.НоваяКолонка("Реквизит"); Таб.НоваяКолонка("Значение"); КонецЕсли; Периодический = СоздатьОбъект("Периодический"); Для счРеквизитовСправочника = 1 по Метаданные.Справочник(ВыбСпр.Вид()).Реквизит() Цикл ИдентификаторРеквизита = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРек визитовСправочника).Идентификатор; ПериодическийРеквизит = Метаданные.Справочник(ВыбСпр.Вид()).Реквизит(счРек визитовСправочника).Периодический; Если ПериодическийРеквизит = 0 Тогда //не периодический ЗначениеРеквизита = ВыбСпр.ПолучитьАтрибут(ИдентификаторРеквизита); Иначе Периодический.ИспользоватьОбъект(ИдентификаторРекв изита,ВыбСпр); ЗначениеРеквизита = Периодический.ЗначениеНаДату(РабочаяДата()); КонецЕсли; Таб.НоваяСтрока(); Таб.Реквизит = ИдентификаторРеквизита; Таб.Значение = ЗначениеРеквизита; КонецЦикла; КонецПроцедуры лан, автор. тренируйся. | | |
24
- 29.05.2014 - 06:34
|
+ не забываем про предопределенные реквизиты "Код" и "Наименование", которые через: Метаданные.Справочник("ххх").Реквизит() "не видно" | |
| Интернет-форум Краснодарского края и Краснодара |