Имя: Пароль:
1C
1C 7.7
v7: Не выбран документ!
,
0 DeMi4
 
22.12.11
17:53
При попытке записать документ ругается

   Перем Запрос, ТекстЗапроса, Таб;
   //Создание объекта типа Запрос
   ДатаНач=Дата("01.02.11");
   ДатаКон=Дата("28.02.11");
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ДатаНач по ДатаКон;
   |Номенклатура = Документ.УУЦ_ПереоценкаРОЗН.Номенклатура;
   |ЦенаСтарая = Документ.УУЦ_ПереоценкаРОЗН.ЦенаСтарая;
   |ЦенаНовая = Документ.УУЦ_ПереоценкаРОЗН.ЦенаНовая;
   |Группировка Номенклатура без групп;
   |"//}}ЗАПРОС
   ;
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;

   // Подготовка к заполнению выходных форм данными запроса
   ТЗ= СоздатьОбъект("ТаблицаЗначений");
   ТЗ.НоваяКолонка("Номенклатура");
   ТЗ.НоваяКолонка("СтараяЦена");
   ТЗ.НоваяКолонка("НоваяЦена");
   Пока Запрос.Группировка(1) = 1 Цикл
       ТЗ.НоваяСтрока();
       ТЗ.Номенклатура=Запрос.Номенклатура;
       ТЗ.СтараяЦена=Запрос.ЦенаСтарая;
       ТЗ.НоваяЦена=Запрос.ЦенаНовая;
   КонецЦикла;
   КолСтрок=Док.КоличествоСтрок();
   Для Н=1 По КолСтрок Цикл
   Док.ПолучитьСтрокуПоНомеру(Н);
       СтрТЗ=0;
   Если ТЗ.НайтиЗначение(Док.Номенклатура,СтрТЗ,)=1 Тогда
           ТЗ.ПолучитьСтрокуПоНомеру(СтрТЗ);
           Док.ЦенаНовая=ТЗ.НоваяЦена;
   КонецЕсли;        
   КонецЦикла;
   Док.Записать();

Док это элемент на форме обработки
1 Джинн
 
22.12.11
17:55
Документ должен быть объектом.
2 GLazNik
 
22.12.11
17:56
Док2 = СоздатьОбъект("Документ.ХХХ");
Док2.НайтиДокумент(Док);
....
Док2.Записать();
3 155153144627
 
22.12.11
18:01
А вот на это
[code]Если ТЗ.НайтиЗначение(Док.Номенклатура,СтрТЗ,)=1 Тогда[/code]
не ругается?
[code]Если ТЗ.НайтиЗначение(Док.Номенклатура,СтрТЗ,"Номенклатура")=1 Тогда[/code]
4 155153144627
 
22.12.11
18:02
Я нуб :-) Подскажить как код вставлять :-)
5 GLazNik
 
22.12.11
18:06
(3) Тут ошибки нет. Просто поиск будет по всей таблице.
(4) Миста умная, миста сама код понимает
6 Эльниньо
 
22.12.11
21:22
(4) Да просто
[НачалоКода1С]
[КонецКода1С]
7 DeMi4
 
23.12.11
08:43
Процедура Сформировать()
   Перем Запрос, ТекстЗапроса, Таб;
   //Создание объекта типа Запрос
   ДатаНач=Дата("01.02.11");
   ДатаКон=Дата("28.02.11");
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ДатаНач по ДатаКон;
   |Номенклатура = Документ.УУЦ_ПереоценкаРОЗН.Номенклатура;
   |ЦенаСтарая = Документ.УУЦ_ПереоценкаРОЗН.ЦенаСтарая;
   |ЦенаНовая = Документ.УУЦ_ПереоценкаРОЗН.ЦенаНовая;
   |Группировка Номенклатура без групп;
   |"//}}ЗАПРОС
   ;
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;

   // Подготовка к заполнению выходных форм данными запроса
   ТЗ= СоздатьОбъект("ТаблицаЗначений");
   ТЗ.НоваяКолонка("Номенклатура");
   ТЗ.НоваяКолонка("СтараяЦена");
   ТЗ.НоваяКолонка("НоваяЦена");
   Пока Запрос.Группировка(1) = 1 Цикл
       ТЗ.НоваяСтрока();
       ТЗ.Номенклатура=Запрос.Номенклатура;
       ТЗ.СтараяЦена=Запрос.ЦенаСтарая;
       ТЗ.НоваяЦена=Запрос.ЦенаНовая;
   КонецЦикла;
   КолСтрок=Док.КоличествоСтрок();
   ТекДок=СоздатьОбъект("Документ.УУЦ_ПереоценкаРОЗН");
   ТекДок.НайтиДокумент(Док);
   Для Н=1 По КолСтрок Цикл
   ТекДок.ПолучитьСтрокуПоНомеру(Н);
       СтрТЗ=0;
   Если ТЗ.НайтиЗначение(ТекДок.Номенклатура,СтрТЗ,"Номенклатура")=1 Тогда
           ТЗ.ПолучитьСтрокуПоНомеру(СтрТЗ);
           ТекДок.ЦенаНовая=ТЗ.НоваяЦена;
       Иначе
           ТекДок.УдалитьСтроку(); //почему рагается что не возможно удалить строку?
   КонецЕсли;        
   КонецЦикла;
   ТекДок.Записать();
КонецПроцедуры
8 Ёпрст
 
23.12.11
08:51
(7) :)))))

Док - ЭТО что у тебя ?
9 Ёпрст
 
23.12.11
08:52
а так, типы не совпадают у Док и ТекДок, т.е это документы разный видов
мли, в реквизит Док на форме не выбран конкретный документ.
10 DeMi4
 
23.12.11
08:54
Док это док который выбран на форме
11 Ёпрст
 
23.12.11
08:57
(10)
  Для Н=-КолСтрок По -1 Цикл
   ТекДок.ПолучитьСтрокуПоНомеру(-Н);
12 DeMi4
 
23.12.11
08:59
По сути ведь одно и тоже
13 DeMi4
 
23.12.11
09:01
прост у меня с начала строки получаются а тут с конца как я понял
14 Ёпрст
 
23.12.11
09:05
(12) ты делай, потом рассуждать будешь
2 + 2 = 3.9999999999999999999999999999999...