![]() |
![]() |
|
Как получить ИНН из справочника... | ☑ | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0
kinolog207
02.09.10
✎
21:06
|
Вечер добрый..
Есть Торговля и Склад. Из документа Реализация делаю выгрузку в файл - и нужно собрать все данные. Вот запнулся на ИНН Контрагента, как его получить - я так понимаю он здесь Справочник.Контрагенты.ЮрФизЛицо.ИНН |
|||||||||||||
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
|
а то)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |