Имя: Пароль:
1C
 
Запись данных в 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)Спасибо! Я сначала непонял причем тут наименование