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


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Проведение 1С 7

v7: Проведение 1С 7
Я
   cyberandr
 
15.09.16 - 12:24
Всем привет!
Подскажите может кто знает как решить эту проблему.
Есть документ В форме которого при записи есть такой код
Процедура ПриЗаписи()
    СтрТЗДок = ЗначениеВСтрокуВнутр(ТЗДок);
КонецПроцедуры// ПриЗаписи

где ТЗДок - таблица значений (выведена на форму)
 В обработке проведения документа:

Процедура ОбработкаПроведения()

    ТЗДок = ЗначениеИзСтрокиВнутр(СтрТЗДок);
    
    Если ТипЗначенияСтр(ТЗДок) <> "ТаблицаЗначений" Тогда
        Возврат;
    КонецЕсли//

////////////////////////////////////////////////////////////////


Мне необходимо программно провести (точнее даже перепровести) эти документы. при использовании 
НашДок.Провести(); ЗначениеИзСтрокиВнутр(СтрТЗДок)- видимо пустое и проведение отрабатывает не верно. Подскажите как мне обойти эту проблему. Из идей пока только открывать форму документа с каким-нить параметром,  а в самом документе при открытии прописать что-то типа если наш параметр= истина Провести(); Закрыть();
 
 
   Ёпрст
 
1 - 15.09.16 - 12:26
(0) Вон из профессии!
   Chieftain
 
2 - 15.09.16 - 12:33
(0) Эмулируй форму документа обработкой, ТЗДок закидываю в табличную часть/подчиненный документ. Проводи сам документ и таблицу в одной транзакции из обработки
   Ёпрст
 
3 - 15.09.16 - 12:37
>>>начениеИзСтрокиВнутр(СтрТЗДок)- видимо пустое и проведение отрабатывает не верно.

Это откуда такие выводы ?
Отладчик не судьба открыть и посмотреть, чем  заполнен реквизит шапки при проведении ?
   Ёпрст
 
4 - 15.09.16 - 12:37
Хранить доп табличную часть в строке, моветон, ибо могут быть потерянные ссылки в восстановленной ТЗ.
   cyberandr
 
5 - 15.09.16 - 12:40
(4) Это документ из типовой ХС. Мне надо только перепровести кучу документов в обработке.
   cyberandr
 
6 - 15.09.16 - 12:42
(3) Эмпирический вывод. Я почти все что было в проведении документа (это не бух документ) флаги которые устанавливает, реквизиты, справочники и тд. Но в итоге если документ перепровести из формы - результат отличается- при выгрузки во внешнее приложение.
   cyberandr
 
7 - 15.09.16 - 12:46
(0) Вариант хороший меня только не много волнует 2 вещи
1 как отрабоает 
ТЗДок.НоваяКолонка("Контрагент","Справочник",,,"Контрагент",20,,1);
    ТЗДок.НоваяКолонка("КарточкаЭСЧФКомиссия","Справочник",,,"Карточка ЭСЧФ",20,,1);
    ТЗДок.НоваяКолонка("НомерДок","Строка",,,"Номер",7,,1);
    ТЗДок.НоваяКолонка("ДатаДок","Дата",,,"Дата",7,,1);
    ТЗДок.НоваяКолонка("Документ","Справочник",,,"Документ",20,,1);
    ТЗДок.НоваяКолонка("Договор","Справочник.Договора",,,"Договор",20,,1);
    ТЗДок.НоваяКолонка("СуммаНДС","Число",18,2,"Сумма НДС",10,"Ч18."+глТочностьОсновнойВалюты+". ",2);
    ТЗДок.НоваяКолонка("СуммаСНДС","Число",18,2,"Сумма с НДС",10,"Ч18."+глТочностьОсновнойВалюты+". ",2);
    ТЗДок.НоваяКолонка("СуммаНДСПеревыставление","Число",18,2,"в т.ч. сумма НДС к перевыставлению",10,"Ч18."+глТочностьОсновнойВалюты+". ",2);
    ТЗДок.НоваяКолонка("СуммаСНДСПеревыставление","Число",18,2,"в т.ч. сумма с НДС к перевыставлению",10,"Ч18."+глТочностьОсновнойВалюты+". ",2);
    Если ПустоеЗначение(СтрТЗДок) = 0 Тогда
        Попытка
            _ТЗДок = СоздатьОбъект("ТаблицаЗначений");
            _ТЗДок.Загрузить(ЗначениеИзСтрокиВнутр(СтрТЗДок));
            _ТЗДок.ВыбратьСтроки();
            Пока _ТЗДок.ПолучитьСтроку() = 1 Цикл
                ТЗДок.НоваяСтрока();
                глЗаполнитьЗначениеСвойств(ТЗДок,_ТЗДок);
            КонецЦикла;
        Исключение
        КонецПопытки;
    КонецЕсли//


2и как потом передать в Обработку проведения мою СтрТЗДок?
   cyberandr
 
8 - 15.09.16 - 12:46
сорри это к (2)
   Chieftain
 
9 - 15.09.16 - 13:16
(8)
1. Делаешь обработку, в которой будет продублирован функционал обычной формы.
2. Добавляешь табличную часть в составе колонок ТЗДок. Если табличная часть уже используется - создаешь новый документ с реквизитом ДокРодитель и табличной частью в составе колонок ТЗДок.
3. При нажатии "записать" записываешь все в документ. Если используешь подчиненный документ - записываешь в него ТЗДок.
4. При нажатии "провести" проводишь сам документ, перебираешь строки табличной части и проводишь документы.

В обработке проведения твоего документа НЕ НУЖНО проводить другие.
   Garykom
 
10 - 15.09.16 - 13:20
Эээ 8-шник полез в древнюю 77-ку? Ыыыыы
 
 Рекламное место пустует
   Chieftain
 
11 - 15.09.16 - 13:22
+(9) Подход из (0) вполне возможен.
Как минимум нужно ограничить проведение документов из ТЗДок при групповом проведении, восстановлении последовательности и массовом программном проведении.
Ну и не хранить ТЗДок в строке.
   Garykom
 
12 - 15.09.16 - 13:22
(10)+ В смысле эти "ЗначениеВСтрокуВнутр/ЗначениеИзСтрокиВнутр" как то подозрительно напоминают ЗначениеВРеквизитФормы и т.д. ))
   Garykom
 
13 - 15.09.16 - 13:23
(12)+ Т.е. РеквизитФормыВЗначение
   cyberandr
 
14 - 15.09.16 - 14:41
слушайте а как програмно закрыть документ?
Я пытаюсь 1вар.
Приоткрытии()
открытьФорму(нашДок.Текущийдокумент(),1);
Если форма.параметр=1 Тогда
провести();
Форма.закрыть(0);
Возврат;
Конецесли;

2.
открытьФорму(нашДок.Текущийдокумент(),Конт);
Конт.Форма.Закрыть();
В отладчике закрывается, а так - упорно нет :(
Где я туплю?
   Chieftain
 
15 - 15.09.16 - 14:48
(14) В ПриОткрытии()
  СтатусВозврата(0)
   cyberandr
 
16 - 15.09.16 - 14:52
Не помогло
   Chieftain
 
17 - 15.09.16 - 15:00
(16) Что не помогло? СтатусВозврата(0) в ПриОткрытии равнозначно восьмерочному
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    Отказ = Истина;

и не дает открыться форме.
   cyberandr
 
18 - 15.09.16 - 16:05
Формы документов открываются и не закрываются  Я уже итак и эдак. И ПередОткрытием() и ПОслеоткрытия()...
   Chieftain
 
19 - 15.09.16 - 16:46
(18) Это работает только в "ПриОткрытии" в любой форме
   cyberandr
 
20 - 15.09.16 - 17:13
Процедура ПриОткрытии()

    //Форма.ТолькоПросмотр(1);

    Форма.ИспользоватьЗакладки(1);
    Форма.Закладки.ДобавитьЗначение("Поставщик","Поставщик");
    Форма.Закладки.ДобавитьЗначение("Получатель","Получатель");
    Форма.Закладки.ДобавитьЗначение("ГрузоотправительГрузополучатель","Грузоотправитель и грузополучатель");
    Форма.Закладки.ДобавитьЗначение("УсловияПоставки","Условия поставки");
    Форма.Закладки.ДобавитьЗначение("ДанныеПоТМЦ","Данные по ТМЦ");
    Форма.Закладки.ДобавитьЗначение("Допольнительно","Допольнительно");
    ПриВыбореЗакладки(1,"Поставщик");

    ТЗДок.НоваяКолонка("Контрагент","Справочник",,,"Контрагент",20,,1);
    ТЗДок.НоваяКолонка("КарточкаЭСЧФКомиссия","Справочник",,,"Карточка ЭСЧФ",20,,1);
    ТЗДок.НоваяКолонка("НомерДок","Строка",,,"Номер",7,,1);
    ТЗДок.НоваяКолонка("ДатаДок","Дата",,,"Дата",7,,1);
    ТЗДок.НоваяКолонка("Документ","Справочник",,,"Документ",20,,1);
    ТЗДок.НоваяКолонка("Договор","Справочник.Договора",,,"Договор",20,,1);
    ТЗДок.НоваяКолонка("СуммаНДС","Число",18,2,"Сумма НДС",10,"Ч18."+глТочностьОсновнойВалюты+". ",2);
    ТЗДок.НоваяКолонка("СуммаСНДС","Число",18,2,"Сумма с НДС",10,"Ч18."+глТочностьОсновнойВалюты+". ",2);
    ТЗДок.НоваяКолонка("СуммаНДСПеревыставление","Число",18,2,"в т.ч. сумма НДС к перевыставлению",10,"Ч18."+глТочностьОсновнойВалюты+". ",2);
    ТЗДок.НоваяКолонка("СуммаСНДСПеревыставление","Число",18,2,"в т.ч. сумма с НДС к перевыставлению",10,"Ч18."+глТочностьОсновнойВалюты+". ",2);
    Если ПустоеЗначение(СтрТЗДок) = 0 Тогда
        Попытка
            _ТЗДок = СоздатьОбъект("ТаблицаЗначений");
            _ТЗДок.Загрузить(ЗначениеИзСтрокиВнутр(СтрТЗДок));
            _ТЗДок.ВыбратьСтроки();
            Пока _ТЗДок.ПолучитьСтроку() = 1 Цикл
                ТЗДок.НоваяСтрока();
                глЗаполнитьЗначениеСвойств(ТЗДок,_ТЗДок);
            КонецЦикла;
        Исключение
        КонецПопытки;
        Если Форма.Параметр=1 Тогда
            Провести(); 
            СтатусВозврата(0);
            Форма.Закрыть();
            
            Возврат;
        КонецЕсли;
    КонецЕсли//

    УстановитьВидимостьФормы();
    
КонецПроцедуры
//==============================
   Salimbek
 
21 - 15.09.16 - 17:47
(20) А СтрТЗДок - реквизит документа?
   Chieftain
 
22 - 15.09.16 - 17:48
(20) Уверен, что у тебя условие срабатывает?
Оставь вот так:

Процедура ПриОткрытии()
    .....
    Если ПустоеЗначение(СтрТЗДок) = 0 Тогда
        Попытка
            _ТЗДок = СоздатьОбъект("ТаблицаЗначений");
            _ТЗДок.Загрузить(ЗначениеИзСтрокиВнутр(СтрТЗДок));
            _ТЗДок.ВыбратьСтроки();
            Пока _ТЗДок.ПолучитьСтроку() = 1 Цикл
                ТЗДок.НоваяСтрока();
                глЗаполнитьЗначениеСвойств(ТЗДок,_ТЗДок);
            КонецЦикла;
        Исключение
        КонецПопытки;
    КонецЕсл//


    Если Форма.Параметр=1 Тогда
        Провести(); 
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;

    УстановитьВидимостьФормы();
КонецПроцедуры
   cyberandr
 
23 - 16.09.16 - 10:04
да точно не отрабатывает. Точнее не на всех, но учитывая что их там много...
Вообщем гранд мерси!


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