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

Создание на основание

Автор elai27, 18 мар 2011, 18:35

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

Klyacksa

Нужно копать в функции
ДополнитьСтруктуруПараметровДляЗаполненияТаблицыДокументовРасчетов
Видимо, то, что Вы заполнили, помешало ей нормально функционировать.

Как вариант, попробуйте свои изменения вставить после исходного кода.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

elai27

Попробывал код в конце поместить! то же самое выскакивает ошибка!

Klyacksa

Если я правильно поняла, ругается на вторую строчку кода:
УправлениеВзаиморасчетами.ДополнитьСтруктуруПараметровДляЗаполненияТаблицыДокументовРасчетов(ЭтотОбъект, мСтруктураПараметровВзаиморасчетов);
   мСтруктураПараметровВзаиморасчетов.Дата = ТекущаяДата();

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


То есть вставляется параметр "Дата" в любом случае, если доходит до этих строк.
Смотрим процедуру перед вставкой "Даты".
Видим, что единственный возврат из процедуры в коде:
СтруктураПараметров.Вставить("ДоговорКонтрагента", ДокументОбъект.ДоговорКонтрагента);
Если НЕ ЗначениеЗаполнено(ДокументОбъект.ДоговорКонтрагента) Тогда
Возврат;
КонецЕсли;

То есть, если в Документе не указан договор Контрагента, то процедура не выполняется до конца и параметр "Дата" не вставляется.

Соответственно, ставим точку останова на строке:
УправлениеВзаиморасчетами.ДополнитьСтруктуруПараметровДляЗаполненияТаблицыДокументовРасчетов(ЭтотОбъект, мСтруктураПараметровВзаиморасчетов);
и убеждаемся, что ЭтотОбъект.ДоговорКонтрагента имеет пустое значение.

Анализируем, почему оно пустое и исправляем.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

elai27

Ну оно пустое скорее всего потому что документ-основание не имеет ссылку на  договор Контрагента?

как вообще правильно пользоваться точкой останова?

Klyacksa

Вообще, договор Контрагента по-хорошему должен быть всегда заполнен. Так что заполните его и не морочьте голову :)

Про точку останова:
1. Запускаем конфигуратор
2. Запускаем предприятие в режиме отладки (в Конфигураторе есть такая кнопа)
3. Открываем нужный нам модуль и в нужной строке устанавливаем точку останова (либо дважды кликнув мышкой слева от текста, либо установив курсор на нужную строку и нажимаем кнопу "Точка останова" в командной панели, либо F9)
4. В режиме предприятия делаем нужные действия.

Например, чтобы проверить процедуру ОбработкуПроведения документа, нужно его провести. Если путь алгоритма зайдет в строку, где поставили точку останова - выполнение остановится и можно будет посмотреть значения переменных в остановленный момент (Shift-F9 и там пишем нужное выражение)

Плюс, попробуйте так же использовать инструмент "Табло".
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

elai27

Теперь новая проблемка)
Ниже код заполнения табличной части Товары документа ВозвратТоваровПоставщику из реквизита документа-основание!

Для Каждого ТекСтрокаТовары Из Основание Цикл
НоваяСтрока = Товары.Добавить();
НоваяСтрока.Номенклатура = Основание.Наименование;
КонецЦикла;


выскакивает такая ошибка:


{Документ.ВозвратТоваровПоставщику(2630)}: Итератор для значения не определен
      Для Каждого ТекСтрокаТовары Из Основание Цикл


Klyacksa

Вы какую-то ерунду написали.
Основание - это Ссылка на документ. А Вы пытаетесь по нему цикл как-то сделать...
Если нужно обходить табличную часть (к примеру, тч Товары), то ее и нужно указывать:
для Каждого ТекСтрокаТовары из Основание.Товары Цикл

НоваяСтрока.Номенклатура - это ссылка на товар (собсно на элемент справочника Номенклатура)
Основание.Наименование - это вообще бред, у Ссылки на документ нет Наименования, уже не говорю о том, что свою ТекСтрокаТовары не используете вообще...

Если хотите заполнить Номенклатуру - Номенклатурой из ТекСтрокаТовары, то так и пишите:
НоваяСтрока.Номенклатура=ТекСтрокаТовары.Номенклатура;
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

elai27

вы можете понять, что документ-основание я САМ сделал! он НЕ имеет табличной части! у него есть куча реквизитов, несколько которых сходятся с реквизитами документа (ВозвратТовараПоставщику)и с колонкой табличной части Товары, т.е. :

Документ-Основание                      Документ-Заполняющийся на основании                              
(ПриемТехникиНаРемонт)                                (ВозвратТовараПостащику)

Реквизит - Комментарий        ---->                Реквизит - Комментарий
Реквизит - ДоговорКонтрагента ---->             Реквизит - ДоговорКонтрагента
Реквизит -Наименование---->СтрокаТабличнойЧастиТовары -Номенклатура




Klyacksa

Да рада я за Вас, что Вы его сами сделали. Не имеет табличной части - тогда какого фига делать по нему цикл, объясните мне? :)

Наименование документа = ссылка на Номенклатуру??? Отказываюсь понимать логику такого названия, но воля Ваша. Значит пихайте Наименование в Номенклатуру таб.части второго документа.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

elai27

причем здесь наименование документа!?  ui;;t;
документ называется ПриемТехникиНаРемонт
а поле ввода Наименование - Это и есть сама техника ,т.е. номенклатура!

Теги:

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

Рейтинг@Mail.ru

Поиск