Имя: Пароль:
1C
1C 7.7
v7: Движение документа 7.7
0 msk-07
 
17.07.13
20:39
Поскажите плизззз...есть обработка движения по регистрам...как делать чтобы еще и табличная часть документа печаталась, меня интересует номенкатура

Буду очень признателен.
1 Grobik
 
17.07.13
20:41
Выучить русский, прочитать учебник логики Челпанов Г. И., задать вопрос.
2 msk-07
 
17.07.13
20:45
ок
3 ЧеловекДуши
 
17.07.13
21:08
(1) Русский? Шутник...

(0) Воспользуйся мастером запросов и не страдай :)
4 msk-07
 
17.07.13
22:11
Процедура Сформировать()
   Перем Запрос, ТекстЗапроса, Таб;
   //Создание объекта типа Запрос
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с (ТекущаяДата()) по (ТекущаяДата());
   |Обрабатывать НеПомеченныеНаУдаление;
   |Реализация = Документ.Реализация.ТекущийДокумент;
   |Функция РеализацияКурсСумма = Сумма(Реализация.Курс);
   |"//}}ЗАПРОС
   ;
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;

   // Подготовка к заполнению выходных форм данными запроса
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   // Заполнение полей "Заголовок"
   Таб.ВывестиСекцию("Заголовок");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   // Заполнение полей "Итого"
   Таб.ВывестиСекцию("Итог");
   // Вывод заполненной формы
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать", "");
КонецПроцедуры
5 msk-07
 
17.07.13
22:11
ни чего не получается :(
6 msk-07
 
17.07.13
23:05
Пока Запрос.Группировка("Реализация") = 1 Цикл      
       
       Стр = "";      
       ДокР = Запрос.Реализация;  
       Рег=СоздатьОбъект("Регистр.ОстаткиТМЦ");
       Док = СоздатьОбъект("Документ") ;
       Если (Рег.ВыбратьДвиженияДокумента(ДокР)=1)   Тогда
       ДокР.ВыбратьСтроки();
       Пока ДокР.ПолучитьСтроку() = 1 Цикл    
           Разм1=Рег.Номенклатура.Наименование;
           Стр = Стр +ДокР.Номенклатура.Наименование+" " + ДокР.Количество+Разм1;
       КонецЦикла;
       Сообщить( " " + Стр);
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры
7 msk-07
 
17.07.13
23:05
Подскажите почему не выводится ни чего по регистрам:(((
8 dedmoroz777
 
18.07.13
00:06
Смелая трактовка...
9 КонецЦикла
 
18.07.13
00:12
(7) Перебираешь строки документа, а не движения регистра

Пока Рег.ПолучитьДвижение() = 1
...

Либо если привязан номер строки - искать в движениях по Рег.НомерСтроки() строку документа
10 dedmoroz777
 
18.07.13
00:19
(9) в запросе нет группировок
11 msk-07
 
18.07.13
12:50
Не могу понять :(

у меня две строки в документе 1 и 2, а по регистрам они меняться местами.

Как мне тоже привязать строку в документе и регистр.


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

Если   Опа <> 0 Тогда  
         Сообщить( ДокР.Номенклатура.Наименование+" регистр ОстаткиТМЦ = "+Разм1+", количество в док. = "+ДокР.Количество+ " раздница = " +Опа+" "+ ДокР.НомерДок);            
КонецЕсли;  

    КонецЦикла;
    КонецПроцедуры
12 Ёпрст
 
18.07.13
12:57
движения регистров, как правило, никакого отношения к строкам документа не имеют.
Если только спецом об этом не заботиться при записи движений.
13 msk-07
 
18.07.13
12:59
Значит ни как нельзя привязать?
14 Ork
 
18.07.13
12:59
(13) Можно.
15 msk-07
 
18.07.13
13:00
Подскажите пожалуйста :((( я просто уже день мучаюсь
16 Ork
 
18.07.13
13:02
(15)
1. Правильно - как указано в (12).
2. Тупо - перебор строк документа -> Поиск (тем же перебором) в движениях регистра.
17 msk-07
 
18.07.13
13:03
у меня с циклами полная беда :(
18 Ёпрст
 
18.07.13
13:04
(13) если движения регистра пишутся один-в один, то привязывай номерСтрики в регистре (есть соответствующий метод)

при переборе движений регистра НомерСтроки регистра будет соответствовать НомерСтроки документа.. наслаждайся
19 uno-group
 
18.07.13
13:04
Ты выбрал движения по регистру а циклом их перебирать кто за тебя будет
20 msk-07
 
18.07.13
13:06
(18) подскажите плиз этот метод
21 Ork
 
18.07.13
13:07
(17)
ДокР.ВыбратьСтроки();
Пока (ДокР.ПолучитьСтроку() = 1) Цикл
   Рег.ВыбратьДвиженияДокумента(ДокР);
   Пока Рег.ПолучитьДвижение()=1 Цикл
       Если Рег.Номенклатура = ДокР.Номенклатура Тогда
           Сообщить("Ур-я-я-я-я. Нашли соответствие");
           Прервать;
       КонецЕсли;
   КонецЦикла;
КонецЦикла;
22 AlexYurg
 
18.07.13
13:07
Попробуй сделать не запросом, а тупым перебором документов в цикле. Это может быть проще в твоем случае.
Напиши что-то типа:

Отчет = СоздатьОбъект("Таблица");
Док = СоздатьОбъект("Документ.Реализация");
Док.ВыбратьДокументы(НачДата, КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
 Док.ВыбратьСтроки();
 Пока Док.ПолучитьСтроку() = 1 Цикл
   Номенклатура = Док.Номенклатура;
   Отчет.ВывестиСекцию("Строка");
 КонецЦикла;
КонецЦикла;
Отчет.Показать("Мой отчет");
23 Ork
 
18.07.13
13:08
(20) ПривязыватьСтроку.
24 uno-group
 
18.07.13
13:11
Просто строка должна была быть привязана еще в проведении документа теперь уще поздно пить боржоми.
и это неработает для документов с к-вом строк больше 9999
25 uno-group
 
18.07.13
13:12
Если строки небыли заранее привязаны то перебор всех движений с условием док.товар=рег.товар может еще кво добавить или еще что
26 Ёпрст
 
18.07.13
13:13
(24) это ограничение только для  дбф, где linno число в 4 знака.