|
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
|
Да, и что невыполнимых задач нет или одна на миллион
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |