Имя: Пароль:
1C
1С v8
Вернуть значение переменной в параметр процедуры
0 Pro-tone
 
02.12.11
12:30
Не получается вытягивать УспешноСоздан=Истина, хотя в самой процедуре значение Истина

УспешноСоздан = Ложь;
       ЛогистикаСервер.СоздатьДокументВ1СБухгалтерия(Объект.Ссылка,"РеализацияТоваровУслуг", УспешноСоздан);
       
       Если УспешноСоздан Тогда
          ПоказатьОповещениеПользователя("Выгрузка в ""Бухгалтерия"":",,"Реализация товаров и услуг "+Объект.Номер, БиблиотекаКартинок.Выгрузить);
          Закрыть();
       КонецЕсли;
1 Cube
 
02.12.11
12:32
Кто мешает из процедуры СоздатьДокументВ1СБухгалтерия сделать функцию и писать так:

УспешноСоздан = ЛогистикаСервер.СоздатьДокументВ1СБухгалтерия(Объект.Ссылка,"РеализацияТоваровУслуг");

???
2 Pro-tone
 
02.12.11
12:35
(1) в 7.7 было такое:

ВыбЗнач="";
Если СписокЗначений(ВыбЗнач,"!!!",,,)=1 Тогда
 
КонецЕсли;

Хочу такой же принцип
3 Pro-tone
 
02.12.11
12:36
(2)
вернее

ВыбЗнач="";
Если СписокЗначений.ВыбратьЗначение(ВыбЗнач,"!!!",,,)=1 Тогда
 
КонецЕсли;
4 Не Печенкин
 
02.12.11
12:42
1. он точно меняется на Истина в самом СоздатьДокументВ1СБухгалтерия?
2. аргумент не помечен как Знач?
5 Pro-tone
 
02.12.11
12:56
(4)
1. точно
2. не помечен (но я помечал даже и все равно тот же результат)
6 Reset
 
02.12.11
13:01
(5) Не точно.
код СоздатьДокументВ1СБухгалтерия покажи
7 Pro-tone
 
02.12.11
13:27
(6)

Процедура СоздатьДокументВ1СБухгалтерия(ДокСсылка,ВидДокументаВнешнейБазы, Успех = Ложь) Экспорт
   
  ПодключитьИБ();
     
  ВнешняяБаза = ПолучитьИзВременногоХранилища(ПараметрыСеанса.ВнешняяБаза);
   
  //тут создаем документ-объект во внешней базе !!!
 
  Если ВидДокументаВнешнейБазы = "РеализацияТоваровУслуг" Тогда
     
      СоздатьДокументРеализацияВоВнешнейБухБазе(ДокСсылка, ВнешняяБаза, Успех = Ложь);
     
  КонецЕсли;
 
КонецПроцедуры    

Процедура СоздатьДокументРеализацияВоВнешнейБухБазе(ДокСсылка, ВнешняяБаза, Успех = Ложь)    
   
 Если НЕ ПустаяСтрока(ДокСсылка.УИ_бухгалтерия) Тогда
       //документ был выгружен уже ранее, обновим его тогда в бух
       УИ_ВнешнБух = ВнешняяБаза.NewObject("УникальныйИдентификатор", ДокСсылка.УИ_бухгалтерия);

       Попытка
           БухДокументРеализация = ВнешняяБаза.Документы.РеализацияТоваровУслуг.ПолучитьСсылку(УИ_ВнешнБух).ПолучитьОбъект();
       Исключение
           //в редких случаях ссылка генерится неверно, тогда пробуем искать по номеру
           НайденныйДок = ВнешняяБаза.Документы.РеализацияТоваровУслуг.НайтиПоНомеру(СокрЛП(ДокСсылка.Номер),ДокСсылка.Дата).ПолучитьОбъект();
           
           Если НайденныйДок = Неопределено ИЛИ НайденныйДок.ПометкаУдаления Тогда    
               //ну если уж совсем не получается найти, то просто очищаем наше поле "УИ бух в расходной накладной"
               //и создаем новый документ тогда уж
               //ОбщегоНазначенияКлиентСервер.СообщитьПользователю("");
               БухДокументРеализация = ВнешняяБаза.Документы.РеализацияТоваровУслуг.СоздатьДокумент();
           Иначе  
               БухДокументРеализация = НайденныйДок;
           КонецЕсли;      
           
       КонецПопытки;  
   Иначе    
       БухДокументРеализация = ВнешняяБаза.Документы.РеализацияТоваровУслуг.СоздатьДокумент();
   КонецЕсли;
   
   Если НЕ ЗначениеЗаполнено(ДокСсылка.Контрагент.УИ_1СБух) Тогда
       //если нет связи элемента в бух, то прерываем все !
       ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Контрагент "+ДокСсылка.Контрагент.Наименование+" не связан с 1С:Бухгалтерия!
       |Выгрузка документа не возможна !");
       Возврат;
   КонецЕсли;
   
       
   //тут заполняем реквизиты шапки!
   //>>---------ШАПКА !!!!!!!
   БухДокументРеализация.Дата  =  ДокСсылка.Дата;
   БухДокументРеализация.Номер =  ДокСсылка.Номер;

   
   БухДокументРеализация.Организация = ВнешняяБаза.Справочники.Организации.НайтиПоКоду("000000001");
   БухДокументРеализация.Склад       = ВнешняяБаза.Справочники.Склады.НайтиПоКоду("000000001");         // Основной склад  
   
   Если НЕ ЗначениеЗаполнено(ДокСсылка.Контрагент.УИ_1СБух) Тогда
       //если нет связи элемента в бух, то прерываем все !
       ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Контрагент "+ДокСсылка.Контрагент.Наименование+" не связан с 1С:Бухгалтерия!
       |Выгрузка документа не возможна !");
       Возврат;
   КонецЕсли;
   УИ_ВнешнСпрКонтрагенты = ВнешняяБаза.NewObject("УникальныйИдентификатор", ДокСсылка.Контрагент.УИ_1СБух);
   КонтрагентВнеш  = ВнешняяБаза.Справочники.Контрагенты.ПолучитьСсылку(УИ_ВнешнСпрКонтрагенты);
   БухДокументРеализация.Контрагент = КонтрагентВнеш;                      
   БухДокументРеализация.ДоговорКонтрагента = КонтрагентВнеш.ОсновнойДоговорКонтрагента;
   
   
   Если ЗначениеЗаполнено(ДокСсылка.Грузоотправитель) Тогда
       Если НЕ ЗначениеЗаполнено(ДокСсылка.Грузоотправитель.УИ_1СБух) Тогда
           //если нет связи элемента в бух, то прерываем все !
           ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Грузоотправитель "+ДокСсылка.Грузоотправитель.Наименование+" не связан с 1С:Бухгалтерия!
           |Выгрузка документа не возможна !");
           Возврат;
       КонецЕсли;
       УИ_ВнешнСпрКонтрагентыГрузоотправитель = ВнешняяБаза.NewObject("УникальныйИдентификатор", ДокСсылка.Грузоотправитель.УИ_1СБух);
       КонтрагентГрузоотправительВнеш  = ВнешняяБаза.Справочники.Контрагенты.ПолучитьСсылку(УИ_ВнешнСпрКонтрагентыГрузоотправитель);
       БухДокументРеализация.Грузоотправитель = КонтрагентГрузоотправительВнеш;  
   КонецЕсли;

   
   Если ЗначениеЗаполнено(ДокСсылка.Грузополучатель) Тогда
       Если НЕ ЗначениеЗаполнено(ДокСсылка.Грузополучатель.УИ_1СБух) Тогда
           //если нет связи элемента в бух, то прерываем все !
           ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Грузополучатель "+ДокСсылка.Грузополучатель.Наименование+" не связан с 1С:Бухгалтерия!
           |Выгрузка документа не возможна !");
           Возврат;
       КонецЕсли;
       УИ_ВнешнСпрКонтрагентыГрузополучатель  = ВнешняяБаза.NewObject("УникальныйИдентификатор", ДокСсылка.Грузополучатель.УИ_1СБух);
       КонтрагентГрузополучательВнеш  = ВнешняяБаза.Справочники.Контрагенты.ПолучитьСсылку(УИ_ВнешнСпрКонтрагентыГрузополучатель);
       БухДокументРеализация.Грузополучатель = КонтрагентГрузополучательВнеш;
   КонецЕсли;

   
   БухДокументРеализация.ВалютаДокумента = ВнешняяБаза.Справочники.Валюты.НайтиПоКоду(ДокСсылка.ВалютаДокумента.Код);
   БухДокументРеализация.КурсВзаиморасчетов = ДокСсылка.Курс;
   БухДокументРеализация.КратностьВзаиморасчетов = ДокСсылка.Кратность;
   БухДокументРеализация.Комментарий        = ДокСсылка.Комментарий;
   
   БухДокументРеализация.УчитыватьНДС = ?(ДокСсылка.НалогообложениеНДС=Перечисления.ТипыНалогообложенияНДС.ОблагаетсяНДС,Истина,Ложь);
   БухДокументРеализация.СуммаВключаетНДС  = ДокСсылка.СуммаВключаетНДС;

   //манагер    
   ОтветственныйМенеджер = ПолучитьНастройкуПользователяИБпоСтр("Основной ответственный",ДокСсылка.Автор);
   БухДокументРеализация.Менеджер = ВнешняяБаза.Справочники.ФизическиеЛица.НайтиПоНаименованию(ОтветственныйМенеджер.Наименование);
   //манагер    

   //автор - текущий пользователь
   АвторВнешн =  ВнешняяБаза.Справочники.Пользователи.НайтиПоНаименованию(ПараметрыСеанса.ТекущийПользователь.Наименование);      
   БухДокументРеализация.Ответственный = АвторВнешн;
   //автор
   
   //счета БУ
   СчетБУ = ПолучитьНастройкуПользователяИБ(ПланыВидовХарактеристик.НастройкиПользователей.СчетБУсПокупателями,ДокСсылка.Автор);
   СчетБУ_Внешн = ВнешняяБаза.ПланыСчетов.Хозрасчетный.НайтиПоКоду(СчетБУ.Код);
   БухДокументРеализация.СчетУчетаРасчетовСКонтрагентом = СчетБУ_Внешн;
   
   
   СчетБУАвансы = ПолучитьНастройкуПользователяИБ(ПланыВидовХарактеристик.НастройкиПользователей.СчетБУсПокупателямиАвансы,ДокСсылка.Автор);
   СчетБУАвансы_Внешн = ВнешняяБаза.ПланыСчетов.Хозрасчетный.НайтиПоКоду(СчетБУАвансы.Код);
   БухДокументРеализация.СчетУчетаРасчетовПоАвансам = СчетБУАвансы_Внешн;
   //счета БУ    
   //<<---------ШАПКА !!!!!!!

   НеВыгружать = Ложь;

   //тут заполняем  и табличной части !!  
   //>>---------ТАБЛИЧНАЯ ЧАСТЬ ЗАПАСЫ !!!!!!!
   БухДокументРеализация.Услуги.Очистить();
   Для Каждого ТекСтрока Из ДокСсылка.Запасы Цикл
       
        НоваяСтрокаТЧВнешнейБазы = БухДокументРеализация.Услуги.Добавить();
       
        //>>---------НОМЕНКЛАТУРА
        Если НЕ ЗначениеЗаполнено(ТекСтрока.Номенклатура.УИ_1СБух) Тогда
            //если нет связи элемента в бух, то прерываем все !
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Номенклатура "+ДокСсылка.Номенклатура.Наименование+" не связана с 1С:Бухгалтерия!
            |Выгрузка документа не возможна !");
            НеВыгружать = Истина;
            Прервать;
        КонецЕсли;
       
        УИ_ВнешнСпрНоменклатура = ВнешняяБаза.NewObject("УникальныйИдентификатор", ТекСтрока.Номенклатура.УИ_1СБух);
        НоменклатураВнеш  = ВнешняяБаза.Справочники.Номенклатура.ПолучитьСсылку(УИ_ВнешнСпрНоменклатура);
        НоваяСтрокаТЧВнешнейБазы.Номенклатура = НоменклатураВнеш;
        //<<---------НОМЕНКЛАТУРА

        НоваяСтрокаТЧВнешнейБазы.Количество = ТекСтрока.Количество;
        НоваяСтрокаТЧВнешнейБазы.Цена       = ТекСтрока.Цена;
        НоваяСтрокаТЧВнешнейБазы.Сумма      = ТекСтрока.Сумма;
        НоваяСтрокаТЧВнешнейБазы.СуммаНДС   = ТекСтрока.СуммаНДС;
        НоваяСтрокаТЧВнешнейБазы.Содержание = ТекСтрока.Содержание;

        Если БухДокументРеализация.УчитыватьНДС Тогда
            НоваяСтрокаТЧВнешнейБазы.СтавкаНДС = ПолучитьСтавкуНДСвБух(ТекСтрока.СтавкаНДС, ВнешняяБаза);
        КонецЕсли;

               
        СчетБУДоходы = ПолучитьНастройкуПользователяИБ(ПланыВидовХарактеристик.НастройкиПользователей.СчетБУДоходы,ДокСсылка.Автор);
        СчетБУДоходы_Внешн = ВнешняяБаза.ПланыСчетов.Хозрасчетный.НайтиПоКоду(СчетБУДоходы.Код);
        НоваяСтрокаТЧВнешнейБазы.СчетДоходовБУ = СчетБУДоходы_Внешн;

       
        //>>---------Субконто БУ Доходы
        Если ЗначениеЗаполнено(ТекСтрока.СубконтоБУ) И НЕ ЗначениеЗаполнено(ТекСтрока.УИ_СубконтоБУ) Тогда
            //если нет связи элемента в бух, то прерываем все !
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Субконто БУ "+ТекСтрока.СубконтоБУ+" не связано с 1С:Бухгалтерия!
            |Его значение не выгружено ! Установите его в 1С-Бухгалтерия самостоятельно !");
        Иначе
            Если ЗначениеЗаполнено(ТекСтрока.СубконтоБУ) Тогда
                ВидВидаСправочникаСубконто = ПолучитьСтруктуруВидаСубконто1ВнешейБазы(ТекСтрока.СчетБУДоходы, ВнешняяБаза).Имя;
                СправочникСсылкаВнешн = ВнешняяБаза.Справочники[ВидВидаСправочникаСубконто];
                УИ_ВнешнСпр = ВнешняяБаза.NewObject("УникальныйИдентификатор", ТекСтрока.УИ_СубконтоБУ);
                НоваяСтрокаТЧВнешнейБазы.СубконтоБУ = СправочникСсылкаВнешн.ПолучитьСсылку(УИ_ВнешнСпр);
            КонецЕсли;
        КонецЕсли;
        //<<---------Субконто БУ Доходы                            

       
       
        СчетНУреализация = ПолучитьНастройкуПользователяИБ(ПланыВидовХарактеристик.НастройкиПользователей.СчетНУРеализация,ДокСсылка.Автор);
        СчетНУреализация_Внешн = ВнешняяБаза.ПланыСчетов.Хозрасчетный.НайтиПоКоду(СчетНУреализация.Код);
        НоваяСтрокаТЧВнешнейБазы.СчетУчетаНДСПоРеализации = СчетНУреализация_Внешн;

        НоваяСтрокаТЧВнешнейБазы.СчетРасходовБУ = ВнешняяБаза.ПланыСчетов.Хозрасчетный.НайтиПоКоду("ПЗ.90.0");
       
   КонецЦикла;    
   //<<---------ТАБЛИЧНАЯ ЧАСТЬ ЗАПАСЫ !!!!!!!

   Если НеВыгружать Тогда
       Возврат;
   КонецЕсли;
   
   
   Попытка
       
       БухДокументРеализация.Записать(ВнешняяБаза.РежимЗаписиДокумента.Проведение);
       
       Попытка
           
           УИ_БухДокументРеализация = ВнешняяБаза.String(БухДокументРеализация.Ссылка.УникальныйИдентификатор());
           
           //и после проведения ждока во внешней базе тут обновляем наш УИ бух !  оповещение
           ДокОбъектРасходнаяНакладная = ДокСсылка.ПолучитьОбъект();
           ДокОбъектРасходнаяНакладная.УИ_бухгалтерия = УИ_БухДокументРеализация;
           ДокОбъектРасходнаяНакладная.Записать(РежимЗаписиДокумента.Запись);
           
           Успех = Истина;
           
       Исключение
       КонецПопытки;
       
   Исключение
       
       ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось выгрузить документ !" + ОписаниеОшибки());
       
   КонецПопытки;  
   

   
КонецПроцедуры
8 Reset
 
02.12.11
13:35
(7) в СоздатьДокументВ1СБухгалтерия параметр Успех не изменяет ни один оператор
9 Pro-tone
 
02.12.11
14:06
(8) плохо ты смотрел

Попытка
           
           УИ_БухДокументРеализация = ВнешняяБаза.String(БухДокументРеализация.Ссылка.УникальныйИдентификатор());
           
           //и после проведения ждока во внешней базе тут обновляем наш УИ бух !  оповещение

           ДокОбъектРасходнаяНакладная = ДокСсылка.ПолучитьОбъект();
           ДокОбъектРасходнаяНакладная.УИ_бухгалтерия = УИ_БухДокументРеализация;
           ДокОбъектРасходнаяНакладная.Записать(РежимЗаписиДокумента.Запись);
           
           Успех = Истина;
           
       Исключение
       КонецПопытки;
10 Pro-tone
 
02.12.11
14:06
прям в конец кода смотри
11 Reset
 
02.12.11
14:12
(9) Это совершенно другая процедура и переменная Успех - совершенно другая.
Тебе к букварям, читать про операции присваивания и чем они отличаются от оператора сравнения.
12 Reset
 
02.12.11
14:13
Окей, спишем на пятницу.
"СоздатьДокументРеализацияВоВнешнейБухБазе(ДокСсылка, ВнешняяБаза, Успех = Ложь);"

замени на

"СоздатьДокументРеализацияВоВнешнейБухБазе(ДокСсылка, ВнешняяБаза, Успех);"
13 Pro-tone
 
02.12.11
14:20
(12) работает как ты сказал ! Спасибо !

Я просто хотел Успех сделать необязательным параметром в СоздатьДокументРеализацияВоВнешнейБухБазе(ДокСсылка, ВнешняяБаза, Успех). Но наверно при таком варианте туда ничего не вернется.