Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
30 Май 2017, 10:10
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Провести документ программно ОтборРазмешение ( Перемещение)  (Прочитано 749 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн NIL

  • *
  • Сообщений: 27
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-04-14
  • Сайт: 
  • Профессия: Ученик 1С
1с 8.3 УТ11 Есть код который перезаписывает документ на основе данных ТСД, в 1С смотрю все заполнено документ статус-выполнено без ошибок, но по движению видно что документ не проведен после записи хотя изначально он был проведенный подскажите что нужно дописать чтоб он перепровелся после записи.
Код полностью
//////////////////////////////////
//1.если Документ1СОснование = ПоступлениеТоваровУслуг и выгружен по ячейкам, создавать документ ПриходныйОрдерНаТовары и создавать документ "отборразмещениетоваров"
//с видом операции Размещение
//2.если Документ1СОснование = РеализацияТоваровУслуг и выгружен по ячекам, создавать документ РасходныйОрдерНаТовары и создавать документ  "отборразмещениетоваров"
//с видом операции Отбор
//3.если документ добавлен на ТСД, в зависимости от операции ТСД, заполнять табличную часть и вид операции

// Загрузка документа с ячейками в документ 1С "Отбор (размещение) товаров"


ДокументДобавленНаТСД            = Найти(ДокументТСД.Ид, "new")>0;
Документ1СОснованиеМетаданныеИмя = ?(ДокументДобавленНаТСД,"",Нрег(Документ1СОснование.Метаданные().Имя));


ДокТСДПоЯчекам                   = ДокументТСД.ПолучитьПоле("ПоЯчейкам") = 1;
ИспользоватьУпаковкиНоменклатуры = мСоединение.ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры");
ТаблицаДокументаТСД              = "СтрокиФакт";

Если Документ1СОснованиеМетаданныеИмя = "отборразмещениетоваров" Тогда
   ДокОтборИРазмещениеОбъект = Документ1СОснование.GetObject();   
   ОбнулениеКоличестваТЧ(ДокОтборИРазмещениеОбъект, ДокументМетаданные, СохраненнаяНастройка);
Иначе
   ДокОтборИРазмещениеОбъект        = мСоединение.Документы.ОтборРазмещениеТоваров.СоздатьДокумент();
   ДокОтборИРазмещениеОбъект.Дата   = ТекущаяДата();
   ДокОтборИРазмещениеОбъект.Статус = мСоединение.Перечисления.СтатусыОтборовРазмещенийТоваров.Подготовлено;
   Если не ДокументДобавленНаТСД тогда
      УниверсальныеМеханизмы.КопироватьДанныеРеквизитовИзДокументаВДокумент(Документ1СОснование,ДокОтборИРазмещениеОбъект);
   Иначе
      ДокОтборИРазмещениеОбъект.ВидОперации = мСоединение.Перечисления.ВидыОперацийОтбораРазмещенияТоваров.Отбор;
       НазваниеТЧДокумента1СДляЗаполнения    = "ТоварыОтбор";
      
      //** подбор вида операции документа по операции.Начало.
      Если мStorageConnector = Неопределено Тогда
         Env   = УниверсальныеМеханизмы.ПолучитьEnv(мStorageConnector);
      КонецЕсли;
      ДокументыМСМАРТС = мStorageConnector.ПолучитьДокументы("", Ложь);
      Если ДокументыМСМАРТС <> Неопределено Тогда
         Для инд=0 По ДокументыМСМАРТС.Количество-1 Цикл
            ДокументМСМАРТС = ДокументыМСМАРТС.Элемент(инд);
            Если ДокументМСМАРТС.Ид = ДокументТСД.Ид Тогда
               ОперацияТСД = ДокументМСМАРТС.ИмяТипаДокумента;
               Если ОперацияТСД = "Подбор заказа" Тогда
                  ДокОтборИРазмещениеОбъект.ВидОперации = мСоединение.Перечисления.ВидыОперацийОтбораРазмещенияТоваров.Отбор;
                  НазваниеТЧДокумента1СДляЗаполнения    = "ТоварыОтбор";
               ИначеЕсли ОперацияТСД = "Приемка товара" Тогда
                  ДокОтборИРазмещениеОбъект.ВидОперации = мСоединение.Перечисления.ВидыОперацийОтбораРазмещенияТоваров.Размещение;
                  НазваниеТЧДокумента1СДляЗаполнения    = "ТоварыРазмещение";
               ИначеЕсли ОперацияТСД = "Перемещение по ячейкам" Тогда
                  ДокОтборИРазмещениеОбъект.ВидОперации = мСоединение.Перечисления.ВидыОперацийОтбораРазмещенияТоваров.Перемещение;
               КонецЕсли;
            КонецЕсли;
         КонецЦикла;
      Конецесли;
      //** подбор вида операции документа по операции.Окончание.
   КонецЕсли;
КонецЕсли;

ДокОтборИРазмещениеОбъект.Исполнитель = мСоединение.Справочники.Пользователи.НайтиПоНаименованию(ДокументТСД.ИмяПользователя);

Если ДокТСДПоЯчекам Тогда
   Если Документ1СОснованиеМетаданныеИмя = "поступлениетоваровуслуг" Тогда
      ДокОрдерОбъект = мСоединение.Документы.приходныйордернатовары.СоздатьДокумент();
   ИначеЕсли Документ1СОснованиеМетаданныеИмя = "реализациятоваровуслуг" Тогда
      ДокОрдерОбъект = мСоединение.Документы.расходныйордернатовары.СоздатьДокумент();
   КонецЕсли;
   Если Документ1СОснованиеМетаданныеИмя = "поступлениетоваровуслуг" или  Документ1СОснованиеМетаданныеИмя = "реализациятоваровуслуг"  Тогда
      ДокОрдерОбъект.Дата = ТекущаяДата();
      УниверсальныеМеханизмы.КопироватьДанныеРеквизитовИзДокументаВДокумент(Документ1СОснование,ДокОрдерОбъект);
      ДокОрдерОбъект.Распоряжение = Документ1СОснование;
      Для Инд1 = 0 По ДокументТСД[ТаблицаДокументаТСД].Количество - 1 Цикл
         СтрокаТаблицыДокументаТСД = ДокументТСД[ТаблицаДокументаТСД].Элемент(Инд1);   
         НоваяСтрока  = ДокОрдерОбъект.Товары.Добавить();
         УниверсальныеМеханизмы.ЗаполнитьСтрокуТаблицыДокумента1СНаОснованииСтрокиТаблицыДокументаТСД(СтрокаТаблицыДокументаТСД,НоваяСтрока,
         ИспользоватьУпаковкиНоменклатуры,ДокОрдерОбъект,ДокОрдерОбъект.Метаданные(),"Товары");
      КонецЦикла;
      ДокОрдерОбъект.Записать();
      ДокОтборИРазмещениеОбъект.Распоряжение = ДокОрдерОбъект.Ссылка;
   КонецЕсли;
КонецЕсли;

Если Документ1СОснованиеМетаданныеИмя = "отборразмещениетоваров" Тогда
   Если мСоединение.XMLСтрока(ДокОтборИРазмещениеОбъект.ВидОперации) = "Размещение" Тогда
      НазваниеТЧДокумента1СДляЗаполнения = "ТоварыРазмещение";
   Иначе
      НазваниеТЧДокумента1СДляЗаполнения = "ТоварыОтбор";
   КонецЕсли;   
Иначе
   Если Документ1СОснованиеМетаданныеИмя = "поступлениетоваровуслуг" или Документ1СОснованиеМетаданныеИмя = "приходныйордернатовары"  Тогда
      ДокОтборИРазмещениеОбъект.ВидОперации = мСоединение.Перечисления.ВидыОперацийОтбораРазмещенияТоваров.Размещение;
      НазваниеТЧДокумента1СДляЗаполнения    = "ТоварыРазмещение";
   ИначеЕсли Документ1СОснованиеМетаданныеИмя = "реализациятоваровуслуг" или Документ1СОснованиеМетаданныеИмя = "расходныйордернатовары"  Тогда
      ДокОтборИРазмещениеОбъект.ВидОперации = мСоединение.Перечисления.ВидыОперацийОтбораРазмещенияТоваров.Отбор;
      НазваниеТЧДокумента1СДляЗаполнения    = "ТоварыОтбор";
   КонецЕсли;
КонецЕсли;

ДокументОтборРазмещениеТоваровВыполненоСОшибками = Ложь;
ДокОтборИРазмещениеОбъектМетаданные =  ДокОтборИРазмещениеОбъект.Метаданные();

// Склад можно получить из настроек для пользователя ТСД, помещение из первой ячейки.
Если Не мСоединение.ЗначениеЗаполнено(ДокОтборИРазмещениеОбъект.Склад) тогда
   ДокОтборИРазмещениеОбъект.Склад = УниверсальныеМеханизмы.ПолучитьСкладПоУмолчанию(ДокументТСД.UserId, Истина);
КонецЕсли;

//+AVA. 18.06.2014. №180.
ВидОперации = мсоединение.XMLСтрока(ДокОтборИРазмещениеОбъект.ВидОперации);
ЗонаНаименование = ДокументТСД.ПолучитьПоле("Зона");
Если значениеЗаполнено(ЗонаНаименование) Тогда
   Зона = мСоединение.Справочники.СкладскиеЯчейки.НайтиПоКоду(ЗонаНаименование);
   Если мСоединение.значениеЗаполнено(Зона)  тогда
      ДокОтборИРазмещениеОбъект.Помещение = Зона.Помещение;
      ДокОтборИРазмещениеОбъект.Склад     = Зона.Владелец;
      Если  ВидОперации = "Отбор" Тогда
         ДокОтборИРазмещениеОбъект.ЗонаОтгрузки = Зона;
      ИначеЕсли  ВидОперации = "Размещение" Тогда
         ДокОтборИРазмещениеОбъект.ЗонаПриемки = Зона;
      КонецЕсли;
   КонецЕсли;
КонецЕсли;   
//-AVA. 18.06.2014. №180.

Если ДокументТСД[ТаблицаДокументаТСД].Количество > 0 И ВидОперации = "Перемещение" Тогда      
   СохраненнаяНастройка.ТабличнаяЧасть = "ТоварыРазмещение";
   ОбнулениеКоличестваТЧ(ДокОтборИРазмещениеОбъект, ДокументМетаданные, СохраненнаяНастройка);
КонецЕсли;

Для Инд1 = 0 По ДокументТСД[ТаблицаДокументаТСД].Количество - 1 Цикл
   СтрокаТаблицыДокументаТСД = ДокументТСД[ТаблицаДокументаТСД].Элемент(Инд1);
   Если  ВидОперации = "Перемещение" Тогда
      ЯчейкаОткудаНаименование = СтрокаТаблицыДокументаТСД.ШтрихкодПервогоМеста;
      Если значениеЗаполнено(ЯчейкаОткудаНаименование) тогда
         ЯчейкаОткуда = мСоединение.Справочники.СкладскиеЯчейки.НайтиПоКоду(ЯчейкаОткудаНаименование);         
         Если  мСоединение.ЗначениеЗаполнено(ЯчейкаОткуда) и не мСоединение.ЗначениеЗаполнено(ДокОтборИРазмещениеОбъект.Помещение) Тогда //заполнение помещения из первой ячейки
            Попытка
               ДокОтборИРазмещениеОбъект.Помещение  = ЯчейкаОткуда.Помещение;
            исключение
            КонецПопытки;
         КонецЕсли;          
      КонецЕсли;
      
      
      НоваяСтрока = НайтиСтрокуВТЧДокумента1С(СтрокаТаблицыДокументаТСД, ДокОтборИРазмещениеОбъект, НазваниеТЧДокумента1СДляЗаполнения, ДокументМетаданные);
      
      Если Не мСоединение.ЗначениеЗаполнено(НоваяСтрока) Тогда
         НоваяСтрока  = ДокОтборИРазмещениеОбъект["ТоварыОтбор"].Добавить();
      КонецЕсли;
      
      УниверсальныеМеханизмы.ЗаполнитьСтрокуТаблицыДокумента1СНаОснованииСтрокиТаблицыДокументаТСД(СтрокаТаблицыДокументаТСД,НоваяСтрока,
      ИспользоватьУпаковкиНоменклатуры,ДокОтборИРазмещениеОбъект,ДокОтборИРазмещениеОбъектМетаданные,НазваниеТЧДокумента1СДляЗаполнения);
      
       Если мСоединение.значениеЗаполнено(ЯчейкаОткуда) тогда
         НоваяСтрока.Ячейка = ЯчейкаОткуда;
      КонецЕсли;
      
      ЯчейкаКудаНаименование = СтрокаТаблицыДокументаТСД.ШтрихкодВторогоМеста;
      Если ЗначениеЗаполнено(ЯчейкаКудаНаименование) тогда
         
         НоваяСтрока = НайтиСтрокуВТЧДокумента1С(СтрокаТаблицыДокументаТСД, ДокОтборИРазмещениеОбъект, "ТоварыРазмещение", ДокументМетаданные);
      
         Если Не мСоединение.ЗначениеЗаполнено(НоваяСтрока) Тогда
            НоваяСтрока  = ДокОтборИРазмещениеОбъект["ТоварыРазмещение"].Добавить();
         КонецЕсли;
                     
         УниверсальныеМеханизмы.ЗаполнитьСтрокуТаблицыДокумента1СНаОснованииСтрокиТаблицыДокументаТСД(СтрокаТаблицыДокументаТСД,НоваяСтрока,
         ИспользоватьУпаковкиНоменклатуры,ДокОтборИРазмещениеОбъект,ДокОтборИРазмещениеОбъектМетаданные,"ТоварыРазмещение");
         НоваяСтрока.Ячейка = мСоединение.Справочники.СкладскиеЯчейки.НайтиПоКоду(ЯчейкаКудаНаименование);
      КонецЕсли;
      
      ДокументОтборРазмещениеТоваровВыполненоСОшибками = СтрокаТаблицыДокументаТСД.КоличествоФакт < СтрокаТаблицыДокументаТСД.КоличествоПлан;
   Иначе
      НоваяСтрока = НайтиСтрокуВТЧДокумента1С(СтрокаТаблицыДокументаТСД, ДокОтборИРазмещениеОбъект, НазваниеТЧДокумента1СДляЗаполнения, ДокументМетаданные);
      
      Если Не мСоединение.ЗначениеЗаполнено(НоваяСтрока) Тогда
         НоваяСтрока  = ДокОтборИРазмещениеОбъект[НазваниеТЧДокумента1СДляЗаполнения].Добавить();
      КонецЕсли;
      //НоваяСтрока  = ДокОтборИРазмещениеОбъект[НазваниеТЧДокумента1СДляЗаполнения].Добавить();
      УниверсальныеМеханизмы.ЗаполнитьСтрокуТаблицыДокумента1СНаОснованииСтрокиТаблицыДокументаТСД(СтрокаТаблицыДокументаТСД,НоваяСтрока,
      ИспользоватьУпаковкиНоменклатуры,ДокОтборИРазмещениеОбъект,ДокОтборИРазмещениеОбъектМетаданные,НазваниеТЧДокумента1СДляЗаполнения);
      ДокументОтборРазмещениеТоваровВыполненоСОшибками = СтрокаТаблицыДокументаТСД.КоличествоФакт < СтрокаТаблицыДокументаТСД.КоличествоПлан;   
   КонецЕсли;
КонецЦикла;

Если ДокументОтборРазмещениеТоваровВыполненоСОшибками Тогда
   ДокОтборИРазмещениеОбъект.Статус = мСоединение.Перечисления.СтатусыОтборовРазмещенийТоваров.ВыполненоСОшибками;
Иначе
   ДокОтборИРазмещениеОбъект.Статус = мСоединение.Перечисления.СтатусыОтборовРазмещенийТоваров.ВыполненоБезОшибок;
КонецЕсли;

Попытка
   //заполнение реквизитов необходимых для проставления серии номенклатуры
   Если глВерсияКонфигурации >= 11000708 Тогда
      ПараметрыУказанияСерий = мСоединение.НоменклатураСервер.ПараметрыУказанияСерий(ДокОтборИРазмещениеОбъект, мСоединение.Документы.ОтборРазмещениеТоваров);
      
      Если ПараметрыУказанияСерий.Свойство("ИмяТЧТовары") Тогда
         ПараметрыУказанияСерий.ИмяТЧТовары = "ТоварыОтбор";
         ПараметрыУказанияСерий.ИмяТЧСерии  = "ТоварыОтбор";
         мСоединение.НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(ДокОтборИРазмещениеОбъект,ПараметрыУказанияСерий);
         
         ПараметрыУказанияСерий.ИмяТЧТовары = "ТоварыРазмещение";
         ПараметрыУказанияСерий.ИмяТЧСерии  = "ТоварыРазмещение";
         мСоединение.НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(ДокОтборИРазмещениеОбъект,ПараметрыУказанияСерий);   
      Иначе
         мСоединение.НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(ДокОтборИРазмещениеОбъект,ПараметрыУказанияСерий.Отбор);
         мСоединение.НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(ДокОтборИРазмещениеОбъект,ПараметрыУказанияСерий.Размещение);   
      КонецЕсли;
   КонецЕсли;
Исключение
   Ошибка("#Ошибка заполнения документа ""Отбор (размещение) товаров""",ОписаниеОшибки(),"Алгоритм заполнения: ""Загрузка документа с ячейками в документ 1С ""Отбор (размещение) товаров""""");
КонецПопытки;

ДокОтборИРазмещениеОбъект.Комментарий = ДокОтборИРазмещениеОбъект.Комментарий + "(Документ обработан из ТСД)";
 
ДокОтборИРазмещениеОбъект.Записать();

мStorageConnector.SendMessage("Документ """+мСоединение.String(ДокОтборИРазмещениеОбъект.Ссылка)+""" успешно записан в базу 1С!", Константы.ПользовательОсновнойБД.Получить(), ДокТСД.UserId); //AVA. 17.04.2014. №14. Сообщения пользователям ТСД.

//////////////////////////////////////////////////
Пробовал - ДокОтборИРазмещениеОбъект.Записать(РежимЗаписи.Проведение);
Но ругается на синтаксическую ошибку. С командами ПриЗаписи ПослеЗаписи не знаком подскажите как лучше это оформить?


Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
<ДокументОбъект>.Записать(РежимЗаписиДокумента.Проведение)

Оффлайн NIL

  • *
  • Сообщений: 27
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-04-14
  • Сайт: 
  • Профессия: Ученик 1С
Нет не дает. ДокОтборИРазмещениеОбъект.Записать(РежимЗаписиДокумента.Проведение);
Проверьте синтаксические ошибки. Подробно (211) Ошибка при вызове метода контекста (Записать)
Как можно еще провести документ?

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Вы б вместо копипаста попытались бы понять, что же система вам пишет. глупостей система не пишет.


Теги:
 

Какова взаимосвязь объектов конфигурации "Договоры" и "Документ"?

Автор DDDРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 4135
Последний ответ 25 Ноя 2008, 10:43
от DDD
Как можно подставлять цену из регистра сведений "Цены поставщиков" в документ"ПоступлениеТоваров" на актуальную дату? Необходимо использовать запрос в решении.

Автор Елена6666666666Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 7751
Последний ответ 24 Окт 2014, 13:30
от cska-fanat-kz
не могу вывести отображение цен в "подборе" документ "Заявка покупателя" УТ 10.3

Автор Виталий ЕмельяновРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 2630
Последний ответ 05 Окт 2015, 19:22
от Виталий Емельянов
Документ "Сторно" в 1с 8.2 бух 2.0

Автор cannabis_86Раздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 11807
Последний ответ 09 Июн 2011, 12:57
от defers
Документ "Поступление товаров и услуг" - как добавить графу "единица измерения"

Автор asolРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 5496
Последний ответ 29 Мар 2012, 14:40
от Essential

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
93 Сообщений
wise wise
68 Сообщений
MuI_I_Ika MuI_I_Ika
52 Сообщений
alex0402
49 Сообщений
Dethmontt Dethmontt
48 Сообщений
Сергей Федоров Сергей Федоров
29 Сообщений
ilyay ilyay
29 Сообщений
ilnur75
25 Сообщений
Дмитрий Медведков Дмитрий Медведков
19 Сообщений
DmitriyF DmitriyF
17 Сообщений

* Кто онлайн

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal