• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Программно записать серийники

  • Автор темы Спартак
  • Дата начала
С

Спартак

Всем доброго времени суток! Необходимо написать обработку для переноса документов Реализация Т и У из УТ в УТ.
Написал, вроде все работает, но есть проблема...
Открываем загруженный документ. встаем на любую номенклатуру и жмем "Серийные номера".

1.JPG

Открывается обработка. Там показываются ВСЕ серийники, которые были в исходном документе. Но если в этой обработке Закрыть или закрыть форму обработки крестом, то при следующем открытии этой обработки все серийники из нее пропадают. Если в форме обработки нажать ОК, то все сохраняется и дальше все правильно отображается.

2.JPG

Подскажите, в чем может быть проблема??
 
U

unknown181538

Смторите, что происходит при записи документа.
 
С

Спартак

как ни странно, но документ записывается B)
Код:
док = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
док.Дата = ТекущаяДата ();
док.Организация = Справочники.Организации.НайтиПоКоду("000000001");
док.Склад = СкладРеализация;
док.ОтражатьВУправленческомУчете = Истина;
Для Каждого стр Из ТабТовары Цикл
Если (стр.ВидДок = "2") И (стр.НомерДок = НомерДок) Тогда
СтрДок = док.Товары.Добавить();
СтрДок.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(стр.Номенклатура);
СтрДок.СерияНоменклатуры = Справочники.СерииНоменклатуры.НайтиПоКоду(стр.Серия);
СтрДок.Количество = Число (стр.Количество);
СтрДок.Цена = Число (стр.Цена);
СтрДок.Сумма = СтрДок.Количество * СтрДок.Цена;
СтрДок.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
СтрДок.Коэффициент = 1;
СтрДок.ЕдиницаИзмерения = СтрДок.Номенклатура.ЕдиницаХраненияОстатков;
КонецЕсли;
КонецЦикла;
Для Каждого стр Из ТабСерийники Цикл
Если (стр.ВидДок = "2") И (стр.НомерДок = НомерДок) Тогда
СтрСер = док.СерийныеНомера.Добавить();
СтрСер.СерийныйНомер = Справочники.СерийныеНомера.НайтиПоКоду(стр.Серийник);
СтрСер.КлючСвязи = стр.Ключ;
КонецЕсли;
КонецЦикла;
док.Контрагент = ЗаписатьКонтрагента (НомерДок);
док.Записать();
 
U

unknown181538

Еще не понятно, зачем вы это пишите, если есть универсальная обработка?
 
С

Спартак

потому что это всего лишь маленький кусок того переноса, что надо сделать. плюс не каждый документ переносится в документ такого же типа плюс все это должно делаться по расписанию :) тут очень много зхаморочек
 
U

unknown181538

Смотрите, как отбирает обработка серийники, и что она делает при закрытии - найдете, что забыли.
 
С

Спартак

решил проблему.
Код:
СтрДок.КлючСвязи = СтрДок.НомерСтроки;
СтрДок.КлючСтроки= СтрДок.НомерСтроки;
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!