Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 18:13

Взаимодействие основного документа с произвольной формой.

Автор Pavel-67, 05 июн 2014, 11:23

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

Pavel-67

Доброе время суток. Помогите немного разобраться в коде. У меня 1С платформа 8.2 режим обычного приложения. В конфигураторе в Документе СчетНаОплатуПокупателю  я создал кнопочку с кодом и произвольную форму.

Код кнопочки:
Форма =  ПолучитьФорму("Поликлиника", ЭтаФорма);
Форма.РежимВыбора = Истина;
Форма.Идентификатор = ЭтотОбъект.Ссылка; // Передаю ссылку на документ
Форма.Открыть();

Форма открывается все хорошо, на форме есть кнопка которая должна очистить ТЧ Услуги в Документе СчетНаОплатуПокупателю

Прописал такой код:

КоличествоСтрок = Идентификатор.Услуги.Количество()-1;

Для к=0 По КоличествоСтрок Цикл
   Если Идентификатор.Услуги[КоличествоСтрок-к].Количество = 0 Тогда
      Идентификатор.Услуги.Удалить(КоличествоСтрок-к);
   КонецЕсли;
КонецЦикла;

Код отрабатывается, но удаление строк не происходит.  В режиме отладки проверял содержимое параметра Идентификатор, ссылка присутствует.

Подскажите пожалуйста, что я делаю не так?

Pavel-67

Появилась мысль, найти этот документ в документах по номеру и дате, и изменить его. Затем обновить содержимое в основном документе. Но мне кажется, есть более верный способ.

has

ЦитироватьФорма.Идентификатор = ЭтотОбъект.Ссылка; // Передаю ссылку на документ
Передаете то ссылку, а удалять необходимо из Объекта. Т.е. примерно так

КоличествоСтрок = Идентификатор.Услуги.Количество()-1;
ОбъектДокумента = Идентификатор.ПолучитьОбъект();
Для к=0 По КоличествоСтрок Цикл
   Если ОбъектДокумента.Услуги[КоличествоСтрок-к].Количество = 0 Тогда
      ОбъектДокумента.Услуги.Удалить(КоличествоСтрок-к);
   КонецЕсли;
КонецЦикла;

Pavel-67

Цитата: has от 05 июн 2014, 12:15
ЦитироватьФорма.Идентификатор = ЭтотОбъект.Ссылка; // Передаю ссылку на документ
Передаете то ссылку, а удалять необходимо из Объекта. Т.е. примерно так

КоличествоСтрок = Идентификатор.Услуги.Количество()-1;
ОбъектДокумента = Идентификатор.ПолучитьОбъект();
Для к=0 По КоличествоСтрок Цикл
   Если ОбъектДокумента.Услуги[КоличествоСтрок-к].Количество = 0 Тогда
      ОбъектДокумента.Услуги.Удалить(КоличествоСтрок-к);
   КонецЕсли;
КонецЦикла;


К сожалению, данный код отработал так же. Безрезультативно (. В отладчике, я проверил, не присваивается количество строк переменной КоличествоСтрок, оно всегда равно 0.
ОбъектДокумента = Идентификатор.ПолучитьОбъект();
КоличествоСтрок =  ОбъектДокумента.Услуги.Количество()-1; Так тоже, без изменения.

has

А может у Вас в документе 1 строка, а вы получаете Количество() - 1, вот 0 и получается.

Pavel-67

Цитата: has от 05 июн 2014, 12:45
А может у Вас в документе 1 строка, а вы получаете Количество() - 1, вот 0 и получается.

Да я ошибся записи дублировал но не сохранял. Но Данные все равно не удаляются.

has


Pavel-67

Цитата: has от 05 июн 2014, 12:51
Данные не удаляются из скольки строк?

Ни одна из строк не удалена. Отрабатывает чисто, без ошибок. По циклу проходит.

Провал так:
Для к=0 По КоличествоСтрок Цикл
  // Если ОбъектДокумента.Услуги[КоличествоСтрок-к].Количество = 0 Тогда
      ОбъектДокумента.Услуги.Удалить(КоличествоСтрок-к);
  // КонецЕсли;
КонецЦикла;

Без изменений.

has


has

Что пишет этот код? Параметр формы имеет тип ДокументСсылка?

КоличествоСтрок = Идентификатор.Услуги.Количество()-1;
ОбъектДокумента = Идентификатор.ПолучитьОбъект();
Сообщить(Идентификатор.Услуги.Количество());
Для к=0 По КоличествоСтрок Цикл
   Если ОбъектДокумента.Услуги[КоличествоСтрок-к].Количество = 0 Тогда
      ОбъектДокумента.Услуги.Удалить(КоличествоСтрок-к);
      Сообщить(Идентификатор.Услуги.Количество());
   КонецЕсли;
КонецЦикла;

Теги: <i> 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск