Имя: Пароль:
1C
1С v8
Заполнение данных справочника
0 Валидатор
 
21.10.12
00:44
Имеется  2 справочника, у них есть ТЧ с двумя колонками к примеру. Нужна обработка, которая при нажатии будет создавать элементы в справочнике с случайными названиями и заполнять в них значения ТЧ, к примеру в каждой записи справочника по 2-3 записи в ТЧ. Так же пользователь задает, сколько строчек заполнить. Делаю обработку, на форме поле для ввода чисел, работает, как теперь мне сделать чтобы при нажатии на копку выполнить(стандартная кнопка формы) заполнялись данные справочника?
1 Валидатор
 
21.10.12
00:57
Как задать сколько раз пройти цикл? Я пишу в окне ввода к примеру 15, мне нужно чтобы 15 строк в справочнике заполнилось, как это будет в коде?
2 Валидатор
 
21.10.12
00:58
Переменная, в которую пишутся данные это реквизит с типом число
3 Валидатор
 
21.10.12
01:30
Процедура КнопкаВыполнитьНажатие(Кнопка)
   Переменная = ВводимоеЧисло;
   Если Переменная < 0 Тогда
       Сообщить("Введите число больше 0");
       Возврат;
   КонецЕсли;
   
   Если Переменная  > 100 Тогда
       Сообщить("Введите число меньше 100");
       Возврат;
   КонецЕсли;
   
   
   а=0;
   с=4;
   е = 8;
   Справочник1 = Справочники.С1.ПолучитьОбъект();
   Справочник1.Код = а;
   Справочник1.Наименование = а+1;
   ТабличнаяЧастьСправочника1 = Справочник1.Детали.ПолучитьОбъект();
   НоваяСтрокаТЧ = ТабличнаяЧастьСправочника1.Добавить();
   НоваяСтрокаТЧ.ТипДетали = с;
   НоваяСтрокаТч.Количество = с+1;
   НоваяСтрокаТЧ2 = ТабличнаяЧастьСправочника1.Добавить();
   НоваяСтрокаТЧ2.ТипДетали = е;
   НоваяСтрокаТч2.Количество = е+1;
   Справочник1.Записать;
   
   
   
КонецПроцедуры
4 Валидатор
 
21.10.12
01:31
Выдает ошибку при открытии обработки:
{Форма.Форма.Форма(28,22)}: Неопознанный оператор
   Справочник1.Записать<<?>>;
5 Валидатор
 
21.10.12
01:32
И еще нужно как то код:
  а=0;
   с=4;
   е = 8;
   Справочник1 = Справочники.С1.ПолучитьОбъект();
   Справочник1.Код = а;
   Справочник1.Наименование = а+1;
   ТабличнаяЧастьСправочника1 = Справочник1.Детали.ПолучитьОбъект();
   НоваяСтрокаТЧ = ТабличнаяЧастьСправочника1.Добавить();
   НоваяСтрокаТЧ.ТипДетали = с;
   НоваяСтрокаТч.Количество = с+1;
   НоваяСтрокаТЧ2 = ТабличнаяЧастьСправочника1.Добавить();
   НоваяСтрокаТЧ2.ТипДетали = е;
   НоваяСтрокаТч2.Количество = е+1;
   Справочник1.Записать;



Засунуть в цикл, только не знаю как условие прописать, нужно что пока количество строк в справочнике меньше 100 он создает новые записи, иначе выдает ошибку
6 Валидатор
 
21.10.12
01:33
и метод получить объект тоже не срабатывает походу(
7 maip1
 
21.10.12
01:45
Справочник1.Записать();
8 Валидатор
 
21.10.12
01:46
(7) Выдает ошибку при открытии обработки:
{Форма.Форма.Форма(28,22)}: Неопознанный оператор
  Справочник1.Записать<<?>>;
9 maip1
 
21.10.12
01:47
после записать скобки нужны
10 Валидатор
 
21.10.12
01:47
теперь:
{Форма.Форма.Форма(18)}: Метод объекта не обнаружен (ПолучитьОбъект)
   Справочник1 = Справочники.С1.ПолучитьОбъект();
11 France
 
21.10.12
01:48
и прально делает...
12 France
 
21.10.12
01:49
для разнообразия можно либо найти существующий элемент в справочнике, и изменять его реквизиты
либо создать новый элемент справочника..
13 Валидатор
 
21.10.12
01:49
как обратиться к получитьобъект? он вылазит, если пишем так:
Справочник1 = Справочники.С1.НайтиПоКоду().ПолучитьОбъект();
14 Валидатор
 
21.10.12
01:49
(12) а смысл мне найти созданный элемент справочника, если он в нем будет производить создание записей, нет?
15 Валидатор
 
21.10.12
01:49
мне ведь нужно чтобы просто открывался справочник, и в него создавались новые записи
16 France
 
21.10.12
01:50
так создавай новый элемент\\
17 Валидатор
 
21.10.12
01:51
а=0;
   с=4;
   е = 8;
   Справочник1 = Справочники.С1.СоздатьЭлемент().ПолучитьОбъект();
   Справочник1Код = а;
   Справочник1.Наименование = а+1;
   ТабличнаяЧастьСправочника1 = Справочник1.Детали.Получить();
   НоваяСтрокаТЧ = ТабличнаяЧастьСправочника1.Добавить();
   НоваяСтрокаТЧ.ТипДетали = с;
   НоваяСтрокаТч.Количество = с+1;
   НоваяСтрокаТЧ2 = ТабличнаяЧастьСправочника1.Добавить();
   НоваяСтрокаТЧ2.ТипДетали = е;
   НоваяСтрокаТч2.Количество = е+1;
   Справочник1.Записать();
18 Валидатор
 
21.10.12
01:51
{Форма.Форма.Форма(18)}: Метод объекта не обнаружен (ПолучитьОбъект)
   Справочник1 = Справочники.С1.СоздатьЭлемент().ПолучитьОбъект();
19 maip1
 
21.10.12
01:51
ПолучитьОбъект не надо
20 maip1
 
21.10.12
01:53
+ (19) и для ТЧ тоже
21 Валидатор
 
21.10.12
01:54
угу, понятно, а как сделать цикл при условии что если общее количество строк в справочнике меньще числа, которое задает пользователь, то разница досоздается?
22 France
 
21.10.12
01:54
Пока Ы=1 по СколькоЭлементовНужноТС Цикл
спр = справочники.СправочникТС1.СоздатьЭлемент()
спр.Записать()
Пока НеЫ = 1 по СколькоСтрокНужноТС Цикл
спр.ТЧТС.Добавить()
КонецЦикла
спр.Записать()
КонеЦикла
23 Валидатор
 
21.10.12
01:56
и как сделать чтобы данные случайными числами забивались? ну или к примеру даже по циклу, то есть мне нужно заполнять данные в 3х местах скажем так, это: Код, Наименование, и в ТЧ Количество. Беру 3 переменных:
а=0
б=1
с=2
И хочу чтобы у меня создался 1 элемент справочника у которого данные будут 0 1 и 2, у второго созданного элемента будут данные: 1 2 и 3 и т.д.?
24 Валидатор
 
21.10.12
02:01
Процедура КнопкаВыполнитьНажатие(Кнопка)
   ВводимоеПользователемЧисло = ВводимоеЧисло;
   Если ВводимоеПользователемЧисло < 0 Тогда
       Сообщить("Введите число больше 0");
       Возврат;
   КонецЕсли;
   
   Если ВводимоеПользователемЧисло  > 100 Тогда
       Сообщить("Введите число меньше 100");
       Возврат;
   КонецЕсли;

       
   а=0;
   с=1;
   е = 2;
   
   Пока Счет = 1 По ВводимоеПользователемЧисло Цикл
   Справочник1 = Справочники.С1.СоздатьЭлемент();
   Справочник1Код = а;
   Справочник1.Наименование = а+1;
   ТабличнаяЧастьСправочника1 = Справочник1.Детали;
   НоваяСтрокаТЧ = ТабличнаяЧастьСправочника1.Добавить();
   НоваяСтрокаТч.Количество = с+1;
   НоваяСтрокаТЧ2 = ТабличнаяЧастьСправочника1.Добавить();
   НоваяСтрокаТч2.Количество = е+1;
   Справочник1.Записать();
   КонецЦикла;
       
   
КонецПроцедуры
25 Валидатор
 
21.10.12
02:01
Ошибка:

{Форма.Форма.Форма(18,15)}: Ожидается ключевое слово 'Цикл' ('Do')
   Пока Счет = 1<<?>> По ВводимоеПользователемЧисло Цикл
{Форма.Форма.Форма(28,2)}: Ожидается ключевое слово 'КонецПроцедуры' ('EndProcedure')
   <<?>>КонецЦикла;
26 Валидатор
 
21.10.12
02:03
(21) хотя это ладно, оставим, пусть пока просто создается столько строчек, сколько ввел пользователь, при максимальном значении ввода 100 строк
27 Валидатор
 
21.10.12
02:05
Все, заполняет, остался вопрос, как сделать заполнения ТЧ разными числами?
28 maip1
 
21.10.12
02:23
Пока Счет = 1 По ВводимоеПользователемЧисло Цикл - вместо Пока используйте Для
29 Валидатор
 
21.10.12
03:03
(28) да, так и есть, просто время позднее, вот и затупил, теперь осталось разобраться  с вопросом заполнения самими значениями, у меня же идет заполнение только одними и теми же, а я хочу чтобы в у меня в одной строке были везде данные = 1 к примеру, во второй строке все двойки, в третьей 3ки, и так далее, как это ерализовать?
30 France
 
21.10.12
03:12
иех... порвут меня в понедельник за "Пока")))
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.