Имя: Пароль:
1C
 
Как получить ИНН из справочника...
0 kinolog207
 
02.09.10
21:06
1. тебе ещё учиться и учиться.. 0% (0)
2. не ту профессию ты выбрал, сынок.. 0% (0)
3. рожденный ползать, ползи дальше.. 0% (0)
4. КонецФлудить 0% (0)
Всего мнений: 0

Вечер добрый..
Есть Торговля и Склад.
Из документа Реализация делаю выгрузку в файл - и нужно собрать все данные.
Вот запнулся на ИНН Контрагента, как его получить  - я так понимаю он здесь Справочник.Контрагенты.ЮрФизЛицо.ИНН
1 kinolog207
 
02.09.10
21:08
Файл.INN = Справочник.Контрагенты.ЮрФизЛицо.ИНН;
так пишет что {Документ.Реализация.Форма.Модуль(156)}: Переменная не определена (Справочник)
2 kinolog207
 
02.09.10
21:09
Ошибся версией 1с
v7.7
3 Санта Клаус
 
02.09.10
21:09
ты наверное крутой восьмерочник, судя по коду
4 kinolog207
 
02.09.10
21:10
Только учусь)
5 ilkoder
 
02.09.10
21:13
А как ты все остальное то для файла получаешь? Или начал с ИНН на нем и запнулся?
6 kinolog207
 
02.09.10
21:14
Файл.DOCD = ДатаДок;
Файл.DOCT = ТипДок;
Файл.COMP = Контрагент;
7 kinolog207
 
02.09.10
21:14
Номер документа - аналогично
8 Санта Клаус
 
02.09.10
21:14
Контр = СоздатьОбъект("Справочник.Контрагенты")
Текущий = Контр.НайтиЭлемент(Значение)
Файл.INN = Текущий.Контрагент.ЮрФизЛицо.ИНН;
9 ilkoder
 
02.09.10
21:15
Файл.DOCD = ДатаДок;
Файл.DOCT = ТипДок;
Файл.COMP = Контрагент;
Файл.INN = Контрагент.ЮрФизЛицо.ИНН;

А так не проще?
10 kinolog207
 
02.09.10
21:18
По (8) ошибка
Текущий = Контр.НайтиЭлемент(Значение<<?>>);
{Документ.Реализация.Форма.Модуль(158)}: Переменная не определена (Значение)

а по (9)
помоему сработало!!!
11 Санта Клаус
 
02.09.10
21:23
(10) я тебе просто написал, что какое то значение.:)
Я же не знаю откуда ты пытаешься получить его.
12 kinolog207
 
02.09.10
21:24
Уффф... получилось)

А если выгружать не шапку.реализации а таблицу.
Такой метод годится?
13 kinolog207
 
02.09.10
21:25
Имею ввиду данные которые идут в таблице документа.
14 kinolog207
 
02.09.10
21:26
Санта Клаус - спасиб.. просто щас голова пухнет - пишу то что посоветуют..без фильтра
15 ilkoder
 
02.09.10
21:28
Там надо выборку по строкам запустить...

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
           ...
КонецЦикла;
16 kinolog207
 
02.09.10
21:37
Вечереет...

Файл.COMP= Контрагент;
Файл.INN = Контрагент.ЮрФизЛицо.ИНН;  
 ВыбратьСтроки();
  Пока ПолучитьСтроку()=1 Цикл
   Файл.ITEM = Наименование(ТекущийЭлемент);
   Файл.PRICE = Цена(ТекущийЭлемент);                        
  КонецЦикла;
Файл.Записать();
17 kinolog207
 
02.09.10
21:38
Здесь ошибка - видит кто?
18 ilkoder
 
02.09.10
21:38
У тебя как называются реквизиты в табличной части?
Файл.COMP= Контрагент;
Файл.INN = Контрагент.ЮрФизЛицо.ИНН;  
 ВыбратьСтроки();
  Пока ПолучитьСтроку()=1 Цикл
   Файл.ITEM = Наименование;
   Файл.PRICE = Цена;                        
  КонецЦикла;
Файл.Записать();
19 kinolog207
 
02.09.10
21:40
Артикул, Штрихкод  и тд.
20 kinolog207
 
02.09.10
21:41
там обычные реквизиты Табличной части
21 kinolog207
 
02.09.10
21:41
ТАкже есть Номенклатура, Цена, Сумма
22 kinolog207
 
02.09.10
21:42
сейчас пробую вот по такой схеме
СпрТовары = СоздатьОбъект("Справочник.Номенклатура");
СпрТовары.ВыбратьЭлементы();
Пока СпрТовары.ПолучитьЭлемент()=1 Цикл
.......Файл.Добавить();
.......Файл.NAME = СпрТовары.Наименование;
.......Файл.УстановитьЗначениеПоля("PRICE",СпрТовары.Цена) //так тоже можно;

.......Файл.Записать();
КонецЦикла;
23 ilkoder
 
02.09.10
21:45
А при чем тут документ и выборка по справочнику?

Если в документе, то пока цикл переберается табличная часть, когда нет цикла перебирается шапка.
24 kinolog207
 
02.09.10
21:48
Так такой метод не работает :(
Файл.COMP= Контрагент;
Файл.INN = Контрагент.ЮрФизЛицо.ИНН;  
 ВыбратьСтроки();
  Пока ПолучитьСтроку()=1 Цикл
   Файл.ITEM = Наименование;
   Файл.PRICE = Цена;                        
  КонецЦикла;
Файл.Записать();
25 kinolog207
 
02.09.10
21:51
Нужно что-то типа
Пока ПолучитьСтроку()=1 Цикл
   Файл.ITEM = Наименование(ТекущийЭлемент);
   Файл.PRICE = Цена(ТекущийЭлемент);                        
КонецЦикла;
26 ilkoder
 
02.09.10
21:58
(24) а какую ошибку пишет?
...нет такой конструкции в 7.7 - Наименование(ТекущийЭлемент)...
27 kinolog207
 
02.09.10
22:00
если просто Файл.ITEM = Наименование;
то переменная неопределена
28 kinolog207
 
02.09.10
22:00
вот так:
29 kinolog207
 
02.09.10
22:00
Файл.ITEM = Наименование<<?>>;
{Документ.Реализация.Форма.Модуль(161)}: Переменная не определена (Наименование)
30 ilkoder
 
02.09.10
22:01
Как в конфигураторе реквизиты в табличной части называются, так их прямо и пиши
31 ilkoder
 
02.09.10
22:02
в реализации наверно или "товар" или "номенклатура"
32 kinolog207
 
02.09.10
22:05
ептыть.. точно - в табличной части пишется - Номенклатура
33 kinolog207
 
02.09.10
22:06
изеняюсь за мой француский..
но в итоге  в цена пишется а название товара нет..
причем пишется в файл один товар.. а не вся таблица
34 ilkoder
 
02.09.10
22:07
типа того...
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
   Файл.ITEM = Номенклатура.Наименование;
   Файл.PRICE = Цена;                        
КонецЦикла;
35 kinolog207
 
02.09.10
22:12
так - пишется в файл последняя строчка из таблицы товаров
36 ilkoder
 
02.09.10
22:14
ВыбратьСтроки(); точно есть?
37 kinolog207
 
02.09.10
22:16
Процедура Сформировать()
   
   Перем Ном, ТипДок;
   текСтр=сз.ТекущаяСтрока();            
   Ном=сз.ПолучитьЗначение(текСтр,ТипДок);

Файл = создатьОбъект("XBASE");

Файл.ДобавитьПоле("DOCD","D",8,0);
Файл.ДобавитьПоле("DOCT","S",100,0);
Файл.ДобавитьПоле("COMP","S",100,0);
Файл.ДобавитьПоле("INN","S",12,0);

Файл.ДобавитьПоле("ITEM","S",50,0);
Файл.ДобавитьПоле("PRICE","N",6,3);          

Файл.СоздатьФайл("0123.dbf");
Файл.Добавить();    

Файл.DOCD = ДатаДок;
Файл.DOCT = ТипДок;
Файл.COMP = Контрагент;
Файл.INN = Контрагент.ЮрФизЛицо.ИНН;

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
   Файл.ITEM = Номенклатура.Наименование;
   Файл.PRICE = Цена;
КонецЦикла;

Файл.Записать();

   Сообщить(Номенклатура);
   Сообщить(Цена);

КонецПроцедуры
38 kinolog207
 
02.09.10
22:17
это вся процедура которая выгружает в dbf информацию о текущем документе (Реализация)
39 kinolog207
 
02.09.10
22:21
или я всё нитак делаю?
40 kinolog207
 
02.09.10
22:23
может как вариант зациклить
Файл.ДобавитьПоле("ITEM","S",50,0);
Файл.ДобавитьПоле("PRICE","N",6,3);  
чтоб в файле создавалось столько полей сколько товаров
41 ilkoder
 
02.09.10
22:27
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
  Файл.Добавить();
  Файл.DOCD = ДатаДок;
  Файл.DOCT = ТипДок;
  Файл.COMP = Контрагент;
  Файл.INN = Контрагент.ЮрФизЛицо.ИНН;
   Файл.ITEM = Номенклатура.Наименование;
   Файл.PRICE = Цена;
КонецЦикла;
42 ilkoder
 
02.09.10
22:28
(41)+ у тебя в каждой строчке будут дублироваться реквизиты шапки, но в принципе так и должно быть...
43 ilkoder
 
02.09.10
22:29
или нужно 2 файла - один для шапки, другой для табличной части, в принципе внутри 1С так и устроена
44 kinolog207
 
02.09.10
22:29
а как тогда делить из их на два
45 kinolog207
 
02.09.10
22:32
Например:
..
Файл.ДобавитьПоле("DOCD","D",8,0);
Файл.ДобавитьПоле("DOCT","S",100,0);
Файл.СоздатьФайл("Шапка.dbf");
Файл.Добавить();    
Файл.DOCD = ДатаДок;
Файл.DOCT = ТипДок;
Файл.COMP = Контрагент;
Файл.INN = Контрагент.ЮрФизЛицо.ИНН;
Файл.Записать();

Файл.ДобавитьПоле("ITEM","S",50,0);
Файл.ДобавитьПоле("PRICE","N",6,3);
Файл.СоздатьФайл("Товары.dbf");
Файл.Добавить();    
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
  Файл.Добавить();
  Файл.DOCD = ДатаДок;
  Файл.DOCT = ТипДок;
  Файл.COMP = Контрагент;
  Файл.INN = Контрагент.ЮрФизЛицо.ИНН;
   Файл.ITEM = Номенклатура.Наименование;
   Файл.PRICE = Цена;
КонецЦикла;
46 ilkoder
 
02.09.10
22:35
На два делить теоретически, чтоб размер типа был меньше и не было дублированной информации если скидывать много документов. Тогда в файле товары делаешь поле связи с файлом шапка типа индекса... но если честно нафиг оно нужно, скидывай все в один файлик и пуская там в каждой строчке с товаром и ценой будет и контрагент с инн.
47 ilkoder
 
02.09.10
22:37
голосовалку прикрутили ... типа скоро ветку прикроють... :)
48 kinolog207
 
02.09.10
22:39
не.. это я - что б веселее было)
49 kinolog207
 
02.09.10
22:42
сё равно пишет последнюю строку:
50 kinolog207
 
02.09.10
22:42
Файл = создатьОбъект("XBASE");

Файл.ДобавитьПоле("DOCD","D",8,0);
Файл.ДобавитьПоле("DOCT","S",100,0);
Файл.ДобавитьПоле("ITEM","S",50,0);
Файл.ДобавитьПоле("PRICE","N",6,3);
Файл.СоздатьФайл("123.dbf");
;    
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
  Файл.Добавить();
  Файл.DOCD = ДатаДок;
  Файл.DOCT = ТипДок;
  Файл.ITEM = Номенклатура.Наименование;
  Файл.PRICE = Цена;
КонецЦикла;
Файл.Записать();
51 ilkoder
 
02.09.10
22:45
Исходя из
http://www.mista.ru/tutor_1c/dbf.htm
нужно

Файл = создатьОбъект("XBASE");

Файл.ДобавитьПоле("DOCD","D",8,0);
Файл.ДобавитьПоле("DOCT","S",100,0);
Файл.ДобавитьПоле("ITEM","S",50,0);
Файл.ДобавитьПоле("PRICE","N",6,3);
Файл.СоздатьФайл("123.dbf");
;    
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
  Файл.Добавить();
  Файл.DOCD = ДатаДок;
  Файл.DOCT = ТипДок;
  Файл.ITEM = Номенклатура.Наименование;
  Файл.PRICE = Цена;
  Файл.Записать();
КонецЦикла;
Файл.ЗакрытьФайл();
52 kinolog207
 
02.09.10
22:47
балин... точно!
53 kinolog207
 
02.09.10
22:51
робит..  и вправду робит.
точность вежливость = компилятора!
54 ilkoder
 
02.09.10
22:52
теперь можешь писать в резюме - умею программировать в 1С 7.7 :)
55 kinolog207
 
02.09.10
23:23
а то)
Ошибка? Это не ошибка, это системная функция.