![]() |
![]() |
![]() |
|
Запись данных в Excel | ☑ | ||
---|---|---|---|---|
0
jq
28.08.06
✎
17:33
|
Есть чтение данных из Excel в 8-ку, надо записать данные в этот Excel файл, но в 7-ке (короче выгрузка из 7-ки в 8-ку).
Так вот, с семеркой я вообще не знаком, но знаю, что там отличия в языке есть. Скажите пожалуйста какие выражения там используются по аналогиии - с загрузкой в 8-ку: Excel = Новый COMОбъект("Excel.Application"); Excel.Workbooks.Open("C:\Documents and Settings\..\Книга"); Excel.Visible = 1; ТекЛист = Excel.WorkSheets(1); Выборка1 = Документы.ОприходованиеТоваров.Выбрать(); Пока Выборка1.Следующий() Цикл Объект = Выборка1.ПолучитьОбъект(); Объект.Удалить(); КонецЦикла; Выборка2 = Справочники.Номенклатура.Выбрать(); Пока Выборка2.Следующий() Цикл Объект = Выборка2.ПолучитьОбъект(); Объект.Удалить(); КонецЦикла; Документ = Документы.ОприходованиеТоваров.ПолучитьФорму("ФормаДокумента"); Документ.Дата = ТекущаяДата(); Номер = 2; НомерСтроки = ТекЛист.Cells(Номер, 1).Value; КодНомГр = ТекЛист.Cells(Номер, 6).Value; СсылкаНомГр = Справочники.НоменклатурныеГруппы.НайтиПоКоду(КодНомГр); Если СсылкаНомГр.Пустая() Тогда НомГр = Справочники.НоменклатурныеГруппы.СоздатьЭлемент();//Справочники["Номенклатура"].СоздатьГруппу(); НомГр.Наименование = "Основная"; НомГр.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт"); НомГр.Записать(); КонецЕсли; Пока НомерСтроки <> "#" Цикл Код = ТекЛист.Cells(Номер, 1).Value; СсылкаНоменклатура = Справочники.Номенклатура.НайтиПоКоду(Код); Если СсылкаНоменклатура.Пустая() Тогда НовНоменклатура = Справочники.Номенклатура.СоздатьЭлемент(); НовНоменклатура.Код = Код; НовНоменклатура.Наименование = ТекЛист.Cells(Номер, 2).Value; НовНоменклатура.НаименованиеПолное = ТекЛист.Cells(Номер, 3).Value; НовНоменклатура.НоменклатурнаяГруппа = СсылкаНомГр; НовНоменклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС18; ЕдИзмНоменклатуры = ТекЛист.Cells(Номер, 8).Value; БазЕдИзм = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(СокрЛП(ЕдИзмНоменклатуры)); Если БазЕдИзм.Пустая() Тогда НовЭлКлассЕдИмз = Справочники.КлассификаторЕдиницИзмерения.СоздатьЭлемент(); НовЭлКлассЕдИмз.Код = Код; НовЭлКлассЕдИмз.Наименование = СокрЛП(ЕдИзмНоменклатуры); НовЭлКлассЕдИмз.НаименованиеПолное = СокрЛП(ЕдИзмНоменклатуры); НовЭлКлассЕдИмз.Записать(); СсылкаКлассЕдИмз = НовЭлКлассЕдИмз.Ссылка; Иначе СсылкаКлассЕдИмз = БазЕдИзм.Ссылка; КонецЕсли; НовНоменклатура.БазоваяЕдиницаИзмерения = СсылкаКлассЕдИмз; КодСтранМира = ТекЛист.Cells(Номер, 5).Value; СсылкаКодСтранМира = Справочники.КлассификаторСтранМира.НайтиПоКоду(КодСтранМира); НовНоменклатура.СтранаПроисхождения = СсылкаКодСтранМира;//.Наименование; НовНоменклатура.Записать(); ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(СсылкаКлассЕдИмз.Наименование,,,НовНоменклатура.Ссылка); Если ЕдиницаИзмерения.Пустая() Тогда НовЕдиИзм = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); НовЕдиИзм.Владелец = НовНоменклатура.Ссылка; НовЕдиИзм.ЕдиницаПоКлассификатору = СсылкаКлассЕдИмз.Наименование; НовЕдиИзм.Наименование = СсылкаКлассЕдИмз.Наименование; НовЕдиИзм.Коэффициент = 1; НовЕдиИзм.Записать(); ЕдиницаИзмерения = НовЕдиИзм.Ссылка; Иначе ЕдиницаИзмерения = ЕдиницаИзмерения.Ссылка; КонецЕсли; НовНоменклатура.ЕдиницаДляОтчетов = ЕдиницаИзмерения; НовНоменклатура.ЕдиницаХраненияОстатков = ЕдиницаИзмерения; Если ТекЛист.Cells(Номер, 4).Value = 0 Тогда НовНоменклатура.Услуга = 1 И НовНоменклатура.Набор = 0; Иначе НовНоменклатура.Услуга = 0 И НовНоменклатура.Набор = 0; КонецЕсли; НовНоменклатура.Записать(); СсылкаНоменклатура = НовНоменклатура.Ссылка; КонецЕсли; НоваяСтрока = Документ.Товары.Добавить(); НоваяСтрока.Номенклатура = СсылкаНоменклатура; //ТекЛист.Cells(Номер, 2).Value; НоваяСтрока.ЕдиницаИзмерения = СсылкаНоменклатура.ЕдиницаХраненияОстатков; НоваяСтрока.Коэффициент = СсылкаНоменклатура.ЕдиницаХраненияОстатков.Коэффициент; НоваяСтрока.Количество = ТекЛист.Cells(Номер, 7).Value; Сумма = ТекЛист.Cells(Номер, 11).Value; НоваяСтрока.Сумма = Сумма; Номер = Номер + 1; НомерСтроки = ТекЛист.Cells(Номер, 1).Value; КонецЦикла; Номер = 0; НомерСтроки = 0; // Документ. Форма = Справочники["Номенклатура"].ПолучитьФормуСписка(); // Форма.Открыть(); Документ.Записать(); Excel.Quit(); // Док = Документы.ОприходованиеТоваров.ПолучитьФормуСписка(); // Док.Сумма = Сумма; // Док.Открыть(); // Документ.Открыть(); //******************************************************************************* Excel = Новый COMОбъект("Excel.Application"); Excel.Workbooks.Open("C:\Documents and Settings\...\Книга"); Excel.Visible = 1; ТекЛист = Excel.WorkSheets(2); Выборка3 = Справочники.Контрагенты.Выбрать(); Пока Выборка3.Следующий() Цикл Объект = Выборка3.ПолучитьОбъект(); Объект.Удалить(); КонецЦикла; Выборка4 = Справочники.Организации.Выбрать(); Пока Выборка4.Следующий() Цикл Объект = Выборка4.ПолучитьОбъект(); Объект.Удалить(); КонецЦикла; Выборка5 = Справочники.Банки.Выбрать(); Пока Выборка5.Следующий() Цикл Объект = Выборка5.ПолучитьОбъект(); Объект.Удалить(); КонецЦикла; // Документ2 = Документы.КорректировкаДолга.ПолучитьФорму("ФормаДокумента"); //Документ2.Дата Номер = 2; НомерСтроки = ТекЛист.Cells(Номер, 1).Value; Пока НомерСтроки <> "#" Цикл КодКонтр = ТекЛист.Cells(Номер, 1).Value; Ссылка2 = Справочники.Контрагенты.НайтиПоКоду(КодКонтр); Если Ссылка2.Пустая() Тогда НовКонтр = Справочники.Контрагенты.СоздатьЭлемент(); НовКонтр.Код = КодКонтр; НовКонтр.Наименование = ТекЛист.Cells(Номер, 2).Value; НовКонтр.НаименованиеПолное = ТекЛист.Cells(Номер, 3).Value; НовКонтр.ИНН = ТекЛист.Cells(Номер, 5).Value; НовКонтр.КодПоОКПО = ТекЛист.Cells(Номер, 6).Value; НовКонтр.ОсновнойДоговорКонтрагента = ТекЛист.Cells(Номер, 7).Value; НовКонтр.ОсновнойБанковскийСчет = ТекЛист.Cells(Номер, 8).Value; Если ТекЛист.Cells(Номер, 9).Value = 0 Тогда НовКонтр.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо; Иначе НовКонтр.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо; КонецЕсли; НовКонтр.Записать(); НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); ЗаписьРегистра = НаборЗаписей.Добавить(); ЗаписьРегистра.Объект = НовКонтр.Ссылка; // ЗаписьРегистра.Период = Дата; ЗаписьРегистра.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон; ЗаписьРегистра.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента; ЗаписьРегистра.Представление = ТекЛист.Cells(Номер, 7).Value;; НаборЗаписей.Записать(Ложь); // ЗаписьРегистра.Объект = НовКонтр.Ссылка; // ЗаписьРегистра.Период = Дата; ЗаписьРегистра.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес; ЗаписьРегистра.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента; ЗаписьРегистра.Представление = ТекЛист.Cells(Номер, 17).Value;; НаборЗаписей.Записать(Ложь); НовКонтр.Записать(); // НовСтрока = Справочники.Контрагенты //НовКонтр.Владелец = Ссылка; //Ссылка. СсылкаОрганиз = Справочники.Организации.НайтиПоКоду(КодКонтр); Если СсылкаОрганиз.Пустая() Тогда СпрОрганиз = Справочники.Организации.СоздатьЭлемент(); СпрОрганиз.Наименование = ТекЛист.Cells(Номер, 2).Value; Если ТекЛист.Cells(Номер, 9).Value = 0 Тогда СпрОрганиз.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо; Иначе СпрОрганиз.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо; КонецЕсли; СпрОрганиз.НаименованиеПолное = ТекЛист.Cells(Номер, 3).Value; СпрОрганиз.ОсновнойБанковскийСчет = ТекЛист.Cells(Номер, 12).Value; СпрОрганиз.ИНН = ТекЛист.Cells(Номер, 5).Value; СпрОрганиз.Записать(); КонецЕсли; КодБанка = ТекЛист.Cells(Номер, 15).Value; СсылкаБанк = Справочники.Банки.НайтиПоКоду(КодБанка); Если СсылкаБанк.Пустая() Тогда СпрБанки = Справочники.Банки.СоздатьЭлемент(); СпрБанки.Наименование = ТекЛист.Cells(Номер, 16).Value; СпрБанки.Записать(); КонецЕсли; КодБанкСчета = ТекЛист.Cells(Номер, 12).Value; СсылкаБанкСчета = Справочники.БанковскиеСчета.НайтиПоКоду(КодБанкСчета); Если СсылкаБанкСчета.Пустая() Тогда СпрБанкСчета = Справочники.БанковскиеСчета.СоздатьЭлемент(); СпрБанкСчета.Владелец = НовКонтр.Ссылка; СпрБанкСчета.Наименование = ТекЛист.Cells(Номер, 14).Value; СпрБанкСчета.ВалютаДенежныхСредств = Справочники.Валюты.НайтиПоКоду("810"); СпрБанкСчета.НомерСчета = ТекЛист.Cells(Номер, 13).Value; СпрБанкСчета.Банк = Справочники.Банки.НайтиПоНаименованию(СпрБанки.Наименование);//ТекЛист.Cells(Номер, 16).Value; СпрБанкСчета.Записать(); КонецЕсли; КодДогКонтр = ТекЛист.Cells(Номер, 9).Value; СсылкаДогКонтр = Справочники.ДоговорыКонтрагентов.НайтиПоКоду(КодДогКонтр); Если СсылкаДогКонтр.Пустая() Тогда ДогКонтр = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент(); ДогКонтр.Владелец = НовКонтр.Ссылка; ДогКонтр.Наименование = ТекЛист.Cells(Номер, 10).Value; ДогКонтр.Организация = Справочники.Организации.НайтиПоНаименованию(СпрОрганиз.Наименование); ДогКонтр.Номер = ТекЛист.Cells(Номер, 11).Value; ДогКонтр.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом; ДогКонтр.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.Прочее; ДогКонтр.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду("810"); ДогКонтр.Записать(); КонецЕсли; Иначе СпрБанкСчета = Справочники.БанковскиеСчета.СоздатьЭлемент(); СпрБанкСчета.Владелец = НовКонтр.Ссылка; СпрБанкСчета.Наименование = ТекЛист.Cells(Номер, 14).Value; СпрБанкСчета.ВалютаДенежныхСредств = Справочники.Валюты.НайтиПоКоду("810"); СпрБанкСчета.НомерСчета = ТекЛист.Cells(Номер, 13).Value; СпрБанкСчета.Банк = Справочники.Банки.НайтиПоНаименованию(СпрБанки.Наименование);//ТекЛист.Cells(Номер, 16).Value; СпрБанкСчета.Записать(); ДогКонтр = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент(); ДогКонтр.Владелец = НовКонтр.Ссылка; ДогКонтр.Наименование = ТекЛист.Cells(Номер, 10).Value; ДогКонтр.Организация = Справочники.Организации.НайтиПоНаименованию(СпрОрганиз.Наименование); ДогКонтр.Номер = ТекЛист.Cells(Номер, 11).Value; ДогКонтр.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом; ДогКонтр.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.Прочее; ДогКонтр.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду("810"); Если Не ЗначениеНеЗаполнено(ТекЛист.Cells(Номер, 9).Value) Тогда ДогКонтр.Записать(); КонецЕсли; НовКонтр.Записать(); КонецЕсли; //НовСтрока = Документ2.СуммыДолга.Добавить(); //НовСтрока.ДоговорКонтрагента = //ДокКоррДолга = Документы.КорректировкаДолга.ПолучитьФорму("ФормаДокумента"); //Строка = ДокКоррДолга. Номер = Номер + 1; НомерСтроки = ТекЛист.Cells(Номер, 1).Value; КонецЦикла; Форма = Справочники["Номенклатура"].ПолучитьФормуСписка(); // Форма.Открыть(); Excel.Quit(); |
|||
1
ТелепатБот
гуру
28.08.06
✎
17:33
|
||||
2
smaharbA
28.08.06
✎
17:35
|
Excel = СоздатьОбъект("Excel.Application");
|
|||
3
Лефмихалыч
28.08.06
✎
17:35
|
(0) задолел? Кто это читать-то станет? Что у тебя за базы? Типовые, нет?
|
|||
4
jq
28.08.06
✎
17:37
|
Ну, вобщем меня интересует, как в 7-ке записать в Excel данные?
|
|||
5
Andrey_spb
28.08.06
✎
17:43
|
(4) Практически также, за исключением (2)
|
|||
6
Хемуль
28.08.06
✎
17:47
|
Вау. Отличный код...
Зачем полконфы выкладывать, чтобы узнать (4) |
|||
7
jq
28.08.06
✎
17:47
|
(5)А чего в (2)?
|
|||
8
Andrey_spb
28.08.06
✎
17:54
|
Короче, работа с Excel в семерке осуществляется так же только вместо Excel = Новый COMОбъект("Excel.Application"); надо Excel = СоздатьОбъект("Excel.Application"); Другой вопрос, что там немного подругому надо обращаться к спр., док. и т.п. Но это к вопросу в (0) не относится...
|
|||
9
jq
28.08.06
✎
17:57
|
(8)А как там обращаться к спр, док, приведите пример плиз!
|
|||
10
Andrey_spb
28.08.06
✎
18:00
|
книжки читай...
|
|||
11
mrkorn
28.08.06
✎
18:02
|
http://www.mista.ru/tutor_1c/index.htm - вот тебе учебник
|
|||
12
jq
29.08.06
✎
12:20
|
Написал вот что:
Процедура Выполнить() Excel = СоздатьОбъект("Excel.Application"); Excel.Workbooks.Open("C:\...\Excel выгрузка"); Excel.Visible = 1; ТекЛист = Excel.WorkSheets(1); НомерСтроки = 1; НомерСтолбца = ТекЛист.Cells(НомерСтроки, 1).Value; СпрНом = СоздатьОбъект("Справочник.Номенклатура"); СпрНом.ВыбратьЭлементы(); Пока СпрНом.ПолучитьЭлемент() = 1 Цикл ТекЛист.Cells(НомерСтроки, 1).Value = СпрНом.Код; ТекЛист.Cells(НомерСтроки, 2).Value = СпрНом.Наименование; НомерСтроки = НомерСтроки + 1; КонецЦикла; ТекЛист.Cells(НомерСтроки, 1).Value = "#"; Excel.Quit(); КонецПроцедуры Все работает, только вот в Excel записывается не: 1 ... 2 ... 3 ... а наоборот: 3 ... 2 ... 1 ... Почему, похоже не правильно цикл составил. Помогите разобраться! |
|||
13
zbv
29.08.06
✎
12:23
|
1 2 3 - че такое?
|
|||
14
Sj
29.08.06
✎
12:24
|
СпрНом.ПорядокКодов() - ?
|
|||
15
jq
29.08.06
✎
12:24
|
Типа код
|
|||
16
jq
29.08.06
✎
12:24
|
(14)Чего это?
|
|||
17
zbv
29.08.06
✎
12:24
|
(15) тогда (14)
|
|||
18
Sj
29.08.06
✎
12:25
|
чтобы справочник перебирался по возрастанию кодов
|
|||
19
Sj
29.08.06
✎
12:26
|
мощнецкая команда
|
|||
20
zbv
29.08.06
✎
12:26
|
СпрНом = СоздатьОбъект("Справочник.Номенклатура");
СпрНом.ПорядокКодов(); СпрНом.ВыбратьЭлементы(); ... |
|||
21
jq
29.08.06
✎
12:27
|
Ааа, только не понятно, он что по умолчанию перебирается снизу вверх, т.е. от последнего к первому?
|
|||
22
GrayT
29.08.06
✎
12:27
|
Выгрузка из 7 в 8 через ексель? Готично
|
|||
23
jq
29.08.06
✎
12:28
|
(22)Да, она самая. А что не так?
|
|||
24
zbv
29.08.06
✎
12:34
|
(21) По умолчанию - это какое у тебя основное представление.
(23) Без Excelя. |
|||
25
jq
29.08.06
✎
12:39
|
(24)А как еще можно?
|
|||
26
elisem
29.08.06
✎
12:43
|
(25) xml-обмен рулит
|
|||
27
jq
29.08.06
✎
12:44
|
Возможно, глупый вопрос, но в 8-ке так работает
Если СпрНом.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга Тогда ... Ошибка: Переменная не определена Перечисления) В чем ошибка? |
|||
28
jq
29.08.06
✎
12:44
|
(26)Любой пример обмена (небольшой) в студию!!!
|
|||
29
zbv
29.08.06
✎
12:48
|
(27) Непонял, где ошибка возникает?
|
|||
30
jq
29.08.06
✎
12:49
|
Когда обработку запускаю
|
|||
31
zbv
29.08.06
✎
12:49
|
(30) в 7 или в 8?
|
|||
32
GrayT
29.08.06
✎
12:49
|
(27)ПеречислениЕ
(28)В поиск |
|||
33
jq
29.08.06
✎
12:52
|
Очень интерестно, вот в 8-ке, если написано в дереве конфигуратора, Перечисления, так и дальше везде это выражение и используешь. А здесь в дереве написано Перечисления, а надо писать Перечисление - Ужас!
|
|||
34
elisem
29.08.06
✎
12:55
|
(33) привыкай. почаще стоит смотреть в синтакс-помошник.
|
|||
35
jq
29.08.06
✎
13:32
|
Опять не пойму. В Предприятии у эл-та спр. Номенклатура есть две вкладки: Основная и Цены, а в конфигураторе у номенклатуры нет Цены, или где еще их надо смотреть?
|
|||
36
jq
29.08.06
✎
13:40
|
Ответьте, пжлста!
|
|||
37
GrayT
29.08.06
✎
13:43
|
Есть подчиненный справочник цены
|
|||
38
jq
29.08.06
✎
13:45
|
Так то оно так, но когда я в Предприятии заполнил номенклатуру и для нее ввел цены, то в подч. спр. Цены ничего не оказалось. Или я опять все перепутал?
|
|||
39
GrayT
29.08.06
✎
13:47
|
Скорее всего
|
|||
40
jq
29.08.06
✎
13:48
|
Так а где тогда те цены кот. я ввел. Как мне их получить?
|
|||
41
jq
29.08.06
✎
14:13
|
up!
|
|||
42
jq
29.08.06
✎
14:45
|
Подскажите, как получить цену???
|
|||
43
GrayT
29.08.06
✎
14:55
|
Попробуй поиск ИспользоватьВладельца
|
|||
44
jq
29.08.06
✎
15:05
|
Не понял
|
|||
45
GrayT
29.08.06
✎
15:07
|
Найди пример кода как работать с подчиненными справочниками
|
|||
46
kiruha
29.08.06
✎
15:08
|
(0) А зачем вообще так сложно?
Делаешь в 7.7 обычный отчет, туда поля какие хошь, у Таблицы есть метод Записать(,"XLS") - все - файл готов |
|||
47
jq
29.08.06
✎
15:21
|
(46)Это че запросом что-ли ?
|
|||
48
jq
29.08.06
✎
15:25
|
(46)Пример текста в студию!
|
|||
49
igork1966
29.08.06
✎
15:32
|
(47,48) Разницу между таблицей и таблицей значений знаешь?
|
|||
50
jq
29.08.06
✎
15:49
|
Вроде да. Но все равно с отчетом не понял, сколько там столбцов и строк выбирать, как и куда поля добавлять???
|
|||
51
kiruha
29.08.06
✎
16:48
|
(50)В 7.7 есть понятие таблица.
Конструктором запросов можешь построить ее за 5 минут. Далее вместо Таб.Показать() - Таб.Записать(имяфайла,"XLS") . Файл готов |
|||
52
jq
29.08.06
✎
16:56
|
Ладно, спасибо, после с этим разберусь.
Вот опять хрень какая-то создал спр. Контрагенты и выбрал в нем Основной договор, так вот, как мне теперь получить данные этого договора (наименование, валюта, ...)??? По идее все должно записаться в спр. Договоры, а он пуст. А вот если открыт контрагент, тогда в договорах появляется выбранный договор. Как быть? Пишу: СпрДоговоры = СоздатьОбъект("Справочник.Договоры"); ТекЛист.Cells(...).Value = СпрДоговоры.ОсновнойДоговор; Не катит! |
|||
53
zbv
29.08.06
✎
17:00
|
(52) ТекЛист. .... = СпрКонтрагенты.ОсновнойДоговор.Наименование;
и т.д. |
|||
54
kiruha
29.08.06
✎
17:02
|
(52)Ну если совсем непонятно -
Это занимет около 2 минут например Процедура Сформировать(имяфайла="") Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент; |Код = Справочник.Номенклатура.Код; |Наименование = Справочник.Номенклатура.Наименование; |Группировка Номенклатура без групп; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл Код=Запрос.Код; Наименование=Запрос.Наименование; // Заполнение полей Номенклатура Таб.ВывестиСекцию("Номенклатура"); КонецЦикла; // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Записать(имяфайла,"XLS"); КонецПроцедуры |
|||
55
jq
29.08.06
✎
17:09
|
(55)А чем надо пользоваться конструктор отчета -> конструктор макета отчета -> ... -> отчет содержит (циклы по строкам и столбцам) -> кол-во циклов
Так что-ли? И какие циклы выбрать - по строкам и столбцам? коол-во циклов - ? |
|||
56
kiruha
29.08.06
✎
17:20
|
(55) Нда...
Вообще-то конструктор запроса, но если все так плохо с 7.7 - лучше делай как умеешь :) (или почитать http://mista.ru/tutor_1c/zapros.htm) |
|||
57
jq
29.08.06
✎
17:28
|
Хе-хе, в (46) было сказано про отчет, я в (47) спросил - "запросом что-ли?"
мне на этот вопрос не ответили, отсюда и дальнейшее непонимание чего, как и где делать |
|||
58
jq
30.08.06
✎
17:11
|
Как правильно в 7-ке должна быть эта строчка?
ЕдИзм = Справочник.ЕденицыИзмерений.НайтиПоКоду("796"); |
|||
59
jq
30.08.06
✎
17:18
|
+(58)Нужно, чтобы ЕдИзм = шт
|
|||
60
zbv
30.08.06
✎
17:19
|
СпрЕдИзм = СоздатьОбъект("Справочник.ЕдиницыИзмерений");
Если СпрЕдИзм.найтиПоКоду("796") = 1 Тогда ЕдИзм = СпрЕдИзм.ТекущийЭлемент(); иначе Сообщить("Нет единицы с кодом 796"); КонецЕсли; |
|||
61
jq
30.08.06
✎
17:24
|
Спасибо, щас испробуем
|
|||
62
jq
30.08.06
✎
17:36
|
Вроде все правильно, но выдает ошибку:
???????.Cells(???????????, 8).Value = ???????; {?????????.?????????1.?????.??????(41)}: ?????? ??? ?????????? |
|||
63
jq
30.08.06
✎
17:36
|
Не понял, что это?
Ошибка: ЕдИзм - плохой тип переменной |
|||
64
zbv
30.08.06
✎
17:40
|
(63) Раскладку русскую сделай, когда копируешь
|
|||
65
jq
30.08.06
✎
17:44
|
Почему плохой тип переменной, что не так?
|
|||
66
zbv
30.08.06
✎
17:45
|
Попробуй так
Измени в (60) ЕдИзм = СпрЕдИзм.Наименование; |
|||
67
jq
30.08.06
✎
17:51
|
(66)Спасибо
|
|||
68
jq
30.08.06
✎
17:53
|
В восьмерке пишу:
Если ТекЛист.Cells(Номер, 4).Value = 0 Тогда НовКонтр.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо; ПаспортнДанные = РегистрыСведений.ПаспортныеДанныеФизЛиц.СоздатьМенеджерЗаписи(); ПаспортнДанные.ДокументСерия = Формат(ТекЛист.Cells(Номер, 17).Value, "ЧГ=0"); ПаспортнДанные.ДокументНомер = Формат(ТекЛист.Cells(Номер, 18).Value, "ЧГ=0"); ПаспортнДанные.ДокументКемВыдан = Формат(ТекЛист.Cells(Номер, 19).Value, "ЧГ=0"); ПаспортнДанные.ДокументДатаВыдачи = Формат(ТекЛист.Cells(Номер, 20).Value, "ЧГ=0"); Иначе НовКонтр.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо; КонецЕсли; А в рег. сведений ничего не записалось, почему? Может надо что-то типа МенеджерЗаписи.Записать() ??? |
|||
69
jq
31.08.06
✎
09:21
|
up
|
|||
70
jq
31.08.06
✎
09:39
|
+(68) up!
|
|||
71
jq
31.08.06
✎
09:57
|
Помогите разобраться, ответьте пожалуйста!
|
|||
72
jq
31.08.06
✎
10:47
|
Ответьте кто-нибудь!!!
|
|||
73
jq
31.08.06
✎
10:58
|
up
|
|||
74
jq
31.08.06
✎
11:02
|
up!
|
|||
75
jq
31.08.06
✎
11:14
|
Ответьте же, блин уже!
|
|||
76
jq
31.08.06
✎
11:27
|
up!
|
|||
77
Песец
31.08.06
✎
11:39
|
мальчик, иди учить домашнее задание! (http://mista.ru/tutor_1c)
|
|||
78
jq
31.08.06
✎
11:44
|
Скажите, что в (68) не так?
|
|||
79
jq
31.08.06
✎
11:53
|
up!
|
|||
80
jq
31.08.06
✎
12:07
|
помогите наконец!
|
|||
81
jq
31.08.06
✎
12:12
|
up!
|
|||
82
elisem
31.08.06
✎
12:14
|
(68) ты менеджер слздаешь и не записываешь, судя по всему.
Неужели нельзя прогнать отладчиком и посмотреть, что получается |
|||
83
jq
31.08.06
✎
12:16
|
Я писал МенеджерЗаписи.Записать();
Выдает ошибку, что так нельзя! |
|||
84
elisem
31.08.06
✎
12:17
|
почитай синтакс-помошник
|
|||
85
elisem
31.08.06
✎
12:18
|
какая конкретно ошибка
|
|||
86
elisem
31.08.06
✎
12:19
|
почитай правила форума, по-русски написано же: "приводите полные тексты сообщений"
|
|||
87
jq
31.08.06
✎
12:30
|
Пишет:
Переменная не определена (МенеджерЗаписи) <<?>>МенеджерЗаписи.Записать(); |
|||
88
jq
31.08.06
✎
12:34
|
Ааа, надо ПаспортныеДанные.Записать();
|
|||
89
elisem
31.08.06
✎
12:45
|
б....
ну, вы, блин, даете (с) |
|||
90
jq
31.08.06
✎
14:01
|
В 7-ке в спр. Контрагенты у оного задано два расчетных счета, а в Excel записывается только первый. Как сделать так, чтоб пока есть эти счета создавалась еще одна строчка в экселе и туда записывался бы этот счет.
Делаю так: Пока СпрКонтр.РасчетныеСчета.ПолучитьЭлемент() = 1 Цикл ТекЛист.Cells(НомерСтроки, 15).Value = СпрКонтр.ОсновнойСчет.Номер; ТекЛист.Cells(НомерСтроки, 16).Value = СпрКонтр.ОсновнойСчет.Наименование; НомерСтроки = НомерСтроки + 1; КонецЦикла; Но что-то опять запутался в семерошных определениях. Подскажите как правильно!? |
|||
91
jq
31.08.06
✎
14:06
|
+(90)Пишет:
Пока СпрКонтр.РасчетныеСчета.ПолучитьЭлемент() = 1 Цикл {Обработка.Обработка1.Форма.Модуль(137)}: Поле агрегатного объекта не обнаружено (РасчетныеСчета) Есть ведь такой спр. РасчетныеСчета, так что не так? |
|||
92
zbv
31.08.06
✎
14:09
|
СпрРС = СоздатьОбъект("Справочник.РасчетныеСчета");
СпрРС.ИспользоватьВладельца(СпрКонтр.ТекущийЭлемент()); СпрРС.ВыбратьЭлементы(); Пока спрРС.получитьэлемент()>0 цикл ТекЛист.Cells(НомерСтроки, 15).Value = СпрРС.Номер; ТекЛист.Cells(НомерСтроки, 16).Value = СпрРС.Наименование; НомерСтроки = НомерСтроки + 1; КонецЦикла; |
|||
93
jq
31.08.06
✎
14:15
|
А, точно, у меня же не задан владелец, спасибо!
|
|||
94
jq
31.08.06
✎
15:23
|
есть
// Лист3 // Контрагенты Excel = СоздатьОбъект("Excel.Application"); Excel.Workbooks.Open("C:\...\Excel выгрузка"); Excel.Visible = 1; ТекЛист = Excel.WorkSheets(3); ... Excel.Quit(); //******************************************* // Лист4 // Счета Excel = СоздатьОбъект("Excel.Application"); Excel.Workbooks.Open("C:\...\Excel выгрузка"); Excel.Visible = 1; ТекЛист = Excel.WorkSheets(4); СпрРасчСчета = СоздатьОбъект("Справочник.РасчетныеСчета"); СпрРасчСчета.ИспользоватьВладельца(СпрКонтр.ТекущийЭлемент()); СпрРасчСчета.ВыбратьЭлементы(); Пока СпрРасчСчета.ПолучитьЭлемент() > 0 Цикл ТекЛист.Cells(НомерСтроки, 2).Value = СпрРасчСчета.Номер; ТекЛист.Cells(НомерСтроки, 3).Value = СпрРасчСчета.Наименование; НомерСтроки = НомерСтроки + 1; КонецЦикла; ... В Excel счета не записываются, т.к. Владелец счета - Контрагент определен в др. листе. Как это исправить? В восьмерке можно как-то так вроде: Справочник....ПолучитьОбъект(); А как в 7-ке??? |
|||
95
zbv
31.08.06
✎
15:28
|
(94) Заполнять одновременно листы
Или перебирать опять контрагентов, как при заполнении 3 листа. |
|||
96
jq
31.08.06
✎
15:28
|
Up
|
|||
97
jq
31.08.06
✎
15:30
|
Как перебирать, типа
Контр = Справочник.Контрагенты.НайтиПоНаименованию()??? |
|||
98
zbv
31.08.06
✎
15:31
|
(97) Как в другом листе Excelя перебирал, так и тут перебирай. Внутри цикл по расчетному счету.
|
|||
99
jq
31.08.06
✎
15:35
|
Так я от этого специально и перешел к (94) - все в отдельных листах, т.к. иначе получается чертовщина с записью в строчки. Т.е. у контрагента может быть, например, 2 счета и 5 договоров, и все это в результате получается в перемешку.
|
|||
100
jq
31.08.06
✎
15:40
|
(98)А нельзя как-нибудь по другому?
|
|||
101
zbv
31.08.06
✎
15:45
|
(100) Заполняй одновременно: Если Контрагент лист такой-то, расчетный счет преключаемся на другой лист и так далее.
|
|||
102
jq
31.08.06
✎
15:46
|
(101)О, а как переключиться на др. лист, так?
открыть лист1 ... открыть лист2 ... закрыть лист2 ... закрыть лист1 |
|||
103
zbv
31.08.06
✎
15:47
|
ТекЛист = Excel.WorkSheets(3);
ТекЛист = Excel.WorkSheets(4); |
|||
104
jq
31.08.06
✎
15:52
|
1
|
|||
105
jq
31.08.06
✎
15:54
|
(103)Т.е.
ТекЛист = Excel.WorkSheets(3); //описываю контрагента ТекЛист = Excel.WorkSheets(4); //описываю счета Так что ли? Чего-то не догоняю. |
|||
106
elisem
31.08.06
✎
15:56
|
(104) тебе еще что-то не понятно?
|
|||
107
jq
31.08.06
✎
15:57
|
Мне не очень понятно (101)
|
|||
108
elisem
31.08.06
✎
15:58
|
(105) да, так.
после строчки ТекЛист = Excel.WorkSheets(n); n-ый лист становится текущим и его можно заполнять через переменную ТекЛист |
|||
109
zbv
31.08.06
✎
15:58
|
(105) Именно так.
|
|||
110
jq
31.08.06
✎
15:59
|
Сейчас опробую "новый" метод!!
|
|||
111
jq
31.08.06
✎
16:21
|
Чего-то не получается. А точнее получается бредятина: записывается в лист контрагенты только первый контрагент (всего их 2), в счета ничего не записалось, а в договоры - договор второго контрагента.
Помогите разобраться! //Лист3 //Контрагенты Excel = СоздатьОбъект("Excel.Application"); Excel.Workbooks.Open("C:\...\Excel выгрузка"); Excel.Visible = 1; ТекЛист = Excel.WorkSheets(3); НомерСтроки = 2; НомерСтолбца = ТекЛист.Cells(НомерСтроки, 1).Value; Н = НомерСтроки; СпрКонтр = СоздатьОбъект("Справочник.Контрагенты"); СпрКонтр.ПорядокКодов(); СпрКонтр.ВыбратьЭлементы(); Пока СпрКонтр.ПолучитьЭлемент() = 1 Цикл ТекЛист.Cells(НомерСтроки, 1).Value = СпрКонтр.Код; ТекЛист.Cells(НомерСтроки, 2).Value = СпрКонтр.Наименование; Если СпрКонтр.ВидКонтрагента = Перечисление.ВидыКонтрагентов.ЧастноеЛицо Тогда ТекЛист.Cells(НомерСтроки, 4).Value = "0"; //ФизЛицо ТекЛист.Cells(НомерСтроки, 17).Value = СпрКонтр.ДокументСерия; ТекЛист.Cells(НомерСтроки, 18).Value = СпрКонтр.ДокументНомер; ТекЛист.Cells(НомерСтроки, 19).Value = СпрКонтр.ДокументКемВыдан; ТекЛист.Cells(НомерСтроки, 20).Value = СпрКонтр.ДокументДатаВыдачи; ТекЛист.Cells(НомерСтроки, 21).Value = СпрКонтр.ПолнНаименование; Иначе ТекЛист.Cells(НомерСтроки, 4).Value = "1"; //ЮрЛицо КонецЕсли; ТекЛист.Cells(НомерСтроки, 3).Value = СпрКонтр.ПолнНаименование; ТекЛист.Cells(НомерСтроки, 6).Value = СпрКонтр.ИНН; ТекЛист.Cells(НомерСтроки, 7).Value = СпрКонтр.ОКПО; ТекЛист.Cells(НомерСтроки, 8).Value = СпрКонтр.Телефоны; ТекЛист.Cells(НомерСтроки, 9).Value = СпрКонтр.ЮридическийАдрес; ПочтовыйАдрес = СокрП(СпрКонтр.ПочтовыйАдрес); ТекЛист.Cells(НомерСтроки, 10).Value = ПочтовыйАдрес; НомерСтроки = НомерСтроки + 1; ТекЛист = Excel.WorkSheets(4); СпрРасчСчета = СоздатьОбъект("Справочник.РасчетныеСчета"); СпрРасчСчета.ИспользоватьВладельца(СпрКонтр.ТекущийЭлемент()); СпрРасчСчета.ВыбратьЭлементы(); Пока СпрРасчСчета.ПолучитьЭлемент() > 0 Цикл ТекЛист.Cells(НомерСтроки, 15).Value = СпрРасчСчета.Номер; ТекЛист.Cells(НомерСтроки, 16).Value = СпрРасчСчета.Наименование; НомерСтроки = НомерСтроки + 1; КонецЦикла; ТекЛист = Excel.WorkSheets(5); СпрДоговоры = СоздатьОбъект("Справочник.Договоры"); СпрДоговоры.ИспользоватьВладельца(СпрДоговоры.ТекущийЭлемент()); СпрДоговоры.ВыбратьЭлементы(); Пока СпрДоговоры.ПолучитьЭлемент() > 0 Цикл ТекЛист.Cells(НомерСтроки, 12).Value = СпрДоговоры.Наименование; НомерСтроки = НомерСтроки + 1; КонецЦикла; Код = 1; Пока Н <> (НомерСтроки + 1) Цикл ТекЛист = Excel.WorkSheets(4); ТекЛист.Cells(Н, 11).Value = Код; ТекЛист = Excel.WorkSheets(5); ТекЛист.Cells(Н, 14).Value = Код; Код = Код + 1; Н = Н + 1; КонецЦикла; КонецЦикла; ТекЛист.Cells(НомерСтроки, 1).Value = "#"; Excel.Quit(); |
|||
112
zbv
31.08.06
✎
16:24
|
НомерСтроки - для каждого листа свой должен быть
|
|||
113
jq
31.08.06
✎
16:25
|
Во-во, только снова будет плодиться путаница
|
|||
114
zbv
31.08.06
✎
16:26
|
(113) Если все нормально напишешь путаницы не будет.
|
|||
115
jq
31.08.06
✎
17:47
|
Исправил для счетов, счета записываются, договоры еще не исправлял. Проблема в том, что записывается только один контрагент, а второй не записывается. Не могу разобраться, уже голова заболела!
// Лист3 // Контрагенты Excel = СоздатьОбъект("Excel.Application"); Excel.Workbooks.Open("C:\Documents and Settings\berezin\Мои документы\Excel выгрузка"); Excel.Visible = 1; ТекЛист = Excel.WorkSheets(3); НомерСтроки = 2; НомерСтолбца = ТекЛист.Cells(НомерСтроки, 1).Value; Н = НомерСтроки; СпрКонтр = СоздатьОбъект("Справочник.Контрагенты"); СпрКонтр.ПорядокКодов(); СпрКонтр.ВыбратьЭлементы(); Пока СпрКонтр.ПолучитьЭлемент() = 1 Цикл ТекЛист.Cells(НомерСтроки, 1).Value = СпрКонтр.Код; ТекЛист.Cells(НомерСтроки, 2).Value = СпрКонтр.Наименование; Если СпрКонтр.ВидКонтрагента = Перечисление.ВидыКонтрагентов.ЧастноеЛицо Тогда ТекЛист.Cells(НомерСтроки, 4).Value = "0"; ТекЛист.Cells(НомерСтроки, 17).Value = СпрКонтр.ДокументСерия; ТекЛист.Cells(НомерСтроки, 18).Value = СпрКонтр.ДокументНомер; ТекЛист.Cells(НомерСтроки, 19).Value = СпрКонтр.ДокументКемВыдан; ТекЛист.Cells(НомерСтроки, 20).Value = СпрКонтр.ДокументДатаВыдачи; ТекЛист.Cells(НомерСтроки, 21).Value = СпрКонтр.ПолнНаименование; Иначе ТекЛист.Cells(НомерСтроки, 4).Value = "1"; КонецЕсли; ТекЛист.Cells(НомерСтроки, 3).Value = СпрКонтр.ПолнНаименование; ТекЛист.Cells(НомерСтроки, 6).Value = СпрКонтр.ИНН; ТекЛист.Cells(НомерСтроки, 7).Value = СпрКонтр.ОКПО; ТекЛист.Cells(НомерСтроки, 8).Value = СпрКонтр.Телефоны; ТекЛист.Cells(НомерСтроки, 9).Value = СпрКонтр.ЮридическийАдрес; ПочтовыйАдрес = СокрП(СпрКонтр.ПочтовыйАдрес); ТекЛист.Cells(НомерСтроки, 10).Value = ПочтовыйАдрес; // ТекЛист.Cells(НомерСтроки, 12).Value = СпрКонтр.ОсновнойДоговор.Наименование; НомерСтроки = НомерСтроки + 1; ТекЛист = Excel.WorkSheets(4); //******** НСтрРС = 2; СпрРасчСчета = СоздатьОбъект("Справочник.РасчетныеСчета"); СпрРасчСчета.ИспользоватьВладельца(СпрКонтр.ТекущийЭлемент()); СпрРасчСчета.ВыбратьЭлементы(); Пока СпрРасчСчета.ПолучитьЭлемент() > 0 Цикл ТекЛист.Cells(НСтрРС, 2).Value = СпрРасчСчета.Номер; ТекЛист.Cells(НСтрРС, 3).Value = СпрРасчСчета.Наименование; НСтрРС = НСтрРС + 1; КонецЦикла; Код = 1; Н = НСтрРС; Пока Н <> (НСтрРС + 1) Цикл ТекЛист.Cells(Н, 1).Value = Код; Код = Код + 1; Н = Н + 1; КонецЦикла; ТекЛист.Cells(НСтрРС, 1).Value = "#"; //******** ТекЛист = Excel.WorkSheets(5); СпрДоговоры = СоздатьОбъект("Справочник.Договоры"); СпрДоговоры.ИспользоватьВладельца(СпрДоговоры.ТекущийЭлемент()); СпрДоговоры.ВыбратьЭлементы(); Пока СпрДоговоры.ПолучитьЭлемент() > 0 Цикл ТекЛист.Cells(НомерСтроки, 12).Value = СпрДоговоры.Наименование; НомерСтроки = НомерСтроки + 1; КонецЦикла; КонецЦикла; ТекЛист.Cells(НомерСтроки, 1).Value = "#"; Excel.Quit(); |
|||
116
jq
31.08.06
✎
17:48
|
Глянул сюда, и похоже понял :)
|
|||
117
zbv
31.08.06
✎
17:50
|
(116) Молодец. Пока тока увидел:
НСтрРС = 2; - перед циклом по контрагентам, |
|||
118
zbv
31.08.06
✎
17:52
|
ТекЛист = Excel.WorkSheets(3); в цикл
ТекЛист.Cells(НСтрРС, 1).Value = "#"; из цикла |
|||
119
jq
31.08.06
✎
17:52
|
Похоже надо перед последним "КонецЦикла" поставить "НомерСтроки = НомерСтроки + 1"
|
|||
120
jq
31.08.06
✎
17:53
|
+(119) типа проверять все строчки по контрагентам
|
|||
121
jq
31.08.06
✎
17:53
|
(118)чего в цикл - из цикла?
|
|||
122
zbv
31.08.06
✎
17:56
|
(121) Эти строчки: 1 - В цикл возвращаемя на лист контрагентов.
2 - из цикла Символ "#" - я так понял конец всем записям. |
|||
123
jq
31.08.06
✎
17:58
|
Ну так это вроде я и имел ввиду в (119) или я ошибаюсь
"#" - это конец записей в листе |
|||
124
zbv
31.08.06
✎
18:01
|
(123) Нет. Это у тебя есть:
НомерСтроки = НомерСтроки + 1; ТекЛист = Excel.WorkSheets(4); А вот позиционирование на 3 листе нет! Поставь перед после начала цикла: Пока СпрКонтр.ПолучитьЭлемент() = 1 Цикл ТекЛист = Excel.WorkSheets(3); |
|||
125
jq
01.09.06
✎
10:01
|
Спасибо!
Только вот теперь придется придумывать - как определить какой счет какому контрагенту принадлежит и добавлять еще цикл. Вроде так. |
|||
126
zbv
01.09.06
✎
10:19
|
(125) Добавь колонку код контрагента в лист расчетные счета.
|
|||
127
jq
01.09.06
✎
10:46
|
Да это то понятно, а вот в 8-ке при загрузке придется мудрить с циклом, кот. должен проверять какому контр. принадлежит счет или нет?
|
|||
128
zbv
01.09.06
✎
10:49
|
Загружай также как выгружаешь:
Цикл Загрузил контрагента; загрузил договоры; загрузил расчетные счета; КонецЦикла; |
|||
129
jq
01.09.06
✎
10:52
|
Так ведь надо чтоб не все счета загружались контрагенту, а только его
|
|||
130
zbv
01.09.06
✎
10:54
|
(129) Проверку ставишь на код и делов то.
|
|||
131
jq
01.09.06
✎
10:58
|
А как из Excel вырезать пустую строчку, и как сделать проверку, так???
Если ПутсаяСтрока(ТекЛист.Cells(Номер, 2).Value) = 1 Тогда ... |
|||
132
jq
01.09.06
✎
11:13
|
up
|
|||
133
zbv
01.09.06
✎
11:15
|
Алгоритм примерно таков:
Загрузили контрагента запоминаем код, если он не соответствует коду в 8.0 Перебираем лист Расчетных счетов. //Незнаю поиск можно реализовать или нет. Если код который мы запомнили = Коду контр Расч. сч тогда Заполняем расчетные счета |
|||
134
jq
01.09.06
✎
11:18
|
А как насчет (131)?
|
|||
135
Andrey_spb
01.09.06
✎
11:21
|
(134) Если ТекЛист.Cells(Номер, 2).Value="" Тогда
|
|||
136
zbv
01.09.06
✎
11:21
|
(124) Да вроде можно так, я в 8 не силен пока, только ПуСТаяСтрока
|
|||
137
zbv
01.09.06
✎
11:22
|
+(136) и "= 1" неправильно: Там или "Истина" или "Ложь"
|
|||
138
jq
01.09.06
✎
11:25
|
(135),(136) Как в 7-ке удалить строчку из Excel???
|
|||
139
zbv
01.09.06
✎
11:37
|
(138) Непомню
ТекЛист.Rows(НомерСтрокиУдал).Delete Попробуй |
|||
140
jq
01.09.06
✎
11:42
|
Не, пишет Delete -неопознанный оператор
|
|||
141
jq
01.09.06
✎
11:42
|
В принципе, можно и вручную удалить, а если их очень много будет :(
|
|||
142
Andrey_spb
01.09.06
✎
11:49
|
а Delete() не пробовал?
|
|||
143
jq
01.09.06
✎
11:50
|
Так? ТекЛист.Rows(НомерСтрокиУдал).Delete() ???
|
|||
144
jq
01.09.06
✎
11:52
|
Попробовал, ошибки не выдает, но и строчку не удаляет
|
|||
145
Andrey_spb
01.09.06
✎
11:56
|
так не бывает...
|
|||
146
jq
01.09.06
✎
12:15
|
Пишу:
НомерСтроки = 2; НомерСтолбца = ТекЛист.Cells(НомерСтроки, 1).Value; Пока ТекЛист.Cells(НомерСтроки, 1).Value <> "#" Цикл Если ТекЛист.Cells(НомерСтроки, 15).Value = "" Тогда ТекЛист.Rows(НомерСтроки).Delete(); КонецЕсли; НомерСтроки = НомерСтроки + 1; КонецЦикла; Удаляются поочередно все строчки, а потом заполняются тем, что было до удаления. Ничего не пойму |
|||
147
jq
01.09.06
✎
13:14
|
Написал:
СпрРасчСчета = СоздатьОбъект("Справочник.РасчетныеСчета"); СпрРасчСчета.ИспользоватьВладельца(СпрКонтр.ТекущийЭлемент()); СпрРасчСчета.ВыбратьЭлементы(); Пока СпрРасчСчета.ПолучитьЭлемент() > 0 Цикл ТекЛист.Cells(НомерСтроки, 15).Value = СпрРасчСчета.Номер; ТекЛист.Cells(НомерСтроки, 16).Value = СпрРасчСчета.Наименование; НомерСтроки = НомерСтроки + 1; КонецЦикла; СпрДоговоры = СоздатьОбъект("Справочник.Договоры"); СпрДоговоры.ИспользоватьВладельца(СпрДоговоры.ТекущийЭлемент()); СпрДоговоры.ВыбратьЭлементы(); Пока СпрДоговоры.ПолучитьЭлемент() > 0 Цикл ТекЛист.Cells(НомерСтроки, 12).Value = СпрДоговоры.Наименование; НомерСтроки = НомерСтроки + 1; КонецЦикла; Счета записываются, а договоры - нет. Не пойму почему, владелец определен, договор у контрагента есть. Может кто подскажет |
|||
148
zbv
01.09.06
✎
13:22
|
СпрДоговоры = СоздатьОбъект("Справочник.Договоры");
СпрДоговоры.ИспользоватьВладельца(СпрКонтр.ТекущийЭлемент()); |
|||
149
jq
01.09.06
✎
13:24
|
Точно, не заметил, сижу и голову ломаю :)
|
|||
150
elisem
01.09.06
✎
13:35
|
(146) может ты файл не сохраняешь после удаления?
|
|||
151
jq
01.09.06
✎
14:54
|
(150)А как его сохранять, я так вообще его нигде не сохраняю
|
|||
152
elisem
01.09.06
✎
15:00
|
Excel.Workbooks.Save() - это если он уже есть на диске
Excel.Workbooks.SaveAs(..) - это если он у тебя новый |
|||
153
jq
04.09.06
✎
12:05
|
Помогите привязать банк к расчетному счету!
Пишу следующее: СпрРасчСчета = СоздатьОбъект("Справочник.РасчетныеСчета"); СпрРасчСчета.ИспользоватьВладельца(СпрКонтр.ТекущийЭлемент()); СпрРасчСчета.ВыбратьЭлементы(); Пока СпрРасчСчета.ПолучитьЭлемент() > 0 Цикл ТекЛист.Cells(НомерСтроки, 1).Value = СпрКонтр.Код; ТекЛист.Cells(НомерСтроки, 14).Value = Код; ТекЛист.Cells(НомерСтроки, 15).Value = СпрРасчСчета.Номер; ТекЛист.Cells(НомерСтроки, 16).Value = СпрРасчСчета.Наименование; //****** БанкСчета = СпрРасчСчета.НайтиПоНаименованию("Номер"); ТекЛист.Cells(НомерСтроки, 22).Value = БанкСчета; // что дальше? //****** НомерСтроки = НомерСтроки + 1; КСЧ = КСЧ + 1; Код = Код + 1; КонецЦикла; А вот что надо дальше, чтоб каждому счету соответствовал свой банк??? |
|||
154
jq
04.09.06
✎
12:25
|
Помогите пожалуйста, написал вот так (вместо 153)- не работает!
Пока СпрРасчСчета.ПолучитьЭлемент() > 0 Цикл ТекЛист.Cells(НомерСтроки, 1).Value = СпрКонтр.Код; ТекЛист.Cells(НомерСтроки, 14).Value = Код; ТекЛист.Cells(НомерСтроки, 15).Value = СпрРасчСчета.Номер; ТекЛист.Cells(НомерСтроки, 16).Value = СпрРасчСчета.Наименование; НомерСчета = СпрРасчСчета.Номер; БанкСчета = СпрРасчСчета.НайтиПоНаименованию(НомерСчета); ТекЛист.Cells(НомерСтроки, 22).Value = БанкСчета.БанкОрганизации; НомерСтроки = НомерСтроки + 1; КСЧ = КСЧ + 1; Код = Код + 1; КонецЦикла; Подскажите как правильно? |
|||
155
jq
04.09.06
✎
12:50
|
Ответьте пожалуйста!
|
|||
156
DF_Slayer
04.09.06
✎
13:03
|
Столько кода в одной ветки мне неосилить, тем более поздно пришел.
|
|||
157
jq
04.09.06
✎
13:04
|
Так и не надо все, достаточно с (153)
|
|||
158
zbv
04.09.06
✎
13:07
|
Пока СпрРасчСчета.ПолучитьЭлемент() > 0 Цикл
ТекЛист.Cells(НомерСтроки, 1).Value = СпрКонтр.Код; ТекЛист.Cells(НомерСтроки, 14).Value = СпрРасчСчета.Код; //--- ТекЛист.Cells(НомерСтроки, 15).Value = СпрРасчСчета.Номер; ТекЛист.Cells(НомерСтроки, 16).Value = СпрРасчСчета.Наименование; //Это че такое? // НомерСчета = СпрРасчСчета.Номер; // БанкСчета = СпрРасчСчета.НайтиПоНаименованию(НомерСчета); // ТекЛист.Cells(НомерСтроки, 22).Value = БанкСчета.БанкОрганизации; // - ???? НомерСтроки = НомерСтроки + 1; КСЧ = КСЧ + 1; Код = Код + 1; КонецЦикла; |
|||
159
jq
04.09.06
✎
13:27
|
(158)Это я пытался найти банк по наименованию из расчетного счета.
Как правильно-то сделать? Я чего-то не догоняю |
|||
160
DF_Slayer
04.09.06
✎
13:31
|
""НомерСчета = СпрРасчСчета.Номер;
БанкСчета = СпрРасчСчета.НайтиПоНаименованию(НомерСчета);"" (159) Это как ты так ищещь банк по наименование из расчетного счета? где тут переменная типа СПР.БАНКИ и где наименование его? |
|||
161
jq
04.09.06
✎
13:33
|
Так ведь это начало, а дальше я не знаю как привязать сюда банки
|
|||
162
DF_Slayer
04.09.06
✎
13:35
|
(161) Предыдущие посты читать не буду (это так на всякий случай).
В Спр.РсчетныеСчета есть реквизит БанкОрганизации (или как там его). Что еще нужно то? |
|||
163
jq
04.09.06
✎
13:39
|
Так я и пишу:
БанкСчета = СпрРасчСчета.БанкОрганизации; ТекЛист.Cells(НомерСтроки, 22).Value = БанкСчета; А выдает ошибку: ТекЛист.Cells(НомерСтроки, 22).Value = БанкСчета; {Обработка.новый1.Форма.Модуль(167)}: Плохой тип переменной Чего мне с этим делать??? |
|||
164
zbv
04.09.06
✎
13:42
|
ТекЛист.Cells(НомерСтроки, 22).Value = БанкСчета.Наименование; //Так попробуй
или ТекЛист.Cells(НомерСтроки, 22).Value = СОКРЛП(БанкСчета); |
|||
165
DF_Slayer
04.09.06
✎
13:45
|
(164)+1. И я так писал в другой ветке. а все одно да потому у автора выходит.
|
|||
166
jq
04.09.06
✎
13:50
|
Да точно, надо поставить наименование:
БанкСчета = СпрРасчСчета.БанкОрганизации; ТекЛист.Cells(НомерСтроки, 22).Value = БанкСчета.Наименование; (164)(165)Спасибо! Я сначала непонял причем тут наименование |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |