7.7 Изменить документ программно имея на него ссылку

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Samouchka, 20 мар 2013.

  1. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Всем привет.
    Конфа 1С 7.7. Имею документ ИнвентаризацияСкладаПоштучная с реквизитом шапки "Подсчет", тип "Документ.ПодсчетТовара" (ДокументСсылка). Реквизит "Подсчет" уже содержит ссылку на ранее созданный методом "СоздатьОбъект" документ "ПодсчетТовара". Требуется заполнить таблицей значений "ТЗ" документа ИнвентаризацияСкладаПоштучная табличную часть документа "ПодсчетТовара", ссылка на который хранится в реквизите "Подсчет". Пишу код:

    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
    Подсчет.НоваяСтрока();
    Подсчет.Товар=ТЗ.Товар;
    Подсчет.КодТов=ТЗ.КодТов;
    Подсчет.Штрих=ТЗ.Штрих;
    Подсчет.Колич=ТЗ.Колич;
    КонецЦикла;
    Подсчет.Записать();

    Вылет на 3 строке модуля:
    Подсчет.НоваяСтрока();
    {Документ.ИнвентаризацияСкладаПоштучная.Форма.Модуль(343)}: Не выбран документ!

    Подскажите, пожалуйста, где моя ошибка? Сам никак не допру! Заранее всем спасибо.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    Док=СоздатьОбъект("Документ");
    Если ПустоеЗначение(Подсчет)=1 Тогда
    Возврат;
    КонецЕсли;
    Док.НайтиДокумент(Подсчет);
    Док.УдалитьСтроки(); //удаляем ранее введенные строки если есть
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
    Док.НоваяСтрока();
    Док.Товар=ТЗ.Товар;
    Док.КодТов=ТЗ.КодТов;
    Док.Штрих=ТЗ.Штрих;
    Док.Колич=ТЗ.Колич;
    КонецЦикла;
    Док.Записать();
    
  3. nata0303
    Offline

    nata0303

    Регистрация:
    20 мар 2013
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Имхо будет аккуратнее так:

    Код:
    Док=СоздатьОбъект("Документ");
    Если ПустоеЗначение(Подсчет)=1 Тогда
    Возврат;
    КонецЕсли;
    Если Док.НайтиДокумент(Подсчет)<>0 Тогда
    Док.УдалитьСтроки();
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
    Док.НоваяСтрока();
    Док.Товар=ТЗ.Товар;
    Док.КодТов=ТЗ.КодТов;
    Док.Штрих=ТЗ.Штрих;
    Док.Колич=ТЗ.Колич;
    КонецЦикла;
    Док.Записать();
    Иначе
    Сообщить("Документ "+Подсчет+" не найден!");
    КонецЕсли;
    
    
    мало ли что там в базе произойдет.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    не согласен. Документ ведь ищется по ссылке. Если ссылка "битая" то и отобразится "объект не найден" в диалоге
  5. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Всем премного благодарен :icon_smilemin: ! Это как раз то что мне нужно!
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104

Поделиться этой страницей