Имя: Пароль:
1C
1С v8
v8: Бух 8.2 Помогите, пожалуйста. Записанные программно документы не появляются в базе
0 Куница
 
17.01.12
15:07
Интерактивно из EXEl таблиц переношу "СписаниеСРасчетногоСчета" и ППИ из старой 8.1 базы. В программе вижу по шагам - все записывается. В предприятии документов нет. Уже сделала пустышки только по номерам - есть, начинаю их наполнять по старой программе и вижу по шагам - все записывается, а смотрю в предприятие - они пустые.
1 vicof
 
17.01.12
15:09
поставь фото и используй конвертацию
2 pessok
 
17.01.12
15:10
(0) даже боюсь предположить...
Попытка
Документ.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Документ "+Документ.Номер+" записан");
Исключение
Сообщить("Ошибка "+ОписаниеОшибки());
КонецПопытки
что выдает?
3 pessok
 
17.01.12
15:11
(2) т.е. вероятнее всего не задан какой-то основной реквизит, без которого документ возвращает отказ в ПередЗаписью()
4 Куница
 
17.01.12
15:12
(2)Попробую
5 Куница
 
17.01.12
15:16
Не дает ошибок
6 pessok
 
17.01.12
15:17
а сообщение пишет - Документ "+Документ.Номер+" записан?
7 Anita_Rost
 
17.01.12
15:21
Да, тут явно документ не записывается
8 Куница
 
17.01.12
15:23
Пишет - записан
9 vicof
 
17.01.12
15:24
отладчик - наше все.
10 Adilgeriy
 
17.01.12
15:24
организация в документе указана?
11 pessok
 
17.01.12
15:24
(8) чудеса... а в списке отборов никаких нет?
(9) дык в отладчике все нормально, насколько я понял
12 vicof
 
17.01.12
15:25
(0) может мадемуазель выложит код?
13 Куница
 
17.01.12
15:26
Что делать. Я уже мучаюсь 3-ий день разными списобами. Еще немного и будет совсем плохо.

Конечно- орг указана. И пустышки делаю - указываю, а потом другой программой - ищу и заполняю. Ведь записывает, транзакц фиксирует и ничего нет
14 Куница
 
17.01.12
15:29
Сначало делаю таб знач ТЗ_З по заголовку ППИ 8.1, затем ТЗ по расшифровке платежа. Потом это

       ТЗ=Новый ТаблицаЗначений;
       ТЗ.Колонки.Добавить("НомерППИ");
       ТЗ.Колонки.Добавить("ДатаППИ");
       ТЗ.Колонки.Добавить("ДоговорКонтрагента");
       ТЗ.Колонки.Добавить("Сделка");
       ТЗ.Колонки.Добавить("КурсВзаиморасчетов");
       ТЗ.Колонки.Добавить("СуммаПлатежа");
       ТЗ.Колонки.Добавить( "КратностьВзаиморасчетов");
       ТЗ.Колонки.Добавить("СуммаВзаиморасчетов");
       ТЗ.Колонки.Добавить("СтавкаНДС");
       ТЗ.Колонки.Добавить("СуммаНДС");
       ТЗ.Колонки.Добавить("СтатьяДвиженияДенежныхСредств");
       ТЗ.Колонки.Добавить("СчетУчетаРасчетовСКонтрагентом");
       ТЗ.Колонки.Добавить("СчетУчетаРасчетовПоАвансам");
       
       ЗапросДР=Новый Запрос;
       ЗапросДР.Текст="ВЫБРАТЬ
       |    ДокументРасчетовСКонтрагентом.Ссылка Как Ссылка
       |ИЗ
       |    Документ.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом
       |ГДЕ
       |    ДокументРасчетовСКонтрагентом.Номер = &Номер
       |    И ДокументРасчетовСКонтрагентом.Дата = &Дата
       |    И ДокументРасчетовСКонтрагентом.Организация = &Организация
       |    И ДокументРасчетовСКонтрагентом.Контрагент = &Контрагент
       |    И ДокументРасчетовСКонтрагентом.ДоговорКонтрагента = &Договор
       |    И ДокументРасчетовСКонтрагентом.Примечание = &Примечание";
       
       Книга.Sheets(2).Activate();
       СчСтрок=2;
       Ошибкаесть=ложь;
       Пока СтрДлина(СокрЛП(Эксел.Cells(СчСтрок,1).Value))<>0 Цикл;
           СтрокаТЗ=ТЗ.Добавить();
           СтрокаТЗ.НомерППИ=СокрЛП(Эксел.Cells(СчСтрок,1).Value);
           ДатаПереноса=Лев(СокрЛП(Эксел.Cells(СчСтрок,2).Value),10);
           Если ДатаПереноса<>"" Тогда
               СтрокаТЗ.ДатаППИ=Дата(Прав(ДатаПереноса,4),Сред(ДатаПереноса,4,2),Лев(ДатаПереноса,2));
           КонецЕсли;    
           КонтрагентКод=СокрЛП(Эксел.Cells(СчСтрок,38).Value);
           КонтрагентВладелец=Справочники.Контрагенты.НайтиПоКоду(КонтрагентКод);
           Если КонтрагентВладелец=Справочники.Контрагенты.ПустаяСсылка() Тогда
               Сообщить("Контрагент по коду "+КонтрагентКод+" не найден")
           КонецЕсли;    
           ДоговорКонтрагентаКод=СокрЛП(Эксел.Cells(СчСтрок,3).Value);
           Запрос.УстановитьПараметр("КонтрагентВладелец", КонтрагентВладелец);            
           Запрос.УстановитьПараметр("КодДоговор", ДоговорКонтрагентаКод);
           РезультатИскомое=Запрос.Выполнить().Выбрать();
           Если РезультатИскомое.Количество()=0 Тогда
               СтрокаТЗ.ДоговорКонтрагента=Справочники.ДоговорыКонтрагентов.ПустаяСсылка();    
           Иначе
               Если РезультатИскомое.Следующий() Тогда
                   СтрокаТЗ.ДоговорКонтрагента=РезультатИскомое.Ссылка;    
               КонецЕсли;    
           КонецЕсли;    
           
           НомерДР=Эксел.Cells(СчСтрок,4).Value;
           НомДР=СокрЛП(НомерДР);
           Если НомДР<>"" Тогда
               ДатаПереноса1=Лев(СокрЛП(Эксел.Cells(СчСтрок,5).Value),10);
               Если ДатаПереноса1<>"" Тогда
                   ДатаДР=Дата(Прав(ДатаПереноса1,4),Сред(ДатаПереноса1,4,2),Лев(ДатаПереноса1,2));
               КонецЕсли;    
               ОрганизацияКод=СокрЛП(Эксел.Cells(СчСтрок,7).Value);
               ОрганизацияДР=Справочники.Организации.НайтиПоКоду(ОрганизацияКод);
               КонтрагентКод=СокрЛП(Эксел.Cells(СчСтрок,8).Value);
               КонтрагентДР=Справочники.Контрагенты.НайтиПоКоду(КонтрагентКод);
               Если КонтрагентДР=Справочники.Контрагенты.ПустаяСсылка() Тогда
                   Сообщить("Контрагент по коду "+КонтрагентКод+" не найден")
               КонецЕсли;    
               Запрос.УстановитьПараметр("КонтрагентВладелец", КонтрагентДР);            
               ДоговорКонтрагентаКод=СокрЛП(Эксел.Cells(СчСтрок,9).Value);
               Запрос.УстановитьПараметр("КодДоговор", ДоговорКонтрагентаКод);
               РезультатИскомое10=Запрос.Выполнить().Выбрать();
               Если РезультатИскомое10.Количество()<>0 Тогда
                   Если РезультатИскомое10.Следующий() Тогда
                       ДоговорКонтрагентаДР=РезультатИскомое10.Ссылка;
                   Иначе    
                       Сообщить("Контрагент "+СтрокаТЗ.Контрагент+" Договора нет по коду "+ДоговорКонтрагентаКод+" ДР "+СтрокаТЗ.Номер+" от "+СтрокаТЗ.Дата);
                       ДоговорКонтрагентаДР=Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
                   КонецЕсли;    
               Иначе    
                   Сообщить("Контрагент "+СтрокаТЗ.Контрагент+" Договора нет по коду "+ДоговорКонтрагентаКод+" ДР "+СтрокаТЗ.Номер+" от "+СтрокаТЗ.Дата);
                   ДоговорКонтрагентаДР=Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
               КонецЕсли;    
               СуммаДокументаДР=Число(СокрЛП(Эксел.Cells(СчСтрок,11).Value));
               ПримечаниеДР=СокрЛП(Эксел.Cells(СчСтрок,17).Value);
               
               ЗапросДР.УстановитьПараметр("Номер",НомерДР);
               ЗапросДР.УстановитьПараметр("Дата",ДатаДР);
               ЗапросДР.УстановитьПараметр("Организация",ОрганизацияДР);
               ЗапросДР.УстановитьПараметр("Контрагент",КонтрагентДР);
               ЗапросДР.УстановитьПараметр("Договор",ДоговорКонтрагентаДР);
               //ЗапросДР.УстановитьПараметр("СуммаДокумента",СуммаДокументаДР);
               ЗапросДР.УстановитьПараметр("Примечание",ПримечаниеДР);
               РезДР=ЗапросДР.Выполнить().Выбрать();
               Если РезДр.Количество()>0 Тогда
                   Если РезДр.Следующий() Тогда
                       СсылкаДР=РезДр.Ссылка;
                       ОбъектДР=РезДр.Ссылка.ПолучитьОбъект();
                       ОбъектДР=Документы.ДокументРасчетовСКонтрагентом.СоздатьДокумент();    
                       ОбъектДР.Организация=ОрганизацияДР;
                       ОбъектДР.Номер=НомерДР;
                       ОбъектДР.Дата=ДатаДР;
                       ОбъектДР.Комментарий=СокрЛП(Эксел.Cells(СчСтрок,6).Value);
                       ОбъектДР.Контрагент=КонтрагентДР;
                       ОбъектДР.ДоговорКонтрагента=СтрокаТЗ.ДоговорКонтрагента;
                       ВалютаДокументаКод=СокрЛП(Эксел.Cells(СчСтрок,10).Value);
                       Если ВалютаДокументаКод="810" Тогда
                           ВалютаДокументаКод="643";
                       КонецЕсли;    
                       ОбъектДР.ВалютаДокумента=Справочники.Валюты.НайтиПоКоду(ВалютаДокументаКод);
                       ОбъектДР.СуммаДокумента=СуммаДокументаДР;
                       ДатаОп=Лев(СокрЛП(Эксел.Cells(СчСтрок,12).Value),10);
                       Если ДатаОп<>"" и ДатаОп<>Неопределено Тогда
                           ОбъектДР.ДатаОплаты=Дата(Прав(ДатаОп,4),Сред(ДатаОп,4,2),Лев(ДатаОп,2));
                       КонецЕсли;    
                       ДатаОт=Лев(СокрЛП(Эксел.Cells(СчСтрок,13).Value),10);
                       Если ДатаОт<>"" и ДатаОт<>Неопределено Тогда
                           ОбъектДР.ДатаОтгрузки=Дата(Прав(ДатаОт,4),Сред(ДатаОт,4,2),Лев(ДатаОт,2));
                       КонецЕсли;    
                       ОбъектДР.СрокПлатежа=Число(СокрЛП(Эксел.Cells(СчСтрок,14).Value));
                       ДатаПОб=Лев(СокрЛП(Эксел.Cells(СчСтрок,15).Value),10);
                       Если ДатаПОб<>"" и ДатаПОб<>Неопределено Тогда
                           ОбъектДР.ДатаПогашенияОб=Дата(Прав(ДатаПОб,4),Сред(ДатаПОб,4,2),Лев(ДатаПОб,2));
                       КонецЕсли;    
                       Платежка0=СокрЛП(Эксел.Cells(СчСтрок,16).Value);
                       Если Платежка0=1 Тогда
                           ОбъектДР.Платежка=Истина;
                       Иначе
                           ОбъектДР.Платежка=Ложь;
                       КонецЕсли;    
                       ОбъектДР.Примечание=СокрЛП(Эксел.Cells(СчСтрок,17).Value);
                       НесоответствиеЗаконадательству0=СокрЛП(Эксел.Cells(СчСтрок,18).Value);
                       Если НесоответствиеЗаконадательству0=1 Тогда
                           ОбъектДР.НесоответствиеЗаконадательству=Истина;
                       Иначе
                           ОбъектДР.НесоответствиеЗаконадательству=Ложь;
                       КонецЕсли;    
                       ОбъектДР.ПримНесоотвЗакон=СокрЛП(Эксел.Cells(СчСтрок,19).Value);
                       ОтветственныйИНН=СокрЛП(Эксел.Cells(СчСтрок,20).Value);
                       ОтветЛицо=Справочники.ФизическиеЛица.НайтиПоРеквизиту("ИНН",ОтветственныйИНН);
                       Если ОтветЛицо=Справочники.ФизическиеЛица.ПустаяСсылка() Тогда
                           ОбъектДР.Ответственный=ЭлементыФормы.ФЛЗамены.Значение;
                       Иначе
                           ОбъектДР.Ответственный=ОтветЛицо;
                       КонецЕсли;    
                       СчетУчетаРасчетовСКомитентомКод=СокрЛП(Эксел.Cells(СчСтрок,21).Value);
                       ОбъектДР.СчетУчетаРасчетовСКомитентом=ПланыСчетов.Хозрасчетный.НайтиПоКоду(СчетУчетаРасчетовСКомитентомКод);
                       ДВД=Лев(СокрЛП(Эксел.Cells(СчСтрок,22).Value),10);
                       Если ДВД<>"" Тогда
                           ОбъектДР.ДатаВходящегоДокумента=Дата(Прав(ДВД,4),Сред(ДВД,4,2),Лев(ДВД,2));
                       КонецЕсли;    
                       ОбъектДР.НомерВходящегоДокумента=СокрЛП(Эксел.Cells(СчСтрок,23).Value);
                       НесоответствиеЗаконадательствуТТН0=СокрЛП(Эксел.Cells(СчСтрок,24).Value);
                       Если НесоответствиеЗаконадательствуТТН0=1 Тогда
                           ОбъектДР.НесоответствиеЗаконодательствуТТН=Истина;
                       Иначе
                           ОбъектДР.НесоответствиеЗаконодательствуТТН=Ложь;
                       КонецЕсли;    
                       ЦФОКод=СокрЛП(Эксел.Cells(СчСтрок,25).Value);
                       ЦФОСсылка0=Справочники.ЦФО.НайтиПоКоду(ЦФОКод);
                       Если ЦФОСсылка0=Справочники.ЦФО.ПустаяСсылка() Тогда
                           ОбъектДР.ЦФО=ЭлементыФормы.ЦФОЗамены.Значение;
                       Иначе
                           ОбъектДР.ЦФО=ЦФОСсылка0;
                       КонецЕсли;    
                       ОбъектДР.Записать(РежимЗаписиДокумента.Запись);
                       Суммапо18=Число(СокрЛП(Эксел.Cells(СчСтрок,26).Value));
                       СуммаПо10=Число(СокрЛП(Эксел.Cells(СчСтрок,27).Value));
                       СуммаПо0=Число(СокрЛП(Эксел.Cells(СчСтрок,28).Value));
                       Если Суммапо18<>0 Тогда
                           СтрокаО=ОбъектДР.Основная.Добавить();
                           СтрокаО.СтавкаНДС=Перечисления.СтавкиНДС.НДС18;
                           СтрокаО.СуммаНДС=Суммапо18;
                       КонецЕсли;    
                       Если Суммапо10<>0 Тогда
                           СтрокаО=ОбъектДР.Основная.Добавить();
                           СтрокаО.СтавкаНДС=Перечисления.СтавкиНДС.НДС10;
                           СтрокаО.СуммаНДС=Суммапо10;
                       КонецЕсли;    
                       Если Суммапо0<>0 Тогда
                           СтрокаО=ОбъектДР.Основная.Добавить();
                           СтрокаО.СтавкаНДС=Перечисления.СтавкиНДС.БезНДС;
                           СтрокаО.СуммаНДС=Суммапо0;
                       КонецЕсли;    
                       ОбъектДР.Записать(РежимЗаписиДокумента.Запись);
                       ССсылкаДР=ОбъектДР.Ссылка;    
                   КонецЕсли;    
               Иначе    
                   Сообщить("Ошибка Нет ДР "+НомерДР+" "+ДатаДР+" "+ОрганизацияДР);
                   ОшибкаЕсть=Истина;    
               КонецЕсли;    
               СтрокаТЗ.Сделка=СсылкаДР;
           КонецЕсли;
           СтрокаТЗ.КурсВзаиморасчетов=Число(СокрЛП(Эксел.Cells(СчСтрок,29).Value));
           СтрокаТЗ.СуммаПлатежа=Число(СокрЛП(Эксел.Cells(СчСтрок,30).Value));
           СтрокаТЗ.КратностьВзаиморасчетов=Число(СокрЛП(Эксел.Cells(СчСтрок,31).Value));
           СтрокаТЗ.СуммаВзаиморасчетов=Число(СокрЛП(Эксел.Cells(СчСтрок,32).Value));
           СтрокаТЗ.СуммаНДС=Число(СокрЛП(Эксел.Cells(СчСтрок,34).Value));
           СДДСКод=СокрЛП(Эксел.Cells(СчСтрок,35).Value);
           СтрокаТЗ.СтатьяДвиженияДенежныхСредств=Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоКоду(СДДСКод);
           СУРК=СокрЛП(Эксел.Cells(СчСтрок,36).Value);
           СтрокаТЗ.СчетУчетаРасчетовСКонтрагентом=ПланыСчетов.Хозрасчетный.НайтиПоКоду(СУРК);
           СУРА=СокрЛП(Эксел.Cells(СчСтрок,37).Value);
           СтрокаТЗ.СчетУчетаРасчетовПоАвансам=ПланыСчетов.Хозрасчетный.НайтиПоКоду(СУРА);
           СчСтрок=СчСтрок+1;    
       КонецЦикла;
       
       Если Не ОшибкаЕсть Тогда
           ЗапросППИ=Новый Запрос;
           ЗапросППИ.Текст="ВЫБРАТЬ
           |    СписаниеСРасчетногоСчета.Ссылка КАК Ссылка
           |ИЗ
           |    Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета
           |ГДЕ
           |    СписаниеСРасчетногоСчета.Организация = &организация
           |    И СписаниеСРасчетногоСчета.Номер = &Номер";
           ЗапросППИ0=Новый Запрос;
           ЗапросППИ0.Текст="ВЫБРАТЬ
           |    ПлатежноеПоручение.Ссылка КАК Ссылка
           |ИЗ
           |    Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
           |ГДЕ
           |    ПлатежноеПоручение.Организация = &организация
           |    И ПлатежноеПоручение.Номер = &Номер";
           НачатьТранзакцию();
           Для Каждого ППИ Из ТЗ_З Цикл
               ЗапросППИ.УстановитьПараметр("Номер",ППИ.Номер);
               ЗапросППИ.УстановитьПараметр("организация",ППИ.Организация);
               резППИ=ЗапросППИ.Выполнить().Выбрать();
               Если РезППИ.Количество()=1 Тогда
                   Если РезППИ.Следующий() Тогда
                       ППИ_=РезППИ.Ссылка.ПолучитьОбъект();
                       ППИ_.Организация=ППИ.Организация;
                       ППИ_.Номер=ППИ.Номер;
                       ППИ_.Дата=ППИ.Дата;
                       ППИ_.СчетОрганизации=ППИ.СчетОрганизации;
                       ППИ_.Контрагент=ППИ.Контрагент;
                       ППИ_.СчетКонтрагента=ППИ.СчетКонтрагента;
                       ППИ_.ДоговорКонтрагента=ППИ.ДоговорКонтрагента;
                       ППИ_.НазначениеПлатежа=ППИ.НазначениеПлатежа;
                       ППИ_.СуммаДокумента=ППИ.СуммаДокумента;
                       ППИ_.ВалютаДокумента=ППИ.ВалютаДокумента;
                       ППИ_.СуммаДокумента=ППИ.СуммаДокумента;
                       ППИ_.ВалютаДокумента=ППИ.ВалютаДокумента;
                       ППИ_.Ответственный=ППИ.Ответственный;
                       ППИ_.ВидОперации=ППИ.ВидОперации;
                       ППИ_.СтатьяДвиженияДенежныхСредств=ППИ.СтатьяДвиженияДенежныхСредств;
                       ППИ_.СчетУчетаРасчетовСКонтрагентом=ППИ.СчетУчетаРасчетовСКонтрагентом;
                       ППИ_.СубконтоДт1=ППИ.СубконтоДт1;
                       ППИ_.СубконтоДт2=ППИ.СубконтоДт2;
                       ППИ_.СубконтоДт3=ППИ.СубконтоДт3;
                       ППИ_.Содержание_УСН=ППИ.Содержание_УСН;
                       ППИ_.Графа4_УСН=ППИ.Графа4_УСН;
                       ППИ_.Графа5_УСН=ППИ.Графа5_УСН;
                       ППИ_.Графа6_УСН=ППИ.Графа6_УСН;
                       ППИ_.Графа7_УСН=ППИ.Графа7_УСН;
                       ППИ_.ДоходыЕНВД_УСН=ППИ.ДоходыЕНВД_УСН;
                       ППИ_.РасходыЕНВД_УСН=ППИ.РасходыЕНВД_УСН;
                       ППИ_.НДС_УСН=ППИ.НДС_УСН;
                       ППИ_.РучнаяНастройка_УСН=ППИ.РучнаяНастройка_УСН;
                       ППИ_.СчетБанк=ППИ.СчетБанк;
                       ППИ_.МСФО=ППИ.МСФО;
                       ППИ_.Модиф=ППИ.Модиф;
                       ППИ_.Первичность=ППИ.Первичность;
                       ППИ_.РучнаяКорректировка=ППИ.РучнаяКорректировка;
                       ППИ_.НеПодтвержденоВыпискойБанка=Не ППИ.Оплачено;
                       Отбор = Новый Структура();
                       Отбор.Вставить("НомерППИ",ППИ_.Номер);
                       Строки = ТЗ.НайтиСтроки(Отбор);
                       Кол=Строки.Количество();
                       Ставка=Перечисления.СтавкиНДС.НДС18;
                       СНДС=0;
                       Вход=1;
                       ДогКонт=Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
                       СтДвиДС=Справочники.СтатьиДвиженияДенежныхСредств.ПустаяСсылка();
                       Для Сч=0 По Кол-1 Цикл
                           Если Вход=1 Тогда
                               Ставка=Строки[Сч].СтавкаНДС;
                               СНДС=Строки[Сч].СуммаНДС;
                               ДогКонт=Строки[Сч].ДоговорКонтрагента;
                               СтДвиДС=Строки[Сч].СтатьяДвиженияДенежныхСредств;
                               Вход=0;    
                           КонецЕсли;    
                           СтрПром=ППИ_.РасшифровкаПлатежа.Добавить();
                           СтрПром.ДоговорКонтрагента=Строки[Сч].ДоговорКонтрагента;
                           СтрПром.КратностьВзаиморасчетов=Строки[Сч].КратностьВзаиморасчетов;
                           СтрПром.КурсВзаиморасчетов=Строки[Сч].КурсВзаиморасчетов;
                           СтрПром.Сделка=Строки[Сч].Сделка;
                           СтрПром.СпособПогашенияЗадолженности=Перечисления.СпособыПогашенияЗадолженности.ПоДокументу;
                           СтрПром.СтавкаНДС=Строки[Сч].СтавкаНДС;
                           СтрПром.СтатьяДвиженияДенежныхСредств=Строки[Сч].СтатьяДвиженияДенежныхСредств;
                           СтрПром.СуммаВзаиморасчетов=Строки[Сч].СуммаВзаиморасчетов;
                           СтрПром.СуммаНДС=Строки[Сч].СуммаНДС;
                           СтрПром.СуммаПлатежа=Строки[Сч].СуммаПлатежа;
                           СтрПром.СчетУчетаРасчетовПоАвансам=Строки[Сч].СчетУчетаРасчетовПоАвансам;
                           СтрПром.СчетУчетаРасчетовСКонтрагентом=Строки[Сч].СчетУчетаРасчетовСКонтрагентом;
                       КонецЦикла;
                       Если ППИ.Проведен Тогда
                           Попытка
                               ППИ_.Записать(РежимЗаписиДокумента.Проведение);
                               //Документ.Записать(РежимЗаписиДокумента.Проведение);
                               Сообщить("Документ "+ППИ_.Номер+" записан");
                           Исключение
                               Сообщить("Ошибка "+ОписаниеОшибки());
                           КонецПопытки
                           //ППИ_.Записать(РежимЗаписиДокумента.Проведение);
                       Иначе    
                           Попытка
                               ППИ_.Записать(РежимЗаписиДокумента.Запись);
                               //Документ.Записать(РежимЗаписиДокумента.Проведение);
                               Сообщить("Документ "+ППИ_.Номер+" записан");
                           Исключение
                               Сообщить("Ошибка "+ОписаниеОшибки());
                           КонецПопытки
                           //ППИ_.Записать(РежимЗаписиДокумента.Запись);
                       КонецЕсли;
                       Сообщить(ППИ_);
                   КонецЕсли;    
               КонецЕсли;    
               
               ЗапросППИ0.УстановитьПараметр("Номер",ППИ.Номер);
               ЗапросППИ0.УстановитьПараметр("организация",ППИ.Организация);
               резППИ0=ЗапросППИ0.Выполнить().Выбрать();
               Если РезППИ0.Количество()=1 Тогда
                   Если РезППИ0.Следующий() Тогда
                       ППИ_0=РезППИ0.Ссылка.ПолучитьОбъект();
                       ППИ_0.Организация=ППИ.Организация;
                       ППИ_0.ДокументОснование=ППИ_.Ссылка;
                       ППИ_0.Номер=ППИ.Номер;
                       ППИ_0.Дата=ППИ.Дата;
                       ППИ_0.СчетОрганизации=ППИ.СчетОрганизации;
                       ППИ_0.Контрагент=ППИ.Контрагент;
                       ППИ_0.СчетКонтрагента=ППИ.СчетКонтрагента;
                       ППИ_0.ВидПлатежа=ППИ.ВидПлатежа;
                       ППИ_0.ОчередностьПлатежа=ППИ.ОчередностьПлатежа;
                       ППИ_0.НазначениеПлатежа=ППИ.НазначениеПлатежа;
                       ППИ_0.СуммаДокумента=ППИ.СуммаДокумента;
                       ППИ_0.ВалютаДокумента=ППИ.ВалютаДокумента;
                       ППИ_0.СуммаДокумента=ППИ.СуммаДокумента;
                       ППИ_0.ТекстПлательщика=ППИ.ТекстПлательщика;
                       ППИ_0.ТекстПолучателя=ППИ.ТекстПолучателя;
                       ППИ_0.Комментарий=ППИ.Комментарий;
                       ППИ_0.ИННПлательщика=ППИ.ИННПлательщика;
                       ППИ_0.КПППлательщика=ППИ.КПППлательщика;
                       ППИ_0.ИННПолучателя=ППИ.ИННПолучателя;
                       ППИ_0.КПППолучателя=ППИ.КПППолучателя;
                       ППИ_0.КодБК=ППИ.КодБК;
                       ППИ_0.КодОКАТО=ППИ.КодОКАТО;
                       ППИ_0.ПоказательДаты=ППИ.ПоказательДаты;
                       ППИ_0.ПоказательНомера=ППИ.ПоказательНомера;
                       ППИ_0.ПоказательОснования=ППИ.ПоказательОснования;
                       ППИ_0.ПоказательПериода=ППИ.ПоказательПериода;
                       ППИ_0.ПоказательТипа=ППИ.ПоказательТипа;
                       ППИ_0.СтатусСоставителя=ППИ.СтатусСоставителя;
                       ППИ_0.ПеречислениеВБюджет=ППИ.ПеречислениеВБюджет;
                       ППИ_0.ВидПеречисленияВБюджет=ППИ.ВидПеречисленияВБюджет;
                       Если Кол = 1 Тогда
                           ППИ_0.СтавкаНДС            = Ставка;
                           ППИ_0.СуммаНДС            = сНДС;
                           ППИ_0.ДоговорКонтрагента=ДогКонт;
                           ППИ_0.СтатьяДвиженияДенежныхСредств=СтДвиДС
                       ИначеЕсли Кол > 1 Тогда
                           ППИ_0.СтавкаНДС            = Перечисления.СтавкиНДС.ПустаяСсылка();
                           ППИ_0.СуммаНДС            = ППИ_.РасшифровкаПлатежа.Итог("СуммаНДС");            
                           ППИ_0.СтатьяДвиженияДенежныхСредств=СтДвиДС
                       КонецЕсли;
                       ППИ_0.Оплачено=ППИ.Оплачено;
                       ППИ_0.Записать(РежимЗаписиДокумента.Запись);
                       Сообщить(ППИ_0);
                       ППИ_.ДокументОснование=ППИ_0.Ссылка;
                       Если ППИ.Проведен Тогда
                           ППИ_.Записать(РежимЗаписиДокумента.Проведение);
                           Сообщить(ППИ_);
                       Иначе    
                           ППИ_.Записать(РежимЗаписиДокумента.Запись);
                       КонецЕсли;
                   КонецЕсли;    
               КонецЕсли;    
           КонецЦикла;            
           Если Не ОшибкаЕсть Тогда
               ЗафиксироватьТранзакцию();
           Иначе
               ОтменитьТранзакцию();
           КонецЕсли;
15 GenV
 
17.01.12
15:30
(13) Выполни в базе запрос по всем документам + как вариант добавь в обработку открытие формы первого записанного документа - сразу увидишь как и что.
16 Куница
 
17.01.12
15:32
(15) Тог они есть - я заношу их др программой,только пустые
17 Куница
 
17.01.12
15:32
(15)Так они есть
18 GenV
 
17.01.12
15:35
(16) Открой модально сразу после записи первый и сравни содержимое.
ЗЫ Транзакции можно и отключить для начала. Когда отладишь - включишь.
19 pessok
 
17.01.12
15:35
(16) (17)
я запутался совсем. документы создались или нет? кто есть? где есть? какой - другой программой?
Или в СУЩЕСТВУЮЩИЕ документы не вносятся изменения?
З.Ы. код парсить лень
20 vmv
 
17.01.12
15:36
я так полагаю, что тот кто оптимизирует код в (13) получит все и сразу.

приступайте
21 vmv
 
17.01.12
15:37
(19) программист не мужчина, зачем ты ищещь логику, ищи детали)
22 Anita_Rost
 
17.01.12
15:37
а "всё и сразу" - это что? Я хочу всё и сразу )))
23 Куница
 
17.01.12
15:37
У меня этой программой не создавались документы. Я решила посмотреть, создаются ли вообще. Создала пустышки другой программой с №, датой и организацией. Теперь старой программой наполняю эти пустышки и записываю. Они не наполняются
24 Anita_Rost
 
17.01.12
15:38
(22) к (20)
25 Anita_Rost
 
17.01.12
15:38
Убери Транзакцию!
26 vmv
 
17.01.12
15:41
(22) входите с админправами и получайте)

профессиональный спор двух 1-эсниц это всегда 100% решение проблемы)
27 Starhan
 
17.01.12
15:41
Что за старая программа?. Проверь номер по корторому ищешь документы запросом. Введи  в код побольше логов (Сообщить("Документ такой-то записан"))
28 Starhan
 
17.01.12
15:44
организацию и номер проверь что туда передаетя.
29 Anita_Rost
 
17.01.12
15:45
(26) спора нет.
30 vmv
 
17.01.12
15:46
(27) она смотрит в отладчике что все ок и все пишеться, но единственная ошибка в транзакции и все... кино заканчивается, но ведь видели все, что там был молодой Чакэ и горы поверженных врагов и так обидно, что он исчез
31 Anita_Rost
 
17.01.12
15:47
(30) Чет я не поняла, охота поговорить, а не с кем?
32 vmv
 
17.01.12
15:49
по хорошему код в (13) надо разбить на функции

ИнициализацияЕксель()
ЧтениеФайла()
ОбходФайла()
Заполнение....

кароче, я понимаю что стремление "все и сразу" очень похвально у 1-эсниц, но как потом со всем этим жить.

Я даже не стал разбираться где и как там работает транзакция, запись и пр. - ну очень нящно все)
33 Starhan
 
17.01.12
15:52
Если бы было исключение вылетело бы с исключением . Если конечно за показанным нам кодом нет еще одной обработки исключения.
А транзакция отменяется только если ЕстьОшибки=Истина. Саммое странно в транзкцию заходить только если нет ошибок. А в нутри транзакции переменная ЕстьОшибки никак не используеться

Кстати судя по коду

Если Не ОшибкаЕсть Тогда
 ЗафиксироватьТранзакцию();
Иначе
 ОтменитьТранзакцию();
КонецЕсли;

Если Ошибкиесть = Ложь (а значит ошибок нет)
Транзакция отменяется. :)
34 Куница
 
17.01.12
15:52
Открываются документы ППИ и СписаниеСР нормально, наполненными. Я их открывала после записи. Что теперь делать?
35 Buster007
 
17.01.12
15:53
ДоговорКонтрагентаКод=СокрЛП(Эксел.Cells(СчСтрок,3).Value);
           Запрос.УстановитьПараметр("КонтрагентВладелец", КонтрагентВладелец);            
           Запрос.УстановитьПараметр("КодДоговор", ДоговорКонтрагентаКод);

вот это понравилось )
причем в запросе никакого параметра КодДоговор нет )

а вообще код жесток.
36 Starhan
 
17.01.12
15:53
(33)хотя про последнее с кодом наврал.
37 vmv
 
17.01.12
15:54
(31) я не специалист по вашей понятийно-интуитивной конститутции, увы.

хотите об этом поговорить или все-таки продолжим выражать негодование к транзакциям?
38 Куница
 
17.01.12
15:54
(35) Черт. Не увидела.)
39 Куница
 
17.01.12
15:54
(33) Не увидела.
40 Starhan
 
17.01.12
15:55
(39) та не там все нормально
41 Starhan
 
17.01.12
15:56
ну если быть точнее там бесполезно использована переменная так как в нутри транзакции она никак не используется
42 Куница
 
17.01.12
15:58
(33)Ладно. Там все верно и дело не в этом. Почему я вижу документ после записи в открытом окне и а на самом деле он не записался.
43 Starhan
 
17.01.12
15:59
Открытый документ со зездочкой?
44 GenV
 
17.01.12
15:59
(42) Если ты открыла его форму по ссылке, то он записался.
45 vmv
 
17.01.12
16:00
первое что нужно сделать это заменить переменную

"ОшибкаЕсть" на

"Успех"

и

Если Успех Тогда
 ЗафиксироватьТранзакцию();
Иначе
 ОтменитьТранзакцию();
КонецЕсли;

)
46 Snorkler
 
17.01.12
16:00
(42) Потому что транзакция отменена.
Перед циклом записи документов ОшибкаЕсть=Истина, в теле цикла ничего не меняетс, на выходе транзакция отменяется…
47 GenV
 
17.01.12
16:01
(45) первое - нужно убрать транзакции. Отладить, а потом их добавлять.
48 vmv
 
17.01.12
16:02
(46) ну наконец, не прошло и полгода.

что ж, теперь можно опять про кино
49 Куница
 
17.01.12
16:02
(45) Конечно, это здорово) Но мне уже не смешно.
50 Куница
 
17.01.12
16:04
(46) Сейчас посмотрю. Я уже в цейтноте. Работаю сутками. Почти не сплю. Глаз замылился, черт.
51 vmv
 
17.01.12
16:05
(49) да все нормально в общем, просто код и переменные/термины нужно продумывать заранее и сначала построить каркас где четко указаны операции начала и завершения, а то за массой деталей получаем, что "с водой выплеснули ребенка")
52 zyto
 
17.01.12
16:05
автор, потом вместо монструозных конструкций открой для себя ЗаполнитьЗначенияСвойств()
53 Starhan
 
17.01.12
16:06
(46) судя по привкеденому коду (а в нем как минимум не хватает в конце еще одного КонецЕсли;)
в транзакцию даже не войдет так как

Если Не ОшибкаЕсть Тогда //условие входа
           ЗапросППИ=Новый Запрос;
           ЗапросППИ.Текст="ВЫБРАТЬ
           |    СписаниеСРасчетногоСчета.Ссылка КАК Ссылка
           |ИЗ
           |    Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета
           |ГДЕ
           |    СписаниеСРасчетногоСчета.Организация = &организация
           |    И СписаниеСРасчетногоСчета.Номер = &Номер";
           ЗапросППИ0=Новый Запрос;
           ЗапросППИ0.Текст="ВЫБРАТЬ
           |    ПлатежноеПоручение.Ссылка КАК Ссылка
           |ИЗ
           |    Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
           |ГДЕ
           |    ПлатежноеПоручение.Организация = &организация
           |    И ПлатежноеПоручение.Номер = &Номер";
           НачатьТранзакцию(); //начало транзакции
54 Куница
 
17.01.12
16:06
Нет, используется переменная. Если ошибка есть в Документа расчета.
55 Куница
 
17.01.12
16:08
(52) Трудно быть человеком и не оскорблять?
56 Anita_Rost
 
17.01.12
16:11
(55) Там не было оскорблений. Это хороший совет
57 vmv
 
17.01.12
16:11
(55) конструкции действительно массивные, аналог массивности - монстроидальность.

Это характеризует свойства стиля программного кода, а не человека. Стиль может меняться, человек врядли и никто не ставит лично вас под сомнение.

спокойно доведите транзакцию до завершения и "я не буду думать об этом сегодня, я подумаю об этом завтра"(с)

блин, это ж формум 1С, забыл)
58 Starhan
 
17.01.12
16:11
1.гм а тупо поставить точку останова и посмотртеь куда попадает исполнение кода в отмену транзакции или в фиксирование нельзя?
2. открышийся дкоумент попробуй записть кнопкой записать и проверить на ошибки.
59 Куница
 
17.01.12
16:12
(56) За совет спасибо, воспользуюсь, а слово - оставьте при себе.
Учиться всегда пригодится
60 vmv
 
17.01.12
16:15
(58) установка точки останова - эти сигнал о том, что ты сомневаешься в своих поступках и направлении мысли. Это непозволительная роскошь для 1-эсниц, все что написано - идеально уже по факту создания)
61 Куница
 
17.01.12
16:16
(60) А вот это уже ложь. И оправдываться не собираюсь. Тролльте где-гибудь в другом месте
62 Куница
 
17.01.12
16:17
(58) Спасибо. Появились ошибки
63 vmv
 
17.01.12
16:18
(61) это провокация, согласен.

Извините, спасибо, что ваша тема была живой и все-таки дала вам результат - дерзайте)
64 n koretsky
 
17.01.12
16:24
Попытка
  Документ.Записать(РежимЗаписиДокумента.Проведение);
  Сообщить("Бла-бла-бла");
Исключение
  Сообщить("Чего не провели-то");
  Попытка
     Документ.Записать();
     Сообщить("Бла-бла-бла");
  Исключение
     Сообщить("Чего не записали-то");
  КонецПопытки;
КонецПопытки;

попробуй гдето так.
там 99,9% что отказ срабатывает при проведении и в результате нету записи.
65 Куница
 
17.01.12
16:27
(64) Спасибо. Попробую, если сейчас не устраню ляпы. Спасибо, что на мисте столько умных, замечательных, знающих, прекрасных программистов!)
66 Dmitry77
 
17.01.12
16:38
(65) а где фотка?
67 vmv
 
17.01.12
16:39
лирическое отступление.

Я ведь не просто так предложил заменить глобальным поиском переменную "ЕстьОшибка" на переменную "Успех".

Нам постояяно приходиться читать тонны кода и он становиться все сложнее и массивнее. В такой реальности для программиста уже имеют большое значение не только знания, талант, но и психология. Нужно стараться придерживаться такого стиля, чтобы код читался психодогически "тепло", так дольше не будет приходить усталось, дискомфорт и как следствие более правильные решения будут приходить оперативней.

Ведь стоило поставить в начале кода (13)

Успех = Истина;

// обработка данных
....
....
....
Если ....Тогда
Успех = Ложь;
Продолжить;
КонецЕсли;
.....
.....

Если Успех Тогда
 ЗафиксироватьТранзакцию();
Иначе
 ОтменитьТранзакцию();
КонецЕсли;

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

Другое дело постоянное мелькание

ЕстьОшибка = Истина;
....
ЕстьОшибка = Истина;
....

заряжает психологическим негативом при чтении и разборе кода и посему злоупотреблять такими переменными-паразитами нецелсообразно в уникальном коде.

В стандартных обработчиках ПриЗаписи(Отказ) это оправдано, т.к. программиста не заряжают негативом, а предупреждают буть внимателен тут предельно - туфта не прокатит)

Вот такие пироги, молодые программисты не понимают еще всю важность психологии в коде, но все идет к тому, что без ее понимания в будущем уже не обойтись.

это было посвящено любителям многа буков)
68 Куница
 
17.01.12
16:41
Прошу прощения. у расшифровки платежа при создании появляется строка, а я наполняю таблицу и добавляю новые. Как мне на нее встать, на эту первую строку. Не соображу уже.
69 GenV
 
17.01.12
16:42
(67) Ну ты эстет ) По мне лучше ЕстьОшибка, только условие в конце поменять.
(68) ТЧ[0]
70 vmv
 
17.01.12
16:44
ТчРасшифровка = Документ.ТчРасшифровка;

Если ТчРасшифровка.Количество() Тогда
ТчПерваяСтрока = ТЧ[0];
Иначе
ТчПерваяСтрока = Неопределено;
КонецЕсли;
71 n koretsky
 
17.01.12
16:44
прочитал пост с лирическим отступлением...
еще пара-тройка таких - и я познаю дзен, Учитель.
72 Куница
 
17.01.12
16:45
(70) Спасибо. Простите. Торможу уже
73 Куница
 
17.01.12
16:51
Устранила ошибки. Теперь тупо пишет - операция не выполнена - без комментариев
74 n koretsky
 
17.01.12
16:54
где пишет? когда пишет? кто пишет?
что отладчик по этому поводу говорит?
75 GenV
 
17.01.12
16:56
(73) Если ругается при записи - смотреть обработчики записи, если про проведении - сначала записать, потом вручную попробовать провести и прочитать ошибку (или программно ошибку получить через ОписаниеОшибки()). Еще есть  конструкция НашОбъект.ОбменДанными.Загрузка = Истина - помогает при загрузке данных обойти обработчики объектов, если в них есть соотв. условие.
76 vmv
 
17.01.12
16:56
(73) тогда только точки останова и вычислять где обработка заполнения или записи данных "недовольна". Скорее не все обязательные поля заполняються и уже стандартные обработчики говорят фэ.

Можно использовать

Объект.ОбменДанными.Загрузка = Истина;
77 vmv
 
17.01.12
16:58
хотя в коде ведь было сообщения и если их нет, то вылет по ошибке где-то в начале
78 Куница
 
17.01.12
17:00
(76) Попробую.
79 Куница
 
17.01.12
17:06
(76) Не работает
80 Куница
 
17.01.12
17:13
Начинает ругаться на процедуру ЭтоНовый() Документ не выбран
81 n koretsky
 
17.01.12
18:36
что отладчик говорит про объект?
82 Куница
 
17.01.12
19:47
Да
83 n koretsky
 
17.01.12
19:56
О_О
84 Куница
 
17.01.12
20:09
Все. Это конец. Что я буду делать дальше, не знаю.
Это конец
85 n koretsky
 
17.01.12
20:12
содержательно.
краткость - сестра таланта.
советую забить и пойти поспать. раз в трое суток это полезно.
86 Куница
 
17.01.12
20:35
Я не смогла. Не смогла. Конечно,это лирика, но подвела людей.
И не могу понять, что же случилось.
ДРы записались - я их записала отдельно, а ПП и Списания - нет
87 Куница
 
17.01.12
20:35
В первый раз за много лет я не смогла.
88 GenV
 
17.01.12
21:15
ЗЫ На будущее: Первый принцип решения задания - не впадать в панику (твоя проблема для этого слишком простая). Второй принцип - описывать все сообщения об ошибках подробно.
89 Buster007
 
18.01.12
12:06
(87) отдохнуть надо ) и если после отдыха удастся, то значит опыта маловато пока.
90 Куница
 
18.01.12
14:20
Все равно, спасибо вам, ребята, ну и Митичкину Станиславу, что есть этот форум.
91 n koretsky
 
18.01.12
14:28
так ты порешала свою траблу или нет?
а то так както на полуслове все оборвалось...
а ежели снова прийдется с этим же бодаться?
92 Куница
 
18.01.12
14:31
Нет, не порешала - начали вводить вручную. Но я попробую добить проблему уже 3-м способом на другой базе. Знаете, после таких случаев сомневаешься в системе. Раньше, с 8.1 я твердо знала, что что не сделаешь одним способом, сделаешь другим или третьим.
93 Куница
 
18.01.12
14:32
Да, и что невыполнимых задач нет или одна на миллион