×
×

Ваше сообщение

Для входа нажмите здесь

 
 

Вы можете выбрать иконку, характеризующую сообщение

Дополнительные опции

  • Преобразит www.example.com в [URL]http://www.example.com[/URL].

Просмотр темы (новые вначале)

  • 10.09.2007, 17:17
    Naumov
    Сколько таких героев было...
    на самом деле все в общем-то логично, да и в СинтаксПомошнике все нормально написано.
  • 10.09.2007, 17:13
    edmaster
    Да, точно - работает! (СписокСчетов.Счет = ДобавляемыйСчет + .ТекущийДокумент() Спасибо!
    Вот уж и не думал что так все сложно - можно было бы гораздо прощее сделать. Вот не хватит терпения и сам возьмусь за создание нормальной платформы...
  • 10.09.2007, 17:04
    Naumov
    в 1С так нельзя.
    вообще не понятно за чем сперва получить строку, а потом НоваяСтрока()
    Нужно:
    1. СписокСчетов = СоздатьОбъект("Документ");
    СписокСчетов.НайтиДокумент(ДокументНаОсновании);
    4. СписокСчетов.НоваяСтрока(); //Не выбран документ!
    5. СписокСчетов.Счет = ДобавляемыйСчет;
    6. СписокСчетов.Записать();

    что-то типа этого
  • 10.09.2007, 17:00
    edmaster
    Извените, я что-то не совсем понял...
    Я использую следующий код:

    1. СписокСчетов = ДокументНаОсновании;
    2. СписокСчетов.ВыбратьСтроки();
    3. СписокСчетов.ПолучитьСтроку();
    4. СписокСчетов.НоваяСтрока(); //Не выбран документ!
    5. СписокСчетов.Счет = ДобавляемыйСчет;
    6. СписокСчетов.Записать();

    После выполнения первой строки переменная "СписокСчетов" содержит ссылку на документ, с которой я и работаю в последующих строках. Разве не так? А именно, добавляю новую табличную часть. Табличная часть содержит только одно поле - "Счет".
    Хотя у меня конечно есть подозрение что такой набор строк 2,3 явно излишен...
  • 10.09.2007, 16:32
    Naumov
    НоваяСтрока(); применяется к объектному типу, а не к выборке.
  • 10.09.2007, 16:27
    edmaster
    Вы правы, спасибо! Что-то я не досмотрел, при
    ДокументНаОсновании = СписокСчетов.ТекущийДокумент();
    отлично всё работает. Спасибо! Вот только я не совсем понимаю откуда берется вторая ошибка:

    СписокСчетов = ДокументНаОсновании;
    СписокСчетов.ВыбратьСтроки();
    СписокСчетов.ПолучитьСтроку();
    СписокСчетов.НоваяСтрока(); //Не выбран документ!
    СписокСчетов.Счет = ДобавляемыйСчет;
    СписокСчетов.Записать();

    В отладчике на строке:
    СписокСчетов.НоваяСтрока();
    В табло показывается
    СписокСчетов.Выбран() = 1
    но, тем неменее, 1С выдает ошибку "Не выбран документ!"
  • 10.09.2007, 16:07
    Naumov
    у вас нетипизированный реквизит ДокументНаОсновании надо сначало использовать НазначитьВиД(<>)
  • 10.09.2007, 15:49
    edmaster
    Я использовал, вот только после этой строки ДокументНаОсновании - пустое, при не пустом СписокСчетов! Проверял в отладчике.
  • 10.09.2007, 14:12
    Naumov
    ну так и используйте ТекущийДокумент(), т.е.
    ДокументНаОсновании = СписокСчетов.ТекущийДокумент();
    Иначе ты пытаешся ссылочному типу присвоить Объект.
  • 10.09.2007, 13:50
    edmaster
    Добрый день. Проблема с написанием небольшого отчета в 1С. Сам я не 1С программист, поэтому мне совершенно не понятны странности внутреннего языка. Проблема в следующем - я никак не могу полю ДокументНаОсновании (создан мною, тип - документ) документа ОперацияПоРасчСчету присвоить вновь созданный и проинициализированный экземпляр документа СписокСчетов (создан мною).
    Контекст, в котором выполняется код - Документ.ОперацияПоРасчСчету. Ошибки, которые выдает 1С (введенны в качестве комментария после кода):
    - Неверное присвоение значения. Используйте: .ТекущийДокумент()
    - Не выбран документ!

    Сразу оговорюсь - предлагал использовать в соответствии с текстом ошибки метод .ТекущийДокумент() - но после сохранения ОперацияПоСчету - поле вновь пустое. Спасибо за любую помощь! Код ниже.

    Процедура ДобавитьСчет()
    ДобавляемыйСчет = СоздатьОбъект("Документ.Счет");
    Если ДобавляемыйСчет.Выбрать("Выберете счет") > 0 Тогда

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

    СписокСчетов.ВыбратьСтроки();
    СписокСчетов.ПолучитьСтроку();
    СписокСчетов.НоваяСтрока(); //Не выбран документ!
    СписокСчетов.Счет = ДобавляемыйСчет;
    СписокСчетов.Записать();
    КонецЕсли;

    Записать();
    ДобавитьВСписокСчет(ДобавляемыйСчет);
    КонецЕсли
    КонецПроцедуры

Ваши права

  • Вы можете создавать новые темы
  • Вы можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •