Вход | Регистрация

Форумы на Кубань.Ру


1С:Предприятие ::

Метки:

Транзакция, проведение документа из формы и т.д.

Ø
Я
   Карлсон Великий и Уж
11.11.04 - 10:05
При проведении документа необходимо провести несколько других документов, ссылки на которые имеются в табличной части документа (Реквизит табличной части "ДокументОтгрузки"). На кнопку на форме вешаю процедуру примерно следующего содержания (процедура находится в модуле формы):
Фиксируем = 1; //Флаг, показывающий, нужно ли фиксировать транзакцию;
НачатьТранзакцию();
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
  ДокументОтгрузки.СделатьНеПроведенным();
КонецЦикла;
Если Провести(1,СписокПараметров)	= 0 Тогда
  Фиксируем	= 0;
Иначе
 ВыбратьСтроки();
  Пока ПолучитьСтроку() = 1 Цикл
    Если ДокументОтгрузки.Провести() = 0 Тогда
      Фиксируем = 0;
    КонецЕсли;
  КонецЦикла;
КонецЕсли;
Если Фиксируем	= 1 Тогда
  ЗафиксироватьТранзакцию();
Иначе
  ОтменитьТранзакцию();
  Предупреждение("Документ не проведен!",60);
КонецЕсли;
И иногда получаю какую-то ерунду, документ проведен, а часть находящихся в табличной части не проведены. В чём может быть ошибка? Ткните носом, пожалуйста. :)
 
 
   Дяпти
1 - 11.11.04 - 10:08
Пока ПолучитьСтроку() = 1 Цикл
  ДокументОтгрузки.СделатьНеПроведенным();
КонецЦикла;
//
Пока ПолучитьСтроку() = 1 Цикл
    Если ДокументОтгрузки.Провести() = 0 Тогда
      Фиксируем = 0;
    КонецЕсли;
  КонецЦикла;// так вообще работать не должно.
   Карлсон Великий и Уж
2 - 11.11.04 - 10:13
Я очень кратко написал, чтобы много кода не приводить, вот например как происходит распроведение в реальности...
ТекДок = СоздатьОбъект("Документ");
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
  ТекДок.НайтиДокумент(ДокументОтгрузки);
  Если ТекДок.Проведен()	= 1 Тогда
    ТекДок.СделатьНеПроведенным();
  КонецЕсли;
КонецЦикла;
Как происходит проведение надо сюда код приводить?
   Карлсон Великий и Уж
3 - 11.11.04 - 10:48
Первый ап.
   Карлсон Великий и Уж
4 - 11.11.04 - 11:41
Более верный код, который иногда работает, а иногда происходит вышеназванная проблема.
ТекДок = СоздатьОбъект("Документ");
Фиксируем = 1;//Флаг, показывающий, нужно ли фиксировать транзакцию;
НачатьТранзакцию();
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
  ТекДок.НайтиДокумент(ДокументОтгрузки);
  Если ТекДок.Проведен() = 1 Тогда
    ТекДок.СделатьНеПроведенным();
  КонецЕсли;
КонецЦикла;
Если Провести(1,СписокПараметров) = 0 Тогда
  Фиксируем = 0;
Иначе
 ВыбратьСтроки();
  Пока ПолучитьСтроку() = 1 Цикл
    ТекДок.НайтиДокумент(ДокументОтгрузки);
    Если ТекДок.Провести() = 0 Тогда
      Фиксируем = 0;
    КонецЕсли;
  КонецЦикла;
КонецЕсли;
Если Фиксируем = 1 Тогда
  ЗафиксироватьТранзакцию();
Иначе
  ОтменитьТранзакцию();
  Предупреждение("Документ не проведен!",60);
КонецЕсли;



Список тем форума

Форум Территория 1С

Рекламное место пустует   Рекламное место пустует
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует