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

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

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

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

Оффлайн NIL

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

Оффлайн vitasw

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


Теги:
 

не находить контрагента (Выбрать * Из Документ ГДЕ контрагент = "имя контрагента")

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

Ответов: 3
Просмотров: 192
Последний ответ 23 Окт 2017, 23:14
от Ivan94
Какова взаимосвязь объектов конфигурации "Договоры" и "Документ"?

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

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

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

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

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

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

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

Ответов: 1
Просмотров: 12294
Последний ответ 09 Июн 2011, 12:57
от defers

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
164 Сообщений
MuI_I_Ika MuI_I_Ika
96 Сообщений
oleg-x
67 Сообщений
alex0402
66 Сообщений
ilyay ilyay
58 Сообщений
Dmitry Qwe Dmitry Qwe
32 Сообщений
Sy4a
22 Сообщений
Dima Dddd Dima Dddd
20 Сообщений
BuhRust
19 Сообщений
Golickoff Golickoff
16 Сообщений

* Кто онлайн

  • Точка Гостей: 144
  • Точка Скрытых: 0
  • Точка Пользователей: 2
  • Точка Сейчас на форуме:

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal